• wx_pay_v3说明文档


    wx_pay_v3说明文档

    前言

    暂时对接了部分使用频率比较高的接口,如果在使用中发现问题,可📮wx.open@qq.com邮箱联系我


    安装

    npm install @chenbz/wx_pay_v3
    

    实例化

    const { WxPayV3 } = require('@chenbz/wx_pay_v3');
    
    const payConfig = {
        appId: '', // 应用ID
        mchId: '', // 商户ID
        apiKeyV3: '', // API_v3密钥
        serialNo: '', // API证书序列号
        privateKey: '', // API证书私钥
        publicKey: '', // API证书公钥
        payNotifyUrl: '', // 支付回调地址
        refundNotifyUrl: '', // 退款回调地址
      };
    
    const pay = new WxPayV3(payConfig);
    

    必填参数说明

    属性描述指引
    appId应用ID🌈 直达链接
    mchId商户号ID🌈 直达链接
    apiKeyV3API_v3密钥🌈 直达链接
    serialNoAPI证书序列号🌈 官方教程
    privateKeyAPI证书私钥🌈 官方教程
    publicKeyAPI证书公钥🌈 官方教程
    payNotifyUrl支付回调地址开发者自行开发
    refundNotifyUrl退款回调地址开发者自行开发

    函数列表

    函数名称描述
    createSignature生成签名
    getAuthorization请求头token
    verifySignature验证签名(用于验证回调消息签名)
    decryptAES解密AES(用于解密回调消息主体)
    createOrderNo生成订单号(使用uuid确保唯一性)
    jsApijsApi
    jsApiPayjsApi支付
    wmpPay微信小程序支付
    h5Payh5支付
    nativePaynative支付
    appPayapp支付
    getOrderByTransactionId根据微信支付订单号查询
    getOrderByOutTradeNo根据商户订单号查询
    closeOrderByOutTradeNo关闭订单
    refundDomesticByTransactionId根据"微信支付订单号"退款
    refundDomesticByOutTradeNo根据"商户订单号"退款
    getRefundDomesticByOutRefundNo查询单笔退款
    getTradeBill获取申请交易账单
    getFundFlowBill获取申请资金账单
    downloadTradeBill下载申请交易账单
    downloadFundFlowBill下载申请资金账单
    transferBatches发起商户转账
    getCertificates获取平台证书列表

    感谢

    如果可以,来瓶快乐水

    https://i-blog.csdnimg.cn/blog_migrate/86461a90e91d6d90e1df2d2bbd9c4bfb.jpeg

    函数说明

    verifySignature(验证签名)

    使用场景

    用于验证支付回调退款回调是否来自官方,强烈建议!!回调均验证

    参数
    参数描述说明
    signature签名http请求头[‘wechatpay-signature’]
    timestamp时间戳http请求头[‘wechatpay-timestamp’]
    nonce随机字符串http请求头[‘wechatpay-nonce’]
    data回调数据应答主体
    使用示例
    // 不同框架获取请求头的方式不同,示例使用的框架是egg
    
    const signature = ctx.request.header['wechatpay-signature'];
    const timestamp = ctx.request.header['wechatpay-timestamp'];
    const nonce = ctx.request.header['wechatpay-nonce'];
    const data = ctx.request.body;
    
    pay.verifySignature(signature, timestamp, nonce, data);  // true
    

    decryptAES(解密AES)

    使用场景

    用于解密支付回调退款回调

    示例:支付成功结果通知
    {
        "id": "EV-2018022511223320873",
        "create_time": "2015-05-20T13:29:35+08:00",
        "resource_type": "encrypt-resource",
        "event_type": "TRANSACTION.SUCCESS",
        "summary": "支付成功",
        "resource": {
            "original_type": "transaction",
            "algorithm": "AEAD_AES_256_GCM",
            "ciphertext": "",
            "associated_data": "",
            "nonce": ""
        }
    }
    
    参数
    参数描述说明
    cipherText密文resource.ciphertext
    addassociated_data字符串resource.associated_data
    ivnonce字符串resource.nonce
    使用示例
    // 示例使用的框架是egg
    
    const data = ctx.request.body;
    
    const { ciphertext: cipherText, associated_data: add, nonce: iv } = data.resource;
    
    pay.decryptAES(cipherText, add, iv);
    

    createOrderNo(生成订单号[使用uuid确保唯一性])

    使用场景

    生成订单号

    参数

    null

    使用示例
    pay.createOrderNo();  // s3r6a23m8d124dcaa12f2c862c82117e
    

    jsApiPay(jsApi支付)

    使用场景

    JsSDk支付

    参数
    参数描述说明
    outTradeNo商户订单号可调用"createOrderNo()"方法生成
    payerOpenId用户在直连商户appId下的唯一标识openid
    amountTotal订单总金额(单位:分)
    description商品描述
    options可覆盖已有参数🔍可选
    使用示例
    const outTradeNo = pay.createOrderNo();
    const payerOpenId = '';
    const amountTotal = 1;
    const description = '测试商品';
    
    pay.jsApiPay(outTradeNo, payerOpenId, amountTotal, description)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    wmpPay(微信小程序支付)

    使用场景

    微信小程序支付

    参数
    参数描述说明
    outTradeNo商户订单号可调用"createOrderNo()"方法生成
    payerOpenId用户在直连商户appId下的唯一标识openid
    amountTotal订单总金额(单位:分)
    description商品描述
    options可覆盖已有参数🔍可选
    使用示例
    const outTradeNo = pay.createOrderNo();
    const payerOpenId = '';
    const amountTotal = 1;
    const description = '测试商品';
    
    pay.wmpPay(outTradeNo, payerOpenId, amountTotal, description)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    h5Pay(h5支付)

    使用场景

    h5支付

    参数
    参数描述说明
    outTradeNo商户订单号可调用"createOrderNo()"方法生成
    amountTotal订单总金额(单位:分)
    description商品描述
    payerClientIp用户的客户端IP,支持IPv4和IPv6两种格式的IP地址
    options可覆盖已有参数🔍可选
    使用示例
    const outTradeNo = pay.createOrderNo();
    const amountTotal = 1;
    const description = '测试商品';
    const payerClientIp = '127.0.0.1';
    
    pay.h5Pay(outTradeNo, amountTotal, description, payerClientIp)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    nativePay(native支付)

    使用场景

    native支付

    参数
    参数描述说明
    outTradeNo商户订单号可调用"createOrderNo()"方法生成
    amountTotal订单总金额(单位:分)
    description商品描述
    options可覆盖已有参数🔍可选
    使用示例
    const outTradeNo = pay.createOrderNo();
    const amountTotal = 1;
    const description = '测试商品';
    
    pay.nativePay(outTradeNo, amountTotal, description)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    appPay(app支付)

    使用场景

    appPay

    参数
    参数描述说明
    outTradeNo商户订单号可调用"createOrderNo()"方法生成
    amountTotal订单总金额(单位:分)
    description商品描述
    options可覆盖已有参数🔍可选
    使用示例
    const outTradeNo = pay.createOrderNo();
    const amountTotal = 1;
    const description = '测试商品';
    
    pay.appPay(outTradeNo, amountTotal, description)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    getOrderByTransactionId(根据微信支付订单号查询)

    使用场景

    订单查询

    参数
    参数描述说明
    transactionId微信支付订单号支付成功后由微信支付生成返回
    使用示例
    const transactionId = '';
    
    pay.getOrderByTransactionId(transactionId)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    getOrderByOutTradeNo(根据商户订单号查询)

    使用场景

    订单查询

    参数
    参数描述说明
    outTradeNo下单的时候由商户号生成前面使用pay.createOrderNo()生成的订单号
    使用示例
    const outTradeNo = '';
    
    pay.getOrderByOutTradeNo(outTradeNo)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    closeOrderByOutTradeNo(关闭订单)

    使用场景

    关闭订单

    参数
    参数描述说明
    outTradeNo下单的时候由商户号生成前面使用pay.createOrderNo()生成的订单号
    使用示例
    const outTradeNo = '';
    
    pay.closeOrderByOutTradeNo(outTradeNo)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    refundDomesticByTransactionId(根据"微信支付订单号"退款)

    使用场景

    退款

    参数
    参数描述说明
    transactionId微信支付订单号支付成功后由微信支付生成返回
    outRefundNo商户退款单号可调用"createOrderNo()"方法生成
    amountTotal原订单金额原支付交易的订单总金额
    amountRefund退款金额不能超过原订单支付金额
    options可覆盖已有参数🔍可选
    使用示例
    const transactionId = '';
    const outRefundNo = pay.createOrderNo();
    const amountTotal = 1;
    const amountRefund = 1;
    
    pay.refundDomesticByTransactionId(transactionId, outRefundNo, amountTotal, amountRefund)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    refundDomesticByOutTradeNo(根据"商户订单号"退款)

    使用场景

    退款

    参数
    参数描述说明
    outTradeNo商户订单号前面使用pay.createOrderNo()生成的订单号
    outRefundNo商户退款单号可调用"createOrderNo()"方法生成
    amountTotal原订单金额原支付交易的订单总金额
    amountRefund退款金额不能超过原订单支付金额
    options可覆盖已有参数🔍可选
    使用示例
    const outTradeNo = '';
    const outRefundNo = pay.createOrderNo();
    const amountTotal = 1;
    const amountRefund = 1;
    
    pay.refundDomesticByOutTradeNo(outTradeNo, outRefundNo, amountTotal, amountRefund)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    getRefundDomesticByOutRefundNo(查询单笔退款)

    使用场景

    查询单笔退款

    参数
    参数描述说明
    outRefundNo商户退款单号
    使用示例
    const outRefundNo = '';
    
    pay.getRefundDomesticByOutRefundNo(outRefundNo)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    getTradeBill(获取申请交易账单)

    使用场景

    获取申请交易账单

    参数
    参数描述说明
    billDate账单日期示例:2022-09-29
    billType账单类型ALL || SUCCESS || FUND
    tarType压缩类型GZIP
    使用示例
    const billDate = '2022-09-29';
    // [ALL:返回当日所有订单信息(不含充值退款订单)] [SUCCESS:返回当日成功支付的订单(不含充值退款订单)] [REFUND:返回当日退款订单(不含充值退款订单)]
    const billType = 'ALL';
    const tarType = 'GZIP';
    
    pay.getTradeBill(billDate, billType, tarType)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    getTradeBill(获取申请资金账单)

    使用场景

    获取申请交易账单

    参数
    参数描述说明
    billDate账单日期示例:2022-09-29
    accountType资金账户类型BASIC || OPERATION || FEES
    tarType压缩类型GZIP
    使用示例
    const billDate = '2022-09-29';
    // [BASIC:基本账户] [OPERATION:运营账户] [FEES:手续费账户]
    const accountType = 'BASIC';
    const tarType = 'GZIP';
    
    pay.getFundFlowBill(billDate, accountType, tarType)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    downloadTradeBill(下载申请交易账单)

    使用场景

    下载申请交易账单

    参数
    参数描述说明
    billDate账单日期示例:2022-09-29
    billType账单类型ALL || SUCCESS || FUND
    tarType压缩类型GZIP
    使用示例
    const billDate = '2022-09-29';
    // [ALL:返回当日所有订单信息(不含充值退款订单)] [SUCCESS:返回当日成功支付的订单(不含充值退款订单)] [REFUND:返回当日退款订单(不含充值退款订单)]
    const billType = 'ALL';
    const tarType = 'GZIP';
    
    pay.downloadTradeBill(billDate, billType, tarType)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    downloadFundFlowBill(下载申请资金账单)

    使用场景

    下载申请资金账单

    参数
    参数描述说明
    billDate账单日期示例:2022-09-29
    accountType资金账户类型BASIC || OPERATION || FEES
    tarType压缩类型GZIP
    使用示例
    const billDate = '2022-09-29';
    // [BASIC:基本账户] [OPERATION:运营账户] [FEES:手续费账户]
    const accountType = 'BASIC';
    const tarType = 'GZIP';
    
    pay.downloadFundFlowBill(billDate, accountType, tarType)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    transferBatches(发起商户转账)

    使用场景

    发起商户转账

    参数
    参数描述说明
    outBatchNo商户批次单号可调用"createOrderNo()"方法生成
    batchName批次名称openid
    batchRemark批次备注
    transferDetailList转账明细列表数组
    options可覆盖已有参数🔍可选

    transferDetailList属性说明

    属性描述说明
    out_detail_no商家明细单号可调用"createOrderNo()"方法生成
    transfer_amount转账金额(单位:分)
    transfer_remark转账备注
    openidopenid是微信用户在公众号appid下的唯一用户标识openid
    user_name收款用户姓名明细转账金额 >= 2,000元,收款用户姓名必填
    使用示例
    const outBatchNo = pay.createOrderNo();
    const batchName = '活动1';
    const batchRemark = '测试活动1转账';
    const transferDetailList = [
      {
        out_detail_no: pay.createOrderNo(),
        transfer_amount: 1,
        transfer_remark: '中奖用户1',
        openid: ''
      }
    ]
    
    pay.transferBatches(outBatchNo, batchName, batchRemark, transferDetailList)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

    getCertificates(获取平台证书列表)

    使用场景

    定期检查证书 => 提前更换证书

    参数

    null

    使用示例
    pay.getCertificates()
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        console.log(err);
      });
    

  • 相关阅读:
    一周入门Python之day04
    开发者任务中心上线!千元豪礼送不停!
    OD机考真题:MELON的难题
    前后端分离技术架构模式演变
    TS类型全解
    UML建模
    Android Studio实现一个垃圾分类系统(Kotlin版本)
    CSS选择器
    vue3中使用return语句返回this.$emit(),在同一行不执行,换行后才执行,好奇怪!
    nginx-反向代理缓存
  • 原文地址:https://blog.csdn.net/weixin_42863549/article/details/127111701