微信垫资还款api

更新时间:2024.12.30

应用场景

该接口可以实现从商户的业务跳转至还款小程序。现在支持商户业务类型为小程序和APP。

1.小程序调用请求说明

接口

参照官网用< navigator>组件实现跳转

https://developers.weixin.qq.com/miniprogram/dev/component/navigator.html

是否需要证书

extraData参数说明:

字段含义

变量名

必填

示例值

类型

描述

公众账号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调用请求说明

Android 第三方 app 需要处理 ShowMessageFromWX.req 的微信回调,iOS 则需要将 appId 添加到第三方 app 工程所属的 plist 文件 URL types 字段。

参数说明:

字段含义

变量名

必填

示例值

类型

描述

公众账号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

示例:

Android示例如下

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&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);

IOS示例如下

1WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
2launchMiniProgramReq.userName =@"gh_5e259b7a73b1"; // 固定值,还款小程序原始id
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接收到客户端回调后再次调用用户状态查询接口获取用户的最新状态 ):

Android示例如下

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

IOS示例如下

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  } 

 

更多技术问题
技术咨询
反馈
咨询
目录
置顶