您的位置:首页 > 移动开发 > 微信开发

说说微信支付那点事

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

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

(详细步骤不赘述)

       1.注册微信开放平台

        2.获取开发者资质

        3.创建你的APP应用

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

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

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

。      


  

点击查看详情进入下一个页面这个时候你就用到了邮箱
4000
给的商户号了(商户号:微信指定给商家的账号,交易信息和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之后的第二次签名需要在客户端实现。。这样就成功了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: