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

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

基本流程:

支付宝流程:将商品信息进行加签, 后台拿私钥进行签名,将签名后的商品信息字符串返回给商家客户端,调用支付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);
 }];
 ```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容