说说微信支付那点事

从刚开始到现在做得有支付的项目也有几个了,以前都没有微信支付的接入需求,接入支付宝和银联就好了做起来比较简单,尤其是支付宝对于开发者提供的技术支持相当的给力。给开发人员和客服们点个赞。。。不得不吐槽一下微信做得太麻烦,而且demo不给力,没有技术客服和团队支持不友好。

       哎,现在主要说一说刚刚接入微信支付,也是写这篇博客的目的,为了记载梳理和告诉像我一样在挣扎在微信支付死脑细胞的程序员。微信的API是收费的,先说一下申请步骤:

(详细步骤不赘述)

1.注册微信开放平台

2.获取开发者资质

        3.创建你的APP应用

4.在你APP里面申请微信支付功能

然后你就开始等待。。。。。。。

 审核通过之后他会给你往申请时候的邮箱发邮件(信息很重要不要丢),然后你微信开放平台微信状态就是这种了

。      

点击查看详情进入下一个页面这个时候你就用到了邮箱给的商户号了(商户号:微信指定给商家的账号,交易信息和API信息都可以在这查看)

然后到了一个经常出现BUG的一步,很多人都会忘记,在商家平台验证之后,下载证书到电脑上,然后设置32位的API 秘钥,iOS demo参数名为 PARTNER_ID ,安卓demo参数为 APP_KEY.

配置好之后就是头疼的问题了:

在微信开放平台上你会看到微信支付的开发文档(不是很详细),可以下载iOS和安卓SDK。那么问题来了,微信支付文档的时序图是必须商家后台接入的,但是开放平台里没有服务端的demo。打电话给微信支付客服,微信没有技术支持客服。网上介绍的大部分都是2014年v1.2版的。。

    微信支付下单流程:

    1.统一下单:统一下单也就是预支付,微信支付推荐在商家服务端进行。iOS和安卓的demo都模拟了统一下单过程。微信支付签名是用sha1+md5方式,请求是post发送xml格式的数据,得到由服务器返回的预支付id和一些信息之后。

    2.进行第二次签名调起微信支付。(iOS不忘记在urltypes添加微信)

    3.回调通知返回(如果集成了支付宝,友盟等第三方需在方法判断如下代码)

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    NSLog(@"%@",url.host);
    //跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给SDK
    if ([url.host isEqualToString:@"safepay"]) {
       //支付宝
    }else if([url.host isEqualToString:@"pay"]){
       //微信
    }else{
        //友盟或者其他
    }
    
    return YES;
    
    
}

demo说明和BUG:

   iOS端最下面有两个按钮:

   1.一个是微信测试签名(这个按钮是在客户端进行统一下单和签名)

   2.微信支付(在商家服务器端进行统一下单签名,客户端只需得到服务器端的参数调起微信)

集成友盟和shareSDK等调用微信API的项目BUG:

      问题:--- 没有调起微信支付或者出现一个确定按钮 

      因为之前集成的微信API没有微信支付的权利和功能,第二次导入的微信包和第一次重复了而且被第一次覆盖了。所以跳进去之后调不起微信返回错误码-1

     第二次补充: 还有一个原因是参数格式错误(看一下你们的汉字编码)

 解决办法:

     删掉友盟的微信API,2个h文件,一个.a静态库

 安卓端:

      安卓的demo没有太多的注释,   我出现了demo模拟下单签名之后第一次可以调用重复无法调用的状况,接入正式项目问题就好了。也没有过多深究。

服务端:

     服务端是最大的问题,希望腾讯公司对开发者这一块重视起来,服务端demo几乎找不到,网上和我们一样的开发者也很多。

    我们最后参考安卓端下单的代码完成。

第一次接入遇到的问题还是挺多的,希望以后接入微信支付的同学们少费点劲。。。。又该上班了。

补充:在服务端完成时出现错误,最后总结出获得预支付id之后的第二次签名需要在客户端实现。。这样就成功了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券