awesome-node-checkout 2.0.0 → 2.1.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +280 -2
  3. package/dist/adapters/express/index.d.ts +69 -1
  4. package/dist/adapters/express/index.d.ts.map +1 -1
  5. package/dist/adapters/express/index.js +147 -2
  6. package/dist/adapters/express/index.js.map +1 -1
  7. package/dist/checkout-configurator.d.ts +106 -0
  8. package/dist/checkout-configurator.d.ts.map +1 -1
  9. package/dist/checkout-configurator.js +515 -0
  10. package/dist/checkout-configurator.js.map +1 -1
  11. package/dist/events/checkout-event-bus.d.ts +11 -1
  12. package/dist/events/checkout-event-bus.d.ts.map +1 -1
  13. package/dist/events/checkout-event-bus.js.map +1 -1
  14. package/dist/index.d.ts +5 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +8 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/interfaces/mandate-provider.interface.d.ts +40 -0
  19. package/dist/interfaces/mandate-provider.interface.d.ts.map +1 -0
  20. package/dist/interfaces/mandate-provider.interface.js +18 -0
  21. package/dist/interfaces/mandate-provider.interface.js.map +1 -0
  22. package/dist/models/checkout-config.model.d.ts +16 -0
  23. package/dist/models/checkout-config.model.d.ts.map +1 -1
  24. package/dist/models/errors.d.ts +1 -1
  25. package/dist/models/errors.d.ts.map +1 -1
  26. package/dist/models/errors.js.map +1 -1
  27. package/dist/models/mandate.model.d.ts +166 -0
  28. package/dist/models/mandate.model.d.ts.map +1 -0
  29. package/dist/models/mandate.model.js +19 -0
  30. package/dist/models/mandate.model.js.map +1 -0
  31. package/dist/providers/nexi/nexi.provider.d.ts +125 -1
  32. package/dist/providers/nexi/nexi.provider.d.ts.map +1 -1
  33. package/dist/providers/nexi/nexi.provider.js +652 -10
  34. package/dist/providers/nexi/nexi.provider.js.map +1 -1
  35. package/dist/providers/paypal/paypal.provider.d.ts +44 -1
  36. package/dist/providers/paypal/paypal.provider.d.ts.map +1 -1
  37. package/dist/providers/paypal/paypal.provider.js +519 -0
  38. package/dist/providers/paypal/paypal.provider.js.map +1 -1
  39. package/dist/providers/satispay/satispay.provider.d.ts +86 -1
  40. package/dist/providers/satispay/satispay.provider.d.ts.map +1 -1
  41. package/dist/providers/satispay/satispay.provider.js +417 -0
  42. package/dist/providers/satispay/satispay.provider.js.map +1 -1
  43. package/dist/utils/redact.d.ts +15 -0
  44. package/dist/utils/redact.d.ts.map +1 -0
  45. package/dist/utils/redact.js +60 -0
  46. package/dist/utils/redact.js.map +1 -0
  47. package/dist/utils/url.d.ts +12 -0
  48. package/dist/utils/url.d.ts.map +1 -0
  49. package/dist/utils/url.js +19 -0
  50. package/dist/utils/url.js.map +1 -0
  51. package/package.json +2 -2
@@ -5,6 +5,47 @@ const paypal_server_sdk_1 = require("@paypal/paypal-server-sdk");
5
5
  const base_payment_provider_abstract_1 = require("../../abstract/base-payment-provider.abstract");
6
6
  const parsing_util_1 = require("../../utils/parsing.util");
7
7
  const money_1 = require("../../utils/money");
