支付宝、微信支付(国内、国际版)走过的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支付宝、微信支付(国内、国际版)走过的坑相关的知识,希望对你有一定的参考价值。

参考技术A 目前为止,已经完成了支付宝(国内国际版)、微信(国内国际版)的开发,包括h5、微信公众号、app的支付开发。其中走过了很多的坑,记录下来,以后做这方面的朋友可以少走一些坑。接下来我也将从国内国际两个方向记录一下。

1、在生成公钥私钥以后,要上传公钥到支付宝开放平台获取支付宝公钥,以及公钥私钥在接口如何使用的就不具体讲了,遇到签名问题的时候请使用支付宝验签工具验证。另外需要注意一点,坑了我将近两小时的问题,我在收到支付宝异步回调的时候,是可以延签通过的,然后我进入到支付宝联调工具中把刚才回调的地址重新访问一遍,这个时候是需要注意的,因为这个时候已经将回调的参数拼接在了url后面,RSA加签出来的签名是有特殊字符的,然后就一直延签不通过。

2、微信方面由于没有sdk,所以需要自己写的部分相对多一些,其中在与ios对接的时候,发现死活调不起来微信,但是安卓却可以,浪费了将近半天的时候,最后修改了一个参数的长度,发现ios可以了。其中在调起支付接口中有一个参数timestamp,注意这个参数长度是10位的,但是java的时间戳长度默认是13位的,后来改成了10位就可以了。另外国内版微信有公众号支付、h5支付、app支付,分别是三种不同的接口。h5支付和app支付都可以在微信开放平台中申请的,但是公众号却需要在商户平台去绑定公众号的appid,这点需要注意一下,是需要不同的appid的,但是商户号可以使用同一个。

国际版的一个最大的特点就是效率慢,太慢了。相比国内多的接口就是报关接口。

国际版支付宝和国内的完全不同,使用的网关是mapi开头的地址,另外如果使用rsa的话,公钥是需要发送邮箱到支付宝海外团队的(需要他们返回支付宝公钥),在做国际版支付宝的时候遇到的一个最大的问题就是签名问题,支付宝延签工具也可以,客服也问了好久,可就是在唤醒的时候一直报签名错误,传递参数的值(包括sign)中如果存在特殊字符(如:&、@、/、+、等),那么该值需要做URL Encoding,这一点一定要特别注意,一定要做url encoding操作,不然会坑死自己的。另外国际版支付宝是需要有资金单位的,还没有rmb结算的时候,所以在开发的时候统一使用了美元。

国际版微信在申请填写手机号的时候不要加+86,不然你会收到设置api密钥的时候收不到短信的魔咒。另外国际版微信是需要商户号和appid手动绑定的

以上是关于支付宝、微信支付(国内、国际版)走过的坑的主要内容,如果未能解决你的问题,请参考以下文章

微信支付之h5方式(非微信内置浏览器中支付)

谈谈开发支付功能碰到的坑

银联二维码支付和支付宝微信支付有啥区别?

微信支付官方.net版之坑你没商量

支付宝异步回调验证签名的那些走过的坑

支付宝国际支付 对接