提交申请单
更新时间:2025.07.17接口适用场景:电商平台,可使用该接口,帮助其二级商户进件成为微信支付商户。
商户上送敏感信息时使用微信支付平台公钥加密,证书序列号包含在请求HTTP头部的Wechatpay-Serial,详见接口规则
微信支付平台证书公钥需调用接口获取,详见获取文档
调用接口获取的微信支付平台证书,证书需要解密后才能使用,详见解密说明文档
本接口不支持进件境外个人小微商户
接口说明
支持商户:【平台商户】
请求方式:【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_complete_statement 选填 string
【法人影印件信息辅助填写的平台声明】 1、当主体为“个体户/企业/事业单位/社会组织/政府机关”且填写的法人影印件为空时,该值必填,且传入固定值“客户确认你公司用已留存的法人影印件做主体归集和关联管理”
2、当主体为“小微/个人卖家”,经营者影印件必须填写,该值无需填写
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。
请求示例
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
需配合微信支付工具库 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.idCardCompleteStatement = "example_id_card_complete_statement"; 62 request.idCardInfo = new AccountHostingIdCardInfo(); 63 request.idCardInfo.idCardCopy = "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ"; 64 request.idCardInfo.idCardNational = "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"; 65 request.idCardInfo.idCardName = client.encrypt("id_card_name"); 66 request.idCardInfo.idCardNumber = client.encrypt("id_card_number"); 67 request.idCardInfo.idCardValidTimeBegin = "2019-06-06"; 68 request.idCardInfo.idCardValidTime = "2026-06-06"; 69 request.idDocInfo = new AccountHostingIdDocInfo(); 70 request.idDocInfo.idDocCopy = "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"; 71 request.idDocInfo.idDocCopyBack = "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"; 72 request.idDocInfo.idDocName = client.encrypt("id_doc_name"); 73 request.idDocInfo.idDocNumber = client.encrypt("id_doc_number"); 74 request.idDocInfo.docPeriodBegin = "2019-06-06"; 75 request.idDocInfo.docPeriodEnd = "2020-01-02"; 76 request.uboInfoList = new ArrayList<>(); 77 { 78 UBOInfo uboInfoListItem = new UBOInfo(); 79 uboInfoListItem.uboIdDocType = IdentificationType.IDENTIFICATION_TYPE_MAINLAND_IDCARD; 80 uboInfoListItem.uboIdDocCopy = "jTpGmxUXqRTvDujqhThn4ReFxikqJ5YW6zFQ"; 81 uboInfoListItem.uboIdDocCopyBack = "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"; 82 uboInfoListItem.uboIdDocName = client.encrypt("ubo_id_doc_name"); 83 uboInfoListItem.uboIdDocNumber = client.encrypt("ubo_id_doc_number"); 84 uboInfoListItem.uboIdDocAddress = client.encrypt("ubo_id_doc_address"); 85 uboInfoListItem.uboIdDocPeriodBegin = "2019-06-06"; 86 uboInfoListItem.uboIdDocPeriodEnd = "2026-06-06"; 87 request.uboInfoList.add(uboInfoListItem); 88 }; 89 request.accountInfo = new AccountHostingAccountInfo(); 90 request.accountInfo.bankAccountType = "75"; 91 request.accountInfo.accountBank = "工商银行"; 92 request.accountInfo.accountName = client.encrypt("account_name"); 93 request.accountInfo.bankBranchId = "402713354941"; 94 request.accountInfo.bankName = "施秉县农村信用合作联社城关信用社"; 95 request.accountInfo.accountNumber = client.encrypt("account_number"); 96 request.contactInfo = new AccountHostingContactInfo(); 97 request.contactInfo.contactType = "65"; 98 request.contactInfo.contactName = client.encrypt("contact_name"); 99 request.contactInfo.contactIdDocType = IdentificationType.IDENTIFICATION_TYPE_MACAO; 100 request.contactInfo.contactIdCardNumber = client.encrypt("contact_id_card_number"); 101 request.contactInfo.contactIdDocCopy = "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"; 102 request.contactInfo.contactIdDocCopyBack = "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"; 103 request.contactInfo.contactIdDocPeriodBegin = "2019-06-06"; 104 request.contactInfo.contactIdDocPeriodEnd = "2026-06-06"; 105 request.contactInfo.mobilePhone = client.encrypt("mobile_phone"); 106 request.salesSceneInfo = new SalesSceneInfo(); 107 request.salesSceneInfo.storeName = "爱烧烤"; 108 request.salesSceneInfo.storeUrl = "http://www.qq.com"; 109 request.salesSceneInfo.storeQrCode = "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ"; 110 request.salesSceneInfo.miniProgramSubAppid = "wxa123344545577"; 111 request.settlementInfo = new SettlementInfo(); 112 request.settlementInfo.settlementId = 719L; 113 request.settlementInfo.qualificationType = "零售批发/生活娱乐/其他"; 114 request.merchantShortname = "腾讯"; 115 request.qualifications = "[\\\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\\\",\\\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\\\"]"; 116 request.businessAdditionPics = "[\\\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\\\",\\\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\\\"]"; 117 request.businessAdditionDesc = "特殊情况,说明原因"; 118 request.proxySignVerifyMode = true; 119 try { 120 SubmitAccountHostingApplymentResp response = client.run(request); 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_complete_statement") 205 public String idCardCompleteStatement; 206 207 @SerializedName("id_card_info") 208 public AccountHostingIdCardInfo idCardInfo; 209 210 @SerializedName("id_doc_info") 211 public AccountHostingIdDocInfo idDocInfo; 212 213 @SerializedName("ubo_info_list") 214 public List<UBOInfo> uboInfoList; 215 216 @SerializedName("account_info") 217 public AccountHostingAccountInfo accountInfo; 218 219 @SerializedName("contact_info") 220 public AccountHostingContactInfo contactInfo; 221 222 @SerializedName("sales_scene_info") 223 public SalesSceneInfo salesSceneInfo; 224 225 @SerializedName("settlement_info") 226 public SettlementInfo settlementInfo; 227 228 @SerializedName("merchant_shortname") 229 public String merchantShortname; 230 231 @SerializedName("qualifications") 232 public String qualifications; 233 234 @SerializedName("business_addition_pics") 235 public String businessAdditionPics; 236 237 @SerializedName("business_addition_desc") 238 public String businessAdditionDesc; 239 240 @SerializedName("proxy_sign_verify_mode") 241 public Boolean proxySignVerifyMode; 242 } 243 244 public static class SubmitAccountHostingApplymentResp { 245 @SerializedName("applyment_id") 246 public Long applymentId; 247 248 @SerializedName("out_request_no") 249 public String outRequestNo; 250 } 251 252 public static class BusinessLicense { 253 @SerializedName("cert_type") 254 public CertificateType certType; 255 256 @SerializedName("business_license_copy") 257 public String businessLicenseCopy; 258 259 @SerializedName("business_license_number") 260 public String businessLicenseNumber; 261 262 @SerializedName("merchant_name") 263 public String merchantName; 264 265 @SerializedName("legal_person") 266 public String legalPerson; 267 268 @SerializedName("company_address") 269 public String companyAddress; 270 271 @SerializedName("business_time") 272 public String businessTime; 273 } 274 275 public static class FinanceInstitutionInfo { 276 @SerializedName("finance_type") 277 public FinanceType financeType; 278 279 @SerializedName("finance_license_pics") 280 public List<String> financeLicensePics = new ArrayList<String>(); 281 } 282 283 public enum IdHolderType { 284 @SerializedName("LEGAL") 285 LEGAL, 286 @SerializedName("SUPER") 287 SUPER 288 } 289 290 public enum IdentificationType { 291 @SerializedName("IDENTIFICATION_TYPE_MAINLAND_IDCARD") 292 IDENTIFICATION_TYPE_MAINLAND_IDCARD, 293 @SerializedName("IDENTIFICATION_TYPE_OVERSEA_PASSPORT") 294 IDENTIFICATION_TYPE_OVERSEA_PASSPORT, 295 @SerializedName("IDENTIFICATION_TYPE_HONGKONG") 296 IDENTIFICATION_TYPE_HONGKONG, 297 @SerializedName("IDENTIFICATION_TYPE_MACAO") 298 IDENTIFICATION_TYPE_MACAO, 299 @SerializedName("IDENTIFICATION_TYPE_TAIWAN") 300 IDENTIFICATION_TYPE_TAIWAN, 301 @SerializedName("IDENTIFICATION_TYPE_FOREIGN_RESIDENT") 302 IDENTIFICATION_TYPE_FOREIGN_RESIDENT, 303 @SerializedName("IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT") 304 IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT, 305 @SerializedName("IDENTIFICATION_TYPE_TAIWAN_RESIDENT") 306 IDENTIFICATION_TYPE_TAIWAN_RESIDENT 307 } 308 309 public static class AccountHostingIdCardInfo { 310 @SerializedName("id_card_copy") 311 public String idCardCopy; 312 313 @SerializedName("id_card_national") 314 public String idCardNational; 315 316 @SerializedName("id_card_name") 317 public String idCardName; 318 319 @SerializedName("id_card_number") 320 public String idCardNumber; 321 322 @SerializedName("id_card_valid_time_begin") 323 public String idCardValidTimeBegin; 324 325 @SerializedName("id_card_valid_time") 326 public String idCardValidTime; 327 } 328 329 public static class AccountHostingIdDocInfo { 330 @SerializedName("id_doc_copy") 331 public String idDocCopy; 332 333 @SerializedName("id_doc_copy_back") 334 public String idDocCopyBack; 335 336 @SerializedName("id_doc_name") 337 public String idDocName; 338 339 @SerializedName("id_doc_number") 340 public String idDocNumber; 341 342 @SerializedName("doc_period_begin") 343 public String docPeriodBegin; 344 345 @SerializedName("doc_period_end") 346 public String docPeriodEnd; 347 } 348 349 public static class UBOInfo { 350 @SerializedName("ubo_id_doc_type") 351 public IdentificationType uboIdDocType; 352 353 @SerializedName("ubo_id_doc_copy") 354 public String uboIdDocCopy; 355 356 @SerializedName("ubo_id_doc_copy_back") 357 public String uboIdDocCopyBack; 358 359 @SerializedName("ubo_id_doc_name") 360 public String uboIdDocName; 361 362 @SerializedName("ubo_id_doc_number") 363 public String uboIdDocNumber; 364 365 @SerializedName("ubo_id_doc_address") 366 public String uboIdDocAddress; 367 368 @SerializedName("ubo_id_doc_period_begin") 369 public String uboIdDocPeriodBegin; 370 371 @SerializedName("ubo_id_doc_period_end") 372 public String uboIdDocPeriodEnd; 373 } 374 375 public static class AccountHostingAccountInfo { 376 @SerializedName("bank_account_type") 377 public String bankAccountType; 378 379 @SerializedName("account_bank") 380 public String accountBank; 381 382 @SerializedName("account_name") 383 public String accountName; 384 385 @SerializedName("bank_branch_id") 386 public String bankBranchId; 387 388 @SerializedName("bank_name") 389 public String bankName; 390 391 @SerializedName("account_number") 392 public String accountNumber; 393 } 394 395 public static class AccountHostingContactInfo { 396 @SerializedName("contact_type") 397 public String contactType; 398 399 @SerializedName("contact_name") 400 public String contactName; 401 402 @SerializedName("contact_id_doc_type") 403 public IdentificationType contactIdDocType; 404 405 @SerializedName("contact_id_card_number") 406 public String contactIdCardNumber; 407 408 @SerializedName("contact_id_doc_copy") 409 public String contactIdDocCopy; 410 411 @SerializedName("contact_id_doc_copy_back") 412 public String contactIdDocCopyBack; 413 414 @SerializedName("contact_id_doc_period_begin") 415 public String contactIdDocPeriodBegin; 416 417 @SerializedName("contact_id_doc_period_end") 418 public String contactIdDocPeriodEnd; 419 420 @SerializedName("mobile_phone") 421 public String mobilePhone; 422 } 423 424 public static class SalesSceneInfo { 425 @SerializedName("store_name") 426 public String storeName; 427 428 @SerializedName("store_url") 429 public String storeUrl; 430 431 @SerializedName("store_qr_code") 432 public String storeQrCode; 433 434 @SerializedName("mini_program_sub_appid") 435 public String miniProgramSubAppid; 436 } 437 438 public static class SettlementInfo { 439 @SerializedName("settlement_id") 440 public Long settlementId; 441 442 @SerializedName("qualification_type") 443 public String qualificationType; 444 } 445 446 public enum CertificateType { 447 @SerializedName("CERTIFICATE_TYPE_2388") 448 CERTIFICATE_TYPE_2388, 449 @SerializedName("CERTIFICATE_TYPE_2389") 450 CERTIFICATE_TYPE_2389, 451 @SerializedName("CERTIFICATE_TYPE_2394") 452 CERTIFICATE_TYPE_2394, 453 @SerializedName("CERTIFICATE_TYPE_2395") 454 CERTIFICATE_TYPE_2395, 455 @SerializedName("CERTIFICATE_TYPE_2396") 456 CERTIFICATE_TYPE_2396, 457 @SerializedName("CERTIFICATE_TYPE_2399") 458 CERTIFICATE_TYPE_2399, 459 @SerializedName("CERTIFICATE_TYPE_2400") 460 CERTIFICATE_TYPE_2400, 461 @SerializedName("CERTIFICATE_TYPE_2520") 462 CERTIFICATE_TYPE_2520, 463 @SerializedName("CERTIFICATE_TYPE_2521") 464 CERTIFICATE_TYPE_2521, 465 @SerializedName("CERTIFICATE_TYPE_2522") 466 CERTIFICATE_TYPE_2522 467 } 468 469 public enum FinanceType { 470 @SerializedName("BANK_AGENT") 471 BANK_AGENT, 472 @SerializedName("PAYMENT_AGENT") 473 PAYMENT_AGENT, 474 @SerializedName("INSURANCE") 475 INSURANCE, 476 @SerializedName("TRADE_AND_SETTLE") 477 TRADE_AND_SETTLE, 478 @SerializedName("OTHER") 479 OTHER 480 } 481 482} 483
需配合微信支付工具库 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_MACAO.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_MACAO.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 respBody, err := wxpay_utility.ExtractResponseBody(httpResponse) 154 if err != nil { 155 return nil, err 156 } 157 if httpResponse.StatusCode >= 200 && httpResponse.StatusCode < 300 { 158 // 2XX 成功,验证应答签名 159 err = wxpay_utility.ValidateResponse( 160 config.WechatPayPublicKeyId(), 161 config.WechatPayPublicKey(), 162 &httpResponse.Header, 163 respBody, 164 ) 165 if err != nil { 166 return nil, err 167 } 168 response := &SubmitAccountHostingApplymentResp{} 169 if err := json.Unmarshal(respBody, response); err != nil { 170 return nil, err 171 } 172 173 return response, nil 174 } else { 175 return nil, wxpay_utility.NewApiException( 176 httpResponse.StatusCode, 177 httpResponse.Header, 178 respBody, 179 ) 180 } 181} 182 183type SubmitAccountHostingApplymentReq struct { 184 OutRequestNo *string `json:"out_request_no,omitempty"` 185 OrganizationType *string `json:"organization_type,omitempty"` 186 FinanceInstitution *bool `json:"finance_institution,omitempty"` 187 BusinessLicenseInfo *BusinessLicense `json:"business_license_info,omitempty"` 188 FinanceInstitutionInfo *FinanceInstitutionInfo `json:"finance_institution_info,omitempty"` 189 IdHolderType *IdHolderType `json:"id_holder_type,omitempty"` 190 IdDocType *IdentificationType `json:"id_doc_type,omitempty"` 191 AuthorizeLetterCopy *string `json:"authorize_letter_copy,omitempty"` 192 IdCardCompleteStatement *string `json:"id_card_complete_statement,omitempty"` 193 IdCardInfo *AccountHostingIdCardInfo `json:"id_card_info,omitempty"` 194 IdDocInfo *AccountHostingIdDocInfo `json:"id_doc_info,omitempty"` 195 UboInfoList []UboInfo `json:"ubo_info_list,omitempty"` 196 AccountInfo *AccountHostingAccountInfo `json:"account_info,omitempty"` 197 ContactInfo *AccountHostingContactInfo `json:"contact_info,omitempty"` 198 SalesSceneInfo *SalesSceneInfo `json:"sales_scene_info,omitempty"` 199 SettlementInfo *SettlementInfo `json:"settlement_info,omitempty"` 200 MerchantShortname *string `json:"merchant_shortname,omitempty"` 201 Qualifications *string `json:"qualifications,omitempty"` 202 BusinessAdditionPics *string `json:"business_addition_pics,omitempty"` 203 BusinessAdditionDesc *string `json:"business_addition_desc,omitempty"` 204 ProxySignVerifyMode *bool `json:"proxy_sign_verify_mode,omitempty"` 205} 206 207type SubmitAccountHostingApplymentResp struct { 208 ApplymentId *int64 `json:"applyment_id,omitempty"` 209 OutRequestNo *string `json:"out_request_no,omitempty"` 210} 211 212type BusinessLicense struct { 213 CertType *CertificateType `json:"cert_type,omitempty"` 214 BusinessLicenseCopy *string `json:"business_license_copy,omitempty"` 215 BusinessLicenseNumber *string `json:"business_license_number,omitempty"` 216 MerchantName *string `json:"merchant_name,omitempty"` 217 LegalPerson *string `json:"legal_person,omitempty"` 218 CompanyAddress *string `json:"company_address,omitempty"` 219 BusinessTime *string `json:"business_time,omitempty"` 220} 221 222type FinanceInstitutionInfo struct { 223 FinanceType *FinanceType `json:"finance_type,omitempty"` 224 FinanceLicensePics []string `json:"finance_license_pics,omitempty"` 225} 226 227type IdHolderType string 228 229func (e IdHolderType) Ptr() *IdHolderType { 230 return &e 231} 232 233const ( 234 IDHOLDERTYPE_LEGAL IdHolderType = "LEGAL" 235 IDHOLDERTYPE_SUPER IdHolderType = "SUPER" 236) 237 238type IdentificationType string 239 240func (e IdentificationType) Ptr() *IdentificationType { 241 return &e 242} 243 244const ( 245 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_MAINLAND_IDCARD IdentificationType = "IDENTIFICATION_TYPE_MAINLAND_IDCARD" 246 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_OVERSEA_PASSPORT IdentificationType = "IDENTIFICATION_TYPE_OVERSEA_PASSPORT" 247 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_HONGKONG IdentificationType = "IDENTIFICATION_TYPE_HONGKONG" 248 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_MACAO IdentificationType = "IDENTIFICATION_TYPE_MACAO" 249 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_TAIWAN IdentificationType = "IDENTIFICATION_TYPE_TAIWAN" 250 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_FOREIGN_RESIDENT IdentificationType = "IDENTIFICATION_TYPE_FOREIGN_RESIDENT" 251 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT IdentificationType = "IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT" 252 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_TAIWAN_RESIDENT IdentificationType = "IDENTIFICATION_TYPE_TAIWAN_RESIDENT" 253) 254 255type AccountHostingIdCardInfo struct { 256 IdCardCopy *string `json:"id_card_copy,omitempty"` 257 IdCardNational *string `json:"id_card_national,omitempty"` 258 IdCardName *string `json:"id_card_name,omitempty"` 259 IdCardNumber *string `json:"id_card_number,omitempty"` 260 IdCardValidTimeBegin *string `json:"id_card_valid_time_begin,omitempty"` 261 IdCardValidTime *string `json:"id_card_valid_time,omitempty"` 262} 263 264type AccountHostingIdDocInfo struct { 265 IdDocCopy *string `json:"id_doc_copy,omitempty"` 266 IdDocCopyBack *string `json:"id_doc_copy_back,omitempty"` 267 IdDocName *string `json:"id_doc_name,omitempty"` 268 IdDocNumber *string `json:"id_doc_number,omitempty"` 269 DocPeriodBegin *string `json:"doc_period_begin,omitempty"` 270 DocPeriodEnd *string `json:"doc_period_end,omitempty"` 271} 272 273type UboInfo struct { 274 UboIdDocType *IdentificationType `json:"ubo_id_doc_type,omitempty"` 275 UboIdDocCopy *string `json:"ubo_id_doc_copy,omitempty"` 276 UboIdDocCopyBack *string `json:"ubo_id_doc_copy_back,omitempty"` 277 UboIdDocName *string `json:"ubo_id_doc_name,omitempty"` 278 UboIdDocNumber *string `json:"ubo_id_doc_number,omitempty"` 279 UboIdDocAddress *string `json:"ubo_id_doc_address,omitempty"` 280 UboIdDocPeriodBegin *string `json:"ubo_id_doc_period_begin,omitempty"` 281 UboIdDocPeriodEnd *string `json:"ubo_id_doc_period_end,omitempty"` 282} 283 284type AccountHostingAccountInfo struct { 285 BankAccountType *string `json:"bank_account_type,omitempty"` 286 AccountBank *string `json:"account_bank,omitempty"` 287 AccountName *string `json:"account_name,omitempty"` 288 BankBranchId *string `json:"bank_branch_id,omitempty"` 289 BankName *string `json:"bank_name,omitempty"` 290 AccountNumber *string `json:"account_number,omitempty"` 291} 292 293type AccountHostingContactInfo struct { 294 ContactType *string `json:"contact_type,omitempty"` 295 ContactName *string `json:"contact_name,omitempty"` 296 ContactIdDocType *IdentificationType `json:"contact_id_doc_type,omitempty"` 297 ContactIdCardNumber *string `json:"contact_id_card_number,omitempty"` 298 ContactIdDocCopy *string `json:"contact_id_doc_copy,omitempty"` 299 ContactIdDocCopyBack *string `json:"contact_id_doc_copy_back,omitempty"` 300 ContactIdDocPeriodBegin *string `json:"contact_id_doc_period_begin,omitempty"` 301 ContactIdDocPeriodEnd *string `json:"contact_id_doc_period_end,omitempty"` 302 MobilePhone *string `json:"mobile_phone,omitempty"` 303} 304 305type SalesSceneInfo struct { 306 StoreName *string `json:"store_name,omitempty"` 307 StoreUrl *string `json:"store_url,omitempty"` 308 StoreQrCode *string `json:"store_qr_code,omitempty"` 309 MiniProgramSubAppid *string `json:"mini_program_sub_appid,omitempty"` 310} 311 312type SettlementInfo struct { 313 SettlementId *int64 `json:"settlement_id,omitempty"` 314 QualificationType *string `json:"qualification_type,omitempty"` 315} 316 317type CertificateType string 318 319func (e CertificateType) Ptr() *CertificateType { 320 return &e 321} 322 323const ( 324 CERTIFICATETYPE_CERTIFICATE_TYPE_2388 CertificateType = "CERTIFICATE_TYPE_2388" 325 CERTIFICATETYPE_CERTIFICATE_TYPE_2389 CertificateType = "CERTIFICATE_TYPE_2389" 326 CERTIFICATETYPE_CERTIFICATE_TYPE_2394 CertificateType = "CERTIFICATE_TYPE_2394" 327 CERTIFICATETYPE_CERTIFICATE_TYPE_2395 CertificateType = "CERTIFICATE_TYPE_2395" 328 CERTIFICATETYPE_CERTIFICATE_TYPE_2396 CertificateType = "CERTIFICATE_TYPE_2396" 329 CERTIFICATETYPE_CERTIFICATE_TYPE_2399 CertificateType = "CERTIFICATE_TYPE_2399" 330 CERTIFICATETYPE_CERTIFICATE_TYPE_2400 CertificateType = "CERTIFICATE_TYPE_2400" 331 CERTIFICATETYPE_CERTIFICATE_TYPE_2520 CertificateType = "CERTIFICATE_TYPE_2520" 332 CERTIFICATETYPE_CERTIFICATE_TYPE_2521 CertificateType = "CERTIFICATE_TYPE_2521" 333 CERTIFICATETYPE_CERTIFICATE_TYPE_2522 CertificateType = "CERTIFICATE_TYPE_2522" 334) 335 336type FinanceType string 337 338func (e FinanceType) Ptr() *FinanceType { 339 return &e 340} 341 342const ( 343 FINANCETYPE_BANK_AGENT FinanceType = "BANK_AGENT" 344 FINANCETYPE_PAYMENT_AGENT FinanceType = "PAYMENT_AGENT" 345 FINANCETYPE_INSURANCE FinanceType = "INSURANCE" 346 FINANCETYPE_TRADE_AND_SETTLE FinanceType = "TRADE_AND_SETTLE" 347 FINANCETYPE_OTHER FinanceType = "OTHER" 348) 349
应答参数
200 OK
applyment_id 必填 integer
【微信支付申请单号】 微信支付分配的申请单号 。
out_request_no 必填 string
【业务申请编号】 服务商自定义的商户唯一编号。每个编号对应一个申请单,每个申请单审核通过后会生成一个微信支付商户号。
应答示例
200 OK
1{ 2 "applyment_id" : 2000002124775691, 3 "out_request_no" : "APPLYMENT_00000000001" 4} 5
错误码
公共错误码