NodeJS
本Demo使用express+mysql开发,
初始化项目
安装依赖
需要使用到的依赖如下
"devDependencies": {
"alipay-sdk": "^3.1.6",
"body-parser": "^1.19.0",
"express": "^4.17.1",
"mysql": "^2.18.1"
},
使用npm install 安装,不多叙述
支付宝接入(沙箱环境)
此步骤需要在支付宝平台申请接入,需要有企业账号,
这里使用的是沙箱环境,
沙箱环境,仅需要支付宝账号即可.用于测试开发,可以使用沙箱支付宝APP来进行支付,
进入开放管理平台https://openhome.alipay.com/platform/developerIndex.htm
选择开发服务中的研发服务,即可进入沙箱环境
点击设置RSA2密钥
我们可以使用支付宝提供的工具来生成公钥私钥
直接点击下方连接即可进入支付宝提供的在线工具
https://miniu.alipay.com/keytool/create
按照图片顺序选择生成选项,RSA2, 非JAVA适用
生成密钥
然后复制 应用公钥 到开放平台的设置中
点击保存设置即可
之后将生成的 应用私钥 复制,保存为名叫private-key.pem的文件
再点击开放平台的RSA2密钥,查看支付宝公钥
将支付宝公钥复制,保存为public-key.pem的文件
项目结构
-Project
-main.js
-public-key.pem
-private-key.pem
-package.json
public-key.pem,private-key.pem分别是刚才保存的密钥文件
编写Main.js
先引入’alipay-sdk’
const AlipaySdk = require('alipay-sdk').default;
AlipaySdk 是使用Alipay接口的类,然后再初始化
const alipaySdk = new AlipaySdk({
signType: 'RSA2',//这里直接使用'RSA2'不要更改
gateway: 'https://openapi.alipaydev.com/gateway.do',//这里是网关,alipaydev代表使用的是沙箱环境
appId: '2021000000000000',//这里是应用id,去开放平台查询
privateKey: fs.readFileSync('./private-key.pem', 'ascii'),//这里是读取私钥文件
encryptKey: '',//这里是开放平台的AES密钥
alipayPublicKey: fs.readFileSync('./public-key.pem', 'ascii')//这里是读取公钥文件
});
以上是初始化实例的代码
初始化实例后,就可以使用实例的 exec方法调用支付宝接口
const formData = new AlipayFormData();
// 调用 setMethod 并传入 get,会返回可以跳转到支付页面的 url
formData.setMethod('get');
formData.addField('notifyUrl', 'http://url/Notify');//处理回调,确保安全的
formData.addField('returnUrl', fromURL);//不安全的,仅仅显示结果
formData.addField('bizContent', {
outTradeNo: outTradeNoString,
productCode: 'FAST_INSTANT_TRADE_PAY',
totalAmount: '0.01',
subject: '商品',
body: '商品详情'
});
const result = await alipaySdk.exec(
'alipay.trade.page.pay',
{},
{ formData: formData },
);
// result 为可以跳转到支付链接的 url
return result
以上是调用创建订单的代码
其中 outTradeNoString 是商家啊自定义的订单编号