使用NodeJS+Vue3接入支付宝网站支付
12:33
阅读次数: 0NodeJS
本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 是商家啊自定义的订单编号