提交申请单
更新时间:2025.07.17接口适用场景:电商平台,可使用该接口,帮助其二级商户进件成为微信支付商户。
商户上送敏感信息时需使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。
微信支付平台证书公钥需调用接口获取,详见下载平台证书
调用接口获取的微信支付平台证书,证书需要解密后才能使用,详见如何解密回调报文和平台证书
本接口不支持进件境外个人小微商户
接口说明
支持商户:【平台商户】
请求方式:【POST】/v3/ecommerce/applyments/submit-account-hosting-applyment
请求域名:【主域名】https://api.mch.weixin.qq.com 使用该域名将访问就近的接入点
【备域名】https://api2.mch.weixin.qq.com 使用该域名将访问异地的接入点 ,指引点击查看
请求参数
Header HTTP头参数
Authorization 必填 string
请参考签名认证生成认证信息
Accept 必填 string
请设置为application/json
Content-Type 必填 string
请设置为application/json
Wechatpay-Serial 必填 string
【微信支付公钥ID】或【微信支付平台证书序列号】 请求参数中的敏感字段,需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引;也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引
body 包体参数
out_request_no 必填 string
【业务申请编号】 1、服务商自定义的商户唯一编号。
2、每个编号对应一个申请单,每个申请单审核通过后会生成一个微信支付商户号。
3、若申请单被驳回,可填写相同的“业务申请编号”,即可覆盖修改原申请单信息 。
organization_type 必填 string
【主体类型】 非小微的主体类型需与营业执照/登记证书上一致,可参考选择主体指引,枚举值如下。
2401:小微商户,指无营业执照的个人商家。
2500:个人卖家,指无营业执照,已持续从事电子商务经营活动满6个月,且期间经营收入累计超过20万元的个人商家。(若选择该主体,请在“补充说明”填写相关描述)。
4:个体工商户,营业执照上的主体类型一般为个体户、个体工商户、个体经营。
2:企业,营业执照上的主体类型一般为有限公司、有限责任公司。
3:事业单位,包括国内各类事业单位,如:医疗、教育、学校等单位。
2502:政府机关,包括各级、各类政府机关,如机关党委、税务、民政、人社、工商、商务、市监等。
1708:社会组织,包括社会团体、民办非企业、基金会、基层群众性自治组织、农村集体经济组织等组织。
finance_institution 选填 boolean
【是否金融机构】 选填,请根据申请主体的实际情况填写,可参考选择金融机构指引:
1、若商户主体是金融机构,则填写:true。
2、若商户主体不是金融机构,则填写:false。
若未传入将默认填写:false。
business_license_info 选填 object
【营业执照/登记证书信息】 1、主体为“小微/个人卖家”时,不填。
2、主体为“个体工商户/企业”时,请上传营业执照。
3、主体为“政府机关/事业单位/社会组织”时,请上传登记证书。
属性 | |
cert_type 选填 string 【证书类型】 1、主体为“政府机关/事业单位/社会组织”时,请上传登记证书类型。 可选取值
business_license_copy 选填 string 【营业执照扫描件】 1、主体为“个体工商户/企业”时,请上传营业执照的证件图片。 business_license_number 选填 string 【营业执照注册号】 1、主体为“个体工商户”时,请填写营业执照上的注册号/统一社会信用代码,格式需满足以下任一条件: merchant_name 选填 string 【商户名称】 请填写登记证书上的商户名称 legal_person 选填 string 【经营者/法定代表人姓名】 请填写证件的经营者/法定代表人姓名 company_address 选填 string 【注册地址】 1、 主体为“政府机关/事业单位/社会组织”时必填,请填写登记证书的注册地址。 business_time 选填 string 【营业期限】 1、主体为“政府机关/事业单位/社会组织”时必填,请填写证件有效期。 |
finance_institution_info 选填 object
【金融机构许可证信息】 当主体是金融机构时,必填
属性 | |
finance_type 必填 string 【金融机构类型】 金融机构类型需与营业执照/登记证书上一致,可参考选择金融机构指引。 可选取值
finance_license_pics 选填 array[string] 【金融机构许可证图片】 1、照片应正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS。 |
id_holder_type 选填 string
【证件持有人类型】 1. 主体类型为政府机关/事业单位时选传:
(1)若上传的是法人证件,则不需要上传该字段。
(2)若因政策保密等原因,无法提供法人证件时,可上传经办人。 (经办人:经商户授权办理微信支付业务的人员,授权范围包括但不限于签约,入驻过程需完成账户验证)。
2. 主体类型为企业/个体户/社会组织时,默认为经营者/法人,不需要上传该字段。
可选取值
LEGAL
: 法人SUPER
: 经办人
id_doc_type 选填 string
【经营者/法人证件类型】 1、当证件持有人类型为经营者/法人时,需要填写。其他情况,无需上传。
2、主体为“小微/个人卖家”,可选择:身份证。
3、主体为“个体户/企业/事业单位/社会组织”:可选择任一证件类型,主体为“政府机关”仅支持中国大陆居民-身份证类型。
4、若没有填写,系统默认选择:身份证。
可选取值
IDENTIFICATION_TYPE_MAINLAND_IDCARD
: 中国大陆居民-身份证IDENTIFICATION_TYPE_OVERSEA_PASSPORT
: 其他国家或地区居民-护照IDENTIFICATION_TYPE_HONGKONG
: 中国香港居民--来往内地通行证IDENTIFICATION_TYPE_MACAO
: 中国澳门居民--来往内地通行证IDENTIFICATION_TYPE_TAIWAN
: 中国台湾居民--来往大陆通行证IDENTIFICATION_TYPE_FOREIGN_RESIDENT
: 外国人居留证IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT
: 港澳居民证IDENTIFICATION_TYPE_TAIWAN_RESIDENT
: 台湾居民证
authorize_letter_copy 选填 string
【法定代表人说明函】 1、当证件持有人类型为经办人时,必须上传。其他情况,无需上传。
2、因政策保密等原因,无法提供法定代表人证件时,请参照示例图打印法定代表人说明函,全部信息需打印,不支持手写商户信息,并加盖公章。
3、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。
id_card_info 选填 object
【经营者/法人身份证信息】 当证件持有人类型为经营者/法人且证件类型为“身份证”时填写。
属性 | |
id_card_copy 必填 string 【身份证人像面照片】 1、请上传个体户经营者/法人的身份证人像面照片 id_card_national 必填 string 【身份证国徽面照片】 1、请上传个体户经营者/法定代表人的身份证国徽面照片 id_card_name 必填 string 【身份证姓名】 1、请填写个体户经营者/法定代表人对应身份证的姓名 id_card_number 必填 string 【身份证号码】 1、请填写经营者/法定代表人对应身份证的号码。 id_card_valid_time_begin 必填 string 【身份证开始时间】 1、日期格式应满足合法的YYYY-MM-DD格式 id_card_valid_time 必填 string 【身份证结束时间】 1、日期格式应满足合法的YYYY-MM-DD格式或长期 |
id_doc_info 选填 object
【经营者/法人其他类型证件信息】 当证件持有人类型为经营者/法人且证件类型不为“身份证”时填写。
属性 | |
id_doc_copy 必填 string 【证件正面照片】 1、证件类型不为“身份证”时,上传证件正面照片。 id_doc_copy_back 选填 string 【证件反面照片】 1、若证件类型为来往通行证、外国人居留证、港澳居住证、台湾居住证时,上传证件反面照片。 id_doc_name 必填 string 【证件姓名】 1、请填写经营者/法定代表人的证件姓名 id_doc_number 必填 string 【证件号码】 1、请填写经营者/法定代表人的证件号码。 doc_period_begin 必填 string 【证件开始日期】 1、日期格式应满足合法的YYYY-MM-DD格式 doc_period_end 必填 string 【证件结束日期】 1、日期格式应满足合法的YYYY-MM-DD格式或长期 |
ubo_info_list 选填 array[object]
【最终受益人信息列表】 仅企业需要填写。
若经营者/法人不是最终受益所有人,则需提填写受益所有人信息,最多上传4个。
若经营者/法人是最终受益所有人之一,可在此填写其他受益所有人信息,最多上传3个。
根据国家相关法律法规,需要提供公司受益所有人信息,受益所有人需符合至少以下条件之一:
1、直接或者间接拥有超过25%公司股权或者表决权的自然人。
2、通过人事、财务等其他方式对公司进行控制的自然人。
3、公司的高级管理人员,包括公司的经理、副经理、财务负责人、上市公司董事会秘书和公司章程规定的其他人员。
属性 | |
ubo_id_doc_type 选填 string 【证件类型】 请填写受益人的证件类型。 可选取值
ubo_id_doc_copy 选填 string 【证件正面照片】 1、请上传受益人证件的正面照片。 ubo_id_doc_copy_back 选填 string 【证件反面照片】 1、请上传受益人证件的反面照片。 ubo_id_doc_name 选填 string 【证件姓名】 1、长度为2-100个字符 ubo_id_doc_number 选填 string 【证件号码】 1、可传身份证、来往内地通行证、来往大陆通行证、护照等证件号码,号码规范如下: ubo_id_doc_address 选填 string 【证件居住地址】 1、请按照身份证住址填写,如广东省深圳市南山区xx路xx号xx室 ubo_id_doc_period_begin 选填 string 【证件有效期开始时间】 1、日期格式应满足合法的YYYY-MM-DD格式 ubo_id_doc_period_end 选填 string 【证件有效期结束时间】 1、日期格式应满足合法的YYYY-MM-DD格式或长期 |
account_info 必填 object
【结算账户信息】 请填写商家提现收款的银行账户信息。
属性 | |
bank_account_type 必填 string 【账户类型】 1、若主体为企业/政府机关/事业单位/社会组织,可填写:74-对公账户。 account_bank 必填 string 【开户银行】 对私银行调用:查询支持个人业务的银行列表API account_name 必填 string 【开户名称】 1、选择经营者个人银行卡时,开户名称必须与身份证姓名一致。 bank_branch_id 选填 string 【开户银行联行号】 1、根据开户银行查询接口中的“是否需要填写支行”判断是否需要填写。如为其他银行,开户银行全称(含支行)和开户银行联行号二选一。 bank_name 选填 string 【开户银行全称 (含支行)】 1、根据开户银行查询接口中的“是否需要填写支行”判断是否需要填写。如为其他银行,开户银行全称(含支行)和开户银行联行号二选一。 account_number 必填 string 【银行账号】 1、数字,长度遵循系统支持的对公/对私卡号长度要求表。 |
contact_info 必填 object
【超级管理员信息】 请填写店铺的超级管理员信息。
超级管理员需在开户后进行签约,并可接收日常重要管理信息和进行资金操作,请确定其为商户法定代表人或负责人。
属性 | |
contact_type 必填 string 【超级管理员类型】 1、主体为“小微/个人卖家 ”,可选择:65-经营者/法人。 contact_name 必填 string 【超级管理员姓名】 1、若管理员类型为“法人”,则该姓名需与法人身份证姓名一致。 contact_id_doc_type 选填 string 【超级管理员证件类型】 当超级管理员类型是经办人时,请上传超级管理员证件类型。 可选取值
contact_id_card_number 选填 string 【超级管理员证件号码】 1、若超级管理员类型为法人,则该身份证号码需与法人身份证号码一致。若超级管理员类型为经办人,则可填写实际经办人的身份证号码。 contact_id_doc_copy 选填 string 【超级管理员证件正面照片】 1、当超级管理员类型是经办人时,请上传超级管理员证件的正面照片。 contact_id_doc_copy_back 选填 string 【超级管理员证件反面照片】 1、当超级管理员类型是经办人时,请上传超级管理员证件的反面照片。 contact_id_doc_period_begin 选填 string 【超级管理员证件有效期开始时间】 1、当超级管理员类型是经办人时,请上传证件有效期开始时间。 contact_id_doc_period_end 选填 string 【超级管理员证件有效期结束时间】 1、当超级管理员类型是经办人时,请上传证件有效期结束时间。 mobile_phone 必填 string 【超级管理员手机】 1、前后不能有空格、制表符、换行符 |
sales_scene_info 必填 object
【店铺信息】 请填写店铺信息
属性 | |
store_name 选填 string 【店铺名称】 请填写店铺全称。 store_url 选填 string 【店铺链接】 1、店铺二维码or店铺链接二选一必填。 store_qr_code 选填 string 【店铺二维码】 1、店铺二维码 or 店铺链接二选一必填。 mini_program_sub_appid 选填 string 【商家小程序APPID】 1、商户自定义字段,可填写已认证的小程序AppID,认证主体需与二级商户主体一致; |
settlement_info 选填 object
【结算规则】 请填写商家的结算费率规则、所属行业等信息。若电商平台未传入,系统将填写默认值
属性 | |
settlement_id 选填 integer 【结算规则ID】 1、选填,请选择二级商户的结算规则ID,需匹配电商平台开通工具箱选择的费率档位,详细参见电商二级商户结算规则对照表; qualification_type 选填 string(200) 【所属行业】 1、选填,请填写二级商户所属的行业名称,映射特殊资质要求,详细参见电商二级商户结算规则对照表; |
merchant_shortname 必填 string
【商户简称】 UTF-8格式,中文占3个字节,即最多21个汉字长度。将在支付完成页向买家展示,需与商家的实际售卖商品相符 。
qualifications 选填 string
【特殊资质】 1、仅当商户选择了必需提交特殊资质的行业时,需要提供该项资料;若商户选择了无需特殊资质的行业,或未选择行业时,无需提交该项资料,详情查看《行业对应特殊资质》
2、请提供为“申请商家主体”所属的特殊资质,可授权使用总公司/分公司的特殊资质;
3、最多可上传5张照片,请填写通过图片上传API预先上传图片生成好的MediaID 。
business_addition_pics 选填 string
【补充材料】 根据实际审核情况,额外要求提供。最多可上传15张照片,请填写通过图片上传API预先上传图片生成好的MediaID 。
business_addition_desc 选填 string
【补充说明】 1、可填写512字以内 。
2、若主体为“个人卖家”,该字段必传,则需填写描述“ 该商户已持续从事电子商务经营活动满6个月,且期间经营收入累计超过20万元。”
proxy_sign_verify_mode 必填 boolean
【是否走平台代理签约和代理核身入驻模式】 1、若走平台代理签约和代理核身入驻模式,则填写:true。
2、若走微信支付签约和核身入驻模式,则填写:false。
请求示例
需配合微信支付工具库 WXPayUtility 使用,请参考 Java
1package com.java.demo; 2 3import com.java.utils.WXPayUtility; // 引用微信支付工具库,参考:https://pay.weixin.qq.com/doc/v3/partner/4014985777 4 5import com.google.gson.annotations.SerializedName; 6import com.google.gson.annotations.Expose; 7import okhttp3.MediaType; 8import okhttp3.OkHttpClient; 9import okhttp3.Request; 10import okhttp3.RequestBody; 11import okhttp3.Response; 12 13import java.io.IOException; 14import java.io.UncheckedIOException; 15import java.security.PrivateKey; 16import java.security.PublicKey; 17import java.util.ArrayList; 18import java.util.HashMap; 19import java.util.List; 20import java.util.Map; 21 22/** 23 * 账号托管类平台商户进件申请 24 */ 25public class SubmitAccountHostingApplyment { 26 private static String HOST = "https://api.mch.weixin.qq.com"; 27 private static String METHOD = "POST"; 28 private static String PATH = "/v3/ecommerce/applyments/submit-account-hosting-applyment"; 29 30 public static void main(String[] args) { 31 // TODO: 请准备商户开发必要参数,参考:https://pay.weixin.qq.com/doc/v3/partner/4013080340 32 SubmitAccountHostingApplyment client = new SubmitAccountHostingApplyment( 33 "19xxxxxxxx", // 商户号,是由微信支付系统生成并分配给每个商户的唯一标识符,商户号获取方式参考 https://pay.weixin.qq.com/doc/v3/partner/4013080340 34 "1DDE55AD98Exxxxxxxxxx", // 商户API证书序列号,如何获取请参考 https://pay.weixin.qq.com/doc/v3/partner/4013058924 35 "/path/to/apiclient_key.pem", // 商户API证书私钥文件路径,本地文件路径 36 "PUB_KEY_ID_xxxxxxxxxxxxx", // 微信支付公钥ID,如何获取请参考 https://pay.weixin.qq.com/doc/v3/partner/4013038589 37 "/path/to/wxp_pub.pem", // 微信支付公钥文件路径,本地文件路径 38 ); 39 40 SubmitAccountHostingApplymentReq request = new SubmitAccountHostingApplymentReq(); 41 request.outRequestNo = "APPLYMENT_00000000001"; 42 request.organizationType = "2"; 43 request.financeInstitution = true; 44 request.businessLicenseInfo = new BusinessLicense(); 45 request.businessLicenseInfo.certType = CertificateType.CERTIFICATE_TYPE_2388; 46 request.businessLicenseInfo.businessLicenseCopy = "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"; 47 request.businessLicenseInfo.businessLicenseNumber = "123456789012345678"; 48 request.businessLicenseInfo.merchantName = "腾讯科技有限公司"; 49 request.businessLicenseInfo.legalPerson = "张三"; 50 request.businessLicenseInfo.companyAddress = "深圳南山区科苑路"; 51 request.businessLicenseInfo.businessTime = "[\\\"2014-01-01\\\",\\\"长期\\\"]"; 52 request.financeInstitutionInfo = new FinanceInstitutionInfo(); 53 request.financeInstitutionInfo.financeType = FinanceType.BANK_AGENT; 54 request.financeInstitutionInfo.financeLicensePics = new ArrayList<>(); 55 { 56 request.financeInstitutionInfo.financeLicensePics.add("example_financeLicensePics"); 57 }; 58 request.idHolderType = IdHolderType.LEGAL; 59 request.idDocType = IdentificationType.IDENTIFICATION_TYPE_MACAO; 60 request.authorizeLetterCopy = "47ZC6GC-vnrbEny_Ie_An5-tCpqxucuxi-vByf3Gjm7KEIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"; 61 request.idCardInfo = new AccountHostingIdCardInfo(); 62 request.idCardInfo.idCardCopy = "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ"; 63 request.idCardInfo.idCardNational = "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"; 64 request.idCardInfo.idCardName = client.encrypt("id_card_name"); 65 request.idCardInfo.idCardNumber = client.encrypt("id_card_number"); 66 request.idCardInfo.idCardValidTimeBegin = "2019-06-06"; 67 request.idCardInfo.idCardValidTime = "2026-06-06"; 68 request.idDocInfo = new AccountHostingIdDocInfo(); 69 request.idDocInfo.idDocCopy = "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"; 70 request.idDocInfo.idDocCopyBack = "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"; 71 request.idDocInfo.idDocName = client.encrypt("id_doc_name"); 72 request.idDocInfo.idDocNumber = client.encrypt("id_doc_number"); 73 request.idDocInfo.docPeriodBegin = "2019-06-06"; 74 request.idDocInfo.docPeriodEnd = "2020-01-02"; 75 request.uboInfoList = new ArrayList<>(); 76 { 77 UBOInfo item0 = new UBOInfo(); 78 item0.uboIdDocType = IdentificationType.IDENTIFICATION_TYPE_MAINLAND_IDCARD; 79 item0.uboIdDocCopy = "jTpGmxUXqRTvDujqhThn4ReFxikqJ5YW6zFQ"; 80 item0.uboIdDocCopyBack = "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"; 81 item0.uboIdDocName = client.encrypt("ubo_id_doc_name"); 82 item0.uboIdDocNumber = client.encrypt("ubo_id_doc_number"); 83 item0.uboIdDocAddress = client.encrypt("ubo_id_doc_address"); 84 item0.uboIdDocPeriodBegin = "2019-06-06"; 85 item0.uboIdDocPeriodEnd = "2026-06-06"; 86 request.uboInfoList.add(item0); 87 }; 88 request.accountInfo = new AccountHostingAccountInfo(); 89 request.accountInfo.bankAccountType = "75"; 90 request.accountInfo.accountBank = "工商银行"; 91 request.accountInfo.accountName = client.encrypt("account_name"); 92 request.accountInfo.bankBranchId = "402713354941"; 93 request.accountInfo.bankName = "施秉县农村信用合作联社城关信用社"; 94 request.accountInfo.accountNumber = client.encrypt("account_number"); 95 request.contactInfo = new AccountHostingContactInfo(); 96 request.contactInfo.contactType = "65"; 97 request.contactInfo.contactName = client.encrypt("contact_name"); 98 request.contactInfo.contactIdDocType = IdentificationType.IDENTIFICATION_TYPE_MACAO; 99 request.contactInfo.contactIdCardNumber = client.encrypt("contact_id_card_number"); 100 request.contactInfo.contactIdDocCopy = "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"; 101 request.contactInfo.contactIdDocCopyBack = "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"; 102 request.contactInfo.contactIdDocPeriodBegin = "2019-06-06"; 103 request.contactInfo.contactIdDocPeriodEnd = "2026-06-06"; 104 request.contactInfo.mobilePhone = client.encrypt("mobile_phone"); 105 request.salesSceneInfo = new SalesSceneInfo(); 106 request.salesSceneInfo.storeName = "爱烧烤"; 107 request.salesSceneInfo.storeUrl = "http://www.qq.com"; 108 request.salesSceneInfo.storeQrCode = "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ"; 109 request.salesSceneInfo.miniProgramSubAppid = "wxa123344545577"; 110 request.settlementInfo = new SettlementInfo(); 111 request.settlementInfo.settlementId = 719L; 112 request.settlementInfo.qualificationType = "零售批发/生活娱乐/其他"; 113 request.merchantShortname = "腾讯"; 114 request.qualifications = "[\\\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\\\",\\\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\\\"]"; 115 request.businessAdditionPics = "[\\\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\\\",\\\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\\\"]"; 116 request.businessAdditionDesc = "特殊情况,说明原因"; 117 request.proxySignVerifyMode = true; 118 try { 119 SubmitAccountHostingApplymentResp response = client.run(request); 120 121 // TODO: 请求成功,继续业务逻辑 122 System.out.println(response); 123 } catch (WXPayUtility.ApiException e) { 124 // TODO: 请求失败,根据状态码执行不同的逻辑 125 e.printStackTrace(); 126 } 127 } 128 129 public SubmitAccountHostingApplymentResp run(SubmitAccountHostingApplymentReq request) { 130 String uri = PATH; 131 String reqBody = WXPayUtility.toJson(request); 132 133 Request.Builder reqBuilder = new Request.Builder().url(HOST + uri); 134 reqBuilder.addHeader("Accept", "application/json"); 135 reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId); 136 reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(mchid, certificateSerialNo,privateKey, METHOD, uri, reqBody)); 137 reqBuilder.addHeader("Content-Type", "application/json"); 138 RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), reqBody); 139 reqBuilder.method(METHOD, requestBody); 140 Request httpRequest = reqBuilder.build(); 141 142 // 发送HTTP请求 143 OkHttpClient client = new OkHttpClient.Builder().build(); 144 try (Response httpResponse = client.newCall(httpRequest).execute()) { 145 String respBody = WXPayUtility.extractBody(httpResponse); 146 if (httpResponse.code() >= 200 && httpResponse.code() < 300) { 147 // 2XX 成功,验证应答签名 148 WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey, 149 httpResponse.headers(), respBody); 150 151 // 从HTTP应答报文构建返回数据 152 return WXPayUtility.fromJson(respBody, SubmitAccountHostingApplymentResp.class); 153 } else { 154 throw new WXPayUtility.ApiException(httpResponse.code(), respBody, httpResponse.headers()); 155 } 156 } catch (IOException e) { 157 throw new UncheckedIOException("Sending request to " + uri + " failed.", e); 158 } 159 } 160 161 private final String mchid; 162 private final String certificateSerialNo; 163 private final PrivateKey privateKey; 164 private final String wechatPayPublicKeyId; 165 private final PublicKey wechatPayPublicKey; 166 167 public SubmitAccountHostingApplyment(String mchid, String certificateSerialNo, String privateKeyFilePath, String wechatPayPublicKeyId, String wechatPayPublicKeyFilePath) { 168 this.mchid = mchid; 169 this.certificateSerialNo = certificateSerialNo; 170 this.privateKey = WXPayUtility.loadPrivateKeyFromPath(privateKeyFilePath); 171 this.wechatPayPublicKeyId = wechatPayPublicKeyId; 172 this.wechatPayPublicKey = WXPayUtility.loadPublicKeyFromPath(wechatPayPublicKeyFilePath); 173 } 174 175 public String encrypt(String plainText) { 176 return WXPayUtility.encrypt(this.wechatPayPublicKey, plainText); 177 } 178 179 public static class SubmitAccountHostingApplymentReq { 180 @SerializedName("out_request_no") 181 public String outRequestNo; 182 183 @SerializedName("organization_type") 184 public String organizationType; 185 186 @SerializedName("finance_institution") 187 public Boolean financeInstitution; 188 189 @SerializedName("business_license_info") 190 public BusinessLicense businessLicenseInfo; 191 192 @SerializedName("finance_institution_info") 193 public FinanceInstitutionInfo financeInstitutionInfo; 194 195 @SerializedName("id_holder_type") 196 public IdHolderType idHolderType; 197 198 @SerializedName("id_doc_type") 199 public IdentificationType idDocType; 200 201 @SerializedName("authorize_letter_copy") 202 public String authorizeLetterCopy; 203 204 @SerializedName("id_card_info") 205 public AccountHostingIdCardInfo idCardInfo; 206 207 @SerializedName("id_doc_info") 208 public AccountHostingIdDocInfo idDocInfo; 209 210 @SerializedName("ubo_info_list") 211 public List<UBOInfo> uboInfoList; 212 213 @SerializedName("account_info") 214 public AccountHostingAccountInfo accountInfo; 215 216 @SerializedName("contact_info") 217 public AccountHostingContactInfo contactInfo; 218 219 @SerializedName("sales_scene_info") 220 public SalesSceneInfo salesSceneInfo; 221 222 @SerializedName("settlement_info") 223 public SettlementInfo settlementInfo; 224 225 @SerializedName("merchant_shortname") 226 public String merchantShortname; 227 228 @SerializedName("qualifications") 229 public String qualifications; 230 231 @SerializedName("business_addition_pics") 232 public String businessAdditionPics; 233 234 @SerializedName("business_addition_desc") 235 public String businessAdditionDesc; 236 237 @SerializedName("proxy_sign_verify_mode") 238 public Boolean proxySignVerifyMode; 239 } 240 241 public enum FinanceType { 242 @SerializedName("BANK_AGENT") 243 BANK_AGENT, 244 @SerializedName("PAYMENT_AGENT") 245 PAYMENT_AGENT, 246 @SerializedName("INSURANCE") 247 INSURANCE, 248 @SerializedName("TRADE_AND_SETTLE") 249 TRADE_AND_SETTLE, 250 @SerializedName("OTHER") 251 OTHER 252 } 253 254 public static class AccountHostingContactInfo { 255 @SerializedName("contact_type") 256 public String contactType; 257 258 @SerializedName("contact_name") 259 public String contactName; 260 261 @SerializedName("contact_id_doc_type") 262 public IdentificationType contactIdDocType; 263 264 @SerializedName("contact_id_card_number") 265 public String contactIdCardNumber; 266 267 @SerializedName("contact_id_doc_copy") 268 public String contactIdDocCopy; 269 270 @SerializedName("contact_id_doc_copy_back") 271 public String contactIdDocCopyBack; 272 273 @SerializedName("contact_id_doc_period_begin") 274 public String contactIdDocPeriodBegin; 275 276 @SerializedName("contact_id_doc_period_end") 277 public String contactIdDocPeriodEnd; 278 279 @SerializedName("mobile_phone") 280 public String mobilePhone; 281 } 282 283 public enum IdHolderType { 284 @SerializedName("LEGAL") 285 LEGAL, 286 @SerializedName("SUPER") 287 SUPER 288 } 289 290 public static class SubmitAccountHostingApplymentResp { 291 @SerializedName("applyment_id") 292 public Long applymentId; 293 294 @SerializedName("out_request_no") 295 public String outRequestNo; 296 } 297 298 public enum IdentificationType { 299 @SerializedName("IDENTIFICATION_TYPE_MAINLAND_IDCARD") 300 IDENTIFICATION_TYPE_MAINLAND_IDCARD, 301 @SerializedName("IDENTIFICATION_TYPE_OVERSEA_PASSPORT") 302 IDENTIFICATION_TYPE_OVERSEA_PASSPORT, 303 @SerializedName("IDENTIFICATION_TYPE_HONGKONG") 304 IDENTIFICATION_TYPE_HONGKONG, 305 @SerializedName("IDENTIFICATION_TYPE_MACAO") 306 IDENTIFICATION_TYPE_MACAO, 307 @SerializedName("IDENTIFICATION_TYPE_TAIWAN") 308 IDENTIFICATION_TYPE_TAIWAN, 309 @SerializedName("IDENTIFICATION_TYPE_FOREIGN_RESIDENT") 310 IDENTIFICATION_TYPE_FOREIGN_RESIDENT, 311 @SerializedName("IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT") 312 IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT, 313 @SerializedName("IDENTIFICATION_TYPE_TAIWAN_RESIDENT") 314 IDENTIFICATION_TYPE_TAIWAN_RESIDENT 315 } 316 317 public enum CertificateType { 318 @SerializedName("CERTIFICATE_TYPE_2388") 319 CERTIFICATE_TYPE_2388, 320 @SerializedName("CERTIFICATE_TYPE_2389") 321 CERTIFICATE_TYPE_2389, 322 @SerializedName("CERTIFICATE_TYPE_2394") 323 CERTIFICATE_TYPE_2394, 324 @SerializedName("CERTIFICATE_TYPE_2395") 325 CERTIFICATE_TYPE_2395, 326 @SerializedName("CERTIFICATE_TYPE_2396") 327 CERTIFICATE_TYPE_2396, 328 @SerializedName("CERTIFICATE_TYPE_2399") 329 CERTIFICATE_TYPE_2399, 330 @SerializedName("CERTIFICATE_TYPE_2400") 331 CERTIFICATE_TYPE_2400, 332 @SerializedName("CERTIFICATE_TYPE_2520") 333 CERTIFICATE_TYPE_2520, 334 @SerializedName("CERTIFICATE_TYPE_2521") 335 CERTIFICATE_TYPE_2521, 336 @SerializedName("CERTIFICATE_TYPE_2522") 337 CERTIFICATE_TYPE_2522 338 } 339 340 public static class BusinessLicense { 341 @SerializedName("cert_type") 342 public CertificateType certType; 343 344 @SerializedName("business_license_copy") 345 public String businessLicenseCopy; 346 347 @SerializedName("business_license_number") 348 public String businessLicenseNumber; 349 350 @SerializedName("merchant_name") 351 public String merchantName; 352 353 @SerializedName("legal_person") 354 public String legalPerson; 355 356 @SerializedName("company_address") 357 public String companyAddress; 358 359 @SerializedName("business_time") 360 public String businessTime; 361 } 362 363 public static class SettlementInfo { 364 @SerializedName("settlement_id") 365 public Long settlementId; 366 367 @SerializedName("qualification_type") 368 public String qualificationType; 369 } 370 371 public static class AccountHostingIdCardInfo { 372 @SerializedName("id_card_copy") 373 public String idCardCopy; 374 375 @SerializedName("id_card_national") 376 public String idCardNational; 377 378 @SerializedName("id_card_name") 379 public String idCardName; 380 381 @SerializedName("id_card_number") 382 public String idCardNumber; 383 384 @SerializedName("id_card_valid_time_begin") 385 public String idCardValidTimeBegin; 386 387 @SerializedName("id_card_valid_time") 388 public String idCardValidTime; 389 } 390 391 public static class FinanceInstitutionInfo { 392 @SerializedName("finance_type") 393 public FinanceType financeType; 394 395 @SerializedName("finance_license_pics") 396 public List<String> financeLicensePics; 397 } 398 399 public static class SalesSceneInfo { 400 @SerializedName("store_name") 401 public String storeName; 402 403 @SerializedName("store_url") 404 public String storeUrl; 405 406 @SerializedName("store_qr_code") 407 public String storeQrCode; 408 409 @SerializedName("mini_program_sub_appid") 410 public String miniProgramSubAppid; 411 } 412 413 public static class UBOInfo { 414 @SerializedName("ubo_id_doc_type") 415 public IdentificationType uboIdDocType; 416 417 @SerializedName("ubo_id_doc_copy") 418 public String uboIdDocCopy; 419 420 @SerializedName("ubo_id_doc_copy_back") 421 public String uboIdDocCopyBack; 422 423 @SerializedName("ubo_id_doc_name") 424 public String uboIdDocName; 425 426 @SerializedName("ubo_id_doc_number") 427 public String uboIdDocNumber; 428 429 @SerializedName("ubo_id_doc_address") 430 public String uboIdDocAddress; 431 432 @SerializedName("ubo_id_doc_period_begin") 433 public String uboIdDocPeriodBegin; 434 435 @SerializedName("ubo_id_doc_period_end") 436 public String uboIdDocPeriodEnd; 437 } 438 439 public static class AccountHostingAccountInfo { 440 @SerializedName("bank_account_type") 441 public String bankAccountType; 442 443 @SerializedName("account_bank") 444 public String accountBank; 445 446 @SerializedName("account_name") 447 public String accountName; 448 449 @SerializedName("bank_branch_id") 450 public String bankBranchId; 451 452 @SerializedName("bank_name") 453 public String bankName; 454 455 @SerializedName("account_number") 456 public String accountNumber; 457 } 458 459 public static class AccountHostingIdDocInfo { 460 @SerializedName("id_doc_copy") 461 public String idDocCopy; 462 463 @SerializedName("id_doc_copy_back") 464 public String idDocCopyBack; 465 466 @SerializedName("id_doc_name") 467 public String idDocName; 468 469 @SerializedName("id_doc_number") 470 public String idDocNumber; 471 472 @SerializedName("doc_period_begin") 473 public String docPeriodBegin; 474 475 @SerializedName("doc_period_end") 476 public String docPeriodEnd; 477 } 478 479} 480
需配合微信支付工具库 wxpay_utility 使用,请参考 Go
1package main 2 3import ( 4 "bytes" 5 "demo/wxpay_utility" // 引用微信支付工具库,参考 https://pay.weixin.qq.com/doc/v3/partner/4015119446 6 "encoding/json" 7 "fmt" 8 "net/http" 9 "net/url" 10) 11 12func main() { 13 // TODO: 请准备商户开发必要参数,参考:https://pay.weixin.qq.com/doc/v3/partner/4013080340 14 config, err := wxpay_utility.CreateMchConfig( 15 "19xxxxxxxx", // 商户号,是由微信支付系统生成并分配给每个商户的唯一标识符,商户号获取方式参考 https://pay.weixin.qq.com/doc/v3/partner/4013080340 16 "1DDE55AD98Exxxxxxxxxx", // 商户API证书序列号,如何获取请参考 https://pay.weixin.qq.com/doc/v3/partner/4013058924 17 "/path/to/apiclient_key.pem", // 商户API证书私钥文件路径,本地文件路径 18 "PUB_KEY_ID_xxxxxxxxxxxxx", // 微信支付公钥ID,如何获取请参考 https://pay.weixin.qq.com/doc/v3/partner/4013038589 19 "/path/to/wxp_pub.pem", // 微信支付公钥文件路径,本地文件路径 20 ) 21 if err != nil { 22 fmt.Println(err) 23 return 24 } 25 26 request := &SubmitAccountHostingApplymentReq{ 27 OutRequestNo: wxpay_utility.String("APPLYMENT_00000000001"), 28 OrganizationType: wxpay_utility.String("2"), 29 FinanceInstitution: wxpay_utility.Bool(true), 30 BusinessLicenseInfo: &BusinessLicense{ 31 CertType: CERTIFICATETYPE_CERTIFICATE_TYPE_2388.Ptr(), 32 BusinessLicenseCopy: wxpay_utility.String("47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"), 33 BusinessLicenseNumber: wxpay_utility.String("123456789012345678"), 34 MerchantName: wxpay_utility.String("腾讯科技有限公司"), 35 LegalPerson: wxpay_utility.String("张三"), 36 CompanyAddress: wxpay_utility.String("深圳南山区科苑路"), 37 BusinessTime: wxpay_utility.String("[\"2014-01-01\",\"长期\"]"), 38 }, 39 FinanceInstitutionInfo: &FinanceInstitutionInfo{ 40 FinanceType: FINANCETYPE_BANK_AGENT.Ptr(), 41 FinanceLicensePics: []string{"example_FinanceLicensePics"}, 42 }, 43 IdHolderType: IDHOLDERTYPE_LEGAL.Ptr(), 44 IdDocType: IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_MAINLAND_IDCARD.Ptr(), 45 AuthorizeLetterCopy: wxpay_utility.String("47ZC6GC-vnrbEny_Ie_An5-tCpqxucuxi-vByf3Gjm7KEIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"), 46 IdCardCompleteStatement: wxpay_utility.String("example_id_card_complete_statement"), 47 IdCardInfo: &AccountHostingIdCardInfo{ 48 IdCardCopy: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ"), 49 IdCardNational: wxpay_utility.String("47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"), 50 IdCardName: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 51 IdCardNumber: wxpay_utility.String("AOZdYGISxo4y44/UgZ69bdu9X+tfMUJ9dl+LetjM45/zMbrYu+wWZ8gn4CTdo+D/m9MrPg+V4sm73oxqdQu/hj7aWyDl4GQtPXVdaztB9jVbVZh3QFzV+BEmytMNQp9dt1uWJktlfdDdLR3AMWyMB377xd+m9bSr/ioDTzagEcGe+vLYiKrzcroQv3OR0p3ppFYoQ3IfYeU/04S4t9rNFL+kyblK2FCCqQ11NdbbHoCrJc7NV4oASq6ZFonjTtgjjgKsadIKHXtb3JZKGZjduGdtkRJJp0/0eow96uY1Pk7Rq79Jtt7+I8juwEc4P4TG5xzchG/5IL9DBd+Z0zZXkw=="), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 52 IdCardValidTimeBegin: wxpay_utility.String("2019-06-06"), 53 IdCardValidTime: wxpay_utility.String("2026-06-06"), 54 }, 55 IdDocInfo: &AccountHostingIdDocInfo{ 56 IdDocCopy: wxpay_utility.String("47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"), 57 IdDocCopyBack: wxpay_utility.String("47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"), 58 IdDocName: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ"), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 59 IdDocNumber: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ"), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 60 DocPeriodBegin: wxpay_utility.String("2019-06-06"), 61 DocPeriodEnd: wxpay_utility.String("2020-01-02"), 62 }, 63 UboInfoList: []UboInfo{UboInfo{ 64 UboIdDocType: IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_MAINLAND_IDCARD.Ptr(), 65 UboIdDocCopy: wxpay_utility.String("jTpGmxUXqRTvDujqhThn4ReFxikqJ5YW6zFQ"), 66 UboIdDocCopyBack: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"), 67 UboIdDocName: wxpay_utility.String("AOZdYGISxo4y44/Ug4P4TG5xzchG/5IL9DBd+Z0zZXkw=="), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 68 UboIdDocNumber: wxpay_utility.String("AOZdYGISxo4y44/Ug4P4TG5xzchG/5IL9DBd+Z0zZXkw=="), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 69 UboIdDocAddress: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 70 UboIdDocPeriodBegin: wxpay_utility.String("2019-06-06"), 71 UboIdDocPeriodEnd: wxpay_utility.String("2026-06-06"), 72 }}, 73 AccountInfo: &AccountHostingAccountInfo{ 74 BankAccountType: wxpay_utility.String("75"), 75 AccountBank: wxpay_utility.String("工商银行"), 76 AccountName: wxpay_utility.String("AOZdYGISxo4y44/UgZ69bdu9X+tfMUJ9dl+LetjM45/zMbrYu+wWZ8gn4CTdo+D/m9MrPg+V4sm73oxqdQu/hj7aWyDl4GQtPXVdaztB9jVbVZh3QFzV+BEmytMNQp9dt1uWJktlfdDdLR3AMWyMB377xd+m9bSr/ioDTzagEcGe+vLYiKrzcroQv3OR0p3ppFYoQ3IfYeU/04S4t9rNFL+kyblK2FCCqQ11NdbbHoCrJc7NV4oASq6ZFonjTtgjjgKsadIKHXtb3JZKGZjduGdtkRJJp0/0eow96uY1Pk7Rq79Jtt7+I8juwEc4P4TG5xzchG/5IL9DBd+Z0zZXkw=="), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 77 BankBranchId: wxpay_utility.String("402713354941"), 78 BankName: wxpay_utility.String("施秉县农村信用合作联社城关信用社"), 79 AccountNumber: wxpay_utility.String("d+xT+MQCvrLHUVDWv/8MR/dB7TkXM2YYZlokmXzFsWs35NXUot7C0NcxIrUF5FnxqCJHkNgKtxa6RxEYyba1+VBRLnqKG2fSy/Y5qDN08Ej9zHCwJjq52Wg1VG8MRugli9YMI1fI83KGBxhuXyemgS/hqFKsfYGiOkJqjTUpgY5VqjtL2N4l4z11T0ECB/aSyVXUysOFGLVfSrUxMPZy6jWWYGvT1+4P633f+R+ki1gT4WF/2KxZOYmli385ZgVhcR30mr4/G3HBcxi13zp7FnEeOsLlvBmI1PHN4C7Rsu3WL8sPndjXTd75kPkyjqnoMRrEEaYQE8ZRGYoeorwC+w=="), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 80 }, 81 ContactInfo: &AccountHostingContactInfo{ 82 ContactType: wxpay_utility.String("65"), 83 ContactName: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 84 ContactIdDocType: IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_MAINLAND_IDCARD.Ptr(), 85 ContactIdCardNumber: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 86 ContactIdDocCopy: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"), 87 ContactIdDocCopyBack: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"), 88 ContactIdDocPeriodBegin: wxpay_utility.String("2019-06-06"), 89 ContactIdDocPeriodEnd: wxpay_utility.String("2026-06-06"), 90 MobilePhone: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="), /*请传入 wxpay_utility.EncryptOAEPWithPublicKey 加密结果*/ 91 }, 92 SalesSceneInfo: &SalesSceneInfo{ 93 StoreName: wxpay_utility.String("爱烧烤"), 94 StoreUrl: wxpay_utility.String("http://www.qq.com"), 95 StoreQrCode: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ"), 96 MiniProgramSubAppid: wxpay_utility.String("wxa123344545577"), 97 }, 98 SettlementInfo: &SettlementInfo{ 99 SettlementId: wxpay_utility.Int64(719), 100 QualificationType: wxpay_utility.String("零售批发/生活娱乐/其他"), 101 }, 102 MerchantShortname: wxpay_utility.String("腾讯"), 103 Qualifications: wxpay_utility.String("[\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\",\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\"]"), 104 BusinessAdditionPics: wxpay_utility.String("[\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\",\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\"]"), 105 BusinessAdditionDesc: wxpay_utility.String("特殊情况,说明原因"), 106 ProxySignVerifyMode: wxpay_utility.Bool(true), 107 } 108 109 response, err := SubmitAccountHostingApplyment(config, request) 110 if err != nil { 111 fmt.Printf("请求失败: %+v\n", err) 112 // TODO: 请求失败,根据状态码执行不同的处理 113 return 114 } 115 116 // TODO: 请求成功,继续业务逻辑 117 fmt.Printf("请求成功: %+v\n", response) 118} 119 120func SubmitAccountHostingApplyment(config *wxpay_utility.MchConfig, request *SubmitAccountHostingApplymentReq) (response *SubmitAccountHostingApplymentResp, err error) { 121 const ( 122 host = "https://api.mch.weixin.qq.com" 123 method = "POST" 124 path = "/v3/ecommerce/applyments/submit-account-hosting-applyment" 125 ) 126 127 reqUrl, err := url.Parse(fmt.Sprintf("%s%s", host, path)) 128 if err != nil { 129 return nil, err 130 } 131 reqBody, err := json.Marshal(request) 132 if err != nil { 133 return nil, err 134 } 135 httpRequest, err := http.NewRequest(method, reqUrl.String(), bytes.NewReader(reqBody)) 136 if err != nil { 137 return nil, err 138 } 139 httpRequest.Header.Set("Accept", "application/json") 140 httpRequest.Header.Set("Wechatpay-Serial", config.WechatPayPublicKeyId()) 141 httpRequest.Header.Set("Content-Type", "application/json") 142 authorization, err := wxpay_utility.BuildAuthorization(config.MchId(), config.CertificateSerialNo(), config.PrivateKey(), method, reqUrl.RequestURI(), reqBody) 143 if err != nil { 144 return nil, err 145 } 146 httpRequest.Header.Set("Authorization", authorization) 147 148 client := &http.Client{} 149 httpResponse, err := client.Do(httpRequest) 150 if err != nil { 151 return nil, err 152 } 153 154 respBody, err := wxpay_utility.ExtractResponseBody(httpResponse) 155 if err != nil { 156 return nil, err 157 } 158 159 if httpResponse.StatusCode >= 200 && httpResponse.StatusCode < 300 { 160 // 2XX 成功,验证应答签名 161 err = wxpay_utility.ValidateResponse( 162 config.WechatPayPublicKeyId(), 163 config.WechatPayPublicKey(), 164 &httpResponse.Header, 165 respBody, 166 ) 167 if err != nil { 168 return nil, err 169 } 170 171 if err := json.Unmarshal(respBody, response); err != nil { 172 return nil, err 173 } 174 175 return response, nil 176 } else { 177 return nil, &wxpay_utility.ApiException{ 178 StatusCode: httpResponse.StatusCode, 179 Header: httpResponse.Header, 180 Body: respBody, 181 } 182 } 183} 184 185type SubmitAccountHostingApplymentReq struct { 186 OutRequestNo *string `json:"out_request_no,omitempty"` 187 OrganizationType *string `json:"organization_type,omitempty"` 188 FinanceInstitution *bool `json:"finance_institution,omitempty"` 189 BusinessLicenseInfo *BusinessLicense `json:"business_license_info,omitempty"` 190 FinanceInstitutionInfo *FinanceInstitutionInfo `json:"finance_institution_info,omitempty"` 191 IdHolderType *IdHolderType `json:"id_holder_type,omitempty"` 192 IdDocType *IdentificationType `json:"id_doc_type,omitempty"` 193 AuthorizeLetterCopy *string `json:"authorize_letter_copy,omitempty"` 194 IdCardCompleteStatement *string `json:"id_card_complete_statement,omitempty"` 195 IdCardInfo *AccountHostingIdCardInfo `json:"id_card_info,omitempty"` 196 IdDocInfo *AccountHostingIdDocInfo `json:"id_doc_info,omitempty"` 197 UboInfoList []UboInfo `json:"ubo_info_list,omitempty"` 198 AccountInfo *AccountHostingAccountInfo `json:"account_info,omitempty"` 199 ContactInfo *AccountHostingContactInfo `json:"contact_info,omitempty"` 200 SalesSceneInfo *SalesSceneInfo `json:"sales_scene_info,omitempty"` 201 SettlementInfo *SettlementInfo `json:"settlement_info,omitempty"` 202 MerchantShortname *string `json:"merchant_shortname,omitempty"` 203 Qualifications *string `json:"qualifications,omitempty"` 204 BusinessAdditionPics *string `json:"business_addition_pics,omitempty"` 205 BusinessAdditionDesc *string `json:"business_addition_desc,omitempty"` 206 ProxySignVerifyMode *bool `json:"proxy_sign_verify_mode,omitempty"` 207} 208 209type FinanceType string 210 211func (e FinanceType) Ptr() *FinanceType { 212 return &e 213} 214 215const ( 216 FINANCETYPE_BANK_AGENT FinanceType = "BANK_AGENT" 217 FINANCETYPE_PAYMENT_AGENT FinanceType = "PAYMENT_AGENT" 218 FINANCETYPE_INSURANCE FinanceType = "INSURANCE" 219 FINANCETYPE_TRADE_AND_SETTLE FinanceType = "TRADE_AND_SETTLE" 220 FINANCETYPE_OTHER FinanceType = "OTHER" 221) 222 223type AccountHostingContactInfo struct { 224 ContactType *string `json:"contact_type,omitempty"` 225 ContactName *string `json:"contact_name,omitempty"` 226 ContactIdDocType *IdentificationType `json:"contact_id_doc_type,omitempty"` 227 ContactIdCardNumber *string `json:"contact_id_card_number,omitempty"` 228 ContactIdDocCopy *string `json:"contact_id_doc_copy,omitempty"` 229 ContactIdDocCopyBack *string `json:"contact_id_doc_copy_back,omitempty"` 230 ContactIdDocPeriodBegin *string `json:"contact_id_doc_period_begin,omitempty"` 231 ContactIdDocPeriodEnd *string `json:"contact_id_doc_period_end,omitempty"` 232 MobilePhone *string `json:"mobile_phone,omitempty"` 233} 234 235type IdHolderType string 236 237func (e IdHolderType) Ptr() *IdHolderType { 238 return &e 239} 240 241const ( 242 IDHOLDERTYPE_LEGAL IdHolderType = "LEGAL" 243 IDHOLDERTYPE_SUPER IdHolderType = "SUPER" 244) 245 246type SubmitAccountHostingApplymentResp struct { 247 ApplymentId *int64 `json:"applyment_id,omitempty"` 248 OutRequestNo *string `json:"out_request_no,omitempty"` 249} 250 251type IdentificationType string 252 253func (e IdentificationType) Ptr() *IdentificationType { 254 return &e 255} 256 257const ( 258 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_MAINLAND_IDCARD IdentificationType = "IDENTIFICATION_TYPE_MAINLAND_IDCARD" 259 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_OVERSEA_PASSPORT IdentificationType = "IDENTIFICATION_TYPE_OVERSEA_PASSPORT" 260 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_HONGKONG IdentificationType = "IDENTIFICATION_TYPE_HONGKONG" 261 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_MACAO IdentificationType = "IDENTIFICATION_TYPE_MACAO" 262 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_TAIWAN IdentificationType = "IDENTIFICATION_TYPE_TAIWAN" 263 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_FOREIGN_RESIDENT IdentificationType = "IDENTIFICATION_TYPE_FOREIGN_RESIDENT" 264 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT IdentificationType = "IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT" 265 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_TAIWAN_RESIDENT IdentificationType = "IDENTIFICATION_TYPE_TAIWAN_RESIDENT" 266) 267 268type CertificateType string 269 270func (e CertificateType) Ptr() *CertificateType { 271 return &e 272} 273 274const ( 275 CERTIFICATETYPE_CERTIFICATE_TYPE_2388 CertificateType = "CERTIFICATE_TYPE_2388" 276 CERTIFICATETYPE_CERTIFICATE_TYPE_2389 CertificateType = "CERTIFICATE_TYPE_2389" 277 CERTIFICATETYPE_CERTIFICATE_TYPE_2394 CertificateType = "CERTIFICATE_TYPE_2394" 278 CERTIFICATETYPE_CERTIFICATE_TYPE_2395 CertificateType = "CERTIFICATE_TYPE_2395" 279 CERTIFICATETYPE_CERTIFICATE_TYPE_2396 CertificateType = "CERTIFICATE_TYPE_2396" 280 CERTIFICATETYPE_CERTIFICATE_TYPE_2399 CertificateType = "CERTIFICATE_TYPE_2399" 281 CERTIFICATETYPE_CERTIFICATE_TYPE_2400 CertificateType = "CERTIFICATE_TYPE_2400" 282 CERTIFICATETYPE_CERTIFICATE_TYPE_2520 CertificateType = "CERTIFICATE_TYPE_2520" 283 CERTIFICATETYPE_CERTIFICATE_TYPE_2521 CertificateType = "CERTIFICATE_TYPE_2521" 284 CERTIFICATETYPE_CERTIFICATE_TYPE_2522 CertificateType = "CERTIFICATE_TYPE_2522" 285) 286 287type BusinessLicense struct { 288 CertType *CertificateType `json:"cert_type,omitempty"` 289 BusinessLicenseCopy *string `json:"business_license_copy,omitempty"` 290 BusinessLicenseNumber *string `json:"business_license_number,omitempty"` 291 MerchantName *string `json:"merchant_name,omitempty"` 292 LegalPerson *string `json:"legal_person,omitempty"` 293 CompanyAddress *string `json:"company_address,omitempty"` 294 BusinessTime *string `json:"business_time,omitempty"` 295} 296 297type SettlementInfo struct { 298 SettlementId *int64 `json:"settlement_id,omitempty"` 299 QualificationType *string `json:"qualification_type,omitempty"` 300} 301 302type AccountHostingIdCardInfo struct { 303 IdCardCopy *string `json:"id_card_copy,omitempty"` 304 IdCardNational *string `json:"id_card_national,omitempty"` 305 IdCardName *string `json:"id_card_name,omitempty"` 306 IdCardNumber *string `json:"id_card_number,omitempty"` 307 IdCardValidTimeBegin *string `json:"id_card_valid_time_begin,omitempty"` 308 IdCardValidTime *string `json:"id_card_valid_time,omitempty"` 309} 310 311type FinanceInstitutionInfo struct { 312 FinanceType *FinanceType `json:"finance_type,omitempty"` 313 FinanceLicensePics []string `json:"finance_license_pics,omitempty"` 314} 315 316type SalesSceneInfo struct { 317 StoreName *string `json:"store_name,omitempty"` 318 StoreUrl *string `json:"store_url,omitempty"` 319 StoreQrCode *string `json:"store_qr_code,omitempty"` 320 MiniProgramSubAppid *string `json:"mini_program_sub_appid,omitempty"` 321} 322 323type UboInfo struct { 324 UboIdDocType *IdentificationType `json:"ubo_id_doc_type,omitempty"` 325 UboIdDocCopy *string `json:"ubo_id_doc_copy,omitempty"` 326 UboIdDocCopyBack *string `json:"ubo_id_doc_copy_back,omitempty"` 327 UboIdDocName *string `json:"ubo_id_doc_name,omitempty"` 328 UboIdDocNumber *string `json:"ubo_id_doc_number,omitempty"` 329 UboIdDocAddress *string `json:"ubo_id_doc_address,omitempty"` 330 UboIdDocPeriodBegin *string `json:"ubo_id_doc_period_begin,omitempty"` 331 UboIdDocPeriodEnd *string `json:"ubo_id_doc_period_end,omitempty"` 332} 333 334type AccountHostingAccountInfo struct { 335 BankAccountType *string `json:"bank_account_type,omitempty"` 336 AccountBank *string `json:"account_bank,omitempty"` 337 AccountName *string `json:"account_name,omitempty"` 338 BankBranchId *string `json:"bank_branch_id,omitempty"` 339 BankName *string `json:"bank_name,omitempty"` 340 AccountNumber *string `json:"account_number,omitempty"` 341} 342 343type AccountHostingIdDocInfo struct { 344 IdDocCopy *string `json:"id_doc_copy,omitempty"` 345 IdDocCopyBack *string `json:"id_doc_copy_back,omitempty"` 346 IdDocName *string `json:"id_doc_name,omitempty"` 347 IdDocNumber *string `json:"id_doc_number,omitempty"` 348 DocPeriodBegin *string `json:"doc_period_begin,omitempty"` 349 DocPeriodEnd *string `json:"doc_period_end,omitempty"` 350} 351
POST
1curl -X POST \ 2 https://api.mch.weixin.qq.com/v3/ecommerce/applyments/submit-account-hosting-applyment \ 3 -H "Authorization: WECHATPAY2-SHA256-RSA2048 mchid=\"1900000001\",..." \ 4 -H "Accept: application/json" \ 5 -H "Wechatpay-Serial: 5157F09EFDC096DE15EBE81A47057A7232F1B8E1" \ 6 -H "Content-Type: application/json" \ 7 -d '{ 8 "out_request_no" : "APPLYMENT_00000000001", 9 "organization_type" : "2", 10 "finance_institution" : true, 11 "business_license_info" : { 12 "cert_type" : "CERTIFICATE_TYPE_2388", 13 "business_license_copy" : "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4", 14 "business_license_number" : "123456789012345678", 15 "merchant_name" : "腾讯科技有限公司", 16 "legal_person" : "张三", 17 "company_address" : "深圳南山区科苑路", 18 "business_time" : "[\\\"2014-01-01\\\",\\\"长期\\\"]" 19 }, 20 "finance_institution_info" : { 21 "finance_type" : "BANK_AGENT", 22 "finance_license_pics" : [ 23 "example_finance_license_pics" 24 ] 25 }, 26 "id_holder_type" : "LEGAL", 27 "id_doc_type" : "IDENTIFICATION_TYPE_MACAO", 28 "authorize_letter_copy" : "47ZC6GC-vnrbEny_Ie_An5-tCpqxucuxi-vByf3Gjm7KEIUv0OF4wFNIO4kqg05InE4d2I6_H7I4", 29 "id_card_complete_statement" : "example_id_card_complete_statement", 30 "id_card_info" : { 31 "id_card_copy" : "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ", 32 "id_card_national" : "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4", 33 "id_card_name" : "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==", 34 "id_card_number" : "AOZdYGISxo4y44/UgZ69bdu9X+tfMUJ9dl+LetjM45/zMbrYu+wWZ8gn4CTdo+D/m9MrPg+V4sm73oxqdQu/hj7aWyDl4GQtPXVdaztB9jVbVZh3QFzV+BEmytMNQp9dt1uWJktlfdDdLR3AMWyMB377xd+m9bSr/ioDTzagEcGe+vLYiKrzcroQv3OR0p3ppFYoQ3IfYeU/04S4t9rNFL+kyblK2FCCqQ11NdbbHoCrJc7NV4oASq6ZFonjTtgjjgKsadIKHXtb3JZKGZjduGdtkRJJp0/0eow96uY1Pk7Rq79Jtt7+I8juwEc4P4TG5xzchG/5IL9DBd+Z0zZXkw==", 35 "id_card_valid_time_begin" : "2019-06-06", 36 "id_card_valid_time" : "2026-06-06" 37 }, 38 "id_doc_info" : { 39 "id_doc_copy" : "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4", 40 "id_doc_copy_back" : "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4", 41 "id_doc_name" : "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ", 42 "id_doc_number" : "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ", 43 "doc_period_begin" : "2019-06-06", 44 "doc_period_end" : "2020-01-02" 45 }, 46 "ubo_info_list" : [ 47 { 48 "ubo_id_doc_type" : "IDENTIFICATION_TYPE_MAINLAND_IDCARD", 49 "ubo_id_doc_copy" : "jTpGmxUXqRTvDujqhThn4ReFxikqJ5YW6zFQ", 50 "ubo_id_doc_copy_back" : "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ", 51 "ubo_id_doc_name" : "AOZdYGISxo4y44/Ug4P4TG5xzchG/5IL9DBd+Z0zZXkw==", 52 "ubo_id_doc_number" : "AOZdYGISxo4y44/Ug4P4TG5xzchG/5IL9DBd+Z0zZXkw==", 53 "ubo_id_doc_address" : "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==", 54 "ubo_id_doc_period_begin" : "2019-06-06", 55 "ubo_id_doc_period_end" : "2026-06-06" 56 } 57 ], 58 "account_info" : { 59 "bank_account_type" : "75", 60 "account_bank" : "工商银行", 61 "account_name" : "AOZdYGISxo4y44/UgZ69bdu9X+tfMUJ9dl+LetjM45/zMbrYu+wWZ8gn4CTdo+D/m9MrPg+V4sm73oxqdQu/hj7aWyDl4GQtPXVdaztB9jVbVZh3QFzV+BEmytMNQp9dt1uWJktlfdDdLR3AMWyMB377xd+m9bSr/ioDTzagEcGe+vLYiKrzcroQv3OR0p3ppFYoQ3IfYeU/04S4t9rNFL+kyblK2FCCqQ11NdbbHoCrJc7NV4oASq6ZFonjTtgjjgKsadIKHXtb3JZKGZjduGdtkRJJp0/0eow96uY1Pk7Rq79Jtt7+I8juwEc4P4TG5xzchG/5IL9DBd+Z0zZXkw==", 62 "bank_branch_id" : "402713354941", 63 "bank_name" : "施秉县农村信用合作联社城关信用社", 64 "account_number" : "d+xT+MQCvrLHUVDWv/8MR/dB7TkXM2YYZlokmXzFsWs35NXUot7C0NcxIrUF5FnxqCJHkNgKtxa6RxEYyba1+VBRLnqKG2fSy/Y5qDN08Ej9zHCwJjq52Wg1VG8MRugli9YMI1fI83KGBxhuXyemgS/hqFKsfYGiOkJqjTUpgY5VqjtL2N4l4z11T0ECB/aSyVXUysOFGLVfSrUxMPZy6jWWYGvT1+4P633f+R+ki1gT4WF/2KxZOYmli385ZgVhcR30mr4/G3HBcxi13zp7FnEeOsLlvBmI1PHN4C7Rsu3WL8sPndjXTd75kPkyjqnoMRrEEaYQE8ZRGYoeorwC+w==" 65 }, 66 "contact_info" : { 67 "contact_type" : "65", 68 "contact_name" : "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==", 69 "contact_id_doc_type" : "IDENTIFICATION_TYPE_MACAO", 70 "contact_id_card_number" : "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==", 71 "contact_id_doc_copy" : "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ", 72 "contact_id_doc_copy_back" : "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ", 73 "contact_id_doc_period_begin" : "2019-06-06", 74 "contact_id_doc_period_end" : "2026-06-06", 75 "mobile_phone" : "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==" 76 }, 77 "sales_scene_info" : { 78 "store_name" : "爱烧烤", 79 "store_url" : "http://www.qq.com", 80 "store_qr_code" : "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ", 81 "mini_program_sub_appid" : "wxa123344545577" 82 }, 83 "settlement_info" : { 84 "settlement_id" : 719, 85 "qualification_type" : "零售批发/生活娱乐/其他" 86 }, 87 "merchant_shortname" : "腾讯", 88 "qualifications" : "[\\\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\\\",\\\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\\\"]", 89 "business_addition_pics" : "[\\\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\\\",\\\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\\\"]", 90 "business_addition_desc" : "特殊情况,说明原因", 91 "proxy_sign_verify_mode" : true 92 }' 93
应答参数
200 OK
applyment_id 必填 integer
【微信支付申请单号】 微信支付分配的申请单号 。
out_request_no 必填 string
【业务申请编号】 服务商自定义的商户唯一编号。每个编号对应一个申请单,每个申请单审核通过后会生成一个微信支付商户号。
应答示例
200 OK
1{ 2 "applyment_id" : 2000002124775691, 3 "out_request_no" : "APPLYMENT_00000000001" 4} 5
错误码
公共错误码
状态码 | 错误码 | 描述 | 解决方案 |
---|---|---|---|
400 | PARAM_ERROR | 参数错误 | 请根据错误提示正确传入参数 |
400 | INVALID_REQUEST | HTTP 请求不符合微信支付 APIv3 接口规则 | 请参阅 接口规则 |
401 | SIGN_ERROR | 验证不通过 | 请参阅 签名常见问题 |
500 | SYSTEM_ERROR | 系统异常,请稍后重试 | 请稍后重试 |