美文网首页
iOS 集成微信、支付宝的流程

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

作者: 酸三角 | 来源:发表于2022-09-28 15:42 被阅读0次

    简介:
    公司项目里需要用到移动支付模块,就将支付宝、微信集成进来了,也是先看官方文档,照着文档集成,那么调试环境分为测试和生产环境

    基本流程:

    支付宝流程:将商品信息进行加签, 后台拿私钥进行签名,将签名后的商品信息字符串返回给商家客户端,调用支付SDK

    微信流程: 在服务端生成预订单,返回预支付**prepay_id, 将参数再次签名,组装成Req对象,发送给app调用支付.

    集成时候遇到的问题:

    1. 后端配置好了沙箱环境,支付宝不支持沙箱环境,安卓支持沙箱环境,可以用沙箱账号登录后调用相关支付接口.
    2. 因为是混合开发,H5页面调用原生方法唤起支付宝,唤起失败(需要拦截URL)
    - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
        NSLog(@"在发送请求前,决定是否跳转");
        //mark:H5支付WKWebView中无法拉起支付宝/微信客户端支付,需要做如下配置
        //参考网址:https://blog.csdn.net/auccy/article/details/125623087
        //网页检查元素: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. 拿到服务器加签后的字符串唤起支付宝客户端失败.提示商家错误还是什么的,把字符串放到官方demo里运行,可以唤起成功,后来检查,是服务器后端有个字段多了一个空格

    基本步骤:

    • 创建应用,生成appkey和appID,进行注册
    • 配置跳转白名单 URL Type
    • 调用支付订单的方法
    [[AlipaySDK defaultService] payOrder:params fromScheme:appScheme callback:^(NSDictionary *resultDic) {
         NSLog(@"支付宝支付结果result=%@",resultDic);
     }];
     ```

    相关文章

      网友评论

          本文标题:iOS 集成微信、支付宝的流程

          本文链接:https://www.haomeiwen.com/subject/rjkcartx.html