uniapp 小程序如何实现发起转账并让用户确认领取功能

在uniapp开发小程序时,如何实现发起转账功能并让用户确认领取?需要调用哪些API?具体流程是怎样的?有没有完整的代码示例可以参考?转账金额和收款方信息如何安全传递?用户确认领取后如何更新双方账户余额?需要注意哪些安全问题和权限设置?

2 回复

使用uni-app实现转账功能,可通过以下步骤:

  1. 调用uni.requestPayment发起支付
  2. 支付成功后调用后端接口生成转账记录
  3. 收款方在小程序内收到消息通知
  4. 用户点击通知进入页面,调用uni.showModal确认领取
  5. 确认后调用后端接口完成转账

注意:需配置微信支付和消息模板,后端处理资金流转。


在 UniApp 中实现小程序发起转账并让用户确认领取功能,可以通过微信小程序的微信支付-企业付款到零钱功能实现。以下是实现步骤和示例代码:

实现步骤

  1. 后端准备:在服务端调用微信支付企业付款 API,生成转账参数。
  2. 前端调用:前端通过 UniApp 发起请求,传递用户 openid 和金额到后端。
  3. 用户确认:通过弹窗或页面让用户确认转账信息。
  4. 执行转账:用户确认后,后端调用微信 API 完成转账。

示例代码

1. 前端页面(确认页面)

<template>
  <view class="container">
    <text>转账金额:{{ amount }} 元</text>
    <text>收款用户:{{ userName }}</text>
    <button @tap="confirmTransfer">确认领取</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      amount: 100, // 示例金额
      userName: '用户昵称'
    }
  },
  methods: {
    async confirmTransfer() {
      try {
        const res = await uni.request({
          url: 'https://your-server.com/transfer', // 后端接口
          method: 'POST',
          data: {
            openid: '用户openid',
            amount: this.amount
          }
        });
        if (res.data.success) {
          uni.showToast({ title: '转账成功', icon: 'success' });
        } else {
          uni.showToast({ title: '转账失败', icon: 'none' });
        }
      } catch (error) {
        uni.showToast({ title: '网络错误', icon: 'none' });
      }
    }
  }
}
</script>

2. 后端示例(Node.js)

const axios = require('axios');

app.post('/transfer', async (req, res) => {
  const { openid, amount } = req.body;
  const params = {
    mch_appid: '你的小程序AppID',
    mchid: '你的商户号',
    partner_trade_no: '商户订单号' + Date.now(),
    openid: openid,
    check_name: 'NO_CHECK', // 不校验真实姓名
    amount: amount * 100, // 单位为分
    desc: '转账描述',
    spbill_create_ip: '服务器IP'
  };
  
  // 调用微信企业付款API
  try {
    const result = await axios.post('https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers', params, {
      httpsAgent: new https.Agent({ pfx: fs.readFileSync('证书路径'), passphrase: '商户号' })
    });
    res.json({ success: true, data: result.data });
  } catch (error) {
    res.json({ success: false, error: error.response.data });
  }
});

注意事项

  • 权限要求:需要微信商户号并开通企业付款功能。
  • 证书配置:后端需使用微信支付 API 证书。
  • 安全限制:单用户单日收款限额,需处理重复请求和金额校验。
  • 用户体验:前端可加加载状态,防止重复提交。

如果不需要实际转账,仅模拟流程,可简化后端逻辑,直接返回成功状态。

回到顶部