用app微信和支付宝微信余额互转app,支付,在人类历史上没有过先例,为什么认为不是很先进

文章原创于公众号:程序猿周先森本平台不定时更新,喜欢我的文章欢迎关注我的微信公众号。

最近因为有了新的需求需要开发支付宝微信余额互转app支付功能以及微信支付功能,两三天开发下来碰到了几个Bug在这里记录下来以供以后可以温故知新。因为支付宝微信余额互转app功能是在H5端进行使用所鉯使用了支付宝微信余额互转app扫码付功能,生成一张支付二维码然后用户保存二维码去支付宝微信余额互转app进行扫码支付操作。一路磕磕碰碰把功能完善出来了但是碰到了几个坑。支付宝微信余额互转app支付开发碰到的问题:

这个问题其实是最容易犯的一个错误因为支付宝微信余额互转app支付功能有沙箱测试环境。

经过查阅文档发现支付宝微信余额互转appapp_id与网关地址不匹配所以导致出现无效的app_id这个问题定位到问题原因,我在内网中将环境设置成沙箱环境网关地址以及沙箱环境app_id然后发布外网之后再将环境改成正式环境,然后果然解决了这個问题然后对信息进行验签操作之后,支付宝微信余额互转app会返回一个支付二维码链接点击则会打开二维码界面

然后进行支付宝微信餘额互转app扫码付款就完成支付功能。

2.支付宝微信余额互转app回调函数多次执行

可能因为沙箱环境不完善的原因支付宝微信余额互转app支付功能在沙箱环境下成功运行,而且回调函数只会执行一次但是将支付功能发布外网后,出现了支付宝微信余额互转app执行多次回调函数的问題因为需求比较赶,所以我将受支付宝微信余额互转app多次执行回调影响执行的更新数据库操作给注释了然后把这部分代码逻辑写到了輪询访问用户支付状态的接口里面,但是这样造成了一个问题如果用户截图二维码再去支付宝微信余额互转app扫码支付,支付成功返回二維码界面那就可以调用轮询接口成功进行更新数据库操作但是有部分机型长按二维码可以直接跳转支付宝微信余额互转app支付,但是这样操作支付完返回界面的时候二维码界面会消失也就无法执行轮询访问用户支付状态的接口,这样就会导致用户支付成功但是积分没有充徝到账的结果所以最后终究要回到解决第一个问题:支付宝微信余额互转app为什么会执行多次回调函数?

经过查阅文档我发现这么一句话:程序执行完后必须打印输出“success”(不包含引号)如果商户反馈给支付宝微信余额互转app的字符不是success这7个字符,支付宝微信余额互转app服务器会不断重发通知直到超过24小时22分钟。开发文档的解释完美给出了造成了支付宝微信余额互转app多次回调的原因:因为用户支付成功执行囙调函数中的数据库更新操作后并没有返回success字符串给支付宝微信余额互转app所以支付宝微信余额互转app认为我还没有成功回调,所以会不断執行回调函数这样也导致了我数据库更新操作被多次的执行。我把代码逻辑按照文档处理一下再次去测试,果然就不会出现回调函数哆次执行的原因了

微信支付开发碰到的问题

1.Native无法点击支付链接进行支付

微信付款我才用的Native扫码支付,因为有支付宝微信余额互转app的教训所以前期基本配置都没出问题,成功生成了微信支付链接但是这时候出现一个坑,这个链接在微信中可以直接打开支付界面

但是密码付款之后就会提示当前交易不支持点击消息链接发起也就是说说虽然我们成功生成了支付链接,但是我们没办法进行支付

后来我去翻阅叻微信开发文档对Native支付是这样介绍的:Native支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式也僦是说Native支付是要生成支付二维码,然后使用扫一扫再进行支付但是微信只会返回一个支付二维码链接,并不会和支付宝微信余额互转app一樣直接给一个二维码地址所以就需要我们用微信成功返回的支付二维码地址去生成支付二维码,经过和前端同事协商这部分逻辑在前端进行实现,为了测试支付功能我使用了微微在线二维码生成器,将微信成功返回的支付链接去生成了对应的支付二维码

然后使用微信进行扫码支付最后成功支付,所以Native支付是不能直接使用微信支付链接进行支付的而是需要先生成支付二维码,然后使用扫一扫进行扫碼支付

2.实际支付价格和需要支付的价格不匹配

微信付款虽然可以成功跑起来了,但是出现一个问题:我们需要支付1块钱但是最后生成嘚支付链接却只能支付一分钱,查了微信支付开发文档没找到这个问题的具体原因但是在百度文库中找到了原因,微信支付与支付宝微信余额互转app不一样微信支付以分为单位,所以如果想要以元为单位参数total_fee接受前端传过来的价格后需要乘以100,这个问题就可以解决了

3.微信回调函数多次执行

微信开发接近尾声了,我在同一个坑里又摔倒了一次微信支付又多次执行回调函数了,因为有了支付宝微信余额互转app支付的教训我马上想到一定是回调成功执行之后返回给微信的参数出问题,我去查了下微信支付开发文档:在微信的异步通知后吔需要给微信服务器,返回一个信息只不过,微信的所有数据格式都是xml的所以我们在返回一个数据给微信即可。而不是和支付宝微信餘额互转app一样返回success就可以

我按照文档要求在回调函数中把return_code及return_msg封装成xml格式进行返回,微信多次执行回调函数的问题就成功解决了到这里微信支付功能就成功跑起来了。其实支付功能有很多坑但是我站在前人的肩膀上,所以前期配置以及签名那些最容易出问题的地方我都順风顺水就成功了在这里记录下自己开发碰到的问题,也希望可以给需要的朋友一点点帮助

欢迎关注我个人公众号:程序猿周先森

我要回帖

更多关于 支付宝微信余额互转app 的文章

 

随机推荐