美文网首页
Android App支付场景下的微信支付开发

Android App支付场景下的微信支付开发

作者: b_walking | 来源:发表于2023-06-02 17:33 被阅读0次

    集成支付宝支付用了两天,集成微信支付却用了一周。
    看了大量的帖子学习,没有一个说微信文档写的好的,甚至很多建议向支付宝学习。
    微信支付文档给我的感觉是东一块西一块,不连贯,而且在部分细节上甚至互相矛盾。
    现在趁着头脑清醒,记录一下:
    1.先从这个商户平台的开发指引开始看
    https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_5_2.shtml#part-6
    2.再看这个API列表
    https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_5_3.shtml
    我的程序用到了三个API:APP下单、APP调起支付、支付结果通知

    Content-Type: application/json
    Accept: application/json

    只加入这两项还是不行,因为文档后面又说了,还需要设置User-Agent
    设置了User-Agent还是不行,因为在接口规则-开发指南-签名生成文档里说了:微信支付API v3 要求商户对请求进行签名,并通过HTTP Authorization头来传递签名。
    https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml
    所以请求头中一共含有四项信息。
    我的服务器是Node,至于如何在node.js中生成签名以及解密参数,下面这个帖子给了我很大的帮助
    https://blog.csdn.net/qq_39653624/article/details/125755335

    • 对于调起支付API来说,要注意的是在开发指引文档中有提到:

    调用API前,需要先向微信注册您的APPID

    再就是要对调起支付的几个参数进行签名,签名方法同下单API中的签名方法是一样的。还有一点就是,APP的签名需与在微信开放平台创建APP时所填写的签名是一致的,不然调起不了支付,也收不到相关提示,我之前没有注意到这个问题,从坑里爬了很久才出来。

    • 对于支付结果通知API来说,文档中说接收通知的uri必须是https开头才行,但经咨询微信支付客服,其称http开头的url也可以。这里我遇到了另外一个坑,我的http及https服务是通过express框架来提供的,但是支付成功后,接收到的结果通知消息完全看不懂是什么,咨询了微信支付客服,告诉我已经向我的接收地址正常发送了消息,网上几乎搜不到同类情况,我意识到可能是我自己的问题。经过尝试,最后通过创建最普通的httpsServer正常收到了消息,但express框架为什么不行,我还不知道原因。
    var https = require('https')
    

    收到的结果通知消息是需要解密的,解密的方式见上面csdn那个帖子就可以了。
    收到结果通知后,要向微信服务器返回确认消息,支付宝支付只是返回success就可以了,但是微信支付却需要返回消息头才行。

    res.writeHead(200)
    res.end()
    

    以上就是APP支付场景下的微信支付流程,几乎每天都会掉到一个坑里,但幸运的是第二天又能奇迹般的爬出来,真是太不容易了。

    相关文章

      网友评论

          本文标题:Android App支付场景下的微信支付开发

          本文链接:https://www.haomeiwen.com/subject/bcqmedtx.html