微信支付 native支付小程序云开发 流程
- 集成微信 native 支付踩了不少坑。
第一步 开通native支付
登录微信商户平台,开通native 支付。配置相关回调地址。
第二步 创建云函数
创建云函数,执行npm install wechatpay-axios-plugin --save 命令安装 wechatpay-axios-plugin 包,wechatpay-axios-plugin文档入口。
第三步 生成商户证书
下载微信证书生成工具生成商户API证书。工具下载地址 在商户平台生成的时候会有提示,这里就不说明了。
第四步 设置APIv3秘钥,
这个需要单独设置,不同于商户秘钥。
第五步 生成平台证书(最重要的一步也是最容易出问题的地方)
首先不用管https://api.mch.weixin.qq.com/v3/certificates这个接口。
直接使用工具:Certificate Downloader来生成,下载地址:https://github.com/EliasZzz/CertificateDownloader/releases;源代地址:https://github.com/wechatpay-apiv3/CertificateDownloader 查看使用说明;对命令用实例说明一下,因为我花了很久才搞定:java -jar CertificateDownloader-1.1.jar -f 商户私钥文件路径 -k 证书解密的密钥 -m 商户号 -o 证书保存路径 -s 商户证书序列号
这里需要注意一下不要:-c 参数 非必需参数
-k 设置的APIv3密钥,不用有疑问,直接使用设置的APIv3密钥即可。
-m 商户号
-f 商户的私钥文件 apiclient_key.pem 微信证书工具生成的。
-s 商户证书的序列号
其他的看图就好。
生成的密钥文件,其中
框起来的就是平台证书序列号,千万不能搞混了,不是商户证书序列号。
第六步 文件配置都生成了
const {Wechatpay, Formatter} = require('wechatpay-axios-plugin')
const wxpay = new Wechatpay({
mchid: 'your_merchant_id',
serial: 'serial_number_of_your_merchant_public_cert',
privateKey: '-----BEGIN PRIVATE KEY-----' + '...' + '-----END PRIVATE KEY-----',
certs: {
'serial_number': '-----BEGIN CERTIFICATE-----' + '...' + '-----END CERTIFICATE-----',
},
// APIv2参数 >= 0.4.0 开始支持
secret: 'your_merchant_secret_key_string',
// 注: 如果不涉及资金变动,如仅收款,merchant参数可选,仅需 `secret` 一个参数,注意其为v2版的。
merchant: {
cert: '-----BEGIN CERTIFICATE-----' + '...' + '-----END CERTIFICATE-----',
key: '-----BEGIN PRIVATE KEY-----' + '...' + '-----END PRIVATE KEY-----',
// or
// passphrase: 'your_merchant_id',
// pfx: fs.readFileSync('/your/merchant/cert/apiclient_cert.p12'),
},
})
初始化字典说明如下:
your_merchant_id 为你的商户号,一般是10字节纯数字
serial 为你的商户证书序列号,一般是40字节字符串
privateKey 为你的商户私钥证书,一般是通过官方证书生成工具生成的文件名是apiclient_key.pem文件,支持纯字符串或者文件流buffer格式
secret 为APIv2版的密钥,商户平台上设置的32字节字符串
certs{[serial_number]:string} 为通过下载工具下载的平台证书key/value键值对,键为平台证书序列号,值为平台证书pem格式的纯字符串或者文件流buffer格式
merchant.cert 为你的商户证书,一般是文件名为apiclient_cert.pem文件,支持纯字符串或者文件流buffer格式
merchant.key 为你的商户私钥证书,一般是通过官方证书生成工具生成的文件名是apiclient_key.pem文件,支持纯字符串或者文件流buffer格式
merchant.passphrase 一般为你的商户号
merchant.pfx 为你的商户PKCS12格式的证书,文件名一般为apiclient_cert.p12
注: 0.4.0版本做了重构及优化,APIv2&v3以及Axios初始参数,均融合在一个型参上。
按照https://github.com/TheNorthMemory/wechatpay-axios-plugin文档提供的API调用就没有任何问题了。
最重要的是平台证书,最容易搞混,大家注意了~~~~~~~。最后有任何问题都可以留言哦。