一、看官方的Demo,那么看到,必須使用的是商戶app申請的時候會有的
這幾個東西由產品經理申請給你,如果遇到真不懂的,讓你自己申請(也算是對自己的信任,那就看着官方文檔一步步申請,這個沒什么困難的,做開發的我這里也不記了。沒什么意義。)
二、集成支付寶到自己的工程中
集成?笑話,寫下來有什么意義,還不如看官方文檔,最方便的當然是cocoapods 幾分鍾搞定
根據自己的APP,修改下面的參數即可:
說實話,其實這些都是后台去弄的,前端只是點擊支付按鈕時候,請求后台,讓后台給你生成 orderstr 就行了,
-(void)alipayWith:(NSString*)orderStr{ NSString *appScheme = @"zhifubao"; // NOTE: 調用支付結果開始支付 [[AlipaySDK defaultService] payOrder:orderStr fromScheme:appScheme callback:^(NSDictionary *resultDic) { NSLog(@"reslut = %@",resultDic); if ([resultDic[@"ResultStatus"] isEqualToString:@"9000"]) { }else{ } }]; }
使用支付寶客戶端支付之后,無法返回原APP系統
1)在AppDelegate.m文件中,
#import <AlipaySDK/AlipaySDK.h>
-(BOOL)application:(UIApplication *)app openURL:(nonnull NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(nonnull id)annotation{ [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]]; if ([url.host isEqualToString:@"safepay"]) { //跳轉支付寶錢包進行支付,處理支付結果 [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { NSLog(@"result = %@",resultDic); NSLog(@"支付寶客戶端支付結果result = %@",resultDic); if (resultDic && [resultDic objectForKey:@"resultStatus"] && ([[resultDic objectForKey:@"resultStatus"] intValue] == 9000)) { // 發通知帶出支付成功結果 [[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic]; } else { // 發通知帶出支付失敗結果 [[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic]; } }]; } return YES; } -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{ [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]]; if ([url.host isEqualToString:@"safepay"]) { //跳轉支付寶錢包進行支付,處理支付結果 [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { if (resultDic && [resultDic objectForKey:@"resultStatus"] && ([[resultDic objectForKey:@"resultStatus"] intValue] == 9000)) { // 發通知帶出支付成功結果 [[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic]; } else { // 發通知帶出支付失敗結果 [[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic]; } }]; } return YES; }
這里面我是做了一個通知,告訴支付頁面支付結果的
(2)點擊項目名稱,點擊“Info”選項卡,在“URL Types”選項中,點擊“+”,在“URL Schemes”中輸入自己的APP標示,如:“alisdkdemo”。“alisdkdemo”來自於以下代碼:
支付代碼中的:
這里的URL Schemes中輸入的alisdkdemo,為測試demo,實際商戶的app中要填寫獨立的scheme,建議跟商戶的app有一定的標示度,要做到和其他的商戶app不重復,否則可能會導致支付寶返回的結果無法正確跳回商戶app
4、可能遇到的錯誤:
1:支付寶交易訂單處理失敗 AL159
注意:支付寶的金額只能精確到分,所以不能用小數點后面超過兩位的浮點型數字。
所以:應該使用 %.2f
2:支付寶支付失敗:4000
檢查訂單的各種參數,比如訂單ID寫錯為浮點型了。
3:其他
檢查各種參數和公匙密匙等等
補充一下,官方流程,做參考用