商户APP跳转微信侧小程序-确认订单
简介
App跳转微信侧小程序需要引用新的openSDK
Android openSDK下载地址(版本>=5.3.1): Android资源下载
Android 接入文档链接:openSDK说明文档
iOS openSDK下载地址(版本>=1.8.4):iOS资源下载
iOS 接入文档链接:openSDK说明文档
接口名称: WXOpenBusinessView
接口兼容:
- iOS兼容性表现:若微信版本 >= 7.0.3,开发者可以通过此openSDK接口拉起微信侧小程序;若微信版本 < 7.0.3,开发者通过此openSDK接口可以跳转到微信,但是不能拉不起微信侧小程序,此时微信会提示用户可能由于应用的请求非法或者微信版本过低。
- Android兼容性表现:若微信版本>=7.0.3,开发者可以通过此openSDK接口拉起微信侧小程序;若微信版本<7.0.3,开发者通过此openSDK接口不能跳转到微信,也不能拉起微信侧小程序,此时开发者应提示用户更新微信版本。
接口参数
- Android对应对象:WXOpenBusinessView.Req
- iOS对应对象:WXOpenBusinessViewReq
Object WXOpenBusinessView.Req & Object WXOpenBusinessViewReq
字段名 | 必填 | 类型 | 示例值 | 说明 |
---|---|---|---|---|
businessType | 是 | String | wxpayScoreUse | 固定配置:wxpayScoreUse |
query | 是 | String | 见query示例 | 使用URL的query string方式传递参数,格式为key=value&key2=value2,其中value,value2需要进行UrlEncode处理 |
extInfo | 否 | String | {"miniProgramType": 0} | 自定义ext信息,json格式,如需指定小程序版本,可填 {"miniProgramType": type}。type取值:0-正式版;1-开发版;2-体验版,默认正式版 |
query示例:
mch_id=1230000109&package=XXXXXXXX&
timestamp=1530097563&
nonce_str=zyx53Nkey8o4bHpxTQvd8m7e92nG5mG2&
sign_type=HMAC-SHA256&sign=029B52F67573D7E3BE74904BF9AEA
query内部参数:
字段名 | 必填 | 类型 | 示例值 | 说明 |
---|---|---|---|---|
mch_id | 是 | String | 1230000109 | 微信支付分配的商户号 |
package | 是 | String | XXXXXXXX | 可在【创建订单】接口的返回字段package中获取 |
timestamp | 是 | String | 1530097563 | 生成签名时间戳,单位秒 |
nonce_str | 是 | String | zyx53Nkey8o4bHpxTQvd8m7e92nG5mG2 | 生成签名随机串。由数字、大小写字母组成,长度不超过32位 |
sign_type | 是 | String | HMAC-SHA256 | 签名类型。仅支持HMAC-SHA256 |
sign | 是 | String | 029B52F67573D7E3BE74904BF9AEA | 使用字段mch_id、package、timestamp、nonce_str、sign_type按照签名生成算法计算得出的签名值 |
返回参数
- Android 返回字段:WXOpenBusinessView.Resp
- iOS返回字段:WXOpenBusinessViewResp
Object WXOpenBusinessView.Resp & Object WXOpenBusinessViewResp
字段名 | 必填 | 类型 | 示例值 | 说明 |
---|---|---|---|---|
businessType | 是 | String | wxpayScoreUse | 打开的业务类型 |
extMsg | 是 | String | 见extMsg示例 | 微信侧小程序返回的业务数据,json格式 |
extMsg示例:
{"query_id":"XXXXXX","appid":"wxd8f3793ea3b935b8"}
extMsg内部参数:
字段名 | 必填 | 类型 | 示例值 | 说明 |
---|---|---|---|---|
query_id | 是 | String | XXXXXXXX | 单据查询id,对应【查询订单】接口中入参query_id |
appid | 是 | String | wxd8f3793ea3b935b8 | 微信侧小程序appid |
iOS示例代码:
WXOpenBusinessViewReq *req = [WXOpenBusinessViewReq object];
req.businessType = @"wxpayScoreUse";
req.query = @"mch_id=1230000109&package=XXXXXXXX&
timestamp=1530097563&
nonce_str=zyx53Nkey8o4bHpxTQvd8m7e92nG5mG2&sign_type=HMAC-SHA256&sign=029B52F67573D7E3BE74904BF9AEA";
req.extInfo = @"{\"miniProgramType\":0}";
[WXApi sendReq:req];
安卓示例代码:
int wxSdkVersion = api.getWXAppSupportAPI();
if (wxSdkVersion >= Build.OPEN_BUSINESS_VIEW_SDK_iNT) {
WXOpenBusinessView.Req req = new WXOpenBusinessView.Req();
req.businessType = "wxpayScoreUse";
req.query = "mch_id=1230000109&package=XXXXXXXX&
timestamp=1530097563&
nonce_str=zyx53Nkey8o4bHpxTQvd8m7e92nG5mG2&sign_type=HMAC-SHA256&sign=029B52F67573D7E3BE74904BF9AEA";
req.extInfo = "{\"miniProgramType\": 0}";
Boolean ret = api.sendReq(req);
} else {
/*需提示用户升级微信版本*/
}
/********在WXEntryActivity的onResp里面接收回调,示例全码*******/
@Override
public void onResp(BaseResp r) {
if (r.getType() == ConstantsAPI.COMMAND_OPEN_BUSINESS_VIEW) {
WXOpenBusinessView.Resp launchMiniProgramResp = (WXOpenBusinessView.Resp) r;
String text = String.format("nextMsg=%snerrStr=%snbusinessType=%s",
resp.extMsg, resp.errStr, resp.businessType);
Toast.makeText(this, text, Toast.LENGTH_lONG).show();
}
}