8
+ const url_1 = require("../../utils/url");
9
+ const redact_1 = require("../../utils/redact");
10
+ const SETUP_NOT_MATCHING = 'Outcome does not match the pending setup';
11
+ const ORDER_NOT_MATCHING = 'Order does not match the pending setup';
12
+ const CAPTURED_AMOUNT_MISMATCH = 'Captured amount does not match';
13
+ const DUPLICATE_CHARGE = 'A charge with this chargeRef was already submitted; reconcile it in PayPal';
14
+ /** True when `value` + `currency` (as PayPal reports them) are `amount` + `expectedCurrency`. */
15
+ function sameMoney(value, currency, amount, expectedCurrency) {
16
+ if (typeof currency !== 'string' || typeof expectedCurrency !== 'string')
17
+ return false;
18
+ if (currency.trim().toUpperCase() !== expectedCurrency.trim().toUpperCase())
19
+ return false;
20
+ const parsed = (0, parsing_util_1.parseAmount)(value);
21
+ if (parsed === undefined)
22
+ return false;
23
+ try {
24
+ return (0, money_1.toMinorUnits)(parsed, expectedCurrency) === (0, money_1.toMinorUnits)(amount, expectedCurrency);
25
+ }
26
+ catch {
27
+ return false;
28
+ }
29
+ }
30
+ /** First purchase unit of an order, or undefined. */
31
+ function firstPurchaseUnit(order) {
32
+ const units = order?.purchaseUnits;
33
+ return Array.isArray(units) ? units[0] : undefined;
34
+ }
35
+ /** First capture of an order's first purchase unit, or undefined. */
36
+ /**
37
+ * The order with its vault token id scrubbed: used for every outcome that returns no mandate, since
38
+ * the core redacts only `mandate.providerMandateId` from events. A token that is not `VAULTED`
39
+ * (yet) may still become usable, so its id never goes out in `raw`.
40
+ */
41
+ function withoutVaultId(order) {
42
+ const id = order?.paymentSource?.paypal?.attributes?.vault?.id;
43
+ return typeof id === 'string' && id !== '' ? (0, redact_1.redactSecret)(order, id) : order;
44
+ }
45
+ function firstCapture(order) {
46
+ const captures = firstPurchaseUnit(order)?.payments?.captures;
47
+ return Array.isArray(captures) ? captures[0] : undefined;
48
+ }
8
49
  /**
9
50
  * PayPal Checkout provider.
10
51
  * Flow: `redirect` — creates an order, redirects the user to PayPal,
@@ -29,6 +70,7 @@ class PayPalProvider extends base_payment_provider_abstract_1.BasePaymentProvide
29
70
  });
30
71
  this.ordersController = new paypal_server_sdk_1.OrdersController(this.client);
31
72
  this.paymentsController = new paypal_server_sdk_1.PaymentsController(this.client);
73
+ this.vaultController = new paypal_server_sdk_1.VaultController(this.client);
32
74
  }
33
75
  async createPayment(request) {
34
76
  try {
@@ -223,6 +265,483 @@ class PayPalProvider extends base_payment_provider_abstract_1.BasePaymentProvide
223
265
  }
224
266
  return this.executePayment(paymentId);
225
267
  }
268
+ // -------------------------------------------------------------------------
269
+ // Recurring payments (mandates): PayPal Vault, saved during the first purchase
270
+ // -------------------------------------------------------------------------
271
+ /**
272
+ * HTTP status and PayPal issue of a failed SDK call: `statusCode` of the SDK `ApiError`, and
273
+ * `details[0].issue` (or `name`) of its parsed `result` or JSON `body`. Both are undefined for
274
+ * a network error. Never throws.
275
+ */
276
+ apiIssue(err) {
277
+ try {
278
+ if (err === null || typeof err !== 'object')
279
+ return {};
280
+ const e = err;
281
+ const status = typeof e.statusCode === 'number' && Number.isInteger(e.statusCode) ? e.statusCode : undefined;
282
+ let parsed = e.result;
283
+ if ((parsed === null || typeof parsed !== 'object') && typeof e.body === 'string') {
284
+ try {
285
+ parsed = JSON.parse(e.body);
286
+ }
287
+ catch {
288
+ parsed = undefined;
289
+ }
290
+ }
291
+ let issue;
292
+ if (parsed !== null && typeof parsed === 'object') {
293
+ const detail = Array.isArray(parsed.details) ? parsed.details[0] : undefined;
294
+ if (typeof detail?.issue === 'string' && detail.issue !== '')
295
+ issue = detail.issue;
296
+ else if (typeof parsed.name === 'string' && parsed.name !== '')
297
+ issue = parsed.name;
298
+ }
299
+ return { status, issue };
300
+ }
301
+ catch {
302
+ return {};
303
+ }
304
+ }
305
+ /**
306
+ * The PayPal error body only (name, message, debug_id, details): never the SDK error itself,
307
+ * which carries the request and its headers (bearer token).
308
+ */
309
+ apiErrorRaw(err) {
310
+ try {
311
+ const result = err?.result;
312
+ return result !== null && typeof result === 'object' ? result : undefined;
313
+ }
314
+ catch {
315
+ return undefined;
316
+ }
317
+ }
318
+ /**
319
+ * Starts a setup: a PayPal order with the first charge that also saves the PayPal wallet in the
320
+ * Vault (`store_in_vault: ON_SUCCESS`). `notifyUrl` is ignored (PayPal webhooks are out of scope).
321
+ */
322
+ async createMandate(request) {
323
+ try {
324
+ const body = {
325
+ intent: 'CAPTURE',
326
+ purchaseUnits: [
327
+ {
328
+ referenceId: request.orderId,
329
+ invoiceId: request.orderId,
330
+ customId: request.mandateRef,
331
+ description: request.description,
332
+ amount: {
333
+ currencyCode: request.currency,
334
+ value: (0, money_1.toMajorString)(request.amount, request.currency),
335
+ },
336
+ },
337
+ ],
338
+ paymentSource: {
339
+ paypal: {
340
+ attributes: {
341
+ vault: {
342
+ storeInVault: 'ON_SUCCESS',
343
+ usageType: 'MERCHANT',
344
+ customerType: (this.config.customerType ?? 'CONSUMER'),
345
+ usagePattern: 'SUBSCRIPTION_PREPAID',
346
+ description: request.description,
347
+ permitMultiplePaymentTokens: false,
348
+ },
349
+ },
350
+ experienceContext: {
351
+ returnUrl: (0, url_1.appendMandateRef)(request.returnUrl, request.mandateRef),
352
+ cancelUrl: (0, url_1.appendMandateRef)(request.cancelUrl, request.mandateRef),
353
+ shippingPreference: 'NO_SHIPPING',
354
+ userAction: 'PAY_NOW',
355
+ },
356
+ },
357
+ },
358
+ };
359
+ const { result: order } = await this.ordersController.createOrder({
360
+ body,
361
+ paypalRequestId: `setup-${request.orderId}`,
362
+ prefer: 'return=representation',
363
+ });
364
+ const orderId = typeof order?.id === 'string' && order.id !== '' ? order.id : undefined;
365
+ if (!orderId) {
366
+ return { success: false, error: 'PayPal did not return an order id', raw: order };
367
+ }
368
+ const approvalUrl = order.links?.find((l) => l.rel === 'payer-action' || l.rel === 'approve')?.href;
369
+ return {
370
+ success: true,
371
+ approvalUrl,
372
+ pending: {
373
+ provider: this.name,
374
+ mandateRef: request.mandateRef,
375
+ orderId: request.orderId,
376
+ amount: request.amount,
377
+ currency: request.currency,
378
+ providerRef: orderId,
379
+ createdAt: new Date().toISOString(),
380
+ },
381
+ raw: order,
382
+ };
383
+ }
384
+ catch (error) {
385
+ if ((0, money_1.isInvalidAmountError)(error))
386
+ return { success: false, error: error.message };
387
+ const { status } = this.apiIssue(error);
388
+ return {
389
+ success: false,
390
+ error: status !== undefined ? `PayPal refused the setup (HTTP ${status})` : 'Failed to create PayPal mandate setup',
391
+ raw: this.apiErrorRaw(error),
392
+ };
393
+ }
394
+ }
395
+ /**
396
+ * Confirms a setup: re-reads the order server-to-server, checks it against `pending`, captures
397
+ * it when approved (request id `capture-<orderId>`), then maps the first charge and the vault
398
+ * token. The PayPal order id is always `pending.providerRef`, never a query value. Safe to
399
+ * re-run with `{}`: a `COMPLETED` order is never captured again.
400
+ */
401
+ async confirmMandate(pending, input) {
402
+ const chargeRef = pending.orderId;
403
+ const notTerminal = (error, raw) => ({
404
+ success: false,
405
+ verified: false,
406
+ terminal: false,
407
+ firstCharge: { status: 'unknown', verified: false, chargeRef, error },
408
+ error,
409
+ ...(raw !== undefined ? { raw } : {}),
410
+ });
411
+ // 1. Binding: a return for another order must not touch this setup
412
+ const token = input?.query?.token;
413
+ if (token !== undefined && token !== null && token !== '' && token !== pending.providerRef) {
414
+ return notTerminal(SETUP_NOT_MATCHING);
415
+ }
416
+ // 2. Read before capturing
417
+ let order;
418
+ try {
419
+ ({ result: order } = await this.ordersController.getOrder({ id: pending.providerRef }));
420
+ }
421
+ catch (error) {
422
+ const { status } = this.apiIssue(error);
423
+ return notTerminal(status !== undefined ? `PayPal order could not be read (HTTP ${status})` : 'PayPal order could not be read', this.apiErrorRaw(error));
424
+ }
425
+ const pu = firstPurchaseUnit(order);
426
+ const matches = pu?.customId === pending.mandateRef &&
427
+ pu?.invoiceId === pending.orderId &&
428
+ sameMoney(pu?.amount?.value, pu?.amount?.currencyCode, pending.amount, pending.currency);
429
+ if (!matches) {
430
+ // Never captured: no money is taken for an order that is not this setup's
431
+ return {
432
+ success: false,
433
+ verified: true,
434
+ terminal: true,
435
+ firstCharge: { status: 'failed', verified: true, chargeRef, error: ORDER_NOT_MATCHING },
436
+ error: ORDER_NOT_MATCHING,
437
+ raw: withoutVaultId(order),
438
+ };
439
+ }
440
+ // 3. Act on the order status
441
+ const orderStatus = typeof order?.status === 'string' ? order.status : undefined;
442
+ switch (orderStatus) {
443
+ case 'APPROVED':
444
+ try {
445
+ ({ result: order } = await this.ordersController.captureOrder({
446
+ id: pending.providerRef,
447
+ paypalRequestId: `capture-${pending.orderId}`,
448
+ prefer: 'return=representation',
449
+ }));
450
+ }
451
+ catch (error) {
452
+ const { status, issue } = this.apiIssue(error);
453
+ if (status === undefined || issue !== 'ORDER_ALREADY_CAPTURED') {
454
+ return notTerminal(status !== undefined
455
+ ? `PayPal capture outcome unknown (HTTP ${status}${issue ? ` ${issue}` : ''})`
456
+ : 'PayPal capture outcome unknown', this.apiErrorRaw(error));
457
+ }
458
+ // A concurrent confirm captured it first: re-read its result
459
+ try {
460
+ ({ result: order } = await this.ordersController.getOrder({ id: pending.providerRef }));
461
+ }
462
+ catch (readError) {
463
+ return notTerminal('PayPal order could not be read after capture', this.apiErrorRaw(readError));
464
+ }
465
+ }
466
+ break;
467
+ case 'COMPLETED':
468
+ // Already captured by an earlier confirm: idempotent beyond the request-id window
469
+ break;
470
+ case 'CREATED':
471
+ case 'SAVED':
472
+ case 'PAYER_ACTION_REQUIRED':
473
+ // Not approved (yet): the customer may still approve, a cancel link must not end the setup
474
+ return {
475
+ success: false,
476
+ verified: true,
477
+ terminal: false,
478
+ firstCharge: { status: 'unknown', verified: true, chargeRef, error: 'ORDER_NOT_APPROVED' },
479
+ error: 'ORDER_NOT_APPROVED',
480
+ raw: withoutVaultId(order),
481
+ };
482
+ case 'VOIDED':
483
+ return {
484
+ success: false,
485
+ verified: true,
486
+ terminal: true,
487
+ firstCharge: { status: 'failed', verified: true, chargeRef, error: 'ORDER_VOIDED' },
488
+ error: 'ORDER_VOIDED',
489
+ raw: withoutVaultId(order),
490
+ };
491
+ default:
492
+ return notTerminal(`Unexpected PayPal order status ${orderStatus ?? 'missing'}`, withoutVaultId(order));
493
+ }
494
+ // 4. First charge
495
+ const firstCharge = this.mapSetupCapture(order, pending);
496
+ // 5. Mandate
497
+ const vault = order?.paymentSource?.paypal?.attributes?.vault;
498
+ if (vault?.status === 'VAULTED' && typeof vault.id === 'string' && vault.id !== '') {
499
+ return {
500
+ success: true,
501
+ verified: true,
502
+ terminal: true,
503
+ mandate: {
504
+ provider: this.name,
505
+ mandateRef: pending.mandateRef,
506
+ providerMandateId: vault.id,
507
+ status: 'active',
508
+ createdAt: new Date().toISOString(),
509
+ providerData: { customerId: vault.customer?.id ?? '' },
510
+ unverified: { payerEmail: order.paymentSource?.paypal?.emailAddress },
511
+ },
512
+ firstCharge,
513
+ raw: order,
514
+ };
515
+ }
516
+ // The money may have been captured: the app refunds it or treats it as a one-off payment.
517
+ // No mandate, so the core has no id to redact: a token still APPROVED/CREATED may become
518
+ // VAULTED later and must not reach the mandate.setup_failed event.
519
+ return {
520
+ success: false,
521
+ verified: true,
522
+ terminal: true,
523
+ firstCharge,
524
+ error: 'MANDATE_NOT_VAULTED',
525
+ raw: withoutVaultId(order),
526
+ };
527
+ }
528
+ /** Maps the first capture of a setup order (`chargeRef = pending.orderId`). */
529
+ mapSetupCapture(order, pending) {
530
+ const chargeRef = pending.orderId;
531
+ const cap = firstCapture(order);
532
+ const capStatus = typeof cap?.status === 'string' ? cap.status : undefined;
533
+ switch (capStatus) {
534
+ case 'COMPLETED':
535
+ if (!sameMoney(cap?.amount?.value, cap?.amount?.currencyCode, pending.amount, pending.currency)) {
536
+ return { status: 'unknown', verified: true, chargeRef, error: CAPTURED_AMOUNT_MISMATCH };
537
+ }
538
+ return {
539
+ status: 'succeeded',
540
+ verified: true,
541
+ chargeRef,
542
+ // The order id: refundPayment(order.id) resolves the capture from it
543
+ providerPaymentId: order.id,
544
+ amount: (0, parsing_util_1.parseAmount)(cap.amount.value),
545
+ currency: cap.amount.currencyCode,
546
+ };
547
+ case 'PENDING':
548
+ return { status: 'unknown', verified: true, chargeRef, providerPaymentId: order.id, error: 'CAPTURE_PENDING' };
549
+ case 'DECLINED':
550
+ case 'FAILED':
551
+ return { status: 'failed', verified: true, chargeRef, providerCode: capStatus, error: `Capture ${capStatus}` };
552
+ default:
553
+ return {
554
+ status: 'unknown',
555
+ verified: true,
556
+ chargeRef,
557
+ error: cap ? `Unexpected capture status ${capStatus ?? 'missing'}` : 'Payment capture not found',
558
+ };
559
+ }
560
+ }
561
+ /**
562
+ * Merchant-initiated charge on the vaulted PayPal wallet: a new order paid with the vault id,
563
+ * request id and invoice id `chargeRef`. Within PayPal's 6-hour request-id window a replay gets
564
+ * the original response; after it, PayPal refuses the duplicate invoice id (`unknown`,
565
+ * `DUPLICATE_INVOICE_ID`) when the account blocks multiple payments per invoice id. A replay
566
+ * while the original is still in progress (409 `PREVIOUS_REQUEST_IN_PROGRESS`), and a 408, are
567
+ * `unknown` too: the original may still take the money, so they are never a final `failed`.
568
+ */
569
+ async chargeMandate(mandate, charge) {
570
+ const chargeRef = charge.chargeRef;
571
+ let value;
572
+ try {
573
+ value = (0, money_1.toMajorString)(charge.amount, charge.currency);
574
+ }
575
+ catch (error) {
576
+ // Nothing was sent to PayPal
577
+ return {
578
+ status: 'failed',
579
+ verified: false,
580
+ chargeRef,
581
+ error: error instanceof Error ? error.message : 'Invalid amount',
582
+ };
583
+ }
584
+ let order;
585
+ try {
586
+ const body = {
587
+ intent: 'CAPTURE',
588
+ purchaseUnits: [
589
+ {
590
+ referenceId: chargeRef,
591
+ invoiceId: chargeRef,
592
+ customId: mandate.mandateRef,
593
+ description: charge.description,
594
+ amount: { currencyCode: charge.currency, value },
595
+ },
596
+ ],
597
+ paymentSource: {
598
+ paypal: {
599
+ vaultId: mandate.providerMandateId,
600
+ storedCredential: {
601
+ paymentInitiator: 'MERCHANT',
602
+ usage: 'SUBSEQUENT',
603
+ usagePattern: 'SUBSCRIPTION_PREPAID',
604
+ },
605
+ },
606
+ },
607
+ };
608
+ ({ result: order } = await this.ordersController.createOrder({
609
+ body,
610
+ paypalRequestId: chargeRef,
611
+ prefer: 'return=representation',
612
+ }));
613
+ }
614
+ catch (error) {
615
+ const { status, issue } = this.apiIssue(error);
616
+ const raw = this.apiErrorRaw(error);
617
+ if (status === undefined) {
618
+ return { status: 'unknown', verified: false, chargeRef, error: 'PayPal charge outcome unknown (network error)', raw };
619
+ }
620
+ if (status === 422 && issue === 'DUPLICATE_INVOICE_ID') {
621
+ return {
622
+ status: 'unknown',
623
+ verified: false,
624
+ chargeRef,
625
+ providerCode: 'DUPLICATE_INVOICE_ID',
626
+ error: DUPLICATE_CHARGE,
627
+ raw,
628
+ };
629
+ }
630
+ if (status === 408 || status === 409 || issue === 'PREVIOUS_REQUEST_IN_PROGRESS') {
631
+ // Timeout, or a conflict with a request still in progress on the same request id: the
632
+ // original may complete and charge, so a new chargeRef here could charge twice
633
+ return {
634
+ status: 'unknown',
635
+ verified: false,
636
+ chargeRef,
637
+ providerCode: issue ?? String(status),
638
+ error: `PayPal charge outcome unknown (HTTP ${status}${issue ? ` ${issue}` : ''})`,
639
+ raw,
640
+ };
641
+ }
642
+ if (status === 401 || status === 403 || status === 429) {
643
+ // Merchant-side (credentials, permissions, rate limit): says nothing about the customer
644
+ return {
645
+ status: 'unknown',
646
+ verified: false,
647
+ chargeRef,
648
+ providerCode: String(status),
649
+ error: `PayPal refused the request (HTTP ${status})`,
650
+ raw,
651
+ };
652
+ }
653
+ if (status >= 400 && status < 500) {
654
+ return {
655
+ status: 'failed',
656
+ verified: true,
657
+ chargeRef,
658
+ providerCode: issue,
659
+ error: `PayPal refused the charge (HTTP ${status}${issue ? ` ${issue}` : ''})`,
660
+ raw,
661
+ };
662
+ }
663
+ return {
664
+ status: 'unknown',
665
+ verified: false,
666
+ chargeRef,
667
+ providerCode: issue,
668
+ error: `PayPal charge outcome unknown (HTTP ${status})`,
669
+ raw,
670
+ };
671
+ }
672
+ const orderStatus = typeof order?.status === 'string' ? order.status : undefined;
673
+ const cap = firstCapture(order);
674
+ const capStatus = typeof cap?.status === 'string' ? cap.status : undefined;
675
+ const providerPaymentId = typeof order?.id === 'string' && order.id !== '' ? order.id : undefined;
676
+ if (orderStatus === 'COMPLETED' && capStatus === 'COMPLETED') {
677
+ return {
678
+ status: 'succeeded',
679
+ verified: true,
680
+ chargeRef,
681
+ providerPaymentId,
682
+ // Taken from the capture: the configurator compares them with the request
683
+ amount: (0, parsing_util_1.parseAmount)(cap?.amount?.value),
684
+ currency: typeof cap?.amount?.currencyCode === 'string' ? cap.amount.currencyCode : undefined,
685
+ raw: order,
686
+ };
687
+ }
688
+ if (orderStatus === 'PAYER_ACTION_REQUIRED') {
689
+ return { status: 'requires_action', verified: true, chargeRef, providerPaymentId, providerCode: orderStatus, raw: order };
690
+ }
691
+ if (capStatus === 'PENDING') {
692
+ return { status: 'unknown', verified: true, chargeRef, providerPaymentId, error: 'CAPTURE_PENDING', raw: order };
693
+ }
694
+ if (capStatus === 'DECLINED' || capStatus === 'FAILED') {
695
+ return {
696
+ status: 'failed',
697
+ verified: true,
698
+ chargeRef,
699
+ providerPaymentId,
700
+ providerCode: capStatus,
701
+ error: `Capture ${capStatus}`,
702
+ raw: order,
703
+ };
704
+ }
705
+ return {
706
+ status: 'unknown',
707
+ verified: true,
708
+ chargeRef,
709
+ providerPaymentId,
710
+ error: `Unexpected PayPal outcome (order ${orderStatus ?? 'missing'}, capture ${capStatus ?? 'missing'})`,
711
+ raw: order,
712
+ };
713
+ }
714
+ /** Re-reads the vault payment token: present → `active`, 404 → `revoked`, otherwise `unknown`. */
715
+ async getMandate(mandate) {
716
+ try {
717
+ await this.vaultController.getPaymentToken(mandate.providerMandateId);
718
+ return { status: 'active', verified: true };
719
+ }
720
+ catch (error) {
721
+ if (this.apiIssue(error).status === 404)
722
+ return { status: 'revoked', verified: true };
723
+ return { status: 'unknown', verified: false, raw: this.apiErrorRaw(error) };
724
+ }
725
+ }
726
+ /** Deletes the vault payment token. A token that is already gone (404) counts as revoked. */
727
+ async revokeMandate(mandate) {
728
+ try {
729
+ await this.vaultController.deletePaymentToken(mandate.providerMandateId);
730
+ return { revokedAtProvider: true };
731
+ }
732
+ catch (error) {
733
+ const { status, issue } = this.apiIssue(error);
734
+ if (status === 404)
735
+ return { revokedAtProvider: true };
736
+ return {
737
+ revokedAtProvider: false,
738
+ error: status !== undefined
739
+ ? `PayPal could not delete the vault token (HTTP ${status}${issue ? ` ${issue}` : ''})`
740
+ : 'PayPal could not delete the vault token',
741
+ raw: this.apiErrorRaw(error),
742
+ };
743
+ }
744
+ }
226
745
  }
227
746
  exports.PayPalProvider = PayPalProvider;
228
747
  //# sourceMappingURL=paypal.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paypal.provider.js","sourceRoot":"","sources":["../../../src/providers/paypal/paypal.provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paypal.provider.js","sourceRoot":"","sources":["../../../src/providers/paypal/paypal.provider.ts"],"names":[],"mappings":"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"}