「IOS」支付寶APP支付

1. App支付iOS集成

按照支付寶的官方文檔就可以集成,很順利。但是有16處warning。

warning: (arm64) /Users/tommy/Desktop/Project/AliPay/Cornerstone/standard/1520_cp_record_client_release_828632/AlipaySDK4Standard/AlipaySDK/Library/UTDID.framework/UTDID(UTDIDAES.o) unable to open object file: No such file or directory

看在運行官方提供的支付寶DEMO中也會有此處的warning,所以此處等日后優(yōu)化處理。

2.組裝請求信息。

TIPS:這一步應在商戶服務端完成,商戶服務端直接將組裝和簽名后的請求串orderString傳給客戶端,客戶端直接傳給SDK發(fā)起請求。

步驟如下:

1.整合信息,將商品信息拼接成字符串。

1.appID; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//appId

2.method = “alipay.trade.app.pay";? ? ? ? //固定寫法

3.charset = "utf-8";

4.timestamp

5.version = "1.0";

6.sign_type = “RSA";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //固定寫法

// NOTE: 商品數(shù)據(jù)

7.biz_content;

8.biz_content.body =“ ”;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //”我是測試數(shù)據(jù)”;

9.biz_content.subject = "1";

10.biz_content.out_trade_no = ‘’? ? ? ? ? ? ? //訂單ID(由商家自行制定)

11.biz_content.timeout_express = "30m"; //超時時間設(shè)置

7.total_amount? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //商品價格

例如app_id=2088421490941334&biz_content={"timeout_express":"30m","seller_id":"","product_code":"QUICK_MSECURITY_PAY","total_amount":"0.01","subject":"1","body":"我是測試數(shù)據(jù)","out_trade_no":"2W198CASQ6769ID"}&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA×tamp=2016-11-15 15:28:58&version=1.0

2. 商品信息加密

例如:

app_id=2088421490941334&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22seller_id%22%3A%22%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%221%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22E51W0J0WBHP5J8E%22%7D&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA×tamp=2016-11-15%2015%3A45%3A22&version=1.0

3.? // NOTE: 獲取私鑰并將商戶信息簽名,需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode

例如:

signedString = vUhZosbhfwep6IXN99%2BI%2FZrRj3o81%2Fy0Fh5Oxt2r4VtVgkChwye9jfMHABra%2Bija77NeHm%2FcchelshtxTkp%2B%2FRaFFC34re%2FQlW51WxFKlGMxhM%2FNRm1r42rlqtSjiOjM1vWCQ%2FQDRs837WVwKRSAb4kD7OUDcHSU6k4cMsQGGwQ%3D

4.將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式orderInfoEncoded&signedString。

app_id=2088421490941334&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22seller_id%22%3A%22%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%221%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22E51W0J0WBHP5J8E%22%7D&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA×tamp=2016-11-15%2015%3A45%3A22&version=1.0&sign=vUhZosbhfwep6IXN99%2BI%2FZrRj3o81%2Fy0Fh5Oxt2r4VtVgkChwye9jfMHABra%2Bija77NeHm%2FcchelshtxTkp%2B%2FRaFFC34re%2FQlW51WxFKlGMxhM%2FNRm1r42rlqtSjiOjM1vWCQ%2FQDRs837WVwKRSAb4kD7OUDcHSU6k4cMsQGGwQ%3D

把此字符串提供給終端進行喚起。


3.配置支付寶客戶端返回url處理方法。


NOTE: 9.0以后使用新API接口

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options{

if ([url.host isEqualToString:@"safepay"]) {

//跳轉(zhuǎn)支付寶錢包進行支付,處理支付結(jié)果

[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {

NSLog(@"result = %@",resultDic);

}];

}

return YES;

}

這里要注意的是此事件openURL 會在appDelegate 多次共同調(diào)用(如微信,支付寶,微博,QQ)等,一定要做好多事件的適配。適配方式其實很簡單,通過配置的URL Schemes 就可以區(qū)分。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容