vona-module-pay-paypal 5.0.3 → 5.0.4

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.
@@ -1,5 +1,6 @@
1
1
  import type { IDecoratorPayProviderOptions, IPayProviderClientOptions, IPayProviderClientRecord, IPayProviderExecute, IPayProviderPaymentInput, IPayProviderPaymentSnapshot, IPayProviderRefundInput, IPayProviderRefundSnapshot, IPayProviderVerifiedWebhook, IPayProviderWebhookInput } from 'vona-module-a-pay';
2
2
  import { BeanBase } from 'vona';
3
+ import type { IPaypalGateway } from '../lib/paypalGateway.ts';
3
4
  export interface IPayProviderPaypalClientRecord extends IPayProviderClientRecord {
4
5
  }
5
6
  export interface IPayProviderPaypalClientOptions extends IPayProviderClientOptions {
@@ -8,16 +9,26 @@ export interface IPayProviderPaypalClientOptions extends IPayProviderClientOptio
8
9
  clientSecret: string | undefined;
9
10
  };
10
11
  webhookId: string | undefined;
12
+ gateway?: IPaypalGateway;
11
13
  }
12
14
  export interface IPayProviderOptionsPaypal extends IDecoratorPayProviderOptions<IPayProviderPaypalClientRecord, IPayProviderPaypalClientOptions> {
13
15
  }
14
16
  export declare class PayProviderPaypal extends BeanBase implements IPayProviderExecute<IPayProviderPaypalClientOptions> {
15
17
  startPayment(input: IPayProviderPaymentInput, clientOptions: IPayProviderPaypalClientOptions): Promise<IPayProviderPaymentSnapshot>;
18
+ confirmPayment(input: IPayProviderPaymentInput, clientOptions: IPayProviderPaypalClientOptions): Promise<IPayProviderPaymentSnapshot>;
16
19
  queryPayment(input: IPayProviderPaymentInput, clientOptions: IPayProviderPaypalClientOptions): Promise<IPayProviderPaymentSnapshot>;
17
20
  createRefund(input: IPayProviderRefundInput, clientOptions: IPayProviderPaypalClientOptions): Promise<IPayProviderRefundSnapshot>;
18
- queryRefund(_input: IPayProviderRefundInput, _clientOptions: IPayProviderPaypalClientOptions): Promise<IPayProviderRefundSnapshot>;
19
- verifyWebhook(_input: IPayProviderWebhookInput, _clientOptions: IPayProviderPaypalClientOptions): Promise<IPayProviderVerifiedWebhook>;
20
- private _createClient;
21
+ queryRefund(input: IPayProviderRefundInput, clientOptions: IPayProviderPaypalClientOptions): Promise<IPayProviderRefundSnapshot>;
22
+ verifyWebhook(input: IPayProviderWebhookInput, clientOptions: IPayProviderPaypalClientOptions): Promise<IPayProviderVerifiedWebhook>;
23
+ private _mapWebhook;
24
+ private _inputFromOrder;
25
+ private _mapOrder;
26
+ private _mapRefund;
27
+ private _gateway;
28
+ private _gatewayOptions;
29
+ private _throwGatewayError;
30
+ private _assertReady;
31
+ private _assertMerchant;
21
32
  }
