记录一下自己的这个接入过程
首先登录微信商户平台,去注册一个商户号。
登录成功后
1.去账户中心的api安全里,将证书和密钥啥的都设置上
2.去产品中心 找到jsapi 进行开通
3.去小程序后台,微信公众平台上找到微信支付,接入商户号,到跳转的页面输入小程序的APPID,然后回到小程序后台进行验证通过
4.微信支付里还有一个接入微信支付的tab点击他,进行相关申请
以上都完事了之后,准备工作就完成了,现在进入开发
首先后端开始,我用的是nestjs,引入了一个wechatpay-node-v3的包来用(wechatpay-node-v3 - npm)
import WxPay from 'wechatpay-node-v3'; // 支持使用require
import fs from 'fs';
import request from 'superagent';
const pay = new WxPay({
appid: '小程序的appid',
mchid: '商户号',
publicKey: fs.readFileSync('./apiclient_cert.pem'), // 公钥
privateKey: fs.readFileSync('./apiclient_key.pem'), // 秘钥
});
//这个方法是用来获取调用支付的openid
const resultCode = await axios.get(
'https://api.weixin.qq.com/sns/jscode2session',
{
params: {
appid: '小程序的appid',
secret: '',//这个是小程序的AppSecret,在开发管理进行设置
js_code: body.code,
grant_type: 'authorization_code',
},
},
);Ï
const params = {
appid: '小程序的appid',
mchid: '商户号',
description: '测试',
out_trade_no: new Date().getTime().toString(),
notify_url: '回调通知地址,必须备案过且以https为开头的地址',
amount: {
total: 10 * 100,//前面的1就是你想要用户付多少钱就输入多少,后面的100不用管
},
payer: {
openid: resultCode.data.openid,
},
};
const result = await pay.transactions_jsapi(params);
这样服务端的部分就完成了,有个部分要说明一下,公钥和密钥,这两个的获取是在api安全下,申请证书的时候生成的,会有三个文件,其中两个就是密钥和公钥,保存好。
接下来是小程序端的代码
wx.login({
success(res) {
console.log("js_code", res.code)
if (res.code) {
//发起网络请求
wx.request({
url: '后端的请求地址',
method: 'post',
data: {
code: res.code
},
success(res) {
const data = res.data
wx.requestPayment({
"timeStamp": data.timeStamp,
"nonceStr": data.nonceStr,
"package": data.package,
"signType": "RSA",
"paySign": data.paySign,
"success": function (res) {
console.log(res,'支付了')
},
"fail": function (res) {},
"complete": function (res) {
console.log(res)
}
})
},
complete(res, err) {
console.log(res, err, 'errr')
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
前端就简单很多,根据后端返回的参数进行相关api的调用就可以。