微信公众号对接JSAPI模式的微信支付简介与总结

步骤一:初始化微信支付框架

(一)、官方文档说明:




(二)、注意事项:

1.附录1红框中所说的access_token不是通过code获取的用户access_token,具体获取方式请点击对应链接;

2.jsapi_ticket必须缓存,不然客户端每访问一次就刷新一次的话,后一次返回之后,前一次使用的jsapi_ticket就失效了;

3.初始化方法中使用到的timestamp和nonceStr参数和后台调用统一下单接口中的参数需要一致,否则容易报“订单信息错误”异常;

4.signature签名生成中用到的url参数是完全URL地址(包含后面带的参数)。正常如http://URL/index.html?code=021dba33f98bec86933e96e2a80f115l&state=123。


步骤二:调用微信支付

(一)、官方文档说明:



(二)、注意事项:

1.prepay_id 通过微信支付统一下单接口拿到,统一下单接口中的openid参数(trade_type=JSAPI,此参数必传)需要公众号中跳转到业务页面时获取的code获取,并且通一下单接口中的生成签名用到的参数必须是非空参数;

2.paySign支付签名生成时,


参数名要写正确。本人当时误把红框中的参数写成appid导致一直提示“签名失败”;(补充:在对接APP模式的支付的时候,这些参数又必须是小写的。具体可参见https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=9_12)

3.联调的时候,在公众号平台配置测试地址和测试的微信号。


步骤三:处理支付通知

(一)、官方文档说明:



(二)、注意事项:

1.支付通知地址为“统一下单接口”中传的notify_url参数;

2.验签时注意参与签名的参数需要时非null和非空的参数。


参考文档:

1.http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 微信JSSDK官方文档

2.https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 微信支付统一下单等接口官方说明文档

3.http://blog.csdn.net/fuyifang/article/details/40707517 微信openid获取的几种方法介绍

4.http://www.cnblogs.com/txw1958/p/wxpayv3-jsapi.html 通过微信官方文档接口介绍对接步骤的文档

5.http://blog.csdn.net/molaifeng/article/details/42968673 微信支付可能遇到的一些坑

6.https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=9_1 微信APP支付官方文档


以下是一个使用 Node.js 和 Express 框架对接微信支付的示例代码: ``` const express = require('express') const app = express() const bodyParser = require('body-parser') const xmlparser = require('express-xml-bodyparser') const { payment } = require('wechat-pay') const config = { appid: 'your app id', mchid: 'your merchant id', partnerKey: 'your partner key', pfx: require('fs').readFileSync('path/to/your/apiclient_cert.p12'), } const wxPay = payment(config) app.use(bodyParser.urlencoded({ extended: false })) app.use(xmlparser()) app.post('/pay', async (req, res) => { const { body } = req // 构造订单参数 const order = { body: '商品名称', out_trade_no: '订单号', total_fee: 1, // 订单总金额,单位为分 spbill_create_ip: '用户IP地址', notify_url: '支付结果通知地址', trade_type: 'JSAPI', // 交易类型 openid: '用户的openid', } try { const result = await wxPay.createOrder(order) const { prepay_id, ...rest } = result const payArgs = { appId: config.appid, timeStamp: (Date.now() / 1000).toFixed(0), nonceStr: Math.random().toString(36).substr(2), package: `prepay_id=${prepay_id}`, signType: 'MD5', } const paySign = wxPay.sign(payArgs) const response = { ...payArgs, paySign, ...rest, } res.send(response) } catch (err) { console.error(err) res.status(500).send(err.message) } }) app.listen(3000, () => { console.log('App listening on port 3000') }) ``` 这段代码使用了 `wechat-pay` 模块来对接微信支付,该模块提供了方便的 API 来创建订单、查询订单等操作。需要注意的是,该模块需要使用商户证书进行签名和加密,因此需要将商户证书的路径和密码等配置信息传入到 `payment` 函数中。在具体使用时,需要将示例代码中的 `your app id`、`your merchant id`、`your partner key` 等参数替换为真实的值。同时,需要在微信公众平台上设置支付通知回调地址,并将该地址填写到订单参数中的 `notify_url` 字段中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值