2401_85208397 2024-05-30 10:57 采纳率: 0%
浏览 15
已结题

微信支付转账凭证,如何解决

微信转账凭证看不到对方微信号怎么解决,速来懂得字数不够,有没有懂得的,知道的评论区见

  • 写回答

15条回答 默认 最新

  • 专家-皆知 2024-05-30 11:08
    关注

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    在微信小程序中处理微信支付转账时,用户通常关心如何获取到对方的微信号作为转账凭证的一部分。但需要注意的是,出于隐私保护的原因,微信官方接口并不直接提供转账双方的微信号信息。不过,可以通过其他方式间接实现类似需求,确保交易的可追溯性。

    1. 通过订单号关联

    在进行转账前,你可以在自己的服务器上为每一笔转账生成一个唯一的订单号,并将此订单号与发起转账的用户信息(如用户ID、昵称等,但不包括微信号)关联起来。转账时,将这个订单号作为transaction_id或自定义的转账描述字段传递给微信支付API。

    2. 转账回调

    微信支付在转账完成后,会通过你设置的回调地址通知你的服务器。在回调通知中,会包含transaction_id等转账信息。你的服务器可以根据这个transaction_id查询之前保存的订单信息,从而间接知道是哪位用户发起的转账。

    示例代码:创建转账订单

    在后端服务中,你可能需要实现一个创建转账订单并调用微信支付API的功能。这里是一个基于Node.js使用axios库调用微信支付API的示例代码框架:

    const axios = require('axios');
    
    // 微信支付API配置
    const wxPayConfig = {
      appid: 'your_appid',
      mch_id: 'your_mch_id',
      api_key: 'your_api_key', // 注意:实际使用中应从安全地方读取,不要硬编码
    };
    
    // 创建转账订单请求体示例
    function createTransferOrder(openid, amount, description, spbill_create_ip) {
      const nonce_str = generateNonceStr(); // 生成随机字符串
      const timestamp = Math.floor(Date.now() / 1000); // 当前时间戳
      const sign = generateSign({
        appid: wxPayConfig.appid,
        mch_id: wxPayConfig.mch_id,
        nonce_str,
        partner_trade_no: generateUniqueOrderNo(), // 生成唯一订单号
        openid,
        check_name: 'NO_CHECK', // 根据需求调整
        amount,
        desc: description,
        spbill_create_ip,
        timestamp,
      }, wxPayConfig.api_key); // 签名生成函数
    
      return axios.post('https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers', {
        appid: wxPayConfig.appid,
        mch_id: wxPayConfig.mch_id,
        nonce_str,
        partner_trade_no: generateUniqueOrderNo(),
        openid,
        check_name: 'NO_CHECK',
        amount,
        desc: description,
        spbill_create_ip,
        time_start: formatTimestamp(timestamp),
        time_expire: formatTimestamp(timestamp + 3600), // 设置有效期
        sign_type: 'MD5',
        sign,
      }, {
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
        },
      });
    }
    
    // 辅助函数省略...
    
    // 调用示例
    createTransferOrder('receiver_openid', 1, '转账描述', '127.0.0.1')
      .then(response => {
        console.log('转账请求成功,等待回调:', response.data);
      })
      .catch(error => {
        console.error('转账请求失败:', error.response.data);
      });
    

    注意事项

    • 请确保替换示例代码中的your_appidyour_mch_idyour_api_key等占位符为实际的微信支付商户平台配置。
    • 实现generateNonceStrgenerateUniqueOrderNogenerateSignformatTimestamp这些辅助函数来生成随机字符串、唯一订单号、签名以及格式化时间戳。
    • 转账功能需要在微信商户平台开通,并且需要用户的授权才能获取到其openid进行转账。

    通过上述方式,虽然不能直接展示对方的微信号,但可以确保每笔转账都有记录可查,满足业务追溯的需求。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月31日
  • 赞助了问题酬金15元 5月30日
  • 创建了问题 5月30日

悬赏问题

  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd