首页打开支付宝官方进行登录:
支付宝开放平台 (alipay.com)
下载支付宝提供的秘钥转化工具:
密钥工具下载 - 支付宝文档中心 (alipay.com)
打开工具生成密码:
然后在支付宝页面配置秘钥
开始配置node
npm init -y初始化,再npm i express跟npm i alipay-sdk,再配置app.js基础配置
const express = require('express')
const app = express()
app.get('/', (req, res) => {
res.send('hello world')
})
app.listen(3003, () => {
console.log('server is runing on 3003')
})
新建alPay.js文件配置沙箱
const AlipaySdk = require('alipay-sdk').default
// 普通公钥模式
const alipaySdk = new AlipaySdk({
// APPID
appId: '2021000122620106',
//签名算法
signType:'RSA2',
//支付宝网关
gateway:'https://openapi.alipaydev.com/gateway.do',
//应用私钥
privateKey: '',
//支付宝公钥
alipayPublicKey:'',
})
module.exports = alipaySdk
这里我踩了个坑,应用私钥需要再次转化格式才行,不然就会报错
转化方法如下:将生成的私钥复制到图二进行转化,然后将转化的私钥复制到node中
在app.js中引用alPay.js
const express = require('express')
const app = express()
//引入支付宝沙箱
const alipaySdk = require('./utils/aliPay')
const AlipayFormData = require('alipay-sdk/lib/form').default
//支付接口
app.post('/pay', (req, res) => {
const formData = new AlipayFormData();
//调用get方法
formData.setMethod('get')
formData.addField('bizContent', {
outTradeNo: 123487858, //订单ID
productCode: 'FAST_INSTANT_TRADE_PAY', //固定的
totalAmount: 10, //金额
subject: '测试' //订单标题
})
// 支付成功或者失败
formData.addField('returnUrl', 'https://www.baidu.com/') //支付成功回调地址
const result = alipaySdk.exec(
'alipay.trade.page.pay', //统一收单、下单、支付页面接口
{},
{
// 通过 formData 设置请求参数
formData: formData,
}
)
result.then(resp => {
res.send({
data: {
code: 200,
success: 'ture',
paymentUrl: resp
}
})
})
})
app.get('/', (req, res) => {
res.send('hello world')
})
app.listen(3003, () => {
console.log('server is runing on 3003')
})
用postman进行测试,得到paymentUrl地址,然后在浏览器中打开就行了