-
Notifications
You must be signed in to change notification settings - Fork 29
接入微信SDK跳转微信小程序指南
listen edited this page Jul 11, 2022
·
11 revisions
- 用户需前置接入微信SDK
- App开店SDK版本大于等于 7.2.5
在初始化SDK时,需要选择配置是否已接入微信Open SDK,isWxsdkIntegrated=true时会通过微信Open SDK的方式进行跳转和回跳,isWxsdkIntegrated=false则通过 URL Scheme的方式跳转,默认为false。
YouzanSDK.init(
context,
"client_id",
"appKey",
// 是否集成微信SDK,若为true,则会在微信支付时,跳转微信小程序进行支付
true,
new YouZanSDKX5Adapter());
在上述已配置通过微信Open SDK接入的方式下,用户在H5下单支付页面选择微信支付后,SDK会通过代理方法中 YouzanBrowser 的 AbsWxPayEvent 事件告知到开发者需要进行微信小程序的跳转,并且在response参数里携带对应跳转参数,示例代码如下:
YouzanBrowser().subscribe(new AbsWxPayEvent() {
@Override
public void call(Context context, WxPayModel wxPayModel) {
Log.e(TAG, "AbsWxPayEvent:" + wxPayModel);
if (TextUtils.equals(wxPayModel.getMiniprogramType(), "0")) {
WeChatUtils.INSTANCE.jumpToWechat(YouzanActivity.this, wxPayModel.getAppId(), wxPayModel.getPath(), WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE);
} else if (TextUtils.equals(wxPayModel.getMiniprogramType(), "1")) {
WeChatUtils.INSTANCE.jumpToWechat(YouzanActivity.this, wxPayModel.getAppId(), wxPayModel.getPath(), WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_TEST);
} else if (TextUtils.equals(wxPayModel.getMiniprogramType(), "2")) {
WeChatUtils.INSTANCE.jumpToWechat(YouzanActivity.this, wxPayModel.getAppId(), wxPayModel.getPath(), WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW);
}
}
});
/**
* 跳转微信小程序
*/
fun jumpToWechat(context: Context, appId: String, path: String, miniprogramType: Int) {
if (TextUtils.isEmpty(appId)) {
val map = HashMap<String, Boolean>()
map["isSuccess"] = false
Toast.makeText(context, "小程序id为空,请检查!", Toast.LENGTH_SHORT).show()
return
}
//BBS小程序
if (isWeiXinAvailable(context)) {
val api = WXAPIFactory.createWXAPI(context, WXConstants.APP_ID)
val req = WXLaunchMiniProgram.Req()
req.userName = appId
if (!TextUtils.isEmpty(path)) {
req.path = path
}
req.miniprogramType = miniprogramType
api.sendReq(req)
val map = HashMap<String, Boolean>()
map["isSuccess"] = true
} else {
val map = HashMap<String, Boolean>()
map["isSuccess"] = false
Toast.makeText(context, "跳转失败,请先安装微信!", Toast.LENGTH_SHORT).show()
}
}
微信小程序处理支付完成以后会出现一个"返回商家"的按钮,点击后会触发微信SDK的WXEntryActivity.onResp()方法,可以在这里进行返回商家的处理,建议重新跳回店铺,并刷新支付结果页。
public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler {
@Override
public void onResp(BaseResp resp) {
if (resp != null) {
// 小程序支付完成后,会有个支付结果页,这个页面有"返回商家"的按钮,点击后会触发onResp,可以在这里重新跳转回店铺页面,以达到返回商家APP的目的
Intent intent = new Intent(WXEntryActivity.this, YouzanActivity.class);
intent.putExtra("url", "https://shopxxxxxx.m.youzan.com/xxx/xxx/xxx");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
}
}
}