微信小程序/H5 調起確認收款界面
?? 微信小程序/H5 調起確認收款界面詳解(附代碼+平臺兼容處理)
場景:用戶點擊「收款」按鈕后,系統調起微信收款組件,用戶確認后完成轉賬或收款流程。該能力廣泛用于現金營銷、二手交易、傭金報酬、企業賠付等業務場景中。
具體見官方文檔
?? 背景
微信官方在前倆月更新了 requestMerchantTransfer 接口,允許微信小程序與H5 頁面調起一個用戶確認收款的界面,用戶在完成確認后即可完成轉賬。
該 API 可用于實現:
- 商戶對用戶打款時讓用戶確認(平臺代發)
- 用戶向另一個用戶確認收款(點對點收款)
- 錢包提現類應用(先展示轉賬詳情 → 用戶同意 → 發起打款)
...
?? 使用前提
? 申請前提:
- 需要開通微信支付商戶平臺的 商家轉賬到零錢 產品權限;
- 綁定到小程序或公眾號;
- 需要設置
mchId(商戶號)、appId(當前小程序/公眾號的 appid)、package(訂單詳情包)。
?? 支持的平臺:
| 平臺 | 是否支持 | 調用方式說明 |
|---|---|---|
| 小程序端 | ? 支持 | 原生 API wx.requestMerchantTransfer |
| 微信內 H5 | ? 支持 | 通過 WeixinJSBridge.invoke() 調用 |
| 外部瀏覽器 | ? 不支持 | 必須在微信內打開網頁 |
| PC 端微信 | ? 不支持 | 僅支持手機微信端 |
另外官方提示:低版本微信客戶端、低版本小程序基礎庫 均不支持 requestMerchantTransfer 方法,需做好兼容性處理。
APP 另見官方文檔,有 Android 和 iOS,這里不做詳細說明
?? 核心代碼實現
以下使用 uniapp 為兼容小程序 + 微信 H5 兩端的完整調用方式(復制后更換參數即可使用):
getMoney(item) {
const that = this;
// 判斷平臺 也可以使用(// #ifdef MP-WEIXIN // #endif)
if (app.globalData.platform === 'wx') {
// ? 小程序端調用方式
wx.requestMerchantTransfer({
mchId: item.mchid, // 商戶號,由微信支付生成并下發
appId: item.appid, // 商戶綁定的AppID(企業號corpid即為此AppID),由微信生成,可在公眾號后臺查看
package: item.package_info, // 對應發起轉賬接口應答參數中的 package_info(僅當轉賬單據狀態為WAIT_USER_CONFIRM: 待收款用戶確認時才返回),用于喚起用戶確認收款頁面。
success(res) {
console.log('用戶確認收款成功', res);
uni.showToast({
title: '收款成功',
icon: 'success'
});
that.getdata(false, 1); // 刷新數據
},
fail(res) {
console.error('用戶確認收款失敗', res);
uni.showToast({
title: '收款失敗',
icon: 'error'
});
},
complete(res) {
console.log('請求完成', res);
}
});
} else if (app.globalData.platform === 'h5') { // 也可以使用(// #ifdef H5 // #endif)
// ? H5調用方式(確保在微信環境中)
wx.ready(function() {
wx.checkJsApi({
jsApiList: ['requestMerchantTransfer'],
success: function(res) {
if (res.checkResult['requestMerchantTransfer']) {
// H5端通過 WeixinJSBridge 調用
WeixinJSBridge.invoke('requestMerchantTransfer', {
mchId: item.mchid,
appId: item.appid,
package: item.package_info,
}, function(res) {
if (res.err_msg === 'requestMerchantTransfer:ok') {
uni.showToast({
title: '收款成功',
icon: 'success'
});
that.getdata(); // 刷新數據
} else {
console.warn('用戶取消或收款失敗', res);
}
});
} else {
alert('你的微信版本過低,請更新至最新版本。');
}
}
});
});
}
}
?? 解讀(關鍵點說明)
| 參數/邏輯 | 含義/說明 |
|---|---|
mchId |
微信商戶平臺下的商戶號 |
appId |
小程序或公眾號的 AppID |
package |
微信支付平臺返回的打款詳情(經過加密) |
wx.requestMerchantTransfer |
小程序端內置 API,發起轉賬確認流程 |
WeixinJSBridge.invoke() |
微信 H5 端的 JS 橋調用,用于喚起支付、收款等界面 |
checkJsApi() |
檢查當前微信版本是否支持該 JS API |
err_msg: ok |
表示用戶確認了收款,才會執行成功邏輯 |
?? 常見問題 & 踩坑提示
- 小程序內請確保 AppID 已配置轉賬權限,否則會報「無權限」;
- H5 調用必須在
wx.ready()中進行,且前提是先注入 JS-SDK 簽名; - 微信版本低于 7.0.20 可能不支持該能力;
- 請勿在非微信瀏覽器中測試 H5 端,WeixinJSBridge 無法注入;
- package 參數要從后端獲取,且務必注意加密與簽名校驗;
?? 參考鏈接:
微信開放文檔:requestMerchantTransfer

浙公網安備 33010602011771號