该接口可以实现从商户的业务跳转至还款小程序。现在支持商户业务类型为小程序和APP。
1.小程序调用请求说明
|
公众账号id | appid | 是 | wxcbda96de0b165486 | String(32) | 微信支付分配的公众账号id |
子商户公众账号id | sub_appid | 否 | wxcbda96de0b165489 | String(32) | 子商户号绑定的服务号,小程序,APP的appid(需要在服务商的商户平台为子商户绑定) |
商户号 | mch_id | 是 | 1900009231 | String(32) | 微信支付分配的商户号 |
子商户号 | sub_mch_id | 是 | 1900000109 | String(32) | 子商户号 |
随机字符串 | nonce_str | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | String(32) | 随机字符串,不长于32位。 |
用户标识 | openid | 否 | oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | String(32) | 此参数必传,用户在商户appid下的唯一标识。openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid |
用户子标识 | sub_openid | 否 | oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | String(32) | 此参数必传,用户在子商户appid下的唯一标识。openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid |
签名类型 | sign_type | 是 | HMAC-SHA256 | String(32) | 签名类型,默认为HMAC-SHA256 |
签名 | sign | 是 | EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5 | String(64) | 签名,详见签名生成算法 |
示例(此处的app-id和path为固定值,分别是还款小程序的appid和还款页面):
1<navigator target="miniProgram" open-type="navigate" app-id="wx5e73c65404eee268 " path="pages/invest_list/invest_list" extra-data="{{extraData}}" version="release">跳转到还款小程序</navigator>
2
3var extraData = {
4appid:wxcbda96de0b165486,
5sub_appid:wxcbda96de0b165482,
6mch_id:1900009231,
7sub_mch_id:1900009232,
8openid:'oUpF8uMEb4qRXf22hE3X68TekukE',
9nonce_str:5K8264ILTKCH16CQ2502SI8ZNMTM67VS,
10sign_type:'HMAC-SHA256',
11sign:EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5};
2.APP调用请求说明
|
公众账号id | appid | 是 | wxcbda96de0b165486 | String(32) | 微信支付分配的公众账号id |
子商户公众账号id | sub_appid | 否 | wxcbda96de0b165489 | String(32) | 子商户号绑定的服务号,小程序,APP的appid(需要在服务商的商户平台为子商户绑定) |
商户号 | mch_id | 是 | 1900009231 | String(32) | 微信支付分配的商户号 |
子商户号 | sub_mch_id | 是 | 1900000109 | String(32) | 子商户号 |
随机字符串 | nonce_str | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | String(32) | 随机字符串,不长于32位。 |
用户标识 | openid | 否 | oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | String(32) | 此参数必传,用户在商户appid下的唯一标识。openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid |
用户子标识 | sub_openid | 否 | oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | String(32) | 此参数必传,用户在子商户appid下的唯一标识。openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid |
签名类型 | sign_type | 是 | HMAC-SHA256 | String(32) | 签名类型,默认为HMAC-SHA256 |
签名 | sign | 是 | EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5 | String(64) | 签名,详见签名生成算法 |
APP Scheme | scheme | 否 | weixin | String(64) | 商户APP的URL Scheme,用于小程序跳转回商户APP |
1String appId = "wx5e73c65404eee268";
2IWXAPI api = WXAPIFactory.createWXAPI(context, appId);
3WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
4req.userName = "gh_5e259b7a73b1";
5
6req.path = "pages/invest_list/invest_list?mch_id=1900009231&sub_mch_id=1900009232&appid=wxcbda96de0b165486&nonce_str=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&sign_type=HMAC-SHA256&sign=EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5&openid=oUpF8uMEb4qRXf22hE3X68TekukE&scheme=weixin;
7req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;
8api.sendReq(req);
1WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
2launchMiniProgramReq.userName =@"gh_5e259b7a73b1";
3launchMiniProgramReq.path = @"pages/invest_list/invest_list?mch_id=1900009231&sub_mch_id=1900009232&appid=wxcbda96de0b165486&nonce_str=5K8264ILTKCH16CQ2502SI8ZNMTM67VS &sign_type=HMAC-SHA256&sign=EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5&openid=oUpF8uMEb4qRXf22hE3X68TekukE&scheme=weixin";
4launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease;
5return [WXApi sendReq:launchMiniProgramReq];
APP返回参数(用户授权完成之后,会跳转回到商户的APP,暂时不返回参数。商户侧APP接收到客户端回调后再次调用用户状态查询接口获取用户的最新状态 ):
1public void onResp(BaseResp resp) {
2 Log.i(TAG,"--->>>onResp:");
3 int result = 0;
4 isSucc =false;
5 Toast.makeText(this, "baseresp.getType = " + resp.getType(), Toast.LENGTH_SHORT).show();
6
7 switch (resp.errCode) {
8 case BaseResp.ErrCode.ERR_OK:
9 isSucc = true;
10 result = R.string.errcode_success;
11 break;
12 case BaseResp.ErrCode.ERR_USER_CANCEL:
13 result = R.string.errcode_cancel;
14 break;
15 case BaseResp.ErrCode.ERR_AUTH_DENIED:
16 result = R.string.errcode_deny;
17 break;
18 case BaseResp.ErrCode.ERR_UNSUPPORT:
19 result = R.string.errcode_unsupported;
20 break;
21 default:
22 result = R.string.errcode_unknown;
23 break;
24 }
25Toast.makeText(this, result, Toast.LENGTH_LONG).show();
26}
27
28注意:由于Android的返回机制,会导致这里有体验问题,需要在配置文件里面的AndroidManifest.xml里面增加这两项配置:
29<activity
30android:name="com.diipo.pandaspeed.wxapi.WXEntryActivity"(注意这里红色部分需要改成自己的包名)
31android:exported="true"
32android:label="@string/app_name"
33android:launchMode="singleTask"(新增项)
34android:taskAffinity="com.diipo.pandaspeed" (各业务自己的包名)(新增项)>
35</activity>
36
1-(void)onResp:(BaseResp *)resp
2 {
3 if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]])
4 {
5 NSString *string = resp.extMsg;
6
7 }
8 }