微信垫资还款

更新时间:2024.11.14

应用场景

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

未接入垫资功能的商户无需调用

1.小程序调用请求说明

接口

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

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

是否需要证书

extraData参数说明:

字段含义

变量名

必填

类型

示例值

描述

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

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

参数说明:

字段含义

变量名

必填

类型

示例值

描述

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

示例:

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&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&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}

注意

由于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

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  } 

 

反馈
咨询
目录
置顶