node使用支付宝沙箱模拟支付-好文

首页打开支付宝官方进行登录:

支付宝开放平台 (alipay.com)

下载支付宝提供的秘钥转化工具:

密钥工具下载 - 支付宝文档中心 (alipay.com)
node使用支付宝沙箱模拟支付-好文_第1张图片

打开工具生成密码:

node使用支付宝沙箱模拟支付-好文_第2张图片

然后在支付宝页面配置秘钥

node使用支付宝沙箱模拟支付-好文_第3张图片
node使用支付宝沙箱模拟支付-好文_第4张图片
node使用支付宝沙箱模拟支付-好文_第5张图片

开始配置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使用支付宝沙箱模拟支付-好文_第6张图片

转化方法如下:将生成的私钥复制到图二进行转化,然后将转化的私钥复制到node中

node使用支付宝沙箱模拟支付-好文_第7张图片
node使用支付宝沙箱模拟支付-好文_第8张图片
  • 在app.js中引用alPay.js

const express = require('express')
const app = express()
//引入支付宝沙箱
const alipaySdk = require('./utils/aliPay')
//引入了支付宝 SDK 中的表单生成类 AlipayFormData
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地址,然后在浏览器中打开就行了

node使用支付宝沙箱模拟支付-好文_第9张图片

你可能感兴趣的:(node开发,前端)