支付宝(Alipay)是中国最大的移动支付平台之一,其聚集了数亿用户和数百万商户。在实现支付宝支付过程中,alipay-server
NPM 包可以帮助 Node.js 开发者轻松地接入支付宝 SDK、管理密钥和签名等操作。本文将详细介绍 alipay-server
包的使用方法,帮助开发者快速搭建基于支付宝支付的应用程序。
安装
在使用 alipay-server
之前需要先安装 Node.js 和 NPM,然后在项目目录下执行以下命令:
npm install alipay-server --save
这样就可以把 alipay-server
包添加到项目依赖中。
配置
接下来需要配置支付宝开放平台的应用程序,获取验证密钥等信息。首先登录支付宝开放平台,创建一个新应用程序,然后获取以下信息:
APP_ID
:应用程序 IDPUBLIC_KEY
:应用程序公钥字符串(注意一定要保护好私钥)PRIVATE_KEY
:生成签名和加密信息的私钥字符串
然后在代码中添加以下配置:
const Alipay = require('alipay-server'); const alipay = new Alipay({ appId: 'YOUR_APP_ID', publicKey: 'YOUR_PUBLIC_KEY', privateKey: 'YOUR_PRIVATE_KEY', sandbox: true // 是否开启沙箱模式(测试用) });
实际使用时,需要将 YOUR_APP_ID
、YOUR_PUBLIC_KEY
、YOUR_PRIVATE_KEY
替换为自己的信息。当 sandbox
参数为 true
时,表示调用沙箱网关(测试用),正式开发时应改为 false
。
使用
签名
接口参数签名是使用私钥加密的,每个请求的签名参数不同,需要对每个请求单独进行签名。可以使用 alipay.sign()
方法对参数进行签名:
const params = { method: 'alipay.trade.query', app_id: 'YOUR_APP_ID', out_trade_no: '1234567890' }; const sign = alipay.sign(params);
alipay.trade.query
是支付宝开放平台中查询订单的 API 方法,out_trade_no
是我们自己创建的订单号。
请求支付 API
签名完成后,可以使用 alipay.request()
方法调用支付宝 API。以调用查询订单状态 API 为例:
-- -------------------- ---- ------- ----- ------ - - ------- --------------------- ------- -------------- ------------- ------------ -- ----- ---- - -------------------- ---------------- ------ ------- ---- ------------------ -- - ---------------------- ---------------- -- - ------------------- ---
这样就可以向支付宝服务器发送 API 请求,并根据返回的结果输出相关信息了。
取消订单
在支付宝支付中,如果用户尚未完成支付,想要取消订单,可以使用 alipay.cancel()
方法:
alipay.cancel({ app_id: 'YOUR_APP_ID', out_trade_no: '1234567890' }).then((response) => { console.log(response); }).catch((error) => { console.log(error); });
支付结果通知
支付宝会自动向开发者提供支付结果通知。可以自己编写一个路由,接收这些通知:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---------- - ----------------------- ----- --- - ---------- ------------------------------- --------- ---- ---- ------------------- ----- ---- -- - ----- ------ - --------- ----- ---- - ------------ ----- ------------ - ------------------------- ------ -- -------------- - --- - --------- - - ------------------- --------- - --------------- ------ - ------------------- ---- -- - -------------------- --- -----------------
当收到支付结果通知后,首先需要对签名进行验证,只有验证通过才能确定通知的来源。如果验证通过,说明支付流程已经完成,可以根据 params.trade_status
来处理订单状态。
示例代码
最后,我们提供一个完整的示例代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---------- - ----------------------- ----- ------ - ------------------------- ----- --- - ---------- ----- ------ - --- -------- ------ -------------- ---------- ------------------ ----------- ------------------- -------- ---- --- ------------------------------- --------- ---- ---- ------------------- ----- ---- -- - ----- ------ - --------- ----- ---- - ------------ ----- ------------ - ------------------------- ------ -- -------------- - --- - --------- - - ------------------- --------- - --------------- ------ - ------------------- ---- -- - -------------------- --- ------------------- ----- ---- -- - --------------- ------- -------------- ------------- --------------------- ------------------ -- - ------------------- ---------------- -- - ---------------- --- --- ----------------- ----- ---- -- - ----- ------ - - ------- --------------------- ------- -------------- ------------- ---------------------- -- ----- ---- - -------------------- ---------------- ------ ------- ---- ------------------ -- - ------------------- ---------------- -- - ---------------- --- --- -----------------
结论
本文介绍了 alipay-server
NPM 包的详细使用方法,帮助开发者轻松接入支付宝支付 SDK,实现支付功能。在实际开发过程中,还需要考虑订单的状态管理、订单流程的处理等方面,但基于 alipay-server
的封装,大大简化了开发者的工作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600572c881e8991b448e8f3e