feat: 支持 H5 公众号微信商家转账确认收款
parent
8338321786
commit
84a9fb5c78
|
|
@ -229,7 +229,7 @@
|
|||
}
|
||||
let openid;
|
||||
if (state.accountInfo.type === '5') {
|
||||
openid = await sheep.$platform.useProvider('wechat').getOpenid();
|
||||
openid = await sheep.$platform.useProvider('wechat').getOpenid(true);
|
||||
// 如果获取不到 openid,微信无法发起支付,此时需要引导
|
||||
if (!openid) {
|
||||
goBindWeixin();
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import $helper from '@/sheep/helper';
|
|||
import AuthUtil from '@/sheep/api/member/auth';
|
||||
|
||||
let configSuccess = false;
|
||||
let configAppId = ''; // JSSDK 初始化所使用的公众号 appId,确认收款时需要
|
||||
|
||||
export default {
|
||||
// 判断是否在微信中
|
||||
|
|
@ -47,9 +48,11 @@ export default {
|
|||
'updateAppMessageShareData',
|
||||
'updateTimelineShareData',
|
||||
'scanQRCode',
|
||||
// 'requestMerchantTransfer', // TODO @使用者:如果需要微信商家转账功能,请打开该注释;
|
||||
], // TODO 芋艿:后续可以设置更多权限;
|
||||
openTagList: data.openTagList,
|
||||
});
|
||||
configAppId = data.appId;
|
||||
} else {
|
||||
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();
|
||||
},
|
||||
});
|
||||
});
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import $wxsdk from '@/sheep/libs/sdk-h5-weixin';
|
|||
import { getRootUrl } from '@/sheep/helper';
|
||||
import AuthUtil from '@/sheep/api/member/auth';
|
||||
import SocialApi from '@/sheep/api/member/social';
|
||||
import sheep from '@/sheep';
|
||||
|
||||
const socialType = 31; // 社交类型 - 微信公众号
|
||||
|
||||
|
|
@ -94,6 +95,30 @@ async function getInfo() {
|
|||
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 {
|
||||
load,
|
||||
login,
|
||||
|
|
@ -101,5 +126,6 @@ export default {
|
|||
unbind,
|
||||
getInfo,
|
||||
getOpenid,
|
||||
requestMerchantTransfer,
|
||||
jsWxSdk: $wxsdk,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue