@vobs/payment 0.3.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +182 -0
- package/dist/alipay/client.cjs +112 -0
- package/dist/alipay/client.cjs.map +1 -0
- package/dist/alipay/client.d.cts +36 -0
- package/dist/alipay/client.d.ts +36 -0
- package/dist/alipay/client.js +110 -0
- package/dist/alipay/client.js.map +1 -0
- package/dist/alipay/config.cjs +67 -0
- package/dist/alipay/config.cjs.map +1 -0
- package/dist/alipay/config.d.cts +30 -0
- package/dist/alipay/config.d.ts +30 -0
- package/dist/alipay/config.js +65 -0
- package/dist/alipay/config.js.map +1 -0
- package/dist/alipay/index.cjs +592 -0
- package/dist/alipay/index.cjs.map +1 -0
- package/dist/alipay/index.d.cts +12 -0
- package/dist/alipay/index.d.ts +12 -0
- package/dist/alipay/index.js +580 -0
- package/dist/alipay/index.js.map +1 -0
- package/dist/alipay/notify.cjs +70 -0
- package/dist/alipay/notify.cjs.map +1 -0
- package/dist/alipay/notify.d.cts +52 -0
- package/dist/alipay/notify.d.ts +52 -0
- package/dist/alipay/notify.js +68 -0
- package/dist/alipay/notify.js.map +1 -0
- package/dist/alipay/payment.cjs +49 -0
- package/dist/alipay/payment.cjs.map +1 -0
- package/dist/alipay/payment.d.cts +24 -0
- package/dist/alipay/payment.d.ts +24 -0
- package/dist/alipay/payment.js +47 -0
- package/dist/alipay/payment.js.map +1 -0
- package/dist/alipay/plugin.cjs +300 -0
- package/dist/alipay/plugin.cjs.map +1 -0
- package/dist/alipay/plugin.d.cts +43 -0
- package/dist/alipay/plugin.d.ts +43 -0
- package/dist/alipay/plugin.js +296 -0
- package/dist/alipay/plugin.js.map +1 -0
- package/dist/alipay/query.cjs +80 -0
- package/dist/alipay/query.cjs.map +1 -0
- package/dist/alipay/query.d.cts +26 -0
- package/dist/alipay/query.d.ts +26 -0
- package/dist/alipay/query.js +78 -0
- package/dist/alipay/query.js.map +1 -0
- package/dist/alipay/refund.cjs +104 -0
- package/dist/alipay/refund.cjs.map +1 -0
- package/dist/alipay/refund.d.cts +32 -0
- package/dist/alipay/refund.d.ts +32 -0
- package/dist/alipay/refund.js +102 -0
- package/dist/alipay/refund.js.map +1 -0
- package/dist/alipay/response.cjs +38 -0
- package/dist/alipay/response.cjs.map +1 -0
- package/dist/alipay/response.d.cts +19 -0
- package/dist/alipay/response.d.ts +19 -0
- package/dist/alipay/response.js +35 -0
- package/dist/alipay/response.js.map +1 -0
- package/dist/alipay/types.cjs +4 -0
- package/dist/alipay/types.cjs.map +1 -0
- package/dist/alipay/types.d.cts +242 -0
- package/dist/alipay/types.d.ts +242 -0
- package/dist/alipay/types.js +3 -0
- package/dist/alipay/types.js.map +1 -0
- package/dist/alipay/wap.cjs +50 -0
- package/dist/alipay/wap.cjs.map +1 -0
- package/dist/alipay/wap.d.cts +24 -0
- package/dist/alipay/wap.d.ts +24 -0
- package/dist/alipay/wap.js +48 -0
- package/dist/alipay/wap.js.map +1 -0
- package/dist/index-B1aUR7Vt.d.ts +49 -0
- package/dist/index-B8pzZxGq.d.cts +44 -0
- package/dist/index-BWnIrwRi.d.ts +44 -0
- package/dist/index-Dyrkl86r.d.cts +49 -0
- package/dist/index.cjs +1071 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +23 -0
- package/dist/index.d.ts +23 -37
- package/dist/index.js +1052 -37
- package/dist/index.js.map +1 -0
- package/dist/wechat/client.cjs +119 -0
- package/dist/wechat/client.cjs.map +1 -0
- package/dist/wechat/client.d.cts +39 -0
- package/dist/wechat/client.d.ts +39 -0
- package/dist/wechat/client.js +117 -0
- package/dist/wechat/client.js.map +1 -0
- package/dist/wechat/config.cjs +76 -0
- package/dist/wechat/config.cjs.map +1 -0
- package/dist/wechat/config.d.cts +29 -0
- package/dist/wechat/config.d.ts +29 -0
- package/dist/wechat/config.js +74 -0
- package/dist/wechat/config.js.map +1 -0
- package/dist/wechat/index.cjs +612 -0
- package/dist/wechat/index.cjs.map +1 -0
- package/dist/wechat/index.d.cts +10 -0
- package/dist/wechat/index.d.ts +10 -0
- package/dist/wechat/index.js +602 -0
- package/dist/wechat/index.js.map +1 -0
- package/dist/wechat/notify.cjs +73 -0
- package/dist/wechat/notify.cjs.map +1 -0
- package/dist/wechat/notify.d.cts +53 -0
- package/dist/wechat/notify.d.ts +53 -0
- package/dist/wechat/notify.js +71 -0
- package/dist/wechat/notify.js.map +1 -0
- package/dist/wechat/payment.cjs +186 -0
- package/dist/wechat/payment.cjs.map +1 -0
- package/dist/wechat/payment.d.cts +50 -0
- package/dist/wechat/payment.d.ts +50 -0
- package/dist/wechat/payment.js +184 -0
- package/dist/wechat/payment.js.map +1 -0
- package/dist/wechat/plugin.cjs +305 -0
- package/dist/wechat/plugin.cjs.map +1 -0
- package/dist/wechat/plugin.d.cts +40 -0
- package/dist/wechat/plugin.d.ts +40 -0
- package/dist/wechat/plugin.js +301 -0
- package/dist/wechat/plugin.js.map +1 -0
- package/dist/wechat/refund.cjs +112 -0
- package/dist/wechat/refund.cjs.map +1 -0
- package/dist/wechat/refund.d.cts +26 -0
- package/dist/wechat/refund.d.ts +26 -0
- package/dist/wechat/refund.js +110 -0
- package/dist/wechat/refund.js.map +1 -0
- package/dist/wechat/response.cjs +50 -0
- package/dist/wechat/response.cjs.map +1 -0
- package/dist/wechat/response.d.cts +20 -0
- package/dist/wechat/response.d.ts +20 -0
- package/dist/wechat/response.js +46 -0
- package/dist/wechat/response.js.map +1 -0
- package/dist/wechat/types.cjs +4 -0
- package/dist/wechat/types.cjs.map +1 -0
- package/dist/wechat/types.d.cts +200 -0
- package/dist/wechat/types.d.ts +200 -0
- package/dist/wechat/types.js +3 -0
- package/dist/wechat/types.js.map +1 -0
- package/package.json +37 -28
- package/src/alipay/alipay.test.ts +231 -0
- package/src/alipay/client.ts +67 -0
- package/src/alipay/config.ts +72 -0
- package/src/alipay/index.ts +32 -0
- package/src/alipay/notify.ts +92 -0
- package/src/alipay/payment.ts +60 -0
- package/src/alipay/plugin.ts +64 -0
- package/src/alipay/query.ts +52 -0
- package/src/alipay/refund.ts +85 -0
- package/src/alipay/response.ts +40 -0
- package/src/alipay/types.ts +271 -0
- package/src/alipay/wap.ts +55 -0
- package/src/index.ts +78 -0
- package/src/wechat/client.ts +68 -0
- package/src/wechat/config.ts +81 -0
- package/src/wechat/index.ts +30 -0
- package/src/wechat/notify.ts +93 -0
- package/src/wechat/payment.ts +177 -0
- package/src/wechat/plugin.ts +59 -0
- package/src/wechat/refund.ts +80 -0
- package/src/wechat/response.ts +54 -0
- package/src/wechat/types.ts +223 -0
- package/src/wechat/wechat.test.ts +393 -0
- package/dist/alipay-official.d.ts +0 -34
- package/dist/alipay-official.js +0 -206
- package/dist/handlers.d.ts +0 -45
- package/dist/handlers.js +0 -105
- package/dist/jeepay.d.ts +0 -39
- package/dist/jeepay.js +0 -206
- package/dist/lakala.d.ts +0 -41
- package/dist/lakala.js +0 -243
- package/dist/manager.d.ts +0 -67
- package/dist/manager.js +0 -538
- package/dist/mock-driver.d.ts +0 -22
- package/dist/mock-driver.js +0 -59
- package/dist/state-machine.d.ts +0 -41
- package/dist/state-machine.js +0 -60
- package/dist/store.d.ts +0 -33
- package/dist/store.js +0 -76
- package/dist/types.d.ts +0 -168
- package/dist/types.js +0 -11
- package/dist/verify.d.ts +0 -34
- package/dist/verify.js +0 -55
- package/dist/wechat-official.d.ts +0 -40
- package/dist/wechat-official.js +0 -208
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { AlipaySdkSignType } from 'alipay-sdk';
|
|
2
|
+
export { AlipaySdkConfig, AlipaySdkSignType } from 'alipay-sdk';
|
|
3
|
+
|
|
4
|
+
interface AlipayPagePayParams {
|
|
5
|
+
/** 商户订单号,需保证唯一 */
|
|
6
|
+
outTradeNo: string;
|
|
7
|
+
/** 订单总金额,单位元,精确到两位小数 */
|
|
8
|
+
totalAmount: string;
|
|
9
|
+
/** 订单标题 */
|
|
10
|
+
subject: string;
|
|
11
|
+
/** 产品代码,电脑网站支付固定为 FAST_INSTANT_TRADE_PAY */
|
|
12
|
+
productCode?: string;
|
|
13
|
+
/** 订单描述 */
|
|
14
|
+
body?: string;
|
|
15
|
+
/** 绝对超时时间,格式 yyyy-MM-dd HH:mm:ss */
|
|
16
|
+
timeExpire?: string;
|
|
17
|
+
/** 订单相对超时时间,范围 1m~15d */
|
|
18
|
+
timeoutExpress?: string;
|
|
19
|
+
/** 商品主类型:0-虚拟,1-实物 */
|
|
20
|
+
goodsType?: '0' | '1';
|
|
21
|
+
/** 公用回传参数,异步通知时原样返回 */
|
|
22
|
+
passbackParams?: string;
|
|
23
|
+
/** 支付完成后同步跳转地址 */
|
|
24
|
+
returnUrl?: string;
|
|
25
|
+
/** 异步通知地址 */
|
|
26
|
+
notifyUrl?: string;
|
|
27
|
+
/** 扩展信息 */
|
|
28
|
+
extendParams?: Record<string, string>;
|
|
29
|
+
/** 商户门店编号 */
|
|
30
|
+
storeId?: string;
|
|
31
|
+
/** 是否发起实名校验 */
|
|
32
|
+
qrPayMode?: string;
|
|
33
|
+
/** 扫码支付模式 */
|
|
34
|
+
qrcodeWidth?: string;
|
|
35
|
+
}
|
|
36
|
+
interface AlipayPagePayResult {
|
|
37
|
+
/** 支付宝返回的 HTML 表单字符串 */
|
|
38
|
+
formHtml: string;
|
|
39
|
+
}
|
|
40
|
+
interface AlipayWapPayParams {
|
|
41
|
+
/** 商户订单号,需保证唯一 */
|
|
42
|
+
outTradeNo: string;
|
|
43
|
+
/** 订单总金额,单位元,精确到两位小数 */
|
|
44
|
+
totalAmount: string;
|
|
45
|
+
/** 订单标题 */
|
|
46
|
+
subject: string;
|
|
47
|
+
/** 产品代码,手机网站支付固定为 QUICK_WAP_WAY */
|
|
48
|
+
productCode?: string;
|
|
49
|
+
/** 订单描述 */
|
|
50
|
+
body?: string;
|
|
51
|
+
/** 绝对超时时间,格式 yyyy-MM-dd HH:mm:ss */
|
|
52
|
+
timeExpire?: string;
|
|
53
|
+
/** 订单相对超时时间,范围 1m~15d */
|
|
54
|
+
timeoutExpress?: string;
|
|
55
|
+
/** 公用回传参数,异步通知时原样返回 */
|
|
56
|
+
passbackParams?: string;
|
|
57
|
+
/** 用户付款中途退出后返回的商户页面地址 */
|
|
58
|
+
quitUrl?: string;
|
|
59
|
+
/** 支付完成后同步跳转地址 */
|
|
60
|
+
returnUrl?: string;
|
|
61
|
+
/** 异步通知地址 */
|
|
62
|
+
notifyUrl?: string;
|
|
63
|
+
}
|
|
64
|
+
interface AlipayWapPayResult {
|
|
65
|
+
/** 支付宝返回的 HTML 表单字符串 */
|
|
66
|
+
formHtml: string;
|
|
67
|
+
}
|
|
68
|
+
interface AlipayQueryParams {
|
|
69
|
+
outTradeNo?: string;
|
|
70
|
+
tradeNo?: string;
|
|
71
|
+
}
|
|
72
|
+
interface AlipayQueryResult {
|
|
73
|
+
/** 支付宝交易号 */
|
|
74
|
+
tradeNo: string;
|
|
75
|
+
/** 商户订单号 */
|
|
76
|
+
outTradeNo: string;
|
|
77
|
+
/** 买家支付宝账号 */
|
|
78
|
+
buyerLogonId: string;
|
|
79
|
+
/** 交易状态 */
|
|
80
|
+
tradeStatus: TradeStatus;
|
|
81
|
+
/** 交易的订单金额 */
|
|
82
|
+
totalAmount: string;
|
|
83
|
+
/** 实收金额 */
|
|
84
|
+
receiptAmount: string;
|
|
85
|
+
/** 买家实付金额 */
|
|
86
|
+
buyerPayAmount: string;
|
|
87
|
+
/** 交易创建时间 */
|
|
88
|
+
sendPayDate: string;
|
|
89
|
+
/** 交易付款时间 */
|
|
90
|
+
gmtPayment: string | null;
|
|
91
|
+
/** 交易关闭时间 */
|
|
92
|
+
gmtClose: string | null;
|
|
93
|
+
/** 退款金额 */
|
|
94
|
+
refundAmount: string;
|
|
95
|
+
/** 商品描述 */
|
|
96
|
+
subject: string;
|
|
97
|
+
/** 商户传入的回传参数 */
|
|
98
|
+
passbackParams: string | null;
|
|
99
|
+
/** 本次交易支付工具 */
|
|
100
|
+
fundChannel: string | null;
|
|
101
|
+
}
|
|
102
|
+
interface AlipayRefundParams {
|
|
103
|
+
outTradeNo?: string;
|
|
104
|
+
tradeNo?: string;
|
|
105
|
+
refundAmount: string;
|
|
106
|
+
refundReason?: string;
|
|
107
|
+
outRequestNo?: string;
|
|
108
|
+
refundCurrency?: string;
|
|
109
|
+
}
|
|
110
|
+
interface AlipayRefundResult {
|
|
111
|
+
/** 支付宝交易号 */
|
|
112
|
+
tradeNo: string;
|
|
113
|
+
/** 商户订单号 */
|
|
114
|
+
outTradeNo: string;
|
|
115
|
+
/** 买家支付宝账号 */
|
|
116
|
+
buyerLogonId: string;
|
|
117
|
+
/** 本次退款请求金额 */
|
|
118
|
+
refundAmount: string;
|
|
119
|
+
/** 资金变动明细 */
|
|
120
|
+
fundChange: string;
|
|
121
|
+
/** 退款时间 */
|
|
122
|
+
gmtRefundPay: string;
|
|
123
|
+
/** 退款金额(含各渠道) */
|
|
124
|
+
refundDetailItemList: Array<{
|
|
125
|
+
contributionType: string;
|
|
126
|
+
amount: string;
|
|
127
|
+
}> | null;
|
|
128
|
+
}
|
|
129
|
+
interface AlipayCloseParams {
|
|
130
|
+
outTradeNo?: string;
|
|
131
|
+
tradeNo?: string;
|
|
132
|
+
}
|
|
133
|
+
interface AlipayCloseResult {
|
|
134
|
+
/** 支付宝交易号 */
|
|
135
|
+
tradeNo: string;
|
|
136
|
+
/** 商户订单号 */
|
|
137
|
+
outTradeNo: string;
|
|
138
|
+
}
|
|
139
|
+
interface AlipayRefundQueryParams {
|
|
140
|
+
outTradeNo?: string;
|
|
141
|
+
tradeNo?: string;
|
|
142
|
+
outRequestNo: string;
|
|
143
|
+
}
|
|
144
|
+
interface AlipayRefundQueryResult {
|
|
145
|
+
/** 支付宝交易号 */
|
|
146
|
+
tradeNo: string;
|
|
147
|
+
/** 商户订单号 */
|
|
148
|
+
outTradeNo: string;
|
|
149
|
+
/** 退款金额 */
|
|
150
|
+
refundAmount: string;
|
|
151
|
+
/** 退款状态 */
|
|
152
|
+
refundStatus: string;
|
|
153
|
+
/** 退款请求号 */
|
|
154
|
+
outRequestNo: string;
|
|
155
|
+
/** 退款原因 */
|
|
156
|
+
refundReason: string;
|
|
157
|
+
}
|
|
158
|
+
interface AlipayNotifyParams {
|
|
159
|
+
[key: string]: string | undefined;
|
|
160
|
+
notifyTime: string;
|
|
161
|
+
notifyType: string;
|
|
162
|
+
notifyId: string;
|
|
163
|
+
appId: string;
|
|
164
|
+
charset: string;
|
|
165
|
+
version: string;
|
|
166
|
+
signType: string;
|
|
167
|
+
sign: string;
|
|
168
|
+
tradeNo: string;
|
|
169
|
+
outTradeNo: string;
|
|
170
|
+
outBizNo?: string;
|
|
171
|
+
buyerId: string;
|
|
172
|
+
buyerLogonId: string;
|
|
173
|
+
sellerId: string;
|
|
174
|
+
sellerEmail: string;
|
|
175
|
+
tradeStatus: string;
|
|
176
|
+
totalAmount: string;
|
|
177
|
+
receiptAmount: string;
|
|
178
|
+
invoiceAmount: string;
|
|
179
|
+
buyerPayAmount: string;
|
|
180
|
+
pointAmount: string;
|
|
181
|
+
refundFee: string;
|
|
182
|
+
subject: string;
|
|
183
|
+
body: string;
|
|
184
|
+
gmtCreate: string;
|
|
185
|
+
gmtPayment: string;
|
|
186
|
+
gmtClose: string;
|
|
187
|
+
fundBillList: string;
|
|
188
|
+
passbackParams: string;
|
|
189
|
+
voucherDetailList: string;
|
|
190
|
+
}
|
|
191
|
+
type TradeStatus = 'WAIT_BUYER_PAY' | 'TRADE_CLOSED' | 'TRADE_SUCCESS' | 'TRADE_FINISHED';
|
|
192
|
+
type AlipayKeyType = 'PKCS1' | 'PKCS8';
|
|
193
|
+
interface AlipayClientOptions {
|
|
194
|
+
/** 应用 ID */
|
|
195
|
+
appId: string;
|
|
196
|
+
/** 应用私钥(Node.js 使用 PKCS#1 格式) */
|
|
197
|
+
privateKey: string;
|
|
198
|
+
/** 支付宝公钥 */
|
|
199
|
+
alipayPublicKey: string;
|
|
200
|
+
/** 签名类型,默认 RSA2 */
|
|
201
|
+
signType?: AlipaySdkSignType;
|
|
202
|
+
/** 网关地址,沙箱使用沙箱网关 */
|
|
203
|
+
gateway?: string;
|
|
204
|
+
/** 异步通知地址 */
|
|
205
|
+
notifyUrl?: string;
|
|
206
|
+
/** 同步跳转地址 */
|
|
207
|
+
returnUrl?: string;
|
|
208
|
+
/** 私钥类型,默认 PKCS1(Node.js 使用 PKCS1) */
|
|
209
|
+
keyType?: AlipayKeyType;
|
|
210
|
+
/** 请求超时时间,默认 5000ms */
|
|
211
|
+
timeout?: number;
|
|
212
|
+
}
|
|
213
|
+
/** 电脑网站支付配置 */
|
|
214
|
+
interface AlipayPagePayConfig {
|
|
215
|
+
/** 商户订单号 */
|
|
216
|
+
outTradeNo: string;
|
|
217
|
+
/** 订单总金额,单位元 */
|
|
218
|
+
totalAmount: string;
|
|
219
|
+
/** 订单标题 */
|
|
220
|
+
subject: string;
|
|
221
|
+
/** 订单描述 */
|
|
222
|
+
body?: string;
|
|
223
|
+
/** 公用回传参数 */
|
|
224
|
+
passbackParams?: string;
|
|
225
|
+
}
|
|
226
|
+
/** 手机网站支付配置 */
|
|
227
|
+
interface AlipayWapPayConfig {
|
|
228
|
+
/** 商户订单号 */
|
|
229
|
+
outTradeNo: string;
|
|
230
|
+
/** 订单总金额,单位元 */
|
|
231
|
+
totalAmount: string;
|
|
232
|
+
/** 订单标题 */
|
|
233
|
+
subject: string;
|
|
234
|
+
/** 订单描述 */
|
|
235
|
+
body?: string;
|
|
236
|
+
/** 公用回传参数 */
|
|
237
|
+
passbackParams?: string;
|
|
238
|
+
/** 用户付款中途退出后返回的商户页面地址(wap 支付必填) */
|
|
239
|
+
quitUrl?: string;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export type { AlipayClientOptions, AlipayCloseParams, AlipayCloseResult, AlipayKeyType, AlipayNotifyParams, AlipayPagePayConfig, AlipayPagePayParams, AlipayPagePayResult, AlipayQueryParams, AlipayQueryResult, AlipayRefundParams, AlipayRefundQueryParams, AlipayRefundQueryResult, AlipayRefundResult, AlipayWapPayConfig, AlipayWapPayParams, AlipayWapPayResult, TradeStatus };
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { AlipaySdkSignType } from 'alipay-sdk';
|
|
2
|
+
export { AlipaySdkConfig, AlipaySdkSignType } from 'alipay-sdk';
|
|
3
|
+
|
|
4
|
+
interface AlipayPagePayParams {
|
|
5
|
+
/** 商户订单号,需保证唯一 */
|
|
6
|
+
outTradeNo: string;
|
|
7
|
+
/** 订单总金额,单位元,精确到两位小数 */
|
|
8
|
+
totalAmount: string;
|
|
9
|
+
/** 订单标题 */
|
|
10
|
+
subject: string;
|
|
11
|
+
/** 产品代码,电脑网站支付固定为 FAST_INSTANT_TRADE_PAY */
|
|
12
|
+
productCode?: string;
|
|
13
|
+
/** 订单描述 */
|
|
14
|
+
body?: string;
|
|
15
|
+
/** 绝对超时时间,格式 yyyy-MM-dd HH:mm:ss */
|
|
16
|
+
timeExpire?: string;
|
|
17
|
+
/** 订单相对超时时间,范围 1m~15d */
|
|
18
|
+
timeoutExpress?: string;
|
|
19
|
+
/** 商品主类型:0-虚拟,1-实物 */
|
|
20
|
+
goodsType?: '0' | '1';
|
|
21
|
+
/** 公用回传参数,异步通知时原样返回 */
|
|
22
|
+
passbackParams?: string;
|
|
23
|
+
/** 支付完成后同步跳转地址 */
|
|
24
|
+
returnUrl?: string;
|
|
25
|
+
/** 异步通知地址 */
|
|
26
|
+
notifyUrl?: string;
|
|
27
|
+
/** 扩展信息 */
|
|
28
|
+
extendParams?: Record<string, string>;
|
|
29
|
+
/** 商户门店编号 */
|
|
30
|
+
storeId?: string;
|
|
31
|
+
/** 是否发起实名校验 */
|
|
32
|
+
qrPayMode?: string;
|
|
33
|
+
/** 扫码支付模式 */
|
|
34
|
+
qrcodeWidth?: string;
|
|
35
|
+
}
|
|
36
|
+
interface AlipayPagePayResult {
|
|
37
|
+
/** 支付宝返回的 HTML 表单字符串 */
|
|
38
|
+
formHtml: string;
|
|
39
|
+
}
|
|
40
|
+
interface AlipayWapPayParams {
|
|
41
|
+
/** 商户订单号,需保证唯一 */
|
|
42
|
+
outTradeNo: string;
|
|
43
|
+
/** 订单总金额,单位元,精确到两位小数 */
|
|
44
|
+
totalAmount: string;
|
|
45
|
+
/** 订单标题 */
|
|
46
|
+
subject: string;
|
|
47
|
+
/** 产品代码,手机网站支付固定为 QUICK_WAP_WAY */
|
|
48
|
+
productCode?: string;
|
|
49
|
+
/** 订单描述 */
|
|
50
|
+
body?: string;
|
|
51
|
+
/** 绝对超时时间,格式 yyyy-MM-dd HH:mm:ss */
|
|
52
|
+
timeExpire?: string;
|
|
53
|
+
/** 订单相对超时时间,范围 1m~15d */
|
|
54
|
+
timeoutExpress?: string;
|
|
55
|
+
/** 公用回传参数,异步通知时原样返回 */
|
|
56
|
+
passbackParams?: string;
|
|
57
|
+
/** 用户付款中途退出后返回的商户页面地址 */
|
|
58
|
+
quitUrl?: string;
|
|
59
|
+
/** 支付完成后同步跳转地址 */
|
|
60
|
+
returnUrl?: string;
|
|
61
|
+
/** 异步通知地址 */
|
|
62
|
+
notifyUrl?: string;
|
|
63
|
+
}
|
|
64
|
+
interface AlipayWapPayResult {
|
|
65
|
+
/** 支付宝返回的 HTML 表单字符串 */
|
|
66
|
+
formHtml: string;
|
|
67
|
+
}
|
|
68
|
+
interface AlipayQueryParams {
|
|
69
|
+
outTradeNo?: string;
|
|
70
|
+
tradeNo?: string;
|
|
71
|
+
}
|
|
72
|
+
interface AlipayQueryResult {
|
|
73
|
+
/** 支付宝交易号 */
|
|
74
|
+
tradeNo: string;
|
|
75
|
+
/** 商户订单号 */
|
|
76
|
+
outTradeNo: string;
|
|
77
|
+
/** 买家支付宝账号 */
|
|
78
|
+
buyerLogonId: string;
|
|
79
|
+
/** 交易状态 */
|
|
80
|
+
tradeStatus: TradeStatus;
|
|
81
|
+
/** 交易的订单金额 */
|
|
82
|
+
totalAmount: string;
|
|
83
|
+
/** 实收金额 */
|
|
84
|
+
receiptAmount: string;
|
|
85
|
+
/** 买家实付金额 */
|
|
86
|
+
buyerPayAmount: string;
|
|
87
|
+
/** 交易创建时间 */
|
|
88
|
+
sendPayDate: string;
|
|
89
|
+
/** 交易付款时间 */
|
|
90
|
+
gmtPayment: string | null;
|
|
91
|
+
/** 交易关闭时间 */
|
|
92
|
+
gmtClose: string | null;
|
|
93
|
+
/** 退款金额 */
|
|
94
|
+
refundAmount: string;
|
|
95
|
+
/** 商品描述 */
|
|
96
|
+
subject: string;
|
|
97
|
+
/** 商户传入的回传参数 */
|
|
98
|
+
passbackParams: string | null;
|
|
99
|
+
/** 本次交易支付工具 */
|
|
100
|
+
fundChannel: string | null;
|
|
101
|
+
}
|
|
102
|
+
interface AlipayRefundParams {
|
|
103
|
+
outTradeNo?: string;
|
|
104
|
+
tradeNo?: string;
|
|
105
|
+
refundAmount: string;
|
|
106
|
+
refundReason?: string;
|
|
107
|
+
outRequestNo?: string;
|
|
108
|
+
refundCurrency?: string;
|
|
109
|
+
}
|
|
110
|
+
interface AlipayRefundResult {
|
|
111
|
+
/** 支付宝交易号 */
|
|
112
|
+
tradeNo: string;
|
|
113
|
+
/** 商户订单号 */
|
|
114
|
+
outTradeNo: string;
|
|
115
|
+
/** 买家支付宝账号 */
|
|
116
|
+
buyerLogonId: string;
|
|
117
|
+
/** 本次退款请求金额 */
|
|
118
|
+
refundAmount: string;
|
|
119
|
+
/** 资金变动明细 */
|
|
120
|
+
fundChange: string;
|
|
121
|
+
/** 退款时间 */
|
|
122
|
+
gmtRefundPay: string;
|
|
123
|
+
/** 退款金额(含各渠道) */
|
|
124
|
+
refundDetailItemList: Array<{
|
|
125
|
+
contributionType: string;
|
|
126
|
+
amount: string;
|
|
127
|
+
}> | null;
|
|
128
|
+
}
|
|
129
|
+
interface AlipayCloseParams {
|
|
130
|
+
outTradeNo?: string;
|
|
131
|
+
tradeNo?: string;
|
|
132
|
+
}
|
|
133
|
+
interface AlipayCloseResult {
|
|
134
|
+
/** 支付宝交易号 */
|
|
135
|
+
tradeNo: string;
|
|
136
|
+
/** 商户订单号 */
|
|
137
|
+
outTradeNo: string;
|
|
138
|
+
}
|
|
139
|
+
interface AlipayRefundQueryParams {
|
|
140
|
+
outTradeNo?: string;
|
|
141
|
+
tradeNo?: string;
|
|
142
|
+
outRequestNo: string;
|
|
143
|
+
}
|
|
144
|
+
interface AlipayRefundQueryResult {
|
|
145
|
+
/** 支付宝交易号 */
|
|
146
|
+
tradeNo: string;
|
|
147
|
+
/** 商户订单号 */
|
|
148
|
+
outTradeNo: string;
|
|
149
|
+
/** 退款金额 */
|
|
150
|
+
refundAmount: string;
|
|
151
|
+
/** 退款状态 */
|
|
152
|
+
refundStatus: string;
|
|
153
|
+
/** 退款请求号 */
|
|
154
|
+
outRequestNo: string;
|
|
155
|
+
/** 退款原因 */
|
|
156
|
+
refundReason: string;
|
|
157
|
+
}
|
|
158
|
+
interface AlipayNotifyParams {
|
|
159
|
+
[key: string]: string | undefined;
|
|
160
|
+
notifyTime: string;
|
|
161
|
+
notifyType: string;
|
|
162
|
+
notifyId: string;
|
|
163
|
+
appId: string;
|
|
164
|
+
charset: string;
|
|
165
|
+
version: string;
|
|
166
|
+
signType: string;
|
|
167
|
+
sign: string;
|
|
168
|
+
tradeNo: string;
|
|
169
|
+
outTradeNo: string;
|
|
170
|
+
outBizNo?: string;
|
|
171
|
+
buyerId: string;
|
|
172
|
+
buyerLogonId: string;
|
|
173
|
+
sellerId: string;
|
|
174
|
+
sellerEmail: string;
|
|
175
|
+
tradeStatus: string;
|
|
176
|
+
totalAmount: string;
|
|
177
|
+
receiptAmount: string;
|
|
178
|
+
invoiceAmount: string;
|
|
179
|
+
buyerPayAmount: string;
|
|
180
|
+
pointAmount: string;
|
|
181
|
+
refundFee: string;
|
|
182
|
+
subject: string;
|
|
183
|
+
body: string;
|
|
184
|
+
gmtCreate: string;
|
|
185
|
+
gmtPayment: string;
|
|
186
|
+
gmtClose: string;
|
|
187
|
+
fundBillList: string;
|
|
188
|
+
passbackParams: string;
|
|
189
|
+
voucherDetailList: string;
|
|
190
|
+
}
|
|
191
|
+
type TradeStatus = 'WAIT_BUYER_PAY' | 'TRADE_CLOSED' | 'TRADE_SUCCESS' | 'TRADE_FINISHED';
|
|
192
|
+
type AlipayKeyType = 'PKCS1' | 'PKCS8';
|
|
193
|
+
interface AlipayClientOptions {
|
|
194
|
+
/** 应用 ID */
|
|
195
|
+
appId: string;
|
|
196
|
+
/** 应用私钥(Node.js 使用 PKCS#1 格式) */
|
|
197
|
+
privateKey: string;
|
|
198
|
+
/** 支付宝公钥 */
|
|
199
|
+
alipayPublicKey: string;
|
|
200
|
+
/** 签名类型,默认 RSA2 */
|
|
201
|
+
signType?: AlipaySdkSignType;
|
|
202
|
+
/** 网关地址,沙箱使用沙箱网关 */
|
|
203
|
+
gateway?: string;
|
|
204
|
+
/** 异步通知地址 */
|
|
205
|
+
notifyUrl?: string;
|
|
206
|
+
/** 同步跳转地址 */
|
|
207
|
+
returnUrl?: string;
|
|
208
|
+
/** 私钥类型,默认 PKCS1(Node.js 使用 PKCS1) */
|
|
209
|
+
keyType?: AlipayKeyType;
|
|
210
|
+
/** 请求超时时间,默认 5000ms */
|
|
211
|
+
timeout?: number;
|
|
212
|
+
}
|
|
213
|
+
/** 电脑网站支付配置 */
|
|
214
|
+
interface AlipayPagePayConfig {
|
|
215
|
+
/** 商户订单号 */
|
|
216
|
+
outTradeNo: string;
|
|
217
|
+
/** 订单总金额,单位元 */
|
|
218
|
+
totalAmount: string;
|
|
219
|
+
/** 订单标题 */
|
|
220
|
+
subject: string;
|
|
221
|
+
/** 订单描述 */
|
|
222
|
+
body?: string;
|
|
223
|
+
/** 公用回传参数 */
|
|
224
|
+
passbackParams?: string;
|
|
225
|
+
}
|
|
226
|
+
/** 手机网站支付配置 */
|
|
227
|
+
interface AlipayWapPayConfig {
|
|
228
|
+
/** 商户订单号 */
|
|
229
|
+
outTradeNo: string;
|
|
230
|
+
/** 订单总金额,单位元 */
|
|
231
|
+
totalAmount: string;
|
|
232
|
+
/** 订单标题 */
|
|
233
|
+
subject: string;
|
|
234
|
+
/** 订单描述 */
|
|
235
|
+
body?: string;
|
|
236
|
+
/** 公用回传参数 */
|
|
237
|
+
passbackParams?: string;
|
|
238
|
+
/** 用户付款中途退出后返回的商户页面地址(wap 支付必填) */
|
|
239
|
+
quitUrl?: string;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export type { AlipayClientOptions, AlipayCloseParams, AlipayCloseResult, AlipayKeyType, AlipayNotifyParams, AlipayPagePayConfig, AlipayPagePayParams, AlipayPagePayResult, AlipayQueryParams, AlipayQueryResult, AlipayRefundParams, AlipayRefundQueryParams, AlipayRefundQueryResult, AlipayRefundResult, AlipayWapPayConfig, AlipayWapPayParams, AlipayWapPayResult, TradeStatus };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"types.js"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
5
|
+
|
|
6
|
+
// packages/payment/src/alipay/wap.ts
|
|
7
|
+
function createWapPay(client) {
|
|
8
|
+
return {
|
|
9
|
+
/**
|
|
10
|
+
* 发起手机网站支付
|
|
11
|
+
* @param config 支付配置
|
|
12
|
+
* @returns 支付表单 HTML
|
|
13
|
+
*/
|
|
14
|
+
async pay(config) {
|
|
15
|
+
const { outTradeNo, totalAmount, subject, body, passbackParams, quitUrl } = config;
|
|
16
|
+
const bizParams = {
|
|
17
|
+
outTradeNo,
|
|
18
|
+
totalAmount,
|
|
19
|
+
subject,
|
|
20
|
+
productCode: "QUICK_WAP_WAY",
|
|
21
|
+
body,
|
|
22
|
+
passbackParams,
|
|
23
|
+
quitUrl,
|
|
24
|
+
returnUrl: client.config.returnUrl,
|
|
25
|
+
notifyUrl: client.config.notifyUrl
|
|
26
|
+
};
|
|
27
|
+
const formHtml = client.sdk.pageExecute(
|
|
28
|
+
"alipay.trade.wap.pay",
|
|
29
|
+
"POST",
|
|
30
|
+
{ bizContent: sanitizeParams(bizParams) }
|
|
31
|
+
);
|
|
32
|
+
return { formHtml };
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
__name(createWapPay, "createWapPay");
|
|
37
|
+
function sanitizeParams(params) {
|
|
38
|
+
const result = {};
|
|
39
|
+
for (const [key, value] of Object.entries(params)) {
|
|
40
|
+
if (value !== void 0 && value !== null) {
|
|
41
|
+
result[key] = value;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
__name(sanitizeParams, "sanitizeParams");
|
|
47
|
+
|
|
48
|
+
exports.createWapPay = createWapPay;
|
|
49
|
+
//# sourceMappingURL=wap.cjs.map
|
|
50
|
+
//# sourceMappingURL=wap.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/alipay/wap.ts"],"names":[],"mappings":";;;;;;AAYO,SAAS,aAAa,MAAA,EAAsB;AACjD,EAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM,IAAI,MAAA,EAAyD;AACjE,MAAA,MAAM,EAAE,UAAA,EAAY,WAAA,EAAa,SAAS,IAAA,EAAM,cAAA,EAAgB,SAAQ,GAAI,MAAA;AAE5E,MAAA,MAAM,SAAA,GAAgC;AAAA,QACpC,UAAA;AAAA,QACA,WAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA,EAAa,eAAA;AAAA,QACb,IAAA;AAAA,QACA,cAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA,EAAW,OAAO,MAAA,CAAO,SAAA;AAAA,QACzB,SAAA,EAAW,OAAO,MAAA,CAAO;AAAA,OAC3B;AAEA,MAAA,MAAM,QAAA,GAAW,OAAO,GAAA,CAAI,WAAA;AAAA,QAC1B,sBAAA;AAAA,QACA,MAAA;AAAA,QACA,EAAE,UAAA,EAAY,cAAA,CAAe,SAAS,CAAA;AAAE,OAC1C;AAEA,MAAA,OAAO,EAAE,QAAA,EAAS;AAAA,IACpB;AAAA,GACF;AACF;AA/BgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AAkChB,SAAS,eAA8C,MAAA,EAAgC;AACrF,EAAA,MAAM,SAA8B,EAAC;AACrC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AACjD,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,IAChB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AARS,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA","file":"wap.cjs","sourcesContent":["import type { AlipayClient } from './client'\nimport type { AlipayWapPayConfig, AlipayWapPayParams, AlipayWapPayResult } from './types'\n\n/**\n * 手机网站支付 (alipay.trade.wap.pay)\n *\n * 移动端浏览器内拉起支付宝收银台,生成表单 HTML 由前端提交跳转。\n *\n * ⚠️ 必须使用 pageExecute() 方法,禁止使用 exec()。\n * ⚠️ 返回值为 HTML 表单字符串,前端必须渲染 form 并自动提交。\n * ⚠️ 支付结果以异步通知或查询接口为准,不可依赖同步跳转。\n */\nexport function createWapPay(client: AlipayClient) {\n return {\n /**\n * 发起手机网站支付\n * @param config 支付配置\n * @returns 支付表单 HTML\n */\n async pay(config: AlipayWapPayConfig): Promise<AlipayWapPayResult> {\n const { outTradeNo, totalAmount, subject, body, passbackParams, quitUrl } = config\n\n const bizParams: AlipayWapPayParams = {\n outTradeNo,\n totalAmount,\n subject,\n productCode: 'QUICK_WAP_WAY',\n body,\n passbackParams,\n quitUrl,\n returnUrl: client.config.returnUrl,\n notifyUrl: client.config.notifyUrl\n }\n\n const formHtml = client.sdk.pageExecute(\n 'alipay.trade.wap.pay',\n 'POST',\n { bizContent: sanitizeParams(bizParams) }\n )\n\n return { formHtml }\n }\n }\n}\n\n/** 移除 undefined 字段 */\nfunction sanitizeParams<T extends Record<string, any>>(params: T): Record<string, any> {\n const result: Record<string, any> = {}\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n result[key] = value\n }\n }\n return result\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AlipayClient } from './client.cjs';
|
|
2
|
+
import { AlipayWapPayConfig, AlipayWapPayResult } from './types.cjs';
|
|
3
|
+
import 'alipay-sdk';
|
|
4
|
+
import './config.cjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 手机网站支付 (alipay.trade.wap.pay)
|
|
8
|
+
*
|
|
9
|
+
* 移动端浏览器内拉起支付宝收银台,生成表单 HTML 由前端提交跳转。
|
|
10
|
+
*
|
|
11
|
+
* ⚠️ 必须使用 pageExecute() 方法,禁止使用 exec()。
|
|
12
|
+
* ⚠️ 返回值为 HTML 表单字符串,前端必须渲染 form 并自动提交。
|
|
13
|
+
* ⚠️ 支付结果以异步通知或查询接口为准,不可依赖同步跳转。
|
|
14
|
+
*/
|
|
15
|
+
declare function createWapPay(client: AlipayClient): {
|
|
16
|
+
/**
|
|
17
|
+
* 发起手机网站支付
|
|
18
|
+
* @param config 支付配置
|
|
19
|
+
* @returns 支付表单 HTML
|
|
20
|
+
*/
|
|
21
|
+
pay(config: AlipayWapPayConfig): Promise<AlipayWapPayResult>;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { createWapPay };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AlipayClient } from './client.js';
|
|
2
|
+
import { AlipayWapPayConfig, AlipayWapPayResult } from './types.js';
|
|
3
|
+
import 'alipay-sdk';
|
|
4
|
+
import './config.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 手机网站支付 (alipay.trade.wap.pay)
|
|
8
|
+
*
|
|
9
|
+
* 移动端浏览器内拉起支付宝收银台,生成表单 HTML 由前端提交跳转。
|
|
10
|
+
*
|
|
11
|
+
* ⚠️ 必须使用 pageExecute() 方法,禁止使用 exec()。
|
|
12
|
+
* ⚠️ 返回值为 HTML 表单字符串,前端必须渲染 form 并自动提交。
|
|
13
|
+
* ⚠️ 支付结果以异步通知或查询接口为准,不可依赖同步跳转。
|
|
14
|
+
*/
|
|
15
|
+
declare function createWapPay(client: AlipayClient): {
|
|
16
|
+
/**
|
|
17
|
+
* 发起手机网站支付
|
|
18
|
+
* @param config 支付配置
|
|
19
|
+
* @returns 支付表单 HTML
|
|
20
|
+
*/
|
|
21
|
+
pay(config: AlipayWapPayConfig): Promise<AlipayWapPayResult>;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { createWapPay };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
4
|
+
// packages/payment/src/alipay/wap.ts
|
|
5
|
+
function createWapPay(client) {
|
|
6
|
+
return {
|
|
7
|
+
/**
|
|
8
|
+
* 发起手机网站支付
|
|
9
|
+
* @param config 支付配置
|
|
10
|
+
* @returns 支付表单 HTML
|
|
11
|
+
*/
|
|
12
|
+
async pay(config) {
|
|
13
|
+
const { outTradeNo, totalAmount, subject, body, passbackParams, quitUrl } = config;
|
|
14
|
+
const bizParams = {
|
|
15
|
+
outTradeNo,
|
|
16
|
+
totalAmount,
|
|
17
|
+
subject,
|
|
18
|
+
productCode: "QUICK_WAP_WAY",
|
|
19
|
+
body,
|
|
20
|
+
passbackParams,
|
|
21
|
+
quitUrl,
|
|
22
|
+
returnUrl: client.config.returnUrl,
|
|
23
|
+
notifyUrl: client.config.notifyUrl
|
|
24
|
+
};
|
|
25
|
+
const formHtml = client.sdk.pageExecute(
|
|
26
|
+
"alipay.trade.wap.pay",
|
|
27
|
+
"POST",
|
|
28
|
+
{ bizContent: sanitizeParams(bizParams) }
|
|
29
|
+
);
|
|
30
|
+
return { formHtml };
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
__name(createWapPay, "createWapPay");
|
|
35
|
+
function sanitizeParams(params) {
|
|
36
|
+
const result = {};
|
|
37
|
+
for (const [key, value] of Object.entries(params)) {
|
|
38
|
+
if (value !== void 0 && value !== null) {
|
|
39
|
+
result[key] = value;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
__name(sanitizeParams, "sanitizeParams");
|
|
45
|
+
|
|
46
|
+
export { createWapPay };
|
|
47
|
+
//# sourceMappingURL=wap.js.map
|
|
48
|
+
//# sourceMappingURL=wap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/alipay/wap.ts"],"names":[],"mappings":";;;;AAYO,SAAS,aAAa,MAAA,EAAsB;AACjD,EAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM,IAAI,MAAA,EAAyD;AACjE,MAAA,MAAM,EAAE,UAAA,EAAY,WAAA,EAAa,SAAS,IAAA,EAAM,cAAA,EAAgB,SAAQ,GAAI,MAAA;AAE5E,MAAA,MAAM,SAAA,GAAgC;AAAA,QACpC,UAAA;AAAA,QACA,WAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA,EAAa,eAAA;AAAA,QACb,IAAA;AAAA,QACA,cAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA,EAAW,OAAO,MAAA,CAAO,SAAA;AAAA,QACzB,SAAA,EAAW,OAAO,MAAA,CAAO;AAAA,OAC3B;AAEA,MAAA,MAAM,QAAA,GAAW,OAAO,GAAA,CAAI,WAAA;AAAA,QAC1B,sBAAA;AAAA,QACA,MAAA;AAAA,QACA,EAAE,UAAA,EAAY,cAAA,CAAe,SAAS,CAAA;AAAE,OAC1C;AAEA,MAAA,OAAO,EAAE,QAAA,EAAS;AAAA,IACpB;AAAA,GACF;AACF;AA/BgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AAkChB,SAAS,eAA8C,MAAA,EAAgC;AACrF,EAAA,MAAM,SAA8B,EAAC;AACrC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AACjD,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,IAChB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AARS,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA","file":"wap.js","sourcesContent":["import type { AlipayClient } from './client'\nimport type { AlipayWapPayConfig, AlipayWapPayParams, AlipayWapPayResult } from './types'\n\n/**\n * 手机网站支付 (alipay.trade.wap.pay)\n *\n * 移动端浏览器内拉起支付宝收银台,生成表单 HTML 由前端提交跳转。\n *\n * ⚠️ 必须使用 pageExecute() 方法,禁止使用 exec()。\n * ⚠️ 返回值为 HTML 表单字符串,前端必须渲染 form 并自动提交。\n * ⚠️ 支付结果以异步通知或查询接口为准,不可依赖同步跳转。\n */\nexport function createWapPay(client: AlipayClient) {\n return {\n /**\n * 发起手机网站支付\n * @param config 支付配置\n * @returns 支付表单 HTML\n */\n async pay(config: AlipayWapPayConfig): Promise<AlipayWapPayResult> {\n const { outTradeNo, totalAmount, subject, body, passbackParams, quitUrl } = config\n\n const bizParams: AlipayWapPayParams = {\n outTradeNo,\n totalAmount,\n subject,\n productCode: 'QUICK_WAP_WAY',\n body,\n passbackParams,\n quitUrl,\n returnUrl: client.config.returnUrl,\n notifyUrl: client.config.notifyUrl\n }\n\n const formHtml = client.sdk.pageExecute(\n 'alipay.trade.wap.pay',\n 'POST',\n { bizContent: sanitizeParams(bizParams) }\n )\n\n return { formHtml }\n }\n }\n}\n\n/** 移除 undefined 字段 */\nfunction sanitizeParams<T extends Record<string, any>>(params: T): Record<string, any> {\n const result: Record<string, any> = {}\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n result[key] = value\n }\n }\n return result\n}\n"]}
|