在微信小程序开发中,支付功能是一个必不可少的部分。weixin-payment-sdk 是一个 Node.js 的npm包,它为微信小程序提供了统一的支付接口。在本教程中,我们将介绍如何使用 weixin-payment-sdk 安装和配置支付接口,并提供一些示例代码,让你快速上手微信小程序的支付功能。
安装和配置
1. 安装 npm 包
安装 weixin-payment-sdk, 命令如下:
npm install weixin-payment-sdk
2. 获取微信支付配置
在开始之前,我们需要获取微信支付的配置信息,包括商户ID、API密钥、回调地址等等。获取微信支付的配置信息,你需要做两件事情:
注意,获取微信支付配置信息需要实名认证,只有个人或企业实名认证后,才有资格使用微信支付的服务。
3. 配置 weixin-payment-sdk
在项目中引入 weixin-payment-sdk 后,我们需要设置微信支付所需的所有参数。在下面的代码中,我们将会演示如何配置 weixin-payment-sdk 去处理微信支付。
const Payment = require('weixin-payment-sdk'); const payment = new Payment({ appid: '微信小程序的APPID', mch_id: '商户ID', apiKey: 'API密钥', pfx: fs.readFileSync('证书文件的路径'), });
你需要将自己的微信小程序 APPID、商户ID、API密钥 和证书文件路径替换到代码中。
完整的 weixin-payment-sdk 配置请参见官方文档。
支付流程
在配置好 weixin-payment-sdk 后,我们可以开始了解微信支付的整个流程。
1. 创建订单
在获取了商品信息和价格等支付信息后,你需要根据这些信息创建一个微信支付订单。
-- -------------------- ---- ------- ----- ------ - ----- ---------------------- ----- ------- ------------- ------ ---------- -- ----------------- ------------------ ----------- --------- ----------- -------- ------- --------- ---
需要提交给微信支付 API 的参数包含了商品描述,订单号,总金额,发起支付的 IP 地址,支付回调通知地址,支付方式 (JSAPI、NATIVE 或 APP),以及用户的 openid 等信息。调用 unifiedOrder
API,我们可以得到微信支付的一些返回参数,包括 prepay_id
和 timestamp
等。
2. 获取支付签名
在微信支付签名中,我们需要使用微信支付所需的所有参数,使用 API 密钥进行签名,并将签名信息返回到小程序中。
const signParams = payment.getPayParams({ timestamp, nonceStr, package: `prepay_id=${prepayId}`, });
在 getPayParams
方法中,我们传递了时间戳,随机字符串,预支付ID等信息,方法会自动的生成签名并返回给我们。
3. 调起支付
将签名信息返回到微信小程序内部,通过 wx.requestPayment
方法调用微信支付接口进行支付。
const { err_msg } = await wx.requestPayment(signParams);
当用户通过支付接口完成支付后,微信支付将会通过「notify_url」进行回调,接下来就要处理微信支付的回调了。
4. 处理微信支付回调
微信支付回调指的是微信支付完成后向预先设定的回调地址(即我们提交订单时设置的支付回调通知地址)发送数据,我们需要使用 Node.js 的 HTTP 接收回调,解析收到的数据,并返回正确的状态码和消息。
const notify = await payment.notify(xml); res.statusCode = 200; // 因为微信支付的回调只有在返回 HTTP 200 的情况下才算通知成功 res.end(notify.successReply());
以上代码,我们通过调用 weixin-payment-sdk 的 notify
方法,传入微信支付回调的xml数据,解析出相应的支付信息,并返回正确的状态码和消息。
示例代码
下面是一个完整的微信支付示例代码。示例中我们演示了如何创建订单,获取支付签名,调起支付,处理微信支付回调等操作。
-- -------------------- ---- ------- ----- ------- - ------------------------------ ----- ------ - ---------------------- ----- ---------- - -------------------------- ----- --------- - ------------------------- ----- ------ - --- --------- ----- ------- - --- --------- ------ -------------- ------- ------- ------- -------- ---- --------------------------- --- ----- --- - --- ----------------------- ------------------ ------------------ ----- ----- ----- -- - ----- - ----- ------------- ---------- ---------------- - - ---------- ----- ------ - ----------- -- --------------------------- ----- - ---------- ---------- --------- - - ----- ---------------------- ----- ------------- ---------- ----------------- ----------- --------- ----------- -------- ------- --- ----- ---------- - ---------------------- ---------- --------- ---------- -------- ------------------------- --- -------- - ----------- --- ---------------------- ----- ----- ----- -- - ----- --- - ----------------- ----- ------ - ----- -------------------- -- -------- - ----- - ------- ------------- --------- - - ------- -- --------- -------- - ---------------------- - ---- - ----------- - ----- -------- - -------------------------------------------------------------------------------------------------- - --- -- ---------- --- -------- ------------------- ----- ----- ----- -- - ----- --- - -------------------------------------------- --- --------------- ------------------ --- ----------------------------- ----- ----- ----- -- - ----- - ---- - - ---------- ----- - ------ - - ----- ------------- ---- --- -- ------- ------------------ ------ - ------------------------- ------- - ------- - - -- - ---- - ---- --- ------------------ ---
总结
在本文中,我们介绍了如何使用 npm 包 weixin-payment-sdk 来为微信小程序添加支付功能。通过逐步的介绍支付流程,我们了解了如何配置微信支付参数,如何创建订单,获取支付签名,调起支付,处理微信支付回调等操作。希望这篇文章能对你在微信小程序支付开发中起到指导作用,并且让你在接下来的开发过程中更加流畅。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055ea381e8991b448dbfc4