Login expired. Please log in again.

Feedback

0/300

Feedback

Submitted successfully

ok

Feedback

Network exception, please try again later

ok

APP签约API

最新更新时间:2021.12.08 版本说明


用户在商户的APP中发起签约,跳转到微信客户端签约小程序完成签约,签约完成后重新打开商户APP。 移动应用(APP)接入开放平台SDK后,用户即可以在 APP 中跳转至微信某一小程序的指定页面,完成服务后再跳回至商户APP 。

注意:

• APP签约分为两个步骤,步骤1通过预签约接口获得session_id,再通过步骤2调起签约

步骤1:预签约API

接口说明

适用对象:直连模式 机构模式

请求URL:https://apihk.mch.weixin.qq.com/v3/global/papay/contracts/app-pre-entrust-sign

请求方式:POST


path 指该参数为路径参数

query 指该参数为URL参数

body 指该参数需在请求JSON传参


请求参数

参数名 变量 类型[长度限制] 必填 描述
应用ID appid string[1, 32] body商户号绑定的AppID
注意:仅适用于直连模式
示例值:wxcbda96de0b165486
子商户号 sub_mchid string[1, 32] body微信支付分配的子商户号
注意:仅适用于机构模式
示例值:10000097
服务商应用ID sp_appid string[1, 32] body服务商绑定的AppID
注意:仅适用于机构模式
示例值:wxcbda96de0b165486
子商户应用ID sub_appid string[1, 32] body发起签约的子商户号绑定的AppID
注意:仅适用于机构模式
示例值:wxcbda96de0b165484
模板ID plan_id int body协议模板ID,该模板ID是商户在向微信支付提交代扣权限申请时由微信支付生成
示例值:123
商户侧签约协议号 out_contract_code string[1, 32] body商户请求签约时传入的签约协议号,商户侧须唯一
示例值:100001256
用户账户展示名称 user_display_name string[1, 32] body签约用户的名称,用于页面展示,不需要对值进行URL编码,参数值不支持UTF8非3字节编码的字符,例如表情符号,所以请勿传微信昵称到该字段
示例值:张三
签约成功通知URL success_notify_url string[1, 256] bodyHTTPS开头的回调通知URL ,不需要对值进行URL编码
示例值:https://yoursite.com
商户AppID下的用户标识 openid string[1, 128] body用户在商户AppID下的OpenID,服务商模式为子商户下的用户OpenID
示例值:ouFhd5X9s9WteC3eWRjXV3lea123
用户客户端IP user_client_ip string[1, 32] body该字段要求填入用户客户端的IP,用户签约时会校验用户客户端IP与商户传的用户客户端IP一致,若不一致则视为商户引导的用户和实际访问用户不一致,会拒绝该签约请求。
示例值:119.145.83.6
过期时间 expired_time string[1, 64] body境外代扣签约会话ID过期时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2021-11-20T13:29:35+08:00表示,北京时间2021年11月20日 13点29分35秒。
示例值:2021-11-20T13:29:35+08:00

请求示例


{
  "appid": "wxcbda96de0b165486",
  "expired_time": "2021-11-20T13:29:35+08:00",
  "openid": "ouFhd5X9s9WteC3eWRjXV3lea123",
  "out_contract_code": "100001256",
  "plan_id": 123,
  "success_notify_url": "https://yoursite.com",
  "user_client_ip": "119.145.83.6",
  "user_display_name": "张三"
}

{
  "expired_time": "2021-11-20T13:29:35+08:00",
  "openid": "ouFhd5X9s9WteC3eWRjXV3lea123",
  "out_contract_code": "100001256",
  "plan_id": 123,
  "sp_appid": "wxcbda96de0b165486",
  "sub_appid": "wxcbda96de0b165484",
  "sub_mchid": "10000097",
  "success_notify_url": "https://yoursite.com",
  "user_client_ip": "119.145.83.6",
  "user_display_name": "张三"
}

返回参数

参数名 变量 类型[长度限制] 必填 描述
委托代扣签约会话ID session_id string[1, 128] 微信返回的委托代扣签约会话ID
示例值:201710180325670965

返回示例


{
  "session_id": "201710180325670965"
}
                    

http://2323weixin.qq.com
                    

错误码

状态码 错误码 描述 解决方案
403 CONTRACT_NOT_EXIST Result Empty 查询的签约协议不存在,或者传入正确查询参数重试
403 CONTRACT_EXISTED 已开通自动扣费服务功能,无需重复开通 已开通自动扣费服务功能,无需重复开通;如需重新签约,需解约后再发起签约
400 PARAM_ERROR 参数错误 传入正确查询参数
500 SYSTEM_ERROR 系统错误 请稍等重试


步骤2:签约接口

时序图

简介

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接口不能跳转到微信,此时开发者应提示用户更新微信版本。

请求参数

参数名 变量 类型[长度限制] 必填 描述
跳转类型 businessType string[1,32] 固定值:wxpayOverseaEntrustAuthorization
示例值:wxpayOverseaEntrustAuthorization
委托代扣签约会话ID sessionId string[1, 128] 预签约API中的返回值 session_id,由 APP 预签约接口获得
示例值:201710180325670965

接入代码示例:


WXOpenBusinessViewReq *req = [WXOpenBusinessViewReq object];
req.businessType = @"wxpayOverseaEntrustAuthorization"; // 固定值
req.query = @"sessionId=20211115171992080208"; // 20211115171992080208为预签约会话ID
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 = "wxpayOverseaEntrustAuthorization"; // 固定值
String SesssionId = "20211115171992080208"; // 预签约会话ID,通过下述预签约API获取
req.query = "sessionId=" + SesssionId; // 拼接参数
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();
// 对应时序图步骤3.4 - 3.6,调用查询签约API获取协议最新状态,然后更新商户侧签约状态
}
}



版本说明

关闭
V1.0
2021年12月8日
1. H5预签约接口上线

About  WeChat  Pay

Powered By Tencent & Tenpay Copyright©

2005-2024 Tenpay All Rights Reserved.

Contact Us
Wechat Pay Global

WeChat Pay Global