微信支付v3文档图片上传-node

这篇博客展示了如何使用wechatpay-node-v3库在Node.js环境中进行微信支付API调用,具体操作包括设置商户信息、读取证书、创建SHA256签名、生成授权头,并上传图片文件到微信支付接口。过程中涉及到HTTP请求、文件读取及multipart/form-data的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装签名插件 wechatpay-node-v3

使用

const crypto =require('crypto');
const request = require('superagent');
const WxPay = require('wechatpay-node-v3');

const pay = new WxPay({
  appid: '直连商户申请的公众号或移动应用appid',
  mchid: '商户号',
  serial_no: '证书序列号',
  publicKey: fs.readFileSync('./apiclient_cert.pem'), // 公钥
  privateKey: fs.readFileSync('./apiclient_key.pem'), // 秘钥
});

const pic_buffer = fs.readFileSync('72fe0092be0cf9dd8420579cc954fb4e.jpg');
  //meta信息
  const fileinfo = {
    filename: '',
    sha256: '',
  };
  const sign = crypto.createHash('sha256');
  sign.update(pic_buffer);
  fileinfo.filename = '72fe0092be0cf9dd8420579cc954fb4e.jpg';
  fileinfo.sha256 = sign.digest('hex');

 const nonce_str = '593BEC0C930BF1AFEB40B4A08C8FB242',
    timestamp = parseInt(+new Date() / 1000 + '').toString(),
    url = '/v3/merchant/media/upload';

  const signature = pay.getSignature('POST', nonce_str, timestamp, url, fileinfo);
  const authorization = pay.getAuthorization(nonce_str, timestamp, signature);

try {
    const result = await request
      .post('https://api.mch.weixin.qq.com/v3/merchant/media/upload')
      .set({
        Accept: 'application/json',
        'Content-Type': 'multipart/form-data;boundary=boundary',
        'User-Agent': '127.0.0.1',
        Authorization: authorization,
        Charsert: 'UTF-8',
      })
      .attach('file', pic_buffer, {
        filename: '72fe0092be0cf9dd8420579cc954fb4e.jpg',
        contentType: 'image/jpg',
      })
      .field('meta', JSON.stringify(fileinfo));

    console.log(result);
  } catch (error) {
    console.log('error=======>', error);
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值