微信支付是一项非常方便和安全的在线支付服务,许多企业和个人都采用微信支付来处理在线交易。npm 包 wx-pay 是一个非常轻量级的 Node.js 库,它提供了方便和快速的微信支付集成解决方案。本文将介绍 npm 包 wx-pay 的使用方法,包括安装和配置、API 说明、以及使用指南和示例代码等。
安装和配置
使用 npm install 命令可以快速安装 wx-pay 包,如下所示:
$ npm install wx-pay
安装完成后,需要配置微信支付相关的参数,包括商户 ID、商户密钥、回调地址等。可以在初始化 WxPayClient 对象时进行相关参数配置,示例代码如下:
-- -------------------- ---- ------- ----- ----- - ------------------ ----- ----------- - - ------ -------------- ------ ------------------- ------- -------------------- ---------- ------------------ ---- --------------------------------------------------- -- ----- ----------- - --- -------------------
其中,各个参数的意义如下:
appId
:微信支付分配的公众账号 ID 或应用 ID;mchId
:微信支付分配的商户号;mchKey
:商户密钥,用于生成签名和验证签名;notifyUrl
:支付结果通知的 URL 地址,需为 HTTPS 协议;pfx
:API 证书,用于双向证书认证。
API 说明
wx-pay 包提供了一系列便捷的方法,用于完成各种支付相关业务,包括统一下单、交易查询、退款等。下面是一些常用的 API 方法:
统一下单 API
使用 unifiedOrder
方法可以发起微信支付订单,实现流程如下:
- 用户在客户端生成订单信息;
- 客户端向服务器发送请求,请求生成微信支付订单;
- 服务器通过
unifiedOrder
方法发起微信统一下单请求; - 微信支付系统生成预支付交易单,并返回支付凭证和相关信息;
- 客户端调用微信支付系统的 JSAPI 调起支付。
示例代码如下:
-- -------------------- ---- ------- ----- ------ - ----- -------------------------- ----- ------ ------------- ------ ---------- ---- ----------------- -------------- ----------- ------------------ ------- ------ --- --------------------
其中,各个参数的意义如下:
body
:商品描述;out_trade_no
:商户订单号;total_fee
:订单金额,单位为分;spbill_create_ip
:终端 IP 地址;notify_url
:支付结果通知的 URL 地址;openid
:用户标识。
检查订单是否支付 API
使用 orderQuery
方法可以查询订单支付状态,示例代码如下:
const result = await wxPayClient.orderQuery({ out_trade_no: 'xxx', }); console.log(result);
其中,out_trade_no
为商户订单号。
关闭订单 API
使用 closeOrder
方法可以关闭未支付订单,示例代码如下:
const result = await wxPayClient.closeOrder({ out_trad_no: 'xxx', }); console.log(result);
其中,out_trade_no
为商户订单号。
申请退款 API
使用 refund
方法可以发起退款请求,实现流程如下:
- 用户在客户端发起退款申请;
- 客户端向服务器发送请求,请求发起退款;
- 服务器通过
refund
方法发起微信退款请求; - 微信支付系统根据商户号和退款单号完成退款操作,返回退款结果。
示例代码如下:
const result = await wxPayClient.refund({ out_trade_no: 'xxx', out_refund_no: 'xxx', total_fee: 100, refund_fee: 100, }); console.log(result);
其中,各个参数的意义如下:
out_trade_no
:商户订单号;out_refund_no
:商户退款单号;total_fee
:订单金额;refund_fee
:退款金额。
使用指南和示例代码
使用 npm 包 wx-pay 集成微信支付,需要在客户端和服务器端分别完成一些操作。以下是具体步骤和示例代码:
1. 在客户端(浏览器端)发起支付请求
在客户端,需要使用微信 JSAPI 调起支付,具体方法如下:
-- -------------------- ---- ------- --------------------------------------------- - ------ -------------- ---------- ----------------- --------- ----------------- -------- --------------- --------- ------ -------- ---------------- -- ------------- - -- ------------ -- ----------------------------- - -- ---- - ---- - -- ---- - ---
其中,各个参数的意义如下:
appId
:微信公众账号 ID 或应用 ID;timeStamp
:时间戳,作为请求和支付时间的标识;nonceStr
:随机字符串,作为请求和支付的安全标识;package
:支付凭证,由统一下单 API 返回;signType
:签名算法,通常为 MD5;paySign
:签名,由微信支付系统根据支付参数和商户密钥生成。
2. 在服务器端完成微信支付流程
在服务器端,需要根据客户端传递的订单信息,调用 npm 包 wx-pay 提供的 API 实现下单、查询、退款等操作。以下是一个完整的示例代码:
-- -------------------- ---- ------- ----- --- - --------------- ----- ------ - ------------------------ ----- ------ - ------------------- ----- ----- - ------------------ ----- ----------- - - ------ -------------- ------ ------------------- ------- -------------------- ---------- ------------------ ---- --------------------------------------------------- -- ----- ----------- - --- ------------------- ---------------------- ----- -------- ----- - ----- --------- - ----- --------------------- --- - ----- ------ - ----- -------------------------- ----- --------------- ------------- ----------------------- ---------- -------------------- ----------------- --------------------------- ----------- --------------------- ------- ----------------- --- ----- ------- - - ------ ------------- ---------- -------------------- - ----------------------------- --------- ---------------- -------- ------------ - ----------------- --------- ------ -- --------------- - ----------------------------- -------- - -------- - ----- ----- - -------- - - ------ ---- - - --- ------------------------------ ----- -------- ----- - ----- --------- - ----- --------------------- --- - ----- ------ - ----- ------------------------ ------------- ----------------------- --- -------- - ------- - ----- ----- - -------- - - ------ ---- - - --- ----- --- - --- ------ ------------------------- --------------------------------- -----------------
在上述示例中,代码首先初始化了 npm 包 wx-pay 的客户端对象 wxPayClient
,在 /wx/pay
路由处理函数中,使用了 unifiedOrder
方法发起了微信统一下单请求,最终返回了客户端进行支付操作所需要的参数;在 /wx/query_order
路由处理函数中,使用了 orderQuery
方法查询订单支付状态。
总结
npm 包 wx-pay 是一个非常实用的微信支付集成解决方案,它提供了简单、快捷、稳定的 API 接口,可以大大减少开发者的工作量和开发成本。通过学习和应用本文介绍的使用方法和示例代码,你可以轻松地集成微信支付功能,实现你的在线支付业务。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671158dd3466f61ffe64b