
1package main
2
3import (
4 "bytes"
5 "demo/wxpay_utility"
6 "encoding/json"
7 "fmt"
8 "net/http"
9 "net/url"
10)
11
12func main() {
13
14 config, err := wxpay_utility.CreateMchConfig(
15 "19xxxxxxxx",
16 "1DDE55AD98Exxxxxxxxxx",
17 "/path/to/apiclient_key.pem",
18 "PUB_KEY_ID_xxxxxxxxxxxxx",
19 "/path/to/wxp_pub.pem",
20 )
21 if err != nil {
22 fmt.Println(err)
23 return
24 }
25
26 request := &SubmitReq{
27 BusinessCode: wxpay_utility.String("1900013511_10000"),
28 ContactInfo: &ContactInfo{
29 ContactType: IDHOLDERTYPE_LEGAL.Ptr(),
30 ContactName: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="),
31 ContactIdDocType: IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_IDCARD.Ptr(),
32 ContactIdNumber: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="),
33 ContactIdDocCopy: wxpay_utility.String("jTpGmxUXqRTvDujqhThn4ReFxikqJ5YW6zFQ"),
34 ContactIdDocCopyBack: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"),
35 ContactPeriodBegin: wxpay_utility.String("2019-06-06"),
36 ContactPeriodEnd: wxpay_utility.String("2026-06-06"),
37 BusinessAuthorizationLetter: wxpay_utility.String("47ZC6GC-vnrbEny_Ie_An5-tCpqxucuxi-vByf3Gjm7KEIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"),
38 Openid: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg== 字段加密: 使用APIv3定义的方式加密"),
39 MobilePhone: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="),
40 ContactEmail: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="),
41 },
42 SubjectInfo: &SubjectInfo{
43 SubjectType: SUBJECTTYPE_SUBJECT_TYPE_ENTERPRISE.Ptr(),
44 FinanceInstitution: wxpay_utility.Bool(true),
45 BusinessLicenseInfo: &BusinessLicense{
46 LicenseCopy: wxpay_utility.String("47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"),
47 LicenseNumber: wxpay_utility.String("123456789012345678"),
48 MerchantName: wxpay_utility.String("腾讯科技有限公司"),
49 LegalPerson: wxpay_utility.String("张三"),
50 LicenseAddress: wxpay_utility.String("广东省深圳市南山区xx路xx号"),
51 PeriodBegin: wxpay_utility.String("2019-08-01"),
52 PeriodEnd: wxpay_utility.String("2029-08-01"),
53 },
54 CertificateInfo: &CertificateInfo{
55 CertCopy: wxpay_utility.String("0P3ng6KTIW4-Q_l2FjKLZuhHjBWoMAjmVtCz7ScmhEIThCaV-4BBgVwtNkCHO_XXqK5dE5YdOmFJBZR9FwczhJehHhAZN6BKXQPcs-VvdSo"),
56 CertType: CERTIFICATETYPE_CERTIFICATE_TYPE_2388.Ptr(),
57 CertNumber: wxpay_utility.String("111111111111"),
58 MerchantName: wxpay_utility.String("xx公益团体"),
59 CompanyAddress: wxpay_utility.String("广东省深圳市南山区xx路xx号"),
60 LegalPerson: wxpay_utility.String("李四"),
61 PeriodBegin: wxpay_utility.String("2019-08-01"),
62 PeriodEnd: wxpay_utility.String("2019-08-01"),
63 },
64 CertificateLetterCopy: wxpay_utility.String("47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"),
65 FinanceInstitutionInfo: &FinanceInstitutionInfo{
66 FinanceType: FINANCETYPE_BANK_AGENT.Ptr(),
67 FinanceLicensePics: []string{"0P3ng6KTIW4-Q_l2FjmFJBZR9FwczhJehHhAZN6BKXQPcs-VvdSo"},
68 },
69 IdentityInfo: &IdentityInfo{
70 IdHolderType: IDHOLDERTYPE_LEGAL.Ptr(),
71 IdDocType: IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_IDCARD.Ptr(),
72 AuthorizeLetterCopy: wxpay_utility.String("47ZC6GC-vnrbEny_Ie_An5-tCpqxucuxi-vByf3Gjm7KEIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"),
73 IdCardInfo: &IdCardInfo{
74 IdCardCopy: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ"),
75 IdCardNational: wxpay_utility.String("47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"),
76 IdCardName: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="),
77 IdCardNumber: wxpay_utility.String("AOZdYGISxo4y44/UgZ69bdu9X+tfMUJ9dl+LetjM45/zMbrYu+wWZ8gn4CTdo+D/m9MrPg+V4sm73oxqdQu/hj7aWyDl4GQtPXVdaztB9jVbVZh3QFzV+BEmytMNQp9dt1uWJktlfdDdLR3AMWyMB377xd+m9bSr/ioDTzagEcGe+vLYiKrzcroQv3OR0p3ppFYoQ3IfYeU/04S4t9rNFL+kyblK2FCCqQ11NdbbHoCrJc7NV4oASq6ZFonjTtgjjgKsadIKHXtb3JZKGZjduGdtkRJJp0/0eow96uY1Pk7Rq79Jtt7+I8juwEc4P4TG5xzchG/5IL9DBd+Z0zZXkw=="),
78 IdCardAddress: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="),
79 CardPeriodBegin: wxpay_utility.String("2026-06-06"),
80 CardPeriodEnd: wxpay_utility.String("2026-06-06"),
81 },
82 IdDocInfo: &IdDocInfo{
83 IdDocCopy: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ"),
84 IdDocCopyBack: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"),
85 IdDocName: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="),
86 IdDocNumber: wxpay_utility.String("AOZdYGISxo4y44/UgZ69bdu9X+tfMUJ9dl+LetjM45/zMbrYu+wWZ8gn4CTdo+D/m9MrPg+V4sm73oxqdQu/hj7aWyDl4GQtPXVdaztB9jVbVZh3QFzV+BEmytMNQp9dt1uWJktlfdDdLR3AMWyMB377xd+m9bSr/ioDTzagEcGe+vLYiKrzcroQv3OR0p3ppFYoQ3IfYeU/04S4t9rNFL+kyblK2FCCqQ11NdbbHoCrJc7NV4oASq6ZFonjTtgjjgKsadIKHXtb3JZKGZjduGdtkRJJp0/0eow96uY1Pk7Rq79Jtt7+I8juwEc4P4TG5xzchG/5IL9DBd+Z0zZXkw=="),
87 IdDocAddress: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="),
88 DocPeriodBegin: wxpay_utility.String("2019-06-06"),
89 DocPeriodEnd: wxpay_utility.String("2026-06-06"),
90 },
91 Owner: wxpay_utility.Bool(true),
92 },
93 UboInfoList: []UboInfoList{UboInfoList{
94 UboIdDocType: IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_IDCARD.Ptr(),
95 UboIdDocCopy: wxpay_utility.String("jTpGmxUXqRTvDujqhThn4ReFxikqJ5YW6zFQ"),
96 UboIdDocCopyBack: wxpay_utility.String("jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ"),
97 UboIdDocName: wxpay_utility.String("AOZdYGISxo4y44/Ug4P4TG5xzchG/5IL9DBd+Z0zZXkw=="),
98 UboIdDocNumber: wxpay_utility.String("AOZdYGISxo4y44/Ug4P4TG5xzchG/5IL9DBd+Z0zZXkw=="),
99 UboIdDocAddress: wxpay_utility.String("pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="),
100 UboPeriodBegin: wxpay_utility.String("2019-06-06"),
101 UboPeriodEnd: wxpay_utility.String("2026-06-06"),
102 }},
103 },
104 BusinessInfo: &BusinessInfo{
105 MerchantShortname: wxpay_utility.String("张三餐饮店"),
106 ServicePhone: wxpay_utility.String("0758XXXXX"),
107 SalesInfo: &SalesInfo{
108 SalesScenesType: []SalesScenesType{SALESSCENESTYPE_SALES_SCENES_STORE},
109 BizStoreInfo: &StoreInfo{
110 BizStoreName: wxpay_utility.String("大郎烧饼"),
111 BizAddressCode: wxpay_utility.String("440305"),
112 BizStoreAddress: wxpay_utility.String("南山区xx大厦x层xxxx室"),
113 StoreEntrancePic: []string{"0P3ng6KTIW4-Q_l2FjKLZuhHjBWoMAjmVtCz7ScmhEIThCaV-4BBgVwtNkCHO_XXqK5dE5YdOmFJBZR9FwczhJehHhAZN6BKXQPcs-VvdSo"},
114 IndoorPic: []string{"0P3ng6KTIW4-Q_l2FjKLZuhHjBWoMAjmVtCz7ScmhEIThCaV-4BBgVwtNkCHO_XXqK5dE5YdOmFJBZR9FwczhJehHhAZN6BKXQPcs-VvdSo"},
115 BizSubAppid: wxpay_utility.String("wx1234567890123456"),
116 },
117 MpInfo: &MpInfo{
118 MpAppid: wxpay_utility.String("wx1234567890123456"),
119 MpSubAppid: wxpay_utility.String("wx1234567890123456"),
120 MpPics: []string{"example_MpPics"},
121 },
122 MiniProgramInfo: &MiniProgramInfo{
123 MiniProgramAppid: wxpay_utility.String("wx1234567890123456"),
124 MiniProgramSubAppid: wxpay_utility.String("wx1234567890123456"),
125 MiniProgramPics: []string{"example_MiniProgramPics"},
126 },
127 AppInfo: &AppInfo{
128 AppAppid: wxpay_utility.String("wx1234567890123456"),
129 AppSubAppid: wxpay_utility.String("wx1234567890123456"),
130 AppPics: []string{"example_AppPics"},
131 },
132 WebInfo: &WebInfo{
133 Domain: wxpay_utility.String("http://www.qq.com"),
134 WebAuthorisation: wxpay_utility.String("47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"),
135 WebAppid: wxpay_utility.String("wx1234567890123456"),
136 },
137 WeworkInfo: &WeworkInfo{
138 SubCorpId: wxpay_utility.String("wx1234567890123456"),
139 WeworkPics: []string{"example_WeworkPics"},
140 },
141 },
142 },
143 SettlementInfo: &SettlementInfo{
144 SettlementId: wxpay_utility.String("719"),
145 QualificationType: wxpay_utility.String("餐饮"),
146 Qualifications: []string{"example_Qualifications"},
147 ActivitiesId: wxpay_utility.String("716"),
148 ActivitiesRate: wxpay_utility.String("0.6"),
149 ActivitiesAdditions: []string{"example_ActivitiesAdditions"},
150 DebitActivitiesRate: wxpay_utility.String("0.54"),
151 CreditActivitiesRate: wxpay_utility.String("0.54"),
152 },
153 BankAccountInfo: &BankAccountInfo{
154 BankAccountType: BANKACCOUNTTYPE_BANK_ACCOUNT_TYPE_CORPORATE.Ptr(),
155 AccountName: wxpay_utility.String("AOZdYGISxo4y44/UgZ69bdu9X+tfMUJ9dl+LetjM45/zMbrYu+wWZ8gn4CTdo+D/m9MrPg+V4sm73oxqdQu/hj7aWyDl4GQtPXVdaztB9jVbVZh3QFzV+BEmytMNQp9dt1uWJktlfdDdLR3AMWyMB377xd+m9bSr/ioDTzagEcGe+vLYiKrzcroQv3OR0p3ppFYoQ3IfYeU/04S4t9rNFL+kyblK2FCCqQ11NdbbHoCrJc7NV4oASq6ZFonjTtgjjgKsadIKHXtb3JZKGZjduGdtkRJJp0/0eow96uY1Pk7Rq79Jtt7+I8juwEc4P4TG5xzchG/5IL9DBd+Z0zZXkw=="),
156 AccountBank: wxpay_utility.String("工商银行"),
157 BankAddressCode: wxpay_utility.String("110000"),
158 BankBranchId: wxpay_utility.String("402713354941"),
159 BankName: wxpay_utility.String("施秉县农村信用合作联社城关信用社"),
160 AccountNumber: wxpay_utility.String("d+xT+MQCvrLHUVDWv/8MR/dB7TkXM2YYZlokmXzFsWs35NXUot7C0NcxIrUF5FnxqCJHkNgKtxa6RxEYyba1+VBRLnqKG2fSy/Y5qDN08Ej9zHCwJjq52Wg1VG8MRugli9YMI1fI83KGBxhuXyemgS/hqFKsfYGiOkJqjTUpgY5VqjtL2N4l4z11T0ECB/aSyVXUysOFGLVfSrUxMPZy6jWWYGvT1+4P633f+R+ki1gT4WF/2KxZOYmli385ZgVhcR30mr4/G3HBcxi13zp7FnEeOsLlvBmI1PHN4C7Rsu3WL8sPndjXTd75kPkyjqnoMRrEEaYQE8ZRGYoeorwC+w=="),
161 },
162 AdditionInfo: &AdditionInfo{
163 LegalPersonCommitment: wxpay_utility.String("47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"),
164 LegalPersonVideo: wxpay_utility.String("47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4"),
165 BusinessAdditionPics: []string{"example_BusinessAdditionPics"},
166 BusinessAdditionMsg: wxpay_utility.String("特殊情况,说明原因"),
167 },
168 }
169
170 response, err := Submit(config, request)
171 if err != nil {
172 fmt.Printf("请求失败: %+v\n", err)
173
174 return
175 }
176
177
178 fmt.Printf("请求成功: %+v\n", response)
179}
180
181func Submit(config *wxpay_utility.MchConfig, request *SubmitReq) (response *SubmitResp, err error) {
182 const (
183 host = "https://api.mch.weixin.qq.com"
184 method = "POST"
185 path = "/v3/applyment4sub/applyment/"
186 )
187
188 reqUrl, err := url.Parse(fmt.Sprintf("%s%s", host, path))
189 if err != nil {
190 return nil, err
191 }
192 reqBody, err := json.Marshal(request)
193 if err != nil {
194 return nil, err
195 }
196 httpRequest, err := http.NewRequest(method, reqUrl.String(), bytes.NewReader(reqBody))
197 if err != nil {
198 return nil, err
199 }
200 httpRequest.Header.Set("Accept", "application/json")
201 httpRequest.Header.Set("Wechatpay-Serial", config.WechatPayPublicKeyId())
202 httpRequest.Header.Set("Content-Type", "application/json")
203 authorization, err := wxpay_utility.BuildAuthorization(config.MchId(), config.CertificateSerialNo(), config.PrivateKey(), method, reqUrl.RequestURI(), reqBody)
204 if err != nil {
205 return nil, err
206 }
207 httpRequest.Header.Set("Authorization", authorization)
208
209 client := &http.Client{}
210 httpResponse, err := client.Do(httpRequest)
211 if err != nil {
212 return nil, err
213 }
214 respBody, err := wxpay_utility.ExtractResponseBody(httpResponse)
215 if err != nil {
216 return nil, err
217 }
218 if httpResponse.StatusCode >= 200 && httpResponse.StatusCode < 300 {
219
220 err = wxpay_utility.ValidateResponse(
221 config.WechatPayPublicKeyId(),
222 config.WechatPayPublicKey(),
223 &httpResponse.Header,
224 respBody,
225 )
226 if err != nil {
227 return nil, err
228 }
229 response := &SubmitResp{}
230 if err := json.Unmarshal(respBody, response); err != nil {
231 return nil, err
232 }
233
234 return response, nil
235 } else {
236 return nil, wxpay_utility.NewApiException(
237 httpResponse.StatusCode,
238 httpResponse.Header,
239 respBody,
240 )
241 }
242}
243
244type SubmitReq struct {
245 BusinessCode *string `json:"business_code,omitempty"`
246 ContactInfo *ContactInfo `json:"contact_info,omitempty"`
247 SubjectInfo *SubjectInfo `json:"subject_info,omitempty"`
248 BusinessInfo *BusinessInfo `json:"business_info,omitempty"`
249 SettlementInfo *SettlementInfo `json:"settlement_info,omitempty"`
250 BankAccountInfo *BankAccountInfo `json:"bank_account_info,omitempty"`
251 AdditionInfo *AdditionInfo `json:"addition_info,omitempty"`
252}
253
254type SubmitResp struct {
255 ApplymentId *int64 `json:"applyment_id,omitempty"`
256}
257
258type ContactInfo struct {
259 ContactType *IdHolderType `json:"contact_type,omitempty"`
260 ContactName *string `json:"contact_name,omitempty"`
261 ContactIdDocType *IdentificationType `json:"contact_id_doc_type,omitempty"`
262 ContactIdNumber *string `json:"contact_id_number,omitempty"`
263 ContactIdDocCopy *string `json:"contact_id_doc_copy,omitempty"`
264 ContactIdDocCopyBack *string `json:"contact_id_doc_copy_back,omitempty"`
265 ContactPeriodBegin *string `json:"contact_period_begin,omitempty"`
266 ContactPeriodEnd *string `json:"contact_period_end,omitempty"`
267 BusinessAuthorizationLetter *string `json:"business_authorization_letter,omitempty"`
268 Openid *string `json:"openid,omitempty"`
269 MobilePhone *string `json:"mobile_phone,omitempty"`
270 ContactEmail *string `json:"contact_email,omitempty"`
271}
272
273type SubjectInfo struct {
274 SubjectType *SubjectType `json:"subject_type,omitempty"`
275 FinanceInstitution *bool `json:"finance_institution,omitempty"`
276 BusinessLicenseInfo *BusinessLicense `json:"business_license_info,omitempty"`
277 CertificateInfo *CertificateInfo `json:"certificate_info,omitempty"`
278 CertificateLetterCopy *string `json:"certificate_letter_copy,omitempty"`
279 FinanceInstitutionInfo *FinanceInstitutionInfo `json:"finance_institution_info,omitempty"`
280 IdentityInfo *IdentityInfo `json:"identity_info,omitempty"`
281 UboInfoList []UboInfoList `json:"ubo_info_list,omitempty"`
282}
283
284type BusinessInfo struct {
285 MerchantShortname *string `json:"merchant_shortname,omitempty"`
286 ServicePhone *string `json:"service_phone,omitempty"`
287 SalesInfo *SalesInfo `json:"sales_info,omitempty"`
288}
289
290type SettlementInfo struct {
291 SettlementId *string `json:"settlement_id,omitempty"`
292 QualificationType *string `json:"qualification_type,omitempty"`
293 Qualifications []string `json:"qualifications,omitempty"`
294 ActivitiesId *string `json:"activities_id,omitempty"`
295 ActivitiesRate *string `json:"activities_rate,omitempty"`
296 ActivitiesAdditions []string `json:"activities_additions,omitempty"`
297 DebitActivitiesRate *string `json:"debit_activities_rate,omitempty"`
298 CreditActivitiesRate *string `json:"credit_activities_rate,omitempty"`
299}
300
301type BankAccountInfo struct {
302 BankAccountType *BankAccountType `json:"bank_account_type,omitempty"`
303 AccountName *string `json:"account_name,omitempty"`
304 AccountBank *string `json:"account_bank,omitempty"`
305 BankAddressCode *string `json:"bank_address_code,omitempty"`
306 BankBranchId *string `json:"bank_branch_id,omitempty"`
307 BankName *string `json:"bank_name,omitempty"`
308 AccountNumber *string `json:"account_number,omitempty"`
309}
310
311type AdditionInfo struct {
312 LegalPersonCommitment *string `json:"legal_person_commitment,omitempty"`
313 LegalPersonVideo *string `json:"legal_person_video,omitempty"`
314 BusinessAdditionPics []string `json:"business_addition_pics,omitempty"`
315 BusinessAdditionMsg *string `json:"business_addition_msg,omitempty"`
316}
317
318type IdHolderType string
319
320func (e IdHolderType) Ptr() *IdHolderType {
321 return &e
322}
323
324const (
325 IDHOLDERTYPE_LEGAL IdHolderType = "LEGAL"
326 IDHOLDERTYPE_SUPER IdHolderType = "SUPER"
327)
328
329type IdentificationType string
330
331func (e IdentificationType) Ptr() *IdentificationType {
332 return &e
333}
334
335const (
336 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_IDCARD IdentificationType = "IDENTIFICATION_TYPE_IDCARD"
337 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_OVERSEA_PASSPORT IdentificationType = "IDENTIFICATION_TYPE_OVERSEA_PASSPORT"
338 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_HONGKONG_PASSPORT IdentificationType = "IDENTIFICATION_TYPE_HONGKONG_PASSPORT"
339 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_MACAO_PASSPORT IdentificationType = "IDENTIFICATION_TYPE_MACAO_PASSPORT"
340 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_TAIWAN_PASSPORT IdentificationType = "IDENTIFICATION_TYPE_TAIWAN_PASSPORT"
341 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_FOREIGN_RESIDENT IdentificationType = "IDENTIFICATION_TYPE_FOREIGN_RESIDENT"
342 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT IdentificationType = "IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT"
343 IDENTIFICATIONTYPE_IDENTIFICATION_TYPE_TAIWAN_RESIDENT IdentificationType = "IDENTIFICATION_TYPE_TAIWAN_RESIDENT"
344)
345
346type SubjectType string
347
348func (e SubjectType) Ptr() *SubjectType {
349 return &e
350}
351
352const (
353 SUBJECTTYPE_SUBJECT_TYPE_ENTERPRISE SubjectType = "SUBJECT_TYPE_ENTERPRISE"
354 SUBJECTTYPE_SUBJECT_TYPE_INSTITUTIONS SubjectType = "SUBJECT_TYPE_INSTITUTIONS"
355 SUBJECTTYPE_SUBJECT_TYPE_INDIVIDUAL SubjectType = "SUBJECT_TYPE_INDIVIDUAL"
356 SUBJECTTYPE_SUBJECT_TYPE_OTHERS SubjectType = "SUBJECT_TYPE_OTHERS"
357 SUBJECTTYPE_SUBJECT_TYPE_GOVERNMENT SubjectType = "SUBJECT_TYPE_GOVERNMENT"
358)
359
360type BusinessLicense struct {
361 LicenseCopy *string `json:"license_copy,omitempty"`
362 LicenseNumber *string `json:"license_number,omitempty"`
363 MerchantName *string `json:"merchant_name,omitempty"`
364 LegalPerson *string `json:"legal_person,omitempty"`
365 LicenseAddress *string `json:"license_address,omitempty"`
366 PeriodBegin *string `json:"period_begin,omitempty"`
367 PeriodEnd *string `json:"period_end,omitempty"`
368}
369
370type CertificateInfo struct {
371 CertCopy *string `json:"cert_copy,omitempty"`
372 CertType *CertificateType `json:"cert_type,omitempty"`
373 CertNumber *string `json:"cert_number,omitempty"`
374 MerchantName *string `json:"merchant_name,omitempty"`
375 CompanyAddress *string `json:"company_address,omitempty"`
376 LegalPerson *string `json:"legal_person,omitempty"`
377 PeriodBegin *string `json:"period_begin,omitempty"`
378 PeriodEnd *string `json:"period_end,omitempty"`
379}
380
381type FinanceInstitutionInfo struct {
382 FinanceType *FinanceType `json:"finance_type,omitempty"`
383 FinanceLicensePics []string `json:"finance_license_pics,omitempty"`
384}
385
386type IdentityInfo struct {
387 IdHolderType *IdHolderType `json:"id_holder_type,omitempty"`
388 IdDocType *IdentificationType `json:"id_doc_type,omitempty"`
389 AuthorizeLetterCopy *string `json:"authorize_letter_copy,omitempty"`
390 IdCardInfo *IdCardInfo `json:"id_card_info,omitempty"`
391 IdDocInfo *IdDocInfo `json:"id_doc_info,omitempty"`
392 Owner *bool `json:"owner,omitempty"`
393}
394
395type UboInfoList struct {
396 UboIdDocType *IdentificationType `json:"ubo_id_doc_type,omitempty"`
397 UboIdDocCopy *string `json:"ubo_id_doc_copy,omitempty"`
398 UboIdDocCopyBack *string `json:"ubo_id_doc_copy_back,omitempty"`
399 UboIdDocName *string `json:"ubo_id_doc_name,omitempty"`
400 UboIdDocNumber *string `json:"ubo_id_doc_number,omitempty"`
401 UboIdDocAddress *string `json:"ubo_id_doc_address,omitempty"`
402 UboPeriodBegin *string `json:"ubo_period_begin,omitempty"`
403 UboPeriodEnd *string `json:"ubo_period_end,omitempty"`
404}
405
406type SalesInfo struct {
407 SalesScenesType []SalesScenesType `json:"sales_scenes_type,omitempty"`
408 BizStoreInfo *StoreInfo `json:"biz_store_info,omitempty"`
409 MpInfo *MpInfo `json:"mp_info,omitempty"`
410 MiniProgramInfo *MiniProgramInfo `json:"mini_program_info,omitempty"`
411 AppInfo *AppInfo `json:"app_info,omitempty"`
412 WebInfo *WebInfo `json:"web_info,omitempty"`
413 WeworkInfo *WeworkInfo `json:"wework_info,omitempty"`
414}
415
416type BankAccountType string
417
418func (e BankAccountType) Ptr() *BankAccountType {
419 return &e
420}
421
422const (
423 BANKACCOUNTTYPE_BANK_ACCOUNT_TYPE_CORPORATE BankAccountType = "BANK_ACCOUNT_TYPE_CORPORATE"
424 BANKACCOUNTTYPE_BANK_ACCOUNT_TYPE_PERSONAL BankAccountType = "BANK_ACCOUNT_TYPE_PERSONAL"
425)
426
427type CertificateType string
428
429func (e CertificateType) Ptr() *CertificateType {
430 return &e
431}
432
433const (
434 CERTIFICATETYPE_CERTIFICATE_TYPE_2388 CertificateType = "CERTIFICATE_TYPE_2388"
435 CERTIFICATETYPE_CERTIFICATE_TYPE_2389 CertificateType = "CERTIFICATE_TYPE_2389"
436 CERTIFICATETYPE_CERTIFICATE_TYPE_2394 CertificateType = "CERTIFICATE_TYPE_2394"
437 CERTIFICATETYPE_CERTIFICATE_TYPE_2395 CertificateType = "CERTIFICATE_TYPE_2395"
438 CERTIFICATETYPE_CERTIFICATE_TYPE_2396 CertificateType = "CERTIFICATE_TYPE_2396"
439 CERTIFICATETYPE_CERTIFICATE_TYPE_2399 CertificateType = "CERTIFICATE_TYPE_2399"
440 CERTIFICATETYPE_CERTIFICATE_TYPE_2400 CertificateType = "CERTIFICATE_TYPE_2400"
441 CERTIFICATETYPE_CERTIFICATE_TYPE_2391 CertificateType = "CERTIFICATE_TYPE_2391"
442 CERTIFICATETYPE_CERTIFICATE_TYPE_2520 CertificateType = "CERTIFICATE_TYPE_2520"
443 CERTIFICATETYPE_CERTIFICATE_TYPE_2521 CertificateType = "CERTIFICATE_TYPE_2521"
444 CERTIFICATETYPE_CERTIFICATE_TYPE_2522 CertificateType = "CERTIFICATE_TYPE_2522"
445)
446
447type FinanceType string
448
449func (e FinanceType) Ptr() *FinanceType {
450 return &e
451}
452
453const (
454 FINANCETYPE_BANK_AGENT FinanceType = "BANK_AGENT"
455 FINANCETYPE_PAYMENT_AGENT FinanceType = "PAYMENT_AGENT"
456 FINANCETYPE_INSURANCE FinanceType = "INSURANCE"
457 FINANCETYPE_TRADE_AND_SETTLE FinanceType = "TRADE_AND_SETTLE"
458 FINANCETYPE_OTHER FinanceType = "OTHER"
459)
460
461type IdCardInfo struct {
462 IdCardCopy *string `json:"id_card_copy,omitempty"`
463 IdCardNational *string `json:"id_card_national,omitempty"`
464 IdCardName *string `json:"id_card_name,omitempty"`
465 IdCardNumber *string `json:"id_card_number,omitempty"`
466 IdCardAddress *string `json:"id_card_address,omitempty"`
467 CardPeriodBegin *string `json:"card_period_begin,omitempty"`
468 CardPeriodEnd *string `json:"card_period_end,omitempty"`
469}
470
471type IdDocInfo struct {
472 IdDocCopy *string `json:"id_doc_copy,omitempty"`
473 IdDocCopyBack *string `json:"id_doc_copy_back,omitempty"`
474 IdDocName *string `json:"id_doc_name,omitempty"`
475 IdDocNumber *string `json:"id_doc_number,omitempty"`
476 IdDocAddress *string `json:"id_doc_address,omitempty"`
477 DocPeriodBegin *string `json:"doc_period_begin,omitempty"`
478 DocPeriodEnd *string `json:"doc_period_end,omitempty"`
479}
480
481type SalesScenesType string
482
483func (e SalesScenesType) Ptr() *SalesScenesType {
484 return &e
485}
486
487const (
488 SALESSCENESTYPE_SALES_SCENES_STORE SalesScenesType = "SALES_SCENES_STORE"
489 SALESSCENESTYPE_SALES_SCENES_MP SalesScenesType = "SALES_SCENES_MP"
490 SALESSCENESTYPE_SALES_SCENES_MINI_PROGRAM SalesScenesType = "SALES_SCENES_MINI_PROGRAM"
491 SALESSCENESTYPE_SALES_SCENES_WEB SalesScenesType = "SALES_SCENES_WEB"
492 SALESSCENESTYPE_SALES_SCENES_APP SalesScenesType = "SALES_SCENES_APP"
493 SALESSCENESTYPE_SALES_SCENES_WEWORK SalesScenesType = "SALES_SCENES_WEWORK"
494)
495
496type StoreInfo struct {
497 BizStoreName *string `json:"biz_store_name,omitempty"`
498 BizAddressCode *string `json:"biz_address_code,omitempty"`
499 BizStoreAddress *string `json:"biz_store_address,omitempty"`
500 StoreEntrancePic []string `json:"store_entrance_pic,omitempty"`
501 IndoorPic []string `json:"indoor_pic,omitempty"`
502 BizSubAppid *string `json:"biz_sub_appid,omitempty"`
503}
504
505type MpInfo struct {
506 MpAppid *string `json:"mp_appid,omitempty"`
507 MpSubAppid *string `json:"mp_sub_appid,omitempty"`
508 MpPics []string `json:"mp_pics,omitempty"`
509}
510
511type MiniProgramInfo struct {
512 MiniProgramAppid *string `json:"mini_program_appid,omitempty"`
513 MiniProgramSubAppid *string `json:"mini_program_sub_appid,omitempty"`
514 MiniProgramPics []string `json:"mini_program_pics,omitempty"`
515}
516
517type AppInfo struct {
518 AppAppid *string `json:"app_appid,omitempty"`
519 AppSubAppid *string `json:"app_sub_appid,omitempty"`
520 AppPics []string `json:"app_pics,omitempty"`
521}
522
523type WebInfo struct {
524 Domain *string `json:"domain,omitempty"`
525 WebAuthorisation *string `json:"web_authorisation,omitempty"`
526 WebAppid *string `json:"web_appid,omitempty"`
527}
528
529type WeworkInfo struct {
530 SubCorpId *string `json:"sub_corp_id,omitempty"`
531 WeworkPics []string `json:"wework_pics,omitempty"`
532}
533