支付宝支付对接(nodejs)
1. 准备工作
1.1 以公司名义接入支付宝(https://opendocs.alipay.com/open/270/01didh?pathHash=a6ccbe9a),并创建应用
1.2 获取到如下参数:
- appId: 应用id
- privateKey: 私钥文件
- alipayRootCertPath: 根证书
- alipayPublicCertPath: 公开证书
- appCertPath: 应用证书
- appCertSn: 应用证书序列号(APP和H5支付使用),可通过JAVA版的SDK获取,String appCertSn = AlipaySignature.getCertSN( "appCertPublicKey_xxxx.crt" )
-
alipayRootCertSn: 根证书序列号(APP和H5支付使用),可通过JAVA版的SDK获取,
import com.alipay.api.internal.util.AlipaySignature; import com.alipay.api.internal.util.AntCertificationUtil; import com.alipay.api.internal.util.file.FileUtils; File file = new File(rootCertPath); String rootCertContent= FileUtils.readFileToString(file); String alipayRootCertSn = AntCertificationUtil.getRootCertSN(rootCertContent);
1.3 安装nodejs SDK
npm install alipay-sdk -S
1.4 使用
import AlipaySdk from 'alipay-sdk'; import AlipayFormData from 'alipay-sdk/lib/form'; const alipay = new AlipaySdk({ // 参考下方 SDK 配置 appId: appId, privateKey: fs.readFileSync(privateKey), 'ascii'), alipayRootCertPath: alipayRootCertPath, alipayPublicCertPath: alipayPublicCertPath), appCertPath: appCertPath) }); const formData = new AlipayFormData(); formData.setMethod('get') formData.addField('notifyUrl', this.getNotifyUrl(record)); record.payload.returnUrl && formData.addField('returnUrl', record.payload.returnUrl) formData.addField('bizContent', { outTradeNo: orderNo, // 本系统订单号 totalAmount: total / 100, // 支付宝的单位是:元 subject: productName, // 商品名称 productCode: 'FAST_INSTANT_TRADE_PAY', body: '', // 备注信息 storeId: '', // 商店id,如果只有一个应用,为了方便开发环境,生产环境区分对账,可以用该字段标识环境信息 timeExpire: dayjs().add(120, 'minute').format('YYYY-MM-DD HH:mm:ss') // 设置订单过期时间 }); const result = await alipay.exec( 'alipay.trade.page.pay', {}, { formData } ) as string // 返回结果是一个支付宝收银台的页面,前端需要打开一个tab页面跳转到收银台
其他接口可查看sdk, https://www.npmjs.com/package/alipay-sdk

浙公网安备 33010602011771号