支付宝支付对接(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
标签:
支付宝支付nodejs
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!