支付宝支付对接(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

  

 

  

posted @   学海无涯学吧  阅读(135)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示