初探NodeJS对接支付宝沙箱之PC网页支付

最近想对接对接支付宝接口, 支付宝接口可以使用沙箱测试
代码地址: https://github.com/klren0312/NodeAlipayTest

一. 开启沙箱

可以访问开发者中心https://openhome.alipay.com/platform/appDaily.htm?tab=info
进行认证后, 即可进入沙箱配置页

image.png

二. 配置密钥

1. 下载密钥生成工具

访问 https://docs.open.alipay.com/291/105971

image.png

2.生成公钥私钥

image.png

3.设置公钥

加签方式选择公钥

image.png

注意: 由于我年轻的时候失误, 选了RSA2选成了证书, 没法对接node, 所以我代码只能用RSA来进行, 不过截图可以用别人的

image.png

输入公钥后, 会生成一个支付宝公钥, 后面代码需要使用

image.png

三. NodeJS请求支付接口

1. 初始化项目

mkdir payTest
yarn init -y

2. 安装依赖

官方提供了NodeJS的服务端SDK
前往https://docs.open.alipay.com/54/103419查看

yarn add alipay-sdk

3.查看要用到的接口

由于我们用的是PC支付, 对应的文档中提示我们可以使用alipay.trade.page.pay接口来实现

alipay.trade.page.pay接口的必填参数如下,

4.代码编写

const AlipaySdk = require('alipay-sdk').default
const AlipayFormData = require('alipay-sdk/lib/form').default

// 初始化插件
const alipaySdk = new AlipaySdk({
  appId: '2016100100639372',
  gateway: 'https://openapi.alipaydev.com/gateway.do',
  signType: 'RSA', // 注意这里默认是RSA2, 但是我自己只能用RSA, 所以是RSA, 正常不要配置
  privateKey: '刚刚你使用工具生成的私钥',
  alipayPublicKey: '刚刚你使用公钥在沙箱页面生成的支付宝公钥'
})

async function pay () {
  const formData = new AlipayFormData()
  // 调用 setMethod 并传入 get,会返回可以跳转到支付页面的 url
  formData.setMethod('get')
  // 配置回调接口
  formData.addField('notifyUrl', 'http://www.zzes1314.cn')
  // 设置参数
  formData.addField('bizContent', {
    outTradeNo: '1582976759798',
    productCode: 'FAST_INSTANT_TRADE_PAY',
    totalAmount: '0.01',
    subject: '商品',
    body: '商品详情',
  });
  // 请求接口
  const result = await alipaySdk.exec(
    'alipay.trade.page.pay',
    {},
    { formData: formData },
  );

  // result 为可以跳转到支付链接的 url
  console.log(result);
}

pay()

5. 运行结果

可以看到命令行打印了返回的跳转链接


image.png

访问可以看到沙箱的支付环境


image.png

这是使用沙箱的账号登录支付即可


image.png
image.png

四. 一些小问题

当我们配置好公钥的时候可以来检验下是否可以正常验签


image.png

这里可以通过它提示下载签名工具, 但是由于签名工具是用java语言开发,所以工具的左边文本框要输入PKCS8格式的私钥文本信息。
如果您使用非java开发语言,请先将生成的私钥转换成PKCS8格式的私钥,再将PKCS8格式的私钥文本信息输入工具左边输入框。

所以我们要把私钥在支付宝开放平台助手里进行转换后再进行签名

image.png

然后复制生成的私钥进行签名


image.png

最后放入验证, 通过既是可以了

参考资料

推荐阅读更多精彩内容