iOS 集成微信、支付寶的流程

簡介:
公司項目里需要用到移動支付模塊,就將支付寶、微信集成進(jìn)來了,也是先看官方文檔,照著文檔集成,那么調(diào)試環(huán)境分為測試和生產(chǎn)環(huán)境

基本流程:

支付寶流程:將商品信息進(jìn)行加簽, 后臺拿私鑰進(jìn)行簽名,將簽名后的商品信息字符串返回給商家客戶端,調(diào)用支付SDK

微信流程: 在服務(wù)端生成預(yù)訂單,返回預(yù)支付**prepay_id, 將參數(shù)再次簽名,組裝成Req對象,發(fā)送給app調(diào)用支付.

集成時候遇到的問題:

  1. 后端配置好了沙箱環(huán)境,支付寶不支持沙箱環(huán)境,安卓支持沙箱環(huán)境,可以用沙箱賬號登錄后調(diào)用相關(guān)支付接口.
  2. 因為是混合開發(fā),H5頁面調(diào)用原生方法喚起支付寶,喚起失敗(需要攔截URL)
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
    NSLog(@"在發(fā)送請求前,決定是否跳轉(zhuǎn)");
    //mark:H5支付WKWebView中無法拉起支付寶/微信客戶端支付,需要做如下配置
    //參考網(wǎng)址:https://blog.csdn.net/auccy/article/details/125623087
    //網(wǎng)頁檢查元素:decodeURIComponent ("abcdefghijklmnopqlstuvwxyz")
    NSURL *url = navigationAction.request.URL;
    NSString *urlStr = [[url absoluteString] stringByRemovingPercentEncoding];
    if ([urlStr containsString:@"weixin://wap/pay"] || [urlStr containsString:@"alipay://alipayclient"]) {
        [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
        decisionHandler(WKNavigationActionPolicyCancel);
    }else{
        decisionHandler(WKNavigationActionPolicyAllow);
    }
    
}
  1. 拿到服務(wù)器加簽后的字符串喚起支付寶客戶端失敗.提示商家錯誤還是什么的,把字符串放到官方demo里運行,可以喚起成功,后來檢查,是服務(wù)器后端有個字段多了一個空格

基本步驟:

  • 創(chuàng)建應(yīng)用,生成appkey和appID,進(jìn)行注冊
  • 配置跳轉(zhuǎn)白名單 URL Type
  • 調(diào)用支付訂單的方法
[[AlipaySDK defaultService] payOrder:params fromScheme:appScheme callback:^(NSDictionary *resultDic) {
     NSLog(@"支付寶支付結(jié)果result=%@",resultDic);
 }];
 ```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容