应用场景
该接口可以实现从商户的业务跳转至还款小程序。现在支持商户业务类型为小程序和APP。
1.小程序调用请求说明
|
公众账号id | appid | 是 | String(32) | wxcbda96de0b165486 | 微信支付分配的公众账号id |
商户号 | mch_id | 是 | String(32) | 1900009231 | 微信支付分配的商户号 |
随机字符串 | nonce_str | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。 |
用户标识 | openid | 是 | String(32) | oUpF8uMEb4qRXf22hE3X68TekukE | 此参数必传,用户在商户appid下的唯一标识。 |
签名类型 | sign_type | 是 | String(32) | HMAC-SHA256 | 签名类型,默认为HMAC-SHA256 |
签名 | sign | 是 | String(64) | EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5 | 签名,详见签名生成算法 |
示例(此处的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>
2var extraData = {
3appid:wxcbda96de0b165486,
4mch_id:1900009231,
5openid:'oUpF8uMEb4qRXf22hE3X68TekukE',
6nonce_str:5K8264ILTKCH16CQ2502SI8ZNMTM67VS,
7sign_type:'HMAC-SHA256',
8sign:EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5};
2.APP调用请求说明
|
公众账号id | appid | 是 | String(32) | wxcbda96de0b165486 | 微信支付分配的公众账号id |
商户号 | mch_id | 是 | String(32) | 1900009231 | 微信支付分配的商户号 |
随机字符串 | nonce_str | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。 |
用户标识 | openid | 是 | String(32) | oUpF8uMEb4qRXf22hE3X68TekukE | 此参数必传,用户在商户appid下的唯一标识。 |
签名类型 | sign_type | 是 | String(32) | HMAC-SHA256 | 签名类型,默认为HMAC-SHA256 |
签名 | sign | 是 | String(64) | EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5 | 签名,详见签名生成算法 |
APP Scheme | scheme | 否 | String(64) | weixin | 商户APP的URL Scheme,用于小程序跳转回商户APP |
1String appId = "wx5e73c65404eee268"; // 填写当前商户APP的APPID
2IWXAPI api = WXAPIFactory.createWXAPI(context, appId);
3WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
4req.userName = "gh_5e259b7a73b1"; // 固定值,还款小程序原始id
5//拉起小程序页面的可带参路径,不填默认拉起小程序首页
6req.path = "pages/invest_list/invest_list?mch_id=1900009231&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"; // 固定值,还款小程序原始id
3launchMiniProgramReq.path = @"pages/invest_list/invest_list?mch_id=1900009231&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}
| 由于Android的返回机制,会导致这里有体验问题,需要在配置文件里面的AndroidManifest.xml里面增加这两项配置: |
|
1<activity
2android:name="com.diipo.pandaspeed.wxapi.WXEntryActivity"(注意这里红色部分需要改成自己的包名)
3android:exported="true"
4android:label="@string/app_name"
5android:launchMode="singleTask"(新增项)
6android:taskAffinity="com.diipo.pandaspeed" (各业务自己的包名)(新增项)>
7</activity>
8
1-(void)onResp:(BaseResp *)resp
2 {
3 if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]])
4 {
5 NSString *string = resp.extMsg;
6 // 对应小程序组件 <button open-type="launchApp"> 中的 app-parameter 属性
7 }
8 }