22
33
  declare module 'vona-module-a-pay' {
23
34
  interface IPayProviderRecord {
@@ -1 +1 @@
1
- {"version":3,"file":"payProvider.paypal.d.ts","sourceRoot":"","sources":["../../src/bean/payProvider.paypal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACzB,MAAM,mBAAmB,CAAC;AAU3B,OAAO,EAAE,QAAQ,EAAU,MAAM,MAAM,CAAC;AAGxC,MAAM,WAAW,8BAA+B,SAAQ,wBAAwB;CAAG;AAEnF,MAAM,WAAW,+BAAgC,SAAQ,yBAAyB;IAChF,gBAAgB,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACrF,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAID,MAAM,WAAW,yBAA0B,SAAQ,4BAA4B,CAC7E,8BAA8B,EAC9B,+BAA+B,CAChC;CAAG;AAEJ,qBAuBa,iBACX,SAAQ,QACR,YAAW,mBAAmB,CAAC,+BAA+B,CAAC;IAEzD,YAAY,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,+BAA+B,GAC7C,OAAO,CAAC,2BAA2B,CAAC;IAkCjC,YAAY,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,+BAA+B,GAC7C,OAAO,CAAC,2BAA2B,CAAC;IA4BjC,YAAY,CAChB,KAAK,EAAE,uBAAuB,EAC9B,aAAa,EAAE,+BAA+B,GAC7C,OAAO,CAAC,0BAA0B,CAAC;IAehC,WAAW,CACf,MAAM,EAAE,uBAAuB,EAC/B,cAAc,EAAE,+BAA+B,GAC9C,OAAO,CAAC,0BAA0B,CAAC;IAIhC,aAAa,CACjB,MAAM,EAAE,wBAAwB,EAChC,cAAc,EAAE,+BAA+B,GAC9C,OAAO,CAAC,2BAA2B,CAAC;IAIvC,OAAO,CAAC,aAAa;CActB;AAgBD,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAiB,kBAAkB;QACjC,mBAAmB,EAAE,yBAAyB,CAAC;KAChD;CACF"}
1
+ {"version":3,"file":"payProvider.paypal.d.ts","sourceRoot":"","sources":["../../src/bean/payProvider.paypal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACzB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,QAAQ,EAAU,MAAM,MAAM,CAAC;AAIxC,OAAO,KAAK,EAAE,cAAc,EAAyB,MAAM,yBAAyB,CAAC;AAIrF,MAAM,WAAW,8BAA+B,SAAQ,wBAAwB;CAAG;AAEnF,MAAM,WAAW,+BAAgC,SAAQ,yBAAyB;IAChF,gBAAgB,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACrF,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AASD,MAAM,WAAW,yBAA0B,SAAQ,4BAA4B,CAC7E,8BAA8B,EAC9B,+BAA+B,CAChC;CAAG;AAEJ,qBAwBa,iBACX,SAAQ,QACR,YAAW,mBAAmB,CAAC,+BAA+B,CAAC;IAEzD,YAAY,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,+BAA+B,GAC7C,OAAO,CAAC,2BAA2B,CAAC;IA0CjC,cAAc,CAClB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,+BAA+B,GAC7C,OAAO,CAAC,2BAA2B,CAAC;IAajC,YAAY,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,+BAA+B,GAC7C,OAAO,CAAC,2BAA2B,CAAC;IASjC,YAAY,CAChB,KAAK,EAAE,uBAAuB,EAC9B,aAAa,EAAE,+BAA+B,GAC7C,OAAO,CAAC,0BAA0B,CAAC;IAoBhC,WAAW,CACf,KAAK,EAAE,uBAAuB,EAC9B,aAAa,EAAE,+BAA+B,GAC7C,OAAO,CAAC,0BAA0B,CAAC;IAahC,aAAa,CACjB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,+BAA+B,GAC7C,OAAO,CAAC,2BAA2B,CAAC;YAezB,WAAW;IA+EzB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,SAAS;IAkEjB,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,eAAe;CAaxB;AAuED,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAiB,kBAAkB;QACjC,mBAAmB,EAAE,yBAAyB,CAAC;KAChD;CACF"}
package/dist/index.js CHANGED
@@ -1,18 +1,116 @@
1
+ import { PaymentsController, OrdersController, Client, Environment, CheckoutPaymentIntent, OrderStatus } from '@cabloy/paypal-server-sdk';
1
2
  import { useApp, BeanInfo, BeanBase, BeanScopeBase } from 'vona';
2
3
  import { __decorate } from 'tslib';
3
- import { OrdersController, CheckoutPaymentIntent, OrderStatus, PaymentsController, Client, Environment } from '@cabloy/paypal-server-sdk';
4
4
  import { PayProvider } from 'vona-module-a-pay';
5
+ import { z } from 'zod';
5
6
  import { Scope } from 'vona-module-a-bean';
6
7
 
8
+ class PaypalGatewayError extends Error {
9
+ constructor(status, message) {
10
+ super(message);
11
+ this.status = void 0;
12
+ this.status = status;
13
+ }
14
+ }
15
+ function createPaypalGateway(fetcher) {
16
+ return {
17
+ async createOrder(options, input) {
18
+ return (await new OrdersController(createClient(options)).createOrder(input)).result;
19
+ },
20
+ async captureOrder(options, input) {
21
+ return (await new OrdersController(createClient(options)).captureOrder(input)).result;
22
+ },
23
+ async getOrder(options, input) {
24
+ return (await new OrdersController(createClient(options)).getOrder(input)).result;
25
+ },
26
+ async refundCapturedPayment(options, input) {
27
+ return (await new PaymentsController(createClient(options)).refundCapturedPayment(input)).result;
28
+ },
29
+ async getRefund(options, input) {
30
+ return (await new PaymentsController(createClient(options)).getRefund(input)).result;
31
+ },
32
+ async verifyWebhookSignature(options, input) {
33
+ const transmissionId = getHeader(input.headers, 'paypal-transmission-id');
34
+ const transmissionTime = getHeader(input.headers, 'paypal-transmission-time');
35
+ const certUrl = getHeader(input.headers, 'paypal-cert-url');
36
+ const authAlgo = getHeader(input.headers, 'paypal-auth-algo');
37
+ const transmissionSig = getHeader(input.headers, 'paypal-transmission-sig');
38
+ if (!transmissionId || !transmissionTime || !certUrl || !authAlgo || !transmissionSig) {
39
+ throw new PaypalGatewayError(401, 'PayPal webhook transmission headers are invalid');
40
+ }
41
+ const apiBaseUrl = options.environment === 'sandbox' ? 'https://api-m.sandbox.paypal.com' : 'https://api-m.paypal.com';
42
+ const tokenResponse = await fetcher(`${apiBaseUrl}/v1/oauth2/token`, {
43
+ method: 'POST',
44
+ headers: {
45
+ 'authorization': `Basic ${Buffer.from(`${options.clientId}:${options.clientSecret}`).toString('base64')}`,
46
+ 'content-type': 'application/x-www-form-urlencoded'
47
+ },
48
+ body: 'grant_type=client_credentials'
49
+ });
50
+ const token = asRecord$1(tokenResponse.ok ? await tokenResponse.json() : undefined);
51
+ const accessToken = readString$1(token.access_token);
52
+ if (!accessToken) {
53
+ throw new PaypalGatewayError(401, 'PayPal webhook verification authentication failed');
54
+ }
55
+ const response = await fetcher(`${apiBaseUrl}/v1/notifications/verify-webhook-signature`, {
56
+ method: 'POST',
57
+ headers: {
58
+ 'authorization': `Bearer ${accessToken}`,
59
+ 'content-type': 'application/json'
60
+ },
61
+ body: JSON.stringify({
62
+ auth_algo: authAlgo,
63
+ cert_url: certUrl,
64
+ transmission_id: transmissionId,
65
+ transmission_sig: transmissionSig,
66
+ transmission_time: transmissionTime,
67
+ webhook_id: options.webhookId,
68
+ webhook_event: input.body
69
+ })
70
+ });
71
+ if (!response.ok) throw new PaypalGatewayError(401, 'PayPal webhook verification failed');
72
+ const result = asRecord$1(await response.json());
73
+ if (readString$1(result.verification_status) !== 'SUCCESS') {
74
+ throw new PaypalGatewayError(401, 'PayPal webhook signature is invalid');
75
+ }
76
+ }
77
+ };
78
+ }
79
+ function createClient(options) {
80
+ return new Client({
81
+ clientCredentialsAuthCredentials: {
82
+ oAuthClientId: options.clientId,
83
+ oAuthClientSecret: options.clientSecret
84
+ },
85
+ timeout: 0,
86
+ environment: options.environment === 'live' ? Environment.Production : Environment.Sandbox
87
+ });
88
+ }
89
+ function asRecord$1(value) {
90
+ return value && typeof value === 'object' ? value : {};
91
+ }
92
+ function readString$1(value) {
93
+ return typeof value === 'string' && value ? value : undefined;
94
+ }
95
+ function getHeader(headers, key) {
96
+ const value = headers[key];
97
+ return Array.isArray(value) ? value[0] : value;
98
+ }
99
+
7
100
  const app = useApp();
101
+ const PaypalWebhookSchema = z.object({
102
+ id: z.string().min(1).max(255),
103
+ event_type: z.string().min(1).max(255),
104
+ resource: z.record(z.string(), z.unknown())
105
+ });
8
106
  let PayProviderPaypal = class PayProviderPaypal extends BeanBase {
9
107
  async startPayment(input, clientOptions) {
10
108
  if (input.providerOrderId) return await this.queryPayment(input, clientOptions);
11
109
  if (!input.returnUrl || !input.cancelUrl) {
12
110
  this.app.throw(422, 'PayPal payment requires return and cancel URLs');
13
111
  }
14
- const orders = new OrdersController(this._createClient(clientOptions));
15
- const response = await orders.createOrder({
112
+ this._assertReady(clientOptions);
113
+ const order = await this._gateway(clientOptions).createOrder(this._gatewayOptions(clientOptions), {
16
114
  paypalRequestId: input.idempotencyKey,
17
115
  body: {
18
116
  intent: CheckoutPaymentIntent.Capture,
@@ -30,102 +128,266 @@ let PayProviderPaypal = class PayProviderPaypal extends BeanBase {
30
128
  }]
31
129
  }
32
130
  });
33
- const order = response.result;
34
- const approvalUrl = order?.links?.find(item => item.rel === 'approve')?.href;
35
- if (!order?.id || !approvalUrl) this.app.throw(502, 'PayPal did not return an approval order');
131
+ const orderRecord = asRecord(order);
132
+ const approvalUrl = readString(asArray(orderRecord.links).map(asRecord).find(item => item.rel === 'approve')?.href);
133
+ const orderId = readString(orderRecord.id);
134
+ if (!orderId || !approvalUrl) this.app.throw(502, 'PayPal did not return an approval order');
36
135
  return {
37
136
  state: 'requires_action',
38
- providerPaymentId: order.id,
39
- providerOrderId: order.id,
137
+ providerPaymentId: orderId,
138
+ providerOrderId: orderId,
40
139
  nextAction: {
41
140
  kind: 'redirect',
42
141
  url: approvalUrl
43
142
  }
44
143
  };
45
144
  }
145
+ async confirmPayment(input, clientOptions) {
146
+ this._assertReady(clientOptions);
147
+ if (!input.providerOrderId) this.app.throw(409, 'PayPal payment has no provider order');
148
+ const order = await this._gateway(clientOptions).captureOrder(this._gatewayOptions(clientOptions), {
149
+ id: input.providerOrderId,
150
+ paypalRequestId: input.idempotencyKey
151
+ });
152
+ return this._mapOrder(order, input, clientOptions);
153
+ }
46
154
  async queryPayment(input, clientOptions) {
47
- if (!input.providerOrderId) return {
48
- state: 'requires_action'
49
- };
50
- const orders = new OrdersController(this._createClient(clientOptions));
51
- const response = await orders.getOrder({
155
+ this._assertReady(clientOptions);
156
+ if (!input.providerOrderId) this.app.throw(409, 'PayPal payment has no provider order');
157
+ const order = await this._gateway(clientOptions).getOrder(this._gatewayOptions(clientOptions), {
52
158
  id: input.providerOrderId
53
159
  });
54
- const order = response.result;
55
- if (!order?.id) this.app.throw(502, 'PayPal order query returned no order');
56
- const capture = order.purchaseUnits?.[0]?.payments?.captures?.[0];
57
- if (capture?.status === 'COMPLETED') {
160
+ return this._mapOrder(order, input, clientOptions);
161
+ }
162
+ async createRefund(input, clientOptions) {
163
+ this._assertReady(clientOptions);
164
+ const refund = await this._gateway(clientOptions).refundCapturedPayment(this._gatewayOptions(clientOptions), {
165
+ captureId: input.providerCaptureId,
166
+ paypalRequestId: input.idempotencyKey,
167
+ body: {
168
+ amount: {
169
+ currencyCode: input.currency,
170
+ value: formatMinorAmount(input.amountMinor, input.currency)
171
+ },
172
+ customId: String(input.refundOperationId),
173
+ invoiceId: input.businessReference
174
+ }
175
+ });
176
+ return this._mapRefund(refund, input, clientOptions);
177
+ }
178
+ async queryRefund(input, clientOptions) {
179
+ this._assertReady(clientOptions);
180
+ if (!input.providerRefundId) this.app.throw(409, 'PayPal refund has no provider refund identifier');
181
+ const refund = await this._gateway(clientOptions).getRefund(this._gatewayOptions(clientOptions), {
182
+ refundId: input.providerRefundId
183
+ });
184
+ return this._mapRefund(refund, input, clientOptions);
185
+ }
186
+ async verifyWebhook(input, clientOptions) {
187
+ this._assertReady(clientOptions);
188
+ const webhook = PaypalWebhookSchema.safeParse(input.body);
189
+ if (!webhook.success) this.app.throw(400, 'PayPal webhook is invalid');
190
+ try {
191
+ await this._gateway(clientOptions).verifyWebhookSignature(this._gatewayOptions(clientOptions), input);
192
+ } catch (error) {
193
+ this._throwGatewayError(error);
194
+ }
195
+ return await this._mapWebhook(webhook.data, clientOptions);
196
+ }
197
+ async _mapWebhook(event, clientOptions) {
198
+ const resource = event.resource;
199
+ const amount = parsePaypalAmount(resource.amount);
200
+ const currency = parsePaypalCurrency(resource.amount);
201
+ const resourceId = readString(resource.id);
202
+ if (!resourceId || !amount || !currency) this.app.throw(400, 'PayPal webhook has invalid resource');
203
+ if (isRefundEvent(event.event_type)) {
204
+ const refundOperationId = readString(readField(resource, 'customId', 'custom_id'));
205
+ const captureId = readNestedString(resource, ['supplementary_data', 'related_ids', 'capture_id']);
206
+ if (!refundOperationId || !captureId) this.app.throw(400, 'PayPal refund webhook is not correlated');
207
+ const refund = await this.$scope.pay.model.refundOperation.getById(refundOperationId);
208
+ if (!refund) this.app.throw(404, 'PayPal refund operation not found');
209
+ const session = await this.$scope.pay.model.paymentSession.getById(refund.paymentSessionId);
210
+ if (!session || session.providerCaptureId !== captureId) {
211
+ this.app.throw(409, 'PayPal refund webhook capture conflicts');
212
+ }
213
+ const snapshot = this._mapRefund(resource, {
214
+ paymentSessionId: session.id,
215
+ refundOperationId: refund.id,
216
+ businessReference: refund.businessReference,
217
+ idempotencyKey: '',
218
+ amountMinor: refund.amountMinor,
219
+ currency: refund.currency,
220
+ providerCaptureId: captureId,
221
+ providerRefundId: resourceId
222
+ }, clientOptions);
58
223
  return {
59
- state: 'succeeded',
60
- providerPaymentId: order.id,
61
- providerOrderId: order.id,
62
- providerCaptureId: capture.id,
63
- nextAction: {
64
- kind: 'completed'
224
+ eventId: event.id,
225
+ eventType: event.event_type,
226
+ refundOperationId: refund.id,
227
+ refund: snapshot,
228
+ summary: {
229
+ amountMinor: amount,
230
+ currency
65
231
  }
66
232
  };
67
233
  }
68
- if (capture?.status === 'FAILED' || capture?.status === 'DECLINED') {
234
+ if (event.event_type.startsWith('PAYMENT.CAPTURE.')) {
235
+ const orderId = readNestedString(resource, ['supplementaryData', 'relatedIds', 'orderId']);
236
+ if (!orderId) this.app.throw(400, 'PayPal capture webhook has no order identifier');
237
+ const order = await this._gateway(clientOptions).getOrder(this._gatewayOptions(clientOptions), {
238
+ id: orderId
239
+ });
240
+ const input = this._inputFromOrder(order, orderId);
241
+ const payment = this._mapOrder(order, input, clientOptions);
242
+ if (!['succeeded', 'failed', 'cancelled'].includes(payment.state)) {
243
+ this.app.throw(400, 'PayPal capture webhook is not terminal');
244
+ }
245
+ if (payment.providerCaptureId && payment.providerCaptureId !== resourceId) {
246
+ this.app.throw(409, 'PayPal capture webhook conflicts with order capture');
247
+ }
69
248
  return {
70
- state: 'failed',
71
- providerPaymentId: order.id,
72
- providerOrderId: order.id
249
+ eventId: event.id,
250
+ eventType: event.event_type,
251
+ paymentSessionId: input.paymentSessionId,
252
+ payment,
253
+ summary: {
254
+ amountMinor: amount,
255
+ currency
256
+ }
73
257
  };
74
258
  }
75
- if (order.status === OrderStatus.Voided) {
76
- return {
77
- state: 'cancelled',
78
- providerPaymentId: order.id,
79
- providerOrderId: order.id
80
- };
259
+ this.app.throw(400, 'PayPal webhook event type is unsupported');
260
+ }
261
+ _inputFromOrder(order, providerOrderId) {
262
+ const orderRecord = asRecord(order);
263
+ const unit = asArray(readField(orderRecord, 'purchaseUnits', 'purchase_units'))[0];
264
+ const unitRecord = asRecord(unit);
265
+ const customId = readString(readField(unitRecord, 'customId', 'custom_id'));
266
+ const businessReference = readString(readField(unitRecord, 'invoiceId', 'invoice_id'));
267
+ const amountMinor = parsePaypalAmount(readField(unitRecord, 'amount'));
268
+ const currency = parsePaypalCurrency(readField(unitRecord, 'amount'));
269
+ if (!customId || !businessReference || amountMinor === undefined || !currency) {
270
+ this.app.throw(400, 'PayPal order is not correlated');
81
271
  }
82
- if (capture?.status === 'PENDING') {
272
+ return {
273
+ paymentSessionId: customId,
274
+ businessReference,
275
+ idempotencyKey: '',
276
+ amountMinor,
277
+ currency,
278
+ providerOrderId
279
+ };
280
+ }
281
+ _mapOrder(order, input, clientOptions) {
282
+ const orderRecord = asRecord(order);
283
+ const orderId = readString(orderRecord.id);
284
+ if (!orderId || orderId !== input.providerOrderId) {
285
+ this.app.throw(409, 'PayPal order identifier conflicts');
286
+ }
287
+ const units = asArray(readField(orderRecord, 'purchaseUnits', 'purchase_units'));
288
+ if (units.length !== 1) this.app.throw(409, 'PayPal order has an invalid purchase-unit count');
289
+ const unit = asRecord(units[0]);
290
+ if (readString(readField(unit, 'customId', 'custom_id')) !== String(input.paymentSessionId) || readString(readField(unit, 'invoiceId', 'invoice_id')) !== input.businessReference || parsePaypalAmount(readField(unit, 'amount')) !== input.amountMinor || parsePaypalCurrency(readField(unit, 'amount')) !== input.currency) {
291
+ this.app.throw(409, 'PayPal order facts conflict with the payment session');
292
+ }
293
+ this._assertMerchant(unit, clientOptions);
294
+ const captures = asArray(readField(asRecord(readField(unit, 'payments')), 'captures'));
295
+ if (captures.length > 1) this.app.throw(409, 'PayPal order has multiple captures');
296
+ const capture = asRecord(captures[0]);
297
+ const captureId = readString(capture.id);
298
+ const captureStatus = readString(capture.status);
299
+ if (captureId) {
300
+ if (parsePaypalAmount(capture.amount) !== input.amountMinor || parsePaypalCurrency(capture.amount) !== input.currency) {
301
+ this.app.throw(409, 'PayPal capture facts conflict with the payment session');
302
+ }
303
+ if (captureStatus === 'COMPLETED') {
304
+ return {
305
+ state: 'succeeded',
306
+ providerPaymentId: orderId,
307
+ providerOrderId: orderId,
308
+ providerCaptureId: captureId,
309
+ nextAction: {
310
+ kind: 'completed'
311
+ }
312
+ };
313
+ }
314
+ if (captureStatus === 'FAILED' || captureStatus === 'DECLINED') {
315
+ return {
316
+ state: 'failed',
317
+ providerPaymentId: orderId,
318
+ providerOrderId: orderId,
319
+ providerCaptureId: captureId
320
+ };
321
+ }
322
+ if (captureStatus === 'PENDING') {
323
+ return {
324
+ state: 'processing',
325
+ providerPaymentId: orderId,
326
+ providerOrderId: orderId,
327
+ providerCaptureId: captureId
328
+ };
329
+ }
330
+ }
331
+ if (orderRecord.status === OrderStatus.Voided) {
83
332
  return {
84
- state: 'processing',
85
- providerPaymentId: order.id,
86
- providerOrderId: order.id
333
+ state: 'cancelled',
334
+ providerPaymentId: orderId,
335
+ providerOrderId: orderId
87
336
  };
88
337
  }
89
338
  return {
90
339
  state: 'requires_action',
91
- providerPaymentId: order.id,
92
- providerOrderId: order.id
340
+ providerPaymentId: orderId,
341
+ providerOrderId: orderId
93
342
  };
94
343
  }
95
- async createRefund(input, clientOptions) {
96
- const payments = new PaymentsController(this._createClient(clientOptions));
97
- const response = await payments.refundCapturedPayment({
98
- captureId: input.providerCaptureId,
99
- paypalRequestId: input.idempotencyKey,
100
- body: {
101
- amount: {
102
- currencyCode: input.currency,
103
- value: formatMinorAmount(input.amountMinor, input.currency)
104
- }
105
- }
106
- });
107
- return mapRefund(response.result?.status, response.result?.id);
344
+ _mapRefund(refund, input, clientOptions) {
345
+ const record = asRecord(refund);
346
+ const providerRefundId = readString(record.id);
347
+ if (!providerRefundId) this.app.throw(502, 'PayPal refund returned no identifier');
348
+ if (input.providerRefundId && input.providerRefundId !== providerRefundId || readString(readField(record, 'customId', 'custom_id')) !== String(input.refundOperationId) || readString(readField(record, 'invoiceId', 'invoice_id')) !== input.businessReference || parsePaypalAmount(record.amount) !== input.amountMinor || parsePaypalCurrency(record.amount) !== input.currency) {
349
+ this.app.throw(409, 'PayPal refund facts conflict with the refund operation');
350
+ }
351
+ this._assertMerchant(record, clientOptions);
352
+ return mapRefund(readString(record.status), providerRefundId);
108
353
  }
109
- async queryRefund(_input, _clientOptions) {
110
- this.app.throw(501, 'PayPal refund query requires a persisted provider refund identifier');
354
+ _gateway(clientOptions) {
355
+ return clientOptions.gateway ?? createPaypalGateway(this.bean.core.fetch);
111
356
  }
112
- async verifyWebhook(_input, _clientOptions) {
113
- this.app.throw(501, 'PayPal webhook verification requires configured webhook verification');
357
+ _gatewayOptions(clientOptions) {
358
+ const {
359
+ clientId,
360
+ clientSecret
361
+ } = clientOptions.secretCredential;
362
+ const webhookId = clientOptions.webhookId;
363
+ if (!clientId || !clientSecret || !webhookId) {
364
+ this.app.throw(503, 'PayPal is not fully configured');
365
+ }
366
+ return {
367
+ environment: clientOptions.environment,
368
+ clientId,
369
+ clientSecret,
370
+ webhookId
371
+ };
372
+ }
373
+ _throwGatewayError(error) {
374
+ if (error instanceof PaypalGatewayError) this.app.throw(error.status, error.message);
375
+ throw error;
114
376
  }
115
- _createClient(clientOptions) {
377
+ _assertReady(clientOptions) {
116
378
  const {
117
379
  clientId,
118
380
  clientSecret
119
381
  } = clientOptions.secretCredential;
120
- if (!clientId || !clientSecret) this.app.throw(503, 'PayPal client credentials are not configured');
121
- return new Client({
122
- clientCredentialsAuthCredentials: {
123
- oAuthClientId: clientId,
124
- oAuthClientSecret: clientSecret
125
- },
126
- timeout: 0,
127
- environment: clientOptions.environment === 'live' ? Environment.Production : Environment.Sandbox
128
- });
382
+ if (!clientId || !clientSecret || !clientOptions.webhookId || !clientOptions.merchantReference) {
383
+ this.app.throw(503, 'PayPal is not fully configured');
384
+ }
385
+ }
386
+ _assertMerchant(value, clientOptions) {
387
+ const merchantId = readNestedString(value, ['payee', 'merchantId']) ?? readNestedString(value, ['payee', 'merchant_id']) ?? readNestedString(value, ['sellerReceivableBreakdown', 'payee', 'merchantId']) ?? readNestedString(value, ['seller_receivable_breakdown', 'payee', 'merchant_id']);
388
+ if (!merchantId || merchantId !== clientOptions.merchantReference) {
389
+ this.app.throw(409, 'PayPal merchant reference conflicts');
390
+ }
129
391
  }
130
392
  };
131
393
  PayProviderPaypal = __decorate([PayProvider({
@@ -142,12 +404,13 @@ PayProviderPaypal = __decorate([PayProvider({
142
404
  },
143
405
  clients: {
144
406
  default: {
145
- environment: 'sandbox',
407
+ environment: app.meta.env.PAYPAL_ENVIRONMENT,
146
408
  secretCredential: {
147
409
  clientId: app.meta.env.PAYPAL_CLIENT_ID,
148
410
  clientSecret: app.meta.env.PAYPAL_CLIENT_SECRET
149
411
  },
150
- webhookId: app.meta.env.PAYPAL_WEBHOOK_ID
412
+ webhookId: app.meta.env.PAYPAL_WEBHOOK_ID,
413
+ merchantReference: app.meta.env.PAYPAL_MERCHANT_REFERENCE
151
414
  }
152
415
  }
153
416
  }), BeanInfo({
@@ -177,6 +440,49 @@ function mapRefund(status, providerRefundId) {
177
440
  providerRefundId
178
441
  };
179
442
  }
443
+ function asRecord(value) {
444
+ return value && typeof value === 'object' ? value : {};
445
+ }
446
+ function asArray(value) {
447
+ return Array.isArray(value) ? value : [];
448
+ }
449
+ function readString(value) {
450
+ return typeof value === 'string' && value ? value : undefined;
451
+ }
452
+ function readField(record, ...keys) {
453
+ for (const key of keys) {
454
+ if (record[key] !== undefined) return record[key];
455
+ }
456
+ return undefined;
457
+ }
458
+ function readNestedString(value, path) {
459
+ let current = value;
460
+ for (const key of path) {
461
+ const record = asRecord(current);
462
+ current = record[key] ?? record[camelToSnake(key)];
463
+ }
464
+ return readString(current);
465
+ }
466
+ function camelToSnake(value) {
467
+ return value.replace(/[A-Z]/g, character => `_${character.toLowerCase()}`);
468
+ }
469
+ function parsePaypalAmount(value) {
470
+ const amount = asRecord(value);
471
+ if (readString(readField(amount, 'currencyCode', 'currency_code')) !== 'USD') return undefined;
472
+ const decimal = readString(amount.value);
473
+ if (!decimal || !/^\d+\.\d{2}$/.test(decimal)) return undefined;
474
+ const [whole, fractional] = decimal.split('.');
475
+ const result = Number(whole) * 100 + Number(fractional);
476
+ return Number.isSafeInteger(result) ? result : undefined;
477
+ }
478
+ function parsePaypalCurrency(value) {
479
+ const amount = asRecord(value);
480
+ const currency = readString(readField(amount, 'currencyCode', 'currency_code'));
481
+ return currency === 'USD' ? currency : undefined;
482
+ }
483
+ function isRefundEvent(eventType) {
484
+ return eventType === 'PAYMENT.CAPTURE.REFUNDED' || eventType.startsWith('PAYMENT.REFUND.');
485
+ }
180
486
 
181
487
  let ScopeModulePayPaypal = class ScopeModulePayPaypal extends BeanScopeBase {};
182
488
  ScopeModulePayPaypal = __decorate([Scope(), BeanInfo({
@@ -184,5 +490,5 @@ ScopeModulePayPaypal = __decorate([Scope(), BeanInfo({
184
490
  })], ScopeModulePayPaypal);
185
491
  /** scope: end */
186
492
 
187
- export { PayProviderPaypal, ScopeModulePayPaypal };
493
+ export { PayProviderPaypal, PaypalGatewayError, ScopeModulePayPaypal, createPaypalGateway };
188
494
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/bean/payProvider.paypal.ts","../src/.metadata/index.ts"],"sourcesContent":[null,null],"names":["app","useApp","PayProviderPaypal","BeanBase","startPayment","input","clientOptions","providerOrderId","queryPayment","returnUrl","cancelUrl","throw","orders","OrdersController","_createClient","response","createOrder","paypalRequestId","idempotencyKey","body","intent","CheckoutPaymentIntent","Capture","applicationContext","purchaseUnits","customId","String","paymentSessionId","invoiceId","businessReference","amount","currencyCode","currency","value","formatMinorAmount","amountMinor","order","result","approvalUrl","links","find","item","rel","href","id","state","providerPaymentId","nextAction","kind","url","getOrder","capture","payments","captures","status","providerCaptureId","OrderStatus","Voided","createRefund","PaymentsController","refundCapturedPayment","captureId","mapRefund","queryRefund","_input","_clientOptions","verifyWebhook","clientId","clientSecret","secretCredential","Client","clientCredentialsAuthCredentials","oAuthClientId","oAuthClientSecret","timeout","environment","Environment","Production","Sandbox","__decorate","PayProvider","base","capabilities","redirectCheckout","embeddedCheckout","automaticCapture","manualCapture","refunds","partialRefunds","webhooks","clients","default","meta","env","PAYPAL_CLIENT_ID","PAYPAL_CLIENT_SECRET","webhookId","PAYPAL_WEBHOOK_ID","__z_BeanInfo","module","Number","isSafeInteger","Error","Math","floor","padStart","providerRefundId","ScopeModulePayPaypal","BeanScopeBase","Scope"],"mappings":";;;;;;AA+BA,MAAMA,GAAG,GAAGC,MAAM,EAAE;AA8Bb,IAAMC,iBAAiB,GAAvB,MAAMA,iBACX,SAAQC,QAAQ,CAAA;AAGhB,EAAA,MAAMC,YAAYA,CAChBC,KAA+B,EAC/BC,aAA8C,EAAA;AAE9C,IAAA,IAAID,KAAK,CAACE,eAAe,EAAE,OAAO,MAAM,IAAI,CAACC,YAAY,CAACH,KAAK,EAAEC,aAAa,CAAC;IAC/E,IAAI,CAACD,KAAK,CAACI,SAAS,IAAI,CAACJ,KAAK,CAACK,SAAS,EAAE;MACxC,IAAI,CAACV,GAAG,CAACW,KAAK,CAAC,GAAG,EAAE,gDAAgD,CAAC;AACvE,IAAA;IACA,MAAMC,MAAM,GAAG,IAAIC,gBAAgB,CAAC,IAAI,CAACC,aAAa,CAACR,aAAa,CAAC,CAAC;AACtE,IAAA,MAAMS,QAAQ,GAAG,MAAMH,MAAM,CAACI,WAAW,CAAC;MACxCC,eAAe,EAAEZ,KAAK,CAACa,cAAc;AACrCC,MAAAA,IAAI,EAAE;QACJC,MAAM,EAAEC,qBAAqB,CAACC,OAAO;AACrCC,QAAAA,kBAAkB,EAAE;UAAEd,SAAS,EAAEJ,KAAK,CAACI,SAAS;UAAEC,SAAS,EAAEL,KAAK,CAACK;SAAW;AAC9Ec,QAAAA,aAAa,EAAE,CACb;AACEC,UAAAA,QAAQ,EAAEC,MAAM,CAACrB,KAAK,CAACsB,gBAAgB,CAAC;UACxCC,SAAS,EAAEvB,KAAK,CAACwB,iBAAiB;AAClCC,UAAAA,MAAM,EAAE;YACNC,YAAY,EAAE1B,KAAK,CAAC2B,QAAQ;YAC5BC,KAAK,EAAEC,iBAAiB,CAAC7B,KAAK,CAAC8B,WAAW,EAAE9B,KAAK,CAAC2B,QAAQ;AAC3D;SACF;AAEJ;AACO,KAAA,CAAC;AACX,IAAA,MAAMI,KAAK,GAAGrB,QAAQ,CAACsB,MAAM;AAC7B,IAAA,MAAMC,WAAW,GAAGF,KAAK,EAAEG,KAAK,EAAEC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,GAAG,KAAK,SAAS,CAAC,EAAEC,IAAI;AAC5E,IAAA,IAAI,CAACP,KAAK,EAAEQ,EAAE,IAAI,CAACN,WAAW,EAAE,IAAI,CAACtC,GAAG,CAACW,KAAK,CAAC,GAAG,EAAE,yCAAyC,CAAC;IAC9F,OAAO;AACLkC,MAAAA,KAAK,EAAE,iBAAiB;MACxBC,iBAAiB,EAAEV,KAAK,CAACQ,EAAE;MAC3BrC,eAAe,EAAE6B,KAAK,CAACQ,EAAE;AACzBG,MAAAA,UAAU,EAAE;AAAEC,QAAAA,IAAI,EAAE,UAAU;AAAEC,QAAAA,GAAG,EAAEX;AAAW;KACjD;AACH,EAAA;AAEA,EAAA,MAAM9B,YAAYA,CAChBH,KAA+B,EAC/BC,aAA8C,EAAA;AAE9C,IAAA,IAAI,CAACD,KAAK,CAACE,eAAe,EAAE,OAAO;AAAEsC,MAAAA,KAAK,EAAE;KAAmB;IAC/D,MAAMjC,MAAM,GAAG,IAAIC,gBAAgB,CAAC,IAAI,CAACC,aAAa,CAACR,aAAa,CAAC,CAAC;AACtE,IAAA,MAAMS,QAAQ,GAAG,MAAMH,MAAM,CAACsC,QAAQ,CAAC;MAAEN,EAAE,EAAEvC,KAAK,CAACE;AAAe,KAAE,CAAC;AACrE,IAAA,MAAM6B,KAAK,GAAGrB,QAAQ,CAACsB,MAAM;AAC7B,IAAA,IAAI,CAACD,KAAK,EAAEQ,EAAE,EAAE,IAAI,CAAC5C,GAAG,CAACW,KAAK,CAAC,GAAG,EAAE,sCAAsC,CAAC;AAC3E,IAAA,MAAMwC,OAAO,GAAGf,KAAK,CAACZ,aAAa,GAAG,CAAC,CAAC,EAAE4B,QAAQ,EAAEC,QAAQ,GAAG,CAAC,CAAC;AACjE,IAAA,IAAIF,OAAO,EAAEG,MAAM,KAAK,WAAW,EAAE;MACnC,OAAO;AACLT,QAAAA,KAAK,EAAE,WAAW;QAClBC,iBAAiB,EAAEV,KAAK,CAACQ,EAAE;QAC3BrC,eAAe,EAAE6B,KAAK,CAACQ,EAAE;QACzBW,iBAAiB,EAAEJ,OAAO,CAACP,EAAE;AAC7BG,QAAAA,UAAU,EAAE;AAAEC,UAAAA,IAAI,EAAE;AAAW;OAChC;AACH,IAAA;IACA,IAAIG,OAAO,EAAEG,MAAM,KAAK,QAAQ,IAAIH,OAAO,EAAEG,MAAM,KAAK,UAAU,EAAE;MAClE,OAAO;AAAET,QAAAA,KAAK,EAAE,QAAQ;QAAEC,iBAAiB,EAAEV,KAAK,CAACQ,EAAE;QAAErC,eAAe,EAAE6B,KAAK,CAACQ;OAAI;AACpF,IAAA;AACA,IAAA,IAAIR,KAAK,CAACkB,MAAM,KAAKE,WAAW,CAACC,MAAM,EAAE;MACvC,OAAO;AAAEZ,QAAAA,KAAK,EAAE,WAAW;QAAEC,iBAAiB,EAAEV,KAAK,CAACQ,EAAE;QAAErC,eAAe,EAAE6B,KAAK,CAACQ;OAAI;AACvF,IAAA;AACA,IAAA,IAAIO,OAAO,EAAEG,MAAM,KAAK,SAAS,EAAE;MACjC,OAAO;AAAET,QAAAA,KAAK,EAAE,YAAY;QAAEC,iBAAiB,EAAEV,KAAK,CAACQ,EAAE;QAAErC,eAAe,EAAE6B,KAAK,CAACQ;OAAI;AACxF,IAAA;IACA,OAAO;AAAEC,MAAAA,KAAK,EAAE,iBAAiB;MAAEC,iBAAiB,EAAEV,KAAK,CAACQ,EAAE;MAAErC,eAAe,EAAE6B,KAAK,CAACQ;KAAI;AAC7F,EAAA;AAEA,EAAA,MAAMc,YAAYA,CAChBrD,KAA8B,EAC9BC,aAA8C,EAAA;IAE9C,MAAM8C,QAAQ,GAAG,IAAIO,kBAAkB,CAAC,IAAI,CAAC7C,aAAa,CAACR,aAAa,CAAC,CAAC;AAC1E,IAAA,MAAMS,QAAQ,GAAG,MAAMqC,QAAQ,CAACQ,qBAAqB,CAAC;MACpDC,SAAS,EAAExD,KAAK,CAACkD,iBAAiB;MAClCtC,eAAe,EAAEZ,KAAK,CAACa,cAAc;AACrCC,MAAAA,IAAI,EAAE;AACJW,QAAAA,MAAM,EAAE;UACNC,YAAY,EAAE1B,KAAK,CAAC2B,QAAQ;UAC5BC,KAAK,EAAEC,iBAAiB,CAAC7B,KAAK,CAAC8B,WAAW,EAAE9B,KAAK,CAAC2B,QAAQ;AAC3D;AACF;AACO,KAAA,CAAC;AACX,IAAA,OAAO8B,SAAS,CAAC/C,QAAQ,CAACsB,MAAM,EAAEiB,MAAM,EAAEvC,QAAQ,CAACsB,MAAM,EAAEO,EAAE,CAAC;AAChE,EAAA;AAEA,EAAA,MAAMmB,WAAWA,CACfC,MAA+B,EAC/BC,cAA+C,EAAA;IAE/C,IAAI,CAACjE,GAAG,CAACW,KAAK,CAAC,GAAG,EAAE,qEAAqE,CAAC;AAC5F,EAAA;AAEA,EAAA,MAAMuD,aAAaA,CACjBF,MAAgC,EAChCC,cAA+C,EAAA;IAE/C,IAAI,CAACjE,GAAG,CAACW,KAAK,CAAC,GAAG,EAAE,sEAAsE,CAAC;AAC7F,EAAA;EAEQG,aAAaA,CAACR,aAA8C,EAAA;IAClE,MAAM;MAAE6D,QAAQ;AAAEC,MAAAA;KAAc,GAAG9D,aAAa,CAAC+D,gBAAgB;AACjE,IAAA,IAAI,CAACF,QAAQ,IAAI,CAACC,YAAY,EAC5B,IAAI,CAACpE,GAAG,CAACW,KAAK,CAAC,GAAG,EAAE,8CAA8C,CAAC;IACrE,OAAO,IAAI2D,MAAM,CAAC;AAChBC,MAAAA,gCAAgC,EAAE;AAChCC,QAAAA,aAAa,EAAEL,QAAQ;AACvBM,QAAAA,iBAAiB,EAAEL;OACpB;AACDM,MAAAA,OAAO,EAAE,CAAC;AACVC,MAAAA,WAAW,EACTrE,aAAa,CAACqE,WAAW,KAAK,MAAM,GAAGC,WAAW,CAACC,UAAU,GAAGD,WAAW,CAACE;AAC/E,KAAA,CAAC;AACJ,EAAA;;AArHW5E,iBAAiB,GAAA6E,UAAA,CAAA,CAvB7BC,WAAW,CAA4B;AACtCC,EAAAA,IAAI,EAAE;AACJC,IAAAA,YAAY,EAAE;AACZC,MAAAA,gBAAgB,EAAE,IAAI;AACtBC,MAAAA,gBAAgB,EAAE,KAAK;AACvBC,MAAAA,gBAAgB,EAAE,IAAI;AACtBC,MAAAA,aAAa,EAAE,KAAK;AACpBC,MAAAA,OAAO,EAAE,IAAI;AACbC,MAAAA,cAAc,EAAE,IAAI;AACpBC,MAAAA,QAAQ,EAAE;AACX;GACF;AACDC,EAAAA,OAAO,EAAE;AACPC,IAAAA,OAAO,EAAE;AACPhB,MAAAA,WAAW,EAAE,SAAS;AACtBN,MAAAA,gBAAgB,EAAE;AAChBF,QAAAA,QAAQ,EAAEnE,GAAG,CAAC4F,IAAI,CAACC,GAAG,CAACC,gBAAgB;AACvC1B,QAAAA,YAAY,EAAEpE,GAAG,CAAC4F,IAAI,CAACC,GAAG,CAACE;OAC5B;AACDC,MAAAA,SAAS,EAAEhG,GAAG,CAAC4F,IAAI,CAACC,GAAG,CAACI;AACzB;AACF;CACF,CAAC,EAAAC,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACW,EAAAjG,iBAAiB,CAsH7B;AAED,SAASgC,iBAAiBA,CAACC,WAAmB,EAAEH,QAAgB,EAAA;AAC9D,EAAA,IAAI,CAACoE,MAAM,CAACC,aAAa,CAAClE,WAAW,CAAC,IAAIA,WAAW,GAAG,CAAC,IAAIH,QAAQ,KAAK,KAAK,EAAE;AAC/E,IAAA,MAAM,IAAIsE,KAAK,CAAC,yDAAyD,CAAC;AAC5E,EAAA;EACA,OAAO,CAAA,EAAGC,IAAI,CAACC,KAAK,CAACrE,WAAW,GAAG,GAAG,CAAC,CAAA,CAAA,EAAIT,MAAM,CAACS,WAAW,GAAG,GAAG,CAAC,CAACsE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE;AACzF;AAEA,SAAS3C,SAASA,CAACR,MAAe,EAAEoD,gBAAyB,EAAA;AAC3D,EAAA,IAAIpD,MAAM,KAAK,WAAW,EAAE,OAAO;AAAET,IAAAA,KAAK,EAAE,WAAW;AAAE6D,IAAAA;GAAkB;AAC3E,EAAA,IAAIpD,MAAM,KAAK,QAAQ,EAAE,OAAO;AAAET,IAAAA,KAAK,EAAE,QAAQ;AAAE6D,IAAAA;GAAkB;AACrE,EAAA,IAAIpD,MAAM,KAAK,WAAW,EAAE,OAAO;AAAET,IAAAA,KAAK,EAAE,WAAW;AAAE6D,IAAAA;GAAkB;EAC3E,OAAO;AAAE7D,IAAAA,KAAK,EAAE,SAAS;AAAE6D,IAAAA;GAAkB;AAC/C;;AC3JO,IAAMC,oBAAoB,GAA1B,MAAMA,oBAAqB,SAAQC,aAAa,CAAA;AAA1CD,oBAAoB,GAAA5B,UAAA,CAAA,CADhC8B,KAAK,EAAE,EAAAX,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACK,EAAAQ,oBAAoB,CAAyB;AAuB1D;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/lib/paypalGateway.ts","../src/bean/payProvider.paypal.ts","../src/.metadata/index.ts"],"sourcesContent":[null,null,null],"names":["PaypalGatewayError","Error","constructor","status","message","createPaypalGateway","fetcher","createOrder","options","input","OrdersController","createClient","result","captureOrder","getOrder","refundCapturedPayment","PaymentsController","getRefund","verifyWebhookSignature","transmissionId","getHeader","headers","transmissionTime","certUrl","authAlgo","transmissionSig","apiBaseUrl","environment","tokenResponse","method","Buffer","from","clientId","clientSecret","toString","body","token","asRecord","ok","json","undefined","accessToken","readString","access_token","response","JSON","stringify","auth_algo","cert_url","transmission_id","transmission_sig","transmission_time","webhook_id","webhookId","webhook_event","verification_status","Client","clientCredentialsAuthCredentials","oAuthClientId","oAuthClientSecret","timeout","Environment","Production","Sandbox","value","key","Array","isArray","app","useApp","PaypalWebhookSchema","z","object","id","string","min","max","event_type","resource","record","unknown","PayProviderPaypal","BeanBase","startPayment","clientOptions","providerOrderId","queryPayment","returnUrl","cancelUrl","throw","_assertReady","order","_gateway","_gatewayOptions","paypalRequestId","idempotencyKey","intent","CheckoutPaymentIntent","Capture","applicationContext","purchaseUnits","customId","String","paymentSessionId","invoiceId","businessReference","amount","currencyCode","currency","formatMinorAmount","amountMinor","orderRecord","approvalUrl","asArray","links","map","find","item","rel","href","orderId","state","providerPaymentId","nextAction","kind","url","confirmPayment","_mapOrder","createRefund","refund","captureId","providerCaptureId","refundOperationId","_mapRefund","queryRefund","providerRefundId","refundId","verifyWebhook","webhook","safeParse","success","error","_throwGatewayError","_mapWebhook","data","event","parsePaypalAmount","parsePaypalCurrency","resourceId","isRefundEvent","readField","readNestedString","$scope","pay","model","refundOperation","getById","session","paymentSession","snapshot","eventId","eventType","summary","startsWith","_inputFromOrder","payment","includes","unit","unitRecord","units","length","_assertMerchant","captures","capture","captureStatus","OrderStatus","Voided","mapRefund","gateway","bean","core","fetch","secretCredential","merchantReference","merchantId","__decorate","PayProvider","base","capabilities","redirectCheckout","embeddedCheckout","automaticCapture","manualCapture","refunds","partialRefunds","webhooks","clients","default","meta","env","PAYPAL_ENVIRONMENT","PAYPAL_CLIENT_ID","PAYPAL_CLIENT_SECRET","PAYPAL_WEBHOOK_ID","PAYPAL_MERCHANT_REFERENCE","__z_BeanInfo","module","Number","isSafeInteger","Math","floor","padStart","keys","path","current","camelToSnake","replace","character","toLowerCase","decimal","test","whole","fractional","split","ScopeModulePayPaypal","BeanScopeBase","Scope"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export {};
1
+ export * from './paypalGateway.ts';
2
2
  //# sourceMappingURL=index.d.ts.map