feat: 支持 H5 公众号微信商家转账确认收款

master
YunaiV 2026-06-08 08:43:43 +08:00
parent 8338321786
commit 84a9fb5c78
3 changed files with 76 additions and 1 deletions

View File

@ -229,7 +229,7 @@
} }
let openid; let openid;
if (state.accountInfo.type === '5') { if (state.accountInfo.type === '5') {
openid = await sheep.$platform.useProvider('wechat').getOpenid(); openid = await sheep.$platform.useProvider('wechat').getOpenid(true);
// openid // openid
if (!openid) { if (!openid) {
goBindWeixin(); goBindWeixin();

View File

@ -9,6 +9,7 @@ import $helper from '@/sheep/helper';
import AuthUtil from '@/sheep/api/member/auth'; import AuthUtil from '@/sheep/api/member/auth';
let configSuccess = false; let configSuccess = false;
let configAppId = ''; // JSSDK 初始化所使用的公众号 appId确认收款时需要
export default { export default {
// 判断是否在微信中 // 判断是否在微信中
@ -47,9 +48,11 @@ export default {
'updateAppMessageShareData', 'updateAppMessageShareData',
'updateTimelineShareData', 'updateTimelineShareData',
'scanQRCode', 'scanQRCode',
// 'requestMerchantTransfer', // TODO @使用者:如果需要微信商家转账功能,请打开该注释;
], // TODO 芋艿:后续可以设置更多权限; ], // TODO 芋艿:后续可以设置更多权限;
openTagList: data.openTagList, openTagList: data.openTagList,
}); });
configAppId = data.appId;
} else { } else {
console.log('请求 JSSDK 配置失败,错误码:', code); console.log('请求 JSSDK 配置失败,错误码:', code);
} }
@ -195,4 +198,50 @@ export default {
}); });
}); });
}, },
// 商家转账用户确认收款H5 / 公众号)
// 可见 https://pay.weixin.qq.com/doc/v3/merchant/4012716430 文档
requestMerchantTransfer(data, callback) {
const invoke = () => {
// WeixinJSBridge 内置对象,仅在微信客户端中有效
if (typeof WeixinJSBridge === 'undefined') {
callback.fail && callback.fail({ errMsg: '请在微信客户端中打开页面后再确认收款' });
return;
}
WeixinJSBridge.invoke(
'requestMerchantTransfer',
{
mchId: data.mchId,
appId: data.appId || configAppId,
package: data.package,
},
function (res) {
if (res.err_msg === 'requestMerchantTransfer:ok') {
callback.success && callback.success(res);
} else if (res.err_msg === 'requestMerchantTransfer:cancel') {
callback.cancel && callback.cancel(res);
} else {
callback.fail && callback.fail(res);
}
},
);
};
this.isReady(() => {
// 校验微信客户端是否支持 requestMerchantTransfer
jweixin.checkJsApi({
jsApiList: ['requestMerchantTransfer'],
success: function (res) {
if (res.checkResult && res.checkResult['requestMerchantTransfer']) {
invoke();
} else {
callback.fail && callback.fail({ errMsg: '你的微信版本过低,请更新至最新版本' });
}
},
fail: function () {
// checkJsApi 失败时,兜底直接尝试调用
invoke();
},
});
});
},
}; };

View File

@ -2,6 +2,7 @@ import $wxsdk from '@/sheep/libs/sdk-h5-weixin';
import { getRootUrl } from '@/sheep/helper'; import { getRootUrl } from '@/sheep/helper';
import AuthUtil from '@/sheep/api/member/auth'; import AuthUtil from '@/sheep/api/member/auth';
import SocialApi from '@/sheep/api/member/social'; import SocialApi from '@/sheep/api/member/social';
import sheep from '@/sheep';
const socialType = 31; // 社交类型 - 微信公众号 const socialType = 31; // 社交类型 - 微信公众号
@ -94,6 +95,30 @@ async function getInfo() {
return data; return data;
} }
// 商家转账用户确认模式下,拉起页面请求用户确认收款 Transfer
// 入参与小程序保持一致:(mchId, packageInfo, successCallback, failCallback)
function requestMerchantTransfer(mchId, packageInfo, successCallback, failCallback) {
$wxsdk.requestMerchantTransfer(
{
mchId,
package: packageInfo,
},
{
success: (res) => {
successCallback && successCallback({ result: 'success', ...res });
},
cancel: (res) => {
sheep.$helper.toast('确认收款已取消');
failCallback && failCallback({ result: 'cancel', errMsg: '确认收款已取消', ...res });
},
fail: (res) => {
sheep.$helper.toast(res.errMsg || '确认收款失败');
failCallback && failCallback({ result: 'fail', ...res });
},
},
);
}
export default { export default {
load, load,
login, login,
@ -101,5 +126,6 @@ export default {
unbind, unbind,
getInfo, getInfo,
getOpenid, getOpenid,
requestMerchantTransfer,
jsWxSdk: $wxsdk, jsWxSdk: $wxsdk,
}; };