@adonis-agora/payments 0.2.0 → 0.3.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/CHANGELOG.md +2347 -0
- package/dist/assets/spa/assets/index-CT5Zon6P.css +1 -0
- package/dist/assets/spa/assets/index-CvEbJEnq.js +41 -0
- package/dist/assets/spa/assets/index-CvEbJEnq.js.map +1 -0
- package/dist/assets/spa/index.html +20 -0
- package/dist/commands/main.d.ts +4 -3
- package/dist/commands/main.d.ts.map +1 -1
- package/dist/commands/main.js +9 -2
- package/dist/commands/main.js.map +1 -1
- package/dist/commands/payments_health.d.ts +31 -0
- package/dist/commands/payments_health.d.ts.map +1 -0
- package/dist/commands/payments_health.js +113 -0
- package/dist/commands/payments_health.js.map +1 -0
- package/dist/commands/payments_sync.d.ts +18 -4
- package/dist/commands/payments_sync.d.ts.map +1 -1
- package/dist/commands/payments_sync.js +136 -40
- package/dist/commands/payments_sync.js.map +1 -1
- package/dist/configure.d.ts +12 -5
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +18 -5
- package/dist/configure.js.map +1 -1
- package/dist/providers/dashboard_provider.d.ts +97 -0
- package/dist/providers/dashboard_provider.d.ts.map +1 -0
- package/dist/providers/dashboard_provider.js +430 -0
- package/dist/providers/dashboard_provider.js.map +1 -0
- package/dist/providers/payments_client_provider.d.ts +41 -0
- package/dist/providers/payments_client_provider.d.ts.map +1 -0
- package/dist/providers/payments_client_provider.js +95 -0
- package/dist/providers/payments_client_provider.js.map +1 -0
- package/dist/providers/payments_provider.d.ts +35 -0
- package/dist/providers/payments_provider.d.ts.map +1 -1
- package/dist/providers/payments_provider.js +250 -36
- package/dist/providers/payments_provider.js.map +1 -1
- package/dist/src/billing/billing_health.d.ts +85 -0
- package/dist/src/billing/billing_health.d.ts.map +1 -0
- package/dist/src/billing/billing_health.js +155 -0
- package/dist/src/billing/billing_health.js.map +1 -0
- package/dist/src/billing/billing_overview.d.ts +4 -3
- package/dist/src/billing/billing_overview.d.ts.map +1 -1
- package/dist/src/billing/billing_overview.js +14 -5
- package/dist/src/billing/billing_overview.js.map +1 -1
- package/dist/src/billing/billing_store.d.ts +634 -5
- package/dist/src/billing/billing_store.d.ts.map +1 -1
- package/dist/src/billing/billing_store.js +18 -1
- package/dist/src/billing/billing_store.js.map +1 -1
- package/dist/src/billing/index.d.ts +2 -1
- package/dist/src/billing/index.d.ts.map +1 -1
- package/dist/src/billing/index.js +1 -0
- package/dist/src/billing/index.js.map +1 -1
- package/dist/src/billing/list_query.d.ts +16 -0
- package/dist/src/billing/list_query.d.ts.map +1 -0
- package/dist/src/billing/list_query.js +28 -0
- package/dist/src/billing/list_query.js.map +1 -0
- package/dist/src/billing/lucid_billing_store.d.ts +122 -4
- package/dist/src/billing/lucid_billing_store.d.ts.map +1 -1
- package/dist/src/billing/lucid_billing_store.js +811 -13
- package/dist/src/billing/lucid_billing_store.js.map +1 -1
- package/dist/src/billing/mixins/index.d.ts +3 -0
- package/dist/src/billing/mixins/index.d.ts.map +1 -1
- package/dist/src/billing/mixins/index.js +3 -0
- package/dist/src/billing/mixins/index.js.map +1 -1
- package/dist/src/billing/mixins/with_audit_event.d.ts +48 -0
- package/dist/src/billing/mixins/with_audit_event.d.ts.map +1 -0
- package/dist/src/billing/mixins/with_audit_event.js +77 -0
- package/dist/src/billing/mixins/with_audit_event.js.map +1 -0
- package/dist/src/billing/mixins/with_customer.d.ts +39 -0
- package/dist/src/billing/mixins/with_customer.d.ts.map +1 -0
- package/dist/src/billing/mixins/with_customer.js +68 -0
- package/dist/src/billing/mixins/with_customer.js.map +1 -0
- package/dist/src/billing/mixins/with_dispute.d.ts +68 -0
- package/dist/src/billing/mixins/with_dispute.d.ts.map +1 -0
- package/dist/src/billing/mixins/with_dispute.js +83 -0
- package/dist/src/billing/mixins/with_dispute.js.map +1 -0
- package/dist/src/billing/mixins/with_payment.d.ts +42 -0
- package/dist/src/billing/mixins/with_payment.d.ts.map +1 -1
- package/dist/src/billing/mixins/with_payment.js +29 -3
- package/dist/src/billing/mixins/with_payment.js.map +1 -1
- package/dist/src/billing/mixins/with_subscription.d.ts +7 -0
- package/dist/src/billing/mixins/with_subscription.d.ts.map +1 -1
- package/dist/src/billing/mixins/with_subscription.js +15 -1
- package/dist/src/billing/mixins/with_subscription.js.map +1 -1
- package/dist/src/billing/mixins/with_usage_event.d.ts +7 -0
- package/dist/src/billing/mixins/with_usage_event.d.ts.map +1 -1
- package/dist/src/billing/mixins/with_usage_event.js +15 -1
- package/dist/src/billing/mixins/with_usage_event.js.map +1 -1
- package/dist/src/billing/mixins/with_webhook_event.d.ts +18 -0
- package/dist/src/billing/mixins/with_webhook_event.d.ts.map +1 -1
- package/dist/src/billing/mixins/with_webhook_event.js +18 -1
- package/dist/src/billing/mixins/with_webhook_event.js.map +1 -1
- package/dist/src/billing/resolve_dispatch.d.ts +22 -0
- package/dist/src/billing/resolve_dispatch.d.ts.map +1 -0
- package/dist/src/billing/resolve_dispatch.js +44 -0
- package/dist/src/billing/resolve_dispatch.js.map +1 -0
- package/dist/src/billing/resolve_store.d.ts +18 -0
- package/dist/src/billing/resolve_store.d.ts.map +1 -0
- package/dist/src/billing/resolve_store.js +35 -0
- package/dist/src/billing/resolve_store.js.map +1 -0
- package/dist/src/billing/schema.d.ts +108 -0
- package/dist/src/billing/schema.d.ts.map +1 -0
- package/dist/src/billing/schema.js +350 -0
- package/dist/src/billing/schema.js.map +1 -0
- package/dist/src/billing/webhook_dispatcher.d.ts +95 -16
- package/dist/src/billing/webhook_dispatcher.d.ts.map +1 -1
- package/dist/src/billing/webhook_dispatcher.js +186 -33
- package/dist/src/billing/webhook_dispatcher.js.map +1 -1
- package/dist/src/billing/webhook_events.d.ts +67 -1
- package/dist/src/billing/webhook_events.d.ts.map +1 -1
- package/dist/src/billing/webhook_events.js +15 -0
- package/dist/src/billing/webhook_events.js.map +1 -1
- package/dist/src/billing/webhook_processor.d.ts.map +1 -1
- package/dist/src/billing/webhook_processor.js +325 -5
- package/dist/src/billing/webhook_processor.js.map +1 -1
- package/dist/src/client/define_config.d.ts +150 -0
- package/dist/src/client/define_config.d.ts.map +1 -0
- package/dist/src/client/define_config.js +98 -0
- package/dist/src/client/define_config.js.map +1 -0
- package/dist/src/client/handlers.d.ts +71 -0
- package/dist/src/client/handlers.d.ts.map +1 -0
- package/dist/src/client/handlers.js +119 -0
- package/dist/src/client/handlers.js.map +1 -0
- package/dist/src/client/index.d.ts +16 -0
- package/dist/src/client/index.d.ts.map +1 -0
- package/dist/src/client/index.js +13 -0
- package/dist/src/client/index.js.map +1 -0
- package/dist/src/client/statuses.d.ts +38 -0
- package/dist/src/client/statuses.d.ts.map +1 -0
- package/dist/src/client/statuses.js +42 -0
- package/dist/src/client/statuses.js.map +1 -0
- package/dist/src/dashboard/actions.d.ts +143 -0
- package/dist/src/dashboard/actions.d.ts.map +1 -0
- package/dist/src/dashboard/actions.js +112 -0
- package/dist/src/dashboard/actions.js.map +1 -0
- package/dist/src/dashboard/auth.d.ts +136 -0
- package/dist/src/dashboard/auth.d.ts.map +1 -0
- package/dist/src/dashboard/auth.js +152 -0
- package/dist/src/dashboard/auth.js.map +1 -0
- package/dist/src/dashboard/define_config.d.ts +80 -0
- package/dist/src/dashboard/define_config.d.ts.map +1 -0
- package/dist/src/dashboard/define_config.js +83 -0
- package/dist/src/dashboard/define_config.js.map +1 -0
- package/dist/src/dashboard/handlers.d.ts +281 -0
- package/dist/src/dashboard/handlers.d.ts.map +1 -0
- package/dist/src/dashboard/handlers.js +960 -0
- package/dist/src/dashboard/handlers.js.map +1 -0
- package/dist/src/dashboard/index.d.ts +18 -0
- package/dist/src/dashboard/index.d.ts.map +1 -0
- package/dist/src/dashboard/index.js +14 -0
- package/dist/src/dashboard/index.js.map +1 -0
- package/dist/src/dashboard/login_page.d.ts +23 -0
- package/dist/src/dashboard/login_page.d.ts.map +1 -0
- package/dist/src/dashboard/login_page.js +170 -0
- package/dist/src/dashboard/login_page.js.map +1 -0
- package/dist/src/dashboard/period.d.ts +31 -0
- package/dist/src/dashboard/period.d.ts.map +1 -0
- package/dist/src/dashboard/period.js +44 -0
- package/dist/src/dashboard/period.js.map +1 -0
- package/dist/src/dashboard/session_cookie.d.ts +42 -0
- package/dist/src/dashboard/session_cookie.d.ts.map +1 -0
- package/dist/src/dashboard/session_cookie.js +97 -0
- package/dist/src/dashboard/session_cookie.js.map +1 -0
- package/dist/src/dashboard/spa.d.ts +24 -0
- package/dist/src/dashboard/spa.d.ts.map +1 -0
- package/dist/src/dashboard/spa.js +52 -0
- package/dist/src/dashboard/spa.js.map +1 -0
- package/dist/src/define_config.d.ts +244 -9
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js +97 -1
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/diagnostics.d.ts +287 -7
- package/dist/src/diagnostics.d.ts.map +1 -1
- package/dist/src/diagnostics.js +317 -1
- package/dist/src/diagnostics.js.map +1 -1
- package/dist/src/driver.d.ts +139 -5
- package/dist/src/driver.d.ts.map +1 -1
- package/dist/src/drivers/abacate.d.ts +12 -2
- package/dist/src/drivers/abacate.d.ts.map +1 -1
- package/dist/src/drivers/abacate.js +112 -19
- package/dist/src/drivers/abacate.js.map +1 -1
- package/dist/src/drivers/adyen.d.ts +164 -0
- package/dist/src/drivers/adyen.d.ts.map +1 -0
- package/dist/src/drivers/adyen.js +678 -0
- package/dist/src/drivers/adyen.js.map +1 -0
- package/dist/src/drivers/asaas.d.ts +52 -2
- package/dist/src/drivers/asaas.d.ts.map +1 -1
- package/dist/src/drivers/asaas.js +364 -29
- package/dist/src/drivers/asaas.js.map +1 -1
- package/dist/src/drivers/dodo.d.ts +135 -0
- package/dist/src/drivers/dodo.d.ts.map +1 -0
- package/dist/src/drivers/dodo.js +864 -0
- package/dist/src/drivers/dodo.js.map +1 -0
- package/dist/src/drivers/efi.d.ts +98 -0
- package/dist/src/drivers/efi.d.ts.map +1 -0
- package/dist/src/drivers/efi.js +628 -0
- package/dist/src/drivers/efi.js.map +1 -0
- package/dist/src/drivers/infinitepay.d.ts +156 -0
- package/dist/src/drivers/infinitepay.d.ts.map +1 -0
- package/dist/src/drivers/infinitepay.js +321 -0
- package/dist/src/drivers/infinitepay.js.map +1 -0
- package/dist/src/drivers/lemonsqueezy.d.ts +125 -0
- package/dist/src/drivers/lemonsqueezy.d.ts.map +1 -0
- package/dist/src/drivers/lemonsqueezy.js +632 -0
- package/dist/src/drivers/lemonsqueezy.js.map +1 -0
- package/dist/src/drivers/mercadopago.d.ts +97 -0
- package/dist/src/drivers/mercadopago.d.ts.map +1 -0
- package/dist/src/drivers/mercadopago.js +844 -0
- package/dist/src/drivers/mercadopago.js.map +1 -0
- package/dist/src/drivers/mollie.d.ts +125 -0
- package/dist/src/drivers/mollie.d.ts.map +1 -0
- package/dist/src/drivers/mollie.js +812 -0
- package/dist/src/drivers/mollie.js.map +1 -0
- package/dist/src/drivers/paddle.d.ts +148 -0
- package/dist/src/drivers/paddle.d.ts.map +1 -0
- package/dist/src/drivers/paddle.js +738 -0
- package/dist/src/drivers/paddle.js.map +1 -0
- package/dist/src/drivers/pagarme.d.ts +97 -0
- package/dist/src/drivers/pagarme.d.ts.map +1 -0
- package/dist/src/drivers/pagarme.js +829 -0
- package/dist/src/drivers/pagarme.js.map +1 -0
- package/dist/src/drivers/pagbank.d.ts +57 -0
- package/dist/src/drivers/pagbank.d.ts.map +1 -0
- package/dist/src/drivers/pagbank.js +499 -0
- package/dist/src/drivers/pagbank.js.map +1 -0
- package/dist/src/drivers/paypal.d.ts +120 -0
- package/dist/src/drivers/paypal.d.ts.map +1 -0
- package/dist/src/drivers/paypal.js +891 -0
- package/dist/src/drivers/paypal.js.map +1 -0
- package/dist/src/drivers/polar.d.ts +118 -0
- package/dist/src/drivers/polar.d.ts.map +1 -0
- package/dist/src/drivers/polar.js +604 -0
- package/dist/src/drivers/polar.js.map +1 -0
- package/dist/src/drivers/razorpay.d.ts +103 -0
- package/dist/src/drivers/razorpay.d.ts.map +1 -0
- package/dist/src/drivers/razorpay.js +867 -0
- package/dist/src/drivers/razorpay.js.map +1 -0
- package/dist/src/drivers/shared.d.ts +33 -0
- package/dist/src/drivers/shared.d.ts.map +1 -0
- package/dist/src/drivers/shared.js +37 -0
- package/dist/src/drivers/shared.js.map +1 -0
- package/dist/src/drivers/square.d.ts +133 -0
- package/dist/src/drivers/square.d.ts.map +1 -0
- package/dist/src/drivers/square.js +905 -0
- package/dist/src/drivers/square.js.map +1 -0
- package/dist/src/drivers/stripe.d.ts +40 -3
- package/dist/src/drivers/stripe.d.ts.map +1 -1
- package/dist/src/drivers/stripe.js +806 -25
- package/dist/src/drivers/stripe.js.map +1 -1
- package/dist/src/drivers/woovi.d.ts +10 -3
- package/dist/src/drivers/woovi.d.ts.map +1 -1
- package/dist/src/drivers/woovi.js +162 -29
- package/dist/src/drivers/woovi.js.map +1 -1
- package/dist/src/ensure_customer.d.ts +34 -1
- package/dist/src/ensure_customer.d.ts.map +1 -1
- package/dist/src/ensure_customer.js +29 -4
- package/dist/src/ensure_customer.js.map +1 -1
- package/dist/src/http.d.ts +37 -3
- package/dist/src/http.d.ts.map +1 -1
- package/dist/src/http.js +69 -5
- package/dist/src/http.js.map +1 -1
- package/dist/src/index.d.ts +40 -10
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +22 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/invoice/emit_invoice.d.ts.map +1 -1
- package/dist/src/invoice/emit_invoice.js +31 -11
- package/dist/src/invoice/emit_invoice.js.map +1 -1
- package/dist/src/money.d.ts +23 -5
- package/dist/src/money.d.ts.map +1 -1
- package/dist/src/money.js +72 -7
- package/dist/src/money.js.map +1 -1
- package/dist/src/payments_manager.d.ts +8 -1
- package/dist/src/payments_manager.d.ts.map +1 -1
- package/dist/src/payments_manager.js +168 -6
- package/dist/src/payments_manager.js.map +1 -1
- package/dist/src/services/main.d.ts +38 -0
- package/dist/src/services/main.d.ts.map +1 -1
- package/dist/src/services/main.js +130 -0
- package/dist/src/services/main.js.map +1 -1
- package/dist/src/telescope/index.d.ts +2 -0
- package/dist/src/telescope/index.d.ts.map +1 -1
- package/dist/src/telescope/index.js +1 -0
- package/dist/src/telescope/index.js.map +1 -1
- package/dist/src/telescope/payments_watcher.d.ts +10 -4
- package/dist/src/telescope/payments_watcher.d.ts.map +1 -1
- package/dist/src/telescope/payments_watcher.js +65 -13
- package/dist/src/telescope/payments_watcher.js.map +1 -1
- package/dist/src/telescope/register.d.ts +62 -0
- package/dist/src/telescope/register.d.ts.map +1 -0
- package/dist/src/telescope/register.js +48 -0
- package/dist/src/telescope/register.js.map +1 -0
- package/dist/src/testing/fake_payments.d.ts +62 -0
- package/dist/src/testing/fake_payments.d.ts.map +1 -0
- package/dist/src/testing/fake_payments.js +82 -0
- package/dist/src/testing/fake_payments.js.map +1 -0
- package/dist/src/testing/in_memory_billing_store.d.ts +151 -2
- package/dist/src/testing/in_memory_billing_store.d.ts.map +1 -1
- package/dist/src/testing/in_memory_billing_store.js +517 -4
- package/dist/src/testing/in_memory_billing_store.js.map +1 -1
- package/dist/src/testing/index.d.ts +2 -1
- package/dist/src/testing/index.d.ts.map +1 -1
- package/dist/src/testing/index.js +1 -0
- package/dist/src/testing/index.js.map +1 -1
- package/dist/src/types.d.ts +161 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +30 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/webhook_handlers.d.ts +96 -2
- package/dist/src/webhook_handlers.d.ts.map +1 -1
- package/dist/src/webhook_handlers.js +91 -10
- package/dist/src/webhook_handlers.js.map +1 -1
- package/dist/src/webhook_security.d.ts +94 -3
- package/dist/src/webhook_security.d.ts.map +1 -1
- package/dist/src/webhook_security.js +173 -9
- package/dist/src/webhook_security.js.map +1 -1
- package/dist/stubs/config/payments.stub +13 -0
- package/dist/stubs/config/payments_client.stub +42 -0
- package/dist/stubs/config/payments_dashboard.stub +38 -0
- package/dist/stubs/database/migrations/create_billing_tables.stub +35 -77
- package/dist/stubs/make/webhook_handler/main.stub +29 -11
- package/package.json +60 -25
|
@@ -1,8 +1,18 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
1
2
|
import { publishPaymentDiagnostics, publishRefundDiagnostics, publishSubscriptionDiagnostics, } from '../diagnostics.js';
|
|
2
3
|
import { headerValue, httpRequest, isNotFound } from '../http.js';
|
|
3
4
|
import { emitInvoiceIfRequested } from '../invoice/emit_invoice.js';
|
|
4
5
|
import { fromDecimal, toDecimal } from '../money.js';
|
|
5
6
|
import { requireMatchingCredential } from '../webhook_security.js';
|
|
7
|
+
/** Rows per page when iterating an Asaas list endpoint. 100 is Asaas' documented maximum. */
|
|
8
|
+
const ASAAS_PAGE_SIZE = 100;
|
|
9
|
+
/**
|
|
10
|
+
* A runaway guard on the paging loop, not a result limit: a gateway that answered `hasMore`
|
|
11
|
+
* forever would otherwise spin. Ten million charges for ONE customer is not a real number, so
|
|
12
|
+
* reaching this means something is wrong — and the loop throws rather than truncating,
|
|
13
|
+
* because a quietly partial list is the bug the paging was added to fix.
|
|
14
|
+
*/
|
|
15
|
+
const ASAAS_MAX_PAGES = 100_000;
|
|
6
16
|
/**
|
|
7
17
|
* Asaas driver — Brazilian gateway (Pix, boleto, card) with native subscription billing.
|
|
8
18
|
* Uses the REST API directly via `fetch` (no SDK dependency). The Asaas API key is sent
|
|
@@ -34,6 +44,7 @@ export class AsaasDriver {
|
|
|
34
44
|
}
|
|
35
45
|
// ── Customers ────────────────────────────────────────────────────────────────────────
|
|
36
46
|
async createCustomer(input) {
|
|
47
|
+
this.#refuseIdempotencyKey(input.idempotencyKey, 'createCustomer');
|
|
37
48
|
const body = {
|
|
38
49
|
...(input.name !== undefined ? { name: input.name } : {}),
|
|
39
50
|
...(input.email !== undefined ? { email: input.email } : {}),
|
|
@@ -69,6 +80,34 @@ export class AsaasDriver {
|
|
|
69
80
|
return this.#mapCustomer(data);
|
|
70
81
|
}
|
|
71
82
|
// ── Payments ─────────────────────────────────────────────────────────────────────────
|
|
83
|
+
/**
|
|
84
|
+
* Create a charge — and, when the caller passes an `idempotencyKey`, do not create a second
|
|
85
|
+
* one for the same key.
|
|
86
|
+
*
|
|
87
|
+
* **This method HONOURS `idempotencyKey`**, which is why it does not go through
|
|
88
|
+
* `#refuseIdempotencyKey` like every other method here. It used to quietly repurpose the key
|
|
89
|
+
* as an `externalReference` fallback and nothing else, so an app that passed
|
|
90
|
+
* `idempotencyKey: order.id` on the one call that moves money — believing it was protected
|
|
91
|
+
* against a double charge on a retry — got no protection at all and no warning either.
|
|
92
|
+
*
|
|
93
|
+
* Refusing it here (the consistent option) was the alternative and was rejected: `charge()`
|
|
94
|
+
* is the single call where a silent duplicate costs the customer real money, and the
|
|
95
|
+
* deduplication `#refuseIdempotencyKey`'s own message tells callers to do by hand —
|
|
96
|
+
* "looking the record up by `externalReference` first" — is one request the driver can make
|
|
97
|
+
* on their behalf, exactly and every time. Asaas still has no idempotency mechanism of its
|
|
98
|
+
* own; this is that documented workaround, implemented rather than described.
|
|
99
|
+
*
|
|
100
|
+
* The key travels as the charge's `externalReference` (Asaas echoes it back and accepts it
|
|
101
|
+
* as a query filter), so the guarantee is: **at most one Asaas charge per key**, scoped to
|
|
102
|
+
* the customer. A hit returns the charge that already exists — enriched with its Pix code,
|
|
103
|
+
* so the caller gets a usable payment — and deliberately re-runs NEITHER side effect: no
|
|
104
|
+
* second fiscal invoice is emitted (an NFS-e is a legal document, not a retryable write) and
|
|
105
|
+
* no `charge.created` diagnostic is published for a charge that was not created.
|
|
106
|
+
*
|
|
107
|
+
* What it is not: a lock. Two concurrent calls with the same key can both miss the lookup
|
|
108
|
+
* and both create — Asaas offers nothing to prevent that. It closes the retry case, which is
|
|
109
|
+
* the one that actually happens.
|
|
110
|
+
*/
|
|
72
111
|
async charge(input) {
|
|
73
112
|
if (!input.customerId) {
|
|
74
113
|
throw new Error('[payments] Asaas requires a customer for every charge.');
|
|
@@ -76,6 +115,10 @@ export class AsaasDriver {
|
|
|
76
115
|
const isCard = input.method === 'credit_card' ||
|
|
77
116
|
input.paymentMethodId !== undefined ||
|
|
78
117
|
input.card !== undefined;
|
|
118
|
+
// The value that will land in `externalReference` — and therefore the value the
|
|
119
|
+
// idempotency lookup below has to search on. They must be the same string or the second
|
|
120
|
+
// call looks for a key the first one never wrote.
|
|
121
|
+
const reference = input.externalReference ?? input.idempotencyKey;
|
|
79
122
|
const body = {
|
|
80
123
|
customer: input.customerId,
|
|
81
124
|
value: toDecimal(input.amount),
|
|
@@ -83,11 +126,10 @@ export class AsaasDriver {
|
|
|
83
126
|
billingType: this.#mapMethod(isCard ? 'credit_card' : input.method),
|
|
84
127
|
...(input.description !== undefined ? { description: input.description } : {}),
|
|
85
128
|
// `externalReference` is the app's own id echoed back on the payment — the routing
|
|
86
|
-
// key webhook handlers read
|
|
87
|
-
//
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
: {}),
|
|
129
|
+
// key webhook handlers read, AND the only thing Asaas can be asked to match a charge
|
|
130
|
+
// on, which is what makes `idempotencyKey` honourable at all. An explicit reference
|
|
131
|
+
// wins; the key stands in when there is none.
|
|
132
|
+
...(reference !== undefined ? { externalReference: reference } : {}),
|
|
91
133
|
// Checkout transparente: cartão tokenizado no front (Asaas tokenization).
|
|
92
134
|
...(input.card !== undefined ? { creditCardToken: input.card.token } : {}),
|
|
93
135
|
...(input.paymentMethodId !== undefined ? { creditCardToken: input.paymentMethodId } : {}),
|
|
@@ -106,25 +148,63 @@ export class AsaasDriver {
|
|
|
106
148
|
}
|
|
107
149
|
: {}),
|
|
108
150
|
};
|
|
151
|
+
// The idempotency lookup, and it happens BEFORE the POST or it is worth nothing.
|
|
152
|
+
const duplicate = input.idempotencyKey !== undefined && reference !== undefined
|
|
153
|
+
? await this.#findChargeByReference(reference, input.customerId)
|
|
154
|
+
: null;
|
|
155
|
+
if (duplicate !== null) {
|
|
156
|
+
const existing = this.#mapPayment(duplicate);
|
|
157
|
+
await this.#attachPixQrCode(existing);
|
|
158
|
+
// No invoice, no diagnostic: nothing was charged. See the note on this method.
|
|
159
|
+
return existing;
|
|
160
|
+
}
|
|
109
161
|
const data = await this.#request('/payments', { method: 'POST', body });
|
|
110
162
|
const payment = this.#mapPayment(data);
|
|
111
|
-
|
|
112
|
-
if (payment.method === 'pix') {
|
|
113
|
-
try {
|
|
114
|
-
const qr = await this.#request(`/payments/${data.id}/pixQrCode`);
|
|
115
|
-
if (qr.payload)
|
|
116
|
-
payment.pixCopiaECola = qr.payload;
|
|
117
|
-
if (qr.encodedImage)
|
|
118
|
-
payment.pixQrCode = qr.encodedImage;
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
// QR code é best-effort — a cobrança já existe.
|
|
122
|
-
}
|
|
123
|
-
}
|
|
163
|
+
await this.#attachPixQrCode(payment);
|
|
124
164
|
await emitInvoiceIfRequested(this.#invoiceCtx, input, payment, this);
|
|
125
165
|
publishPaymentDiagnostics(payment);
|
|
126
166
|
return payment;
|
|
127
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* The charge already recorded under one `externalReference` for this customer, or `null`.
|
|
170
|
+
*
|
|
171
|
+
* The whole of Asaas' idempotency story: it documents no idempotency header and no
|
|
172
|
+
* idempotency body field on any endpoint, and tells you to deduplicate on your side — so the
|
|
173
|
+
* only handle is `externalReference`, which it echoes back and accepts as a query filter.
|
|
174
|
+
* Scoped to the customer as well, because an app's own order ids are unique within the app,
|
|
175
|
+
* not across every merchant's tenant.
|
|
176
|
+
*
|
|
177
|
+
* Newest first, which is Asaas' own ordering: if an app really did reuse a key across two
|
|
178
|
+
* charges, the one it means is the last one it made.
|
|
179
|
+
*/
|
|
180
|
+
async #findChargeByReference(reference, customerId) {
|
|
181
|
+
const body = await this.#request(`/payments?externalReference=${encodeURIComponent(reference)}&customer=${encodeURIComponent(customerId)}&limit=1`);
|
|
182
|
+
const rows = Array.isArray(body.data) ? body.data : [];
|
|
183
|
+
return rows[0] ?? null;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Fill in a Pix charge's QR code. Asaas does not return one from `POST /payments`, so it
|
|
187
|
+
* takes a second request — best-effort, because the charge already exists either way and
|
|
188
|
+
* failing here would report a failure over money that is already owed.
|
|
189
|
+
*/
|
|
190
|
+
async #attachPixQrCode(payment) {
|
|
191
|
+
if (payment.method !== 'pix')
|
|
192
|
+
return;
|
|
193
|
+
try {
|
|
194
|
+
const qr = await this.#request(`/payments/${payment.gatewayId}/pixQrCode`);
|
|
195
|
+
if (qr.payload) {
|
|
196
|
+
payment.pixCode = qr.payload;
|
|
197
|
+
payment.pixCopiaECola = qr.payload;
|
|
198
|
+
}
|
|
199
|
+
if (qr.encodedImage) {
|
|
200
|
+
payment.pixQrCodeImage = qr.encodedImage;
|
|
201
|
+
payment.pixQrCode = qr.encodedImage;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
// QR code é best-effort — a cobrança já existe.
|
|
206
|
+
}
|
|
207
|
+
}
|
|
128
208
|
async findPayment(gatewayId) {
|
|
129
209
|
try {
|
|
130
210
|
const data = await this.#request(`/payments/${gatewayId}`);
|
|
@@ -136,7 +216,8 @@ export class AsaasDriver {
|
|
|
136
216
|
throw error;
|
|
137
217
|
}
|
|
138
218
|
}
|
|
139
|
-
async refund(paymentGatewayId, amount) {
|
|
219
|
+
async refund(paymentGatewayId, amount, options) {
|
|
220
|
+
this.#refuseIdempotencyKey(options?.idempotencyKey, 'refund');
|
|
140
221
|
const body = {
|
|
141
222
|
...(amount !== undefined ? { value: toDecimal(amount) } : {}),
|
|
142
223
|
};
|
|
@@ -185,11 +266,14 @@ export class AsaasDriver {
|
|
|
185
266
|
status: 'open',
|
|
186
267
|
amount: { amount: fromDecimal(data.value), currency: 'brl' },
|
|
187
268
|
customerId: data.customer,
|
|
188
|
-
...(data.pixCopiaECola !== undefined
|
|
269
|
+
...(data.pixCopiaECola !== undefined
|
|
270
|
+
? { pixCode: data.pixCopiaECola, pixCopiaECola: data.pixCopiaECola }
|
|
271
|
+
: {}),
|
|
189
272
|
};
|
|
190
273
|
}
|
|
191
274
|
// ── Subscriptions ────────────────────────────────────────────────────────────────────
|
|
192
275
|
async createSubscription(input) {
|
|
276
|
+
this.#refuseIdempotencyKey(input.idempotencyKey, 'createSubscription');
|
|
193
277
|
const body = {
|
|
194
278
|
customer: input.customerId,
|
|
195
279
|
billingType: this.#mapMethod(input.method),
|
|
@@ -225,6 +309,7 @@ export class AsaasDriver {
|
|
|
225
309
|
return subscription;
|
|
226
310
|
}
|
|
227
311
|
async updateSubscription(subscriptionGatewayId, input) {
|
|
312
|
+
this.#refuseIdempotencyKey(input.idempotencyKey, 'updateSubscription');
|
|
228
313
|
const body = {
|
|
229
314
|
...(input.amount !== undefined ? { value: toDecimal(input.amount) } : {}),
|
|
230
315
|
...(input.description !== undefined ? { description: input.description } : {}),
|
|
@@ -249,9 +334,47 @@ export class AsaasDriver {
|
|
|
249
334
|
}
|
|
250
335
|
}
|
|
251
336
|
// ── Invoices ─────────────────────────────────────────────────────────────────────────
|
|
337
|
+
/**
|
|
338
|
+
* Every charge Asaas holds for a customer — **all of them**, not the newest page.
|
|
339
|
+
*
|
|
340
|
+
* `GET /payments` is a paged endpoint (`limit`/`offset`, and an explicit `hasMore` in the
|
|
341
|
+
* envelope). This asked for it with neither, took whatever default page Asaas felt like
|
|
342
|
+
* returning, and handed it back as if it were the whole list — so `payments:sync` printed a
|
|
343
|
+
* confident "N invoice(s) synced" over the most recent page and left every older charge
|
|
344
|
+
* unreconciled, silently, with no way for the caller to tell.
|
|
345
|
+
*
|
|
346
|
+
* `hasMore` is the loop's authority; a short page ends it when the envelope omits one. The
|
|
347
|
+
* page cap is a runaway guard, not a limit: it THROWS rather than truncating, because
|
|
348
|
+
* returning a partial list quietly is the exact bug this replaced.
|
|
349
|
+
*/
|
|
252
350
|
async listInvoices(customerId) {
|
|
253
|
-
const
|
|
254
|
-
|
|
351
|
+
const invoices = [];
|
|
352
|
+
for (let page = 0;; page += 1) {
|
|
353
|
+
if (page >= ASAAS_MAX_PAGES) {
|
|
354
|
+
throw new Error(`[payments] Asaas listInvoices for customer ${customerId} did not stop after ${ASAAS_MAX_PAGES} pages of ${ASAAS_PAGE_SIZE}. Refusing to return a partial list — narrow the query at the gateway.`);
|
|
355
|
+
}
|
|
356
|
+
const offset = page * ASAAS_PAGE_SIZE;
|
|
357
|
+
const body = await this.#request(`/payments?customer=${encodeURIComponent(customerId)}&limit=${ASAAS_PAGE_SIZE}&offset=${offset}`);
|
|
358
|
+
const rows = Array.isArray(body.data) ? body.data : [];
|
|
359
|
+
for (const payment of rows)
|
|
360
|
+
invoices.push(this.#mapInvoice(payment));
|
|
361
|
+
// `hasMore` when Asaas states one; otherwise a page shorter than the limit is the end.
|
|
362
|
+
const more = typeof body.hasMore === 'boolean' ? body.hasMore : rows.length >= ASAAS_PAGE_SIZE;
|
|
363
|
+
if (!more || rows.length === 0)
|
|
364
|
+
return invoices;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* One Asaas payment as an `Invoice`.
|
|
369
|
+
*
|
|
370
|
+
* The status mapping is lossy in one direction worth naming: `Invoice['status']` has no
|
|
371
|
+
* `refunded` and no `disputed` member, so a refunded or charged-back Asaas payment lands on
|
|
372
|
+
* `draft` — "the gateway said something this vocabulary cannot spell". Nothing should read a
|
|
373
|
+
* reversal out of this; `payments:sync` asks `findPayment` for the authoritative status,
|
|
374
|
+
* which speaks `BillingStatus` and can say `refunded`.
|
|
375
|
+
*/
|
|
376
|
+
#mapInvoice(payment) {
|
|
377
|
+
return {
|
|
255
378
|
id: payment.id,
|
|
256
379
|
gatewayId: payment.id,
|
|
257
380
|
provider: this.provider,
|
|
@@ -268,9 +391,18 @@ export class AsaasDriver {
|
|
|
268
391
|
createdAt: new Date(payment.dueDate).toISOString(),
|
|
269
392
|
...(payment.invoiceUrl !== undefined ? { hostedPdfUrl: payment.invoiceUrl } : {}),
|
|
270
393
|
payload: payment,
|
|
271
|
-
}
|
|
394
|
+
};
|
|
272
395
|
}
|
|
273
396
|
// ── Webhooks ─────────────────────────────────────────────────────────────────────────
|
|
397
|
+
/**
|
|
398
|
+
* Whether a delivery to `POST /payments/webhook/:provider` can be authenticated.
|
|
399
|
+
*
|
|
400
|
+
* The shared access token is the only thing authenticating an Asaas delivery; with the slot
|
|
401
|
+
* empty the token comparison below never runs.
|
|
402
|
+
*/
|
|
403
|
+
get webhookVerification() {
|
|
404
|
+
return this.#webhookToken !== undefined ? 'configured' : 'unconfigured';
|
|
405
|
+
}
|
|
274
406
|
parseWebhook(rawBody, headers) {
|
|
275
407
|
// Asaas authenticates webhooks with a shared token you set in the dashboard; when
|
|
276
408
|
// one is configured the request must carry it (timing-safe compare).
|
|
@@ -279,13 +411,28 @@ export class AsaasDriver {
|
|
|
279
411
|
requireMatchingCredential(token, this.#webhookToken, 'Asaas', 'token');
|
|
280
412
|
}
|
|
281
413
|
const payload = JSON.parse(rawBody);
|
|
282
|
-
|
|
414
|
+
// Asaas' own event id, which is what the ledger's idempotency is supposed to key on.
|
|
415
|
+
//
|
|
416
|
+
// The previous id was `${event}-${paymentId}`, and that is not an event identity: every
|
|
417
|
+
// notification of the same type about the same payment collapsed onto one key, so the
|
|
418
|
+
// SECOND `PAYMENT_UPDATED` for a charge was dropped as a replay of the first — and a
|
|
419
|
+
// PARTIAL REFUND arrives as exactly that type. It also fell back to `Math.random()` when
|
|
420
|
+
// the payload named neither a payment nor a subscription, which turns deduplication OFF
|
|
421
|
+
// for those deliveries entirely: every retry of a failing one looked like a new event.
|
|
422
|
+
//
|
|
423
|
+
// The fallback below is used only when Asaas genuinely sends no `id`. It is a digest of
|
|
424
|
+
// the RAW BODY, so it is deterministic (a redelivery of the same notification hashes to
|
|
425
|
+
// the same key and is still deduplicated) while two genuinely different notifications —
|
|
426
|
+
// the two `PAYMENT_UPDATED`s above — differ, which is the property the old key lacked.
|
|
427
|
+
const id = payload.id ??
|
|
428
|
+
`asaas:${payload.event}:${createHash('sha256').update(rawBody).digest('hex').slice(0, 32)}`;
|
|
429
|
+
const type = this.#mapWebhookType(payload.event);
|
|
283
430
|
return {
|
|
284
431
|
id,
|
|
285
432
|
provider: this.provider,
|
|
286
|
-
type
|
|
433
|
+
type,
|
|
287
434
|
createdAt: new Date().toISOString(),
|
|
288
|
-
data: this.#mapWebhookData(payload),
|
|
435
|
+
data: this.#mapWebhookData(payload, type),
|
|
289
436
|
raw: payload,
|
|
290
437
|
};
|
|
291
438
|
}
|
|
@@ -308,6 +455,47 @@ export class AsaasDriver {
|
|
|
308
455
|
REFUNDED: 'refunded',
|
|
309
456
|
CANCELED: 'canceled',
|
|
310
457
|
FAILED: 'failed',
|
|
458
|
+
// A pre-authorized card charge (`authorizeOnly: true`, captured later through
|
|
459
|
+
// `POST /payments/{id}/captureAuthorizedPayment`). The money is held, not moved:
|
|
460
|
+
// `pending` understated it and `paid` would grant access against a hold that
|
|
461
|
+
// expires — Asaas reserves it for three days by default.
|
|
462
|
+
AUTHORIZED: 'authorized',
|
|
463
|
+
// The chargeback was filed and is still open — contested or not. Whether Asaas has
|
|
464
|
+
// already debited the balance at this point is NOT stated anywhere in its reference:
|
|
465
|
+
// the developer docs describe `chargeback.status` and nothing about the money, and
|
|
466
|
+
// the help centre says the balance is debited when the dispute is LOST while also
|
|
467
|
+
// describing a won one as the value "returning" to the balance. `disputed` is the
|
|
468
|
+
// safe reading either way — it stops counting as revenue while the outcome is open.
|
|
469
|
+
CHARGEBACK_REQUESTED: 'disputed',
|
|
470
|
+
CHARGEBACK_DISPUTE: 'disputed',
|
|
471
|
+
// "Disputa vencida, aguardando repasse da adquirente" — Asaas' own English docs say
|
|
472
|
+
// "Dispute won, awaiting acquirer settlement". The dispute is over and it was won, so
|
|
473
|
+
// this is `paid`, matching the `payment.dispute_closed` (`won`) the matching webhook
|
|
474
|
+
// emits — a driver that reported the same gateway state two different ways depending
|
|
475
|
+
// on whether you read it or were told it is worse than either answer. The acquirer's
|
|
476
|
+
// transfer has not landed yet, which is a reconciliation question, not an entitlement
|
|
477
|
+
// one — the same reasoning as `RECEIVED_IN_CASH` below.
|
|
478
|
+
AWAITING_CHARGEBACK_REVERSAL: 'paid',
|
|
479
|
+
// The two ways an Asaas charge is paid without Asaas moving the money. Both fell
|
|
480
|
+
// through to the `pending` default, so a customer who had paid — in cash at the
|
|
481
|
+
// counter, or through the credit bureau after being negativado — read as never
|
|
482
|
+
// having paid, and stayed locked out of what they bought. `RECEIVED_IN_CASH`
|
|
483
|
+
// deliberately generates no balance in the Asaas account; that is a reconciliation
|
|
484
|
+
// question, not an entitlement one.
|
|
485
|
+
RECEIVED_IN_CASH: 'paid',
|
|
486
|
+
DUNNING_RECEIVED: 'paid',
|
|
487
|
+
// A refund that has been asked for or scheduled, and has settled in neither case.
|
|
488
|
+
// `pending` claimed the charge was never paid, and `refunded` would write off money
|
|
489
|
+
// that is still in the account — Asaas can deny a refund (`PAYMENT_REFUND_DENIED`).
|
|
490
|
+
// It stays `paid` until `REFUNDED` says otherwise.
|
|
491
|
+
REFUND_REQUESTED: 'paid',
|
|
492
|
+
REFUND_IN_PROGRESS: 'paid',
|
|
493
|
+
// Overdue and escalated to a credit bureau. Still unpaid, same as OVERDUE.
|
|
494
|
+
DUNNING_REQUESTED: 'failed',
|
|
495
|
+
// Held for manual risk review: nothing is captured, and Asaas' own docs say to wait
|
|
496
|
+
// before releasing the product. `pending` is right — it is spelled out because the
|
|
497
|
+
// default silently agreed by accident.
|
|
498
|
+
AWAITING_RISK_ANALYSIS: 'pending',
|
|
311
499
|
};
|
|
312
500
|
const method = this.#mapMethodToType(data.billingType);
|
|
313
501
|
const result = {
|
|
@@ -324,10 +512,14 @@ export class AsaasDriver {
|
|
|
324
512
|
result.method = method;
|
|
325
513
|
if (data.subscription !== undefined)
|
|
326
514
|
result.subscriptionId = data.subscription;
|
|
327
|
-
if (data.pixQrCode !== undefined)
|
|
515
|
+
if (data.pixQrCode !== undefined) {
|
|
516
|
+
result.pixQrCodeImage = data.pixQrCode;
|
|
328
517
|
result.pixQrCode = data.pixQrCode;
|
|
329
|
-
|
|
518
|
+
}
|
|
519
|
+
if (data.pixCopiaECola !== undefined) {
|
|
520
|
+
result.pixCode = data.pixCopiaECola;
|
|
330
521
|
result.pixCopiaECola = data.pixCopiaECola;
|
|
522
|
+
}
|
|
331
523
|
if (data.invoiceUrl !== undefined)
|
|
332
524
|
result.hostedUrl = data.invoiceUrl;
|
|
333
525
|
if (data.paymentDate !== undefined) {
|
|
@@ -372,12 +564,70 @@ export class AsaasDriver {
|
|
|
372
564
|
case 'PAYMENT_RECEIVED':
|
|
373
565
|
case 'PAYMENT_CONFIRMED':
|
|
374
566
|
return 'payment.succeeded';
|
|
567
|
+
// Negativação paid: the customer settled through the credit bureau. Money arrived,
|
|
568
|
+
// and this fell through to the unknown branch — so the one event announcing that a
|
|
569
|
+
// written-off debt came back ran no sync at all.
|
|
570
|
+
case 'PAYMENT_DUNNING_RECEIVED':
|
|
571
|
+
return 'payment.succeeded';
|
|
375
572
|
case 'PAYMENT_OVERDUE':
|
|
573
|
+
// The card was refused at capture, and the manual risk review rejected it. Both are
|
|
574
|
+
// the charge failing, and both used to arrive as an unrecognized type.
|
|
575
|
+
case 'PAYMENT_CREDIT_CARD_CAPTURE_REFUSED':
|
|
576
|
+
case 'PAYMENT_REPROVED_BY_RISK_ANALYSIS':
|
|
376
577
|
return 'payment.failed';
|
|
377
578
|
case 'PAYMENT_REFUNDED':
|
|
378
579
|
return 'payment.refunded';
|
|
580
|
+
// "Chargeback recebido" — the chargeback has been FILED (unlike Adyen's
|
|
581
|
+
// `NOTIFICATION_OF_CHARGEBACK`, which only announces one), and it is the only Asaas
|
|
582
|
+
// event that opens a dispute. Asaas does not publish whether the balance is debited
|
|
583
|
+
// here or only when the dispute is lost — its reference documents `chargeback.status`
|
|
584
|
+
// and says nothing about the money — so this stays where it was rather than being
|
|
585
|
+
// demoted to a warning on a guess. See the provider docs page.
|
|
586
|
+
case 'PAYMENT_CHARGEBACK_REQUESTED':
|
|
587
|
+
return 'payment.disputed';
|
|
588
|
+
// "Disputa vencida, aguardando repasse da adquirente" / "Dispute won, awaiting
|
|
589
|
+
// acquirer settlement". That is an outcome, in Asaas' own words, so it closes the
|
|
590
|
+
// dispute as `won` instead of being flattened into an update the way it used to be.
|
|
591
|
+
// Asaas sends no counterpart for a LOSS — there is no `PAYMENT_CHARGEBACK_LOST` in
|
|
592
|
+
// its event list — so a lost dispute still reaches you only as `chargeback.status`
|
|
593
|
+
// on the payment; the driver does not invent an event for it.
|
|
594
|
+
case 'PAYMENT_AWAITING_CHARGEBACK_REVERSAL':
|
|
595
|
+
return 'payment.dispute_closed';
|
|
379
596
|
case 'PAYMENT_CREATED':
|
|
380
597
|
case 'PAYMENT_UPDATED':
|
|
598
|
+
// Card authorized, awaiting capture (`authorizeOnly: true`). There is no canonical
|
|
599
|
+
// authorization event, and the payment's own status already says `authorized`.
|
|
600
|
+
case 'PAYMENT_AUTHORIZED':
|
|
601
|
+
// "Chargeback em disputa após apresentação de documentos para contestação": you
|
|
602
|
+
// contested it and the documents are in. Movement inside an open dispute, not a
|
|
603
|
+
// resolution and not a second chargeback — `event.raw.event` still names it.
|
|
604
|
+
case 'PAYMENT_CHARGEBACK_DISPUTE':
|
|
605
|
+
// A partial refund is deliberately NOT `payment.refunded`. That handler writes the
|
|
606
|
+
// charge off whole — status `refunded` — so a R$10 refund on a R$100 charge would
|
|
607
|
+
// erase R$90 of revenue. It stays an update, and the update is now the handler that
|
|
608
|
+
// records it honestly: `payment.updated` carries `refundedAmount` (integer minor
|
|
609
|
+
// units, summed from the payment's settled `refunds`) onto `billing_payments`, so the
|
|
610
|
+
// charge keeps its amount, its status and its settlement date, and the net is
|
|
611
|
+
// `amount - refunded_amount`. Until that column existed this event reached a
|
|
612
|
+
// `default:` that did nothing at all and the refund was simply lost.
|
|
613
|
+
case 'PAYMENT_PARTIALLY_REFUNDED':
|
|
614
|
+
// Asked for, scheduled, denied. No money has moved back on any of the three; only
|
|
615
|
+
// `PAYMENT_REFUNDED` means it did.
|
|
616
|
+
case 'PAYMENT_REFUND_IN_PROGRESS':
|
|
617
|
+
case 'PAYMENT_REFUND_DENIED':
|
|
618
|
+
// Manual risk review, start to finish. Approval is not receipt — the charge still
|
|
619
|
+
// has to be confirmed — so neither end of it grants anything.
|
|
620
|
+
case 'PAYMENT_AWAITING_RISK_ANALYSIS':
|
|
621
|
+
case 'PAYMENT_APPROVED_BY_RISK_ANALYSIS':
|
|
622
|
+
// The debt was sent to a credit bureau. Nothing was paid; the charge is still overdue.
|
|
623
|
+
case 'PAYMENT_DUNNING_REQUESTED':
|
|
624
|
+
// A cash receipt confirmed by hand and then taken back. The payment reverts to
|
|
625
|
+
// unpaid, and the synced row follows the payload's own status — which is why this is
|
|
626
|
+
// an update rather than a refund: Asaas never held the money.
|
|
627
|
+
case 'PAYMENT_RECEIVED_IN_CASH_UNDONE':
|
|
628
|
+
// Deleted and restored are the charge existing or not, not money moving.
|
|
629
|
+
case 'PAYMENT_DELETED':
|
|
630
|
+
case 'PAYMENT_RESTORED':
|
|
381
631
|
return 'payment.updated';
|
|
382
632
|
case 'SUBSCRIPTION_CREATED':
|
|
383
633
|
return 'subscription.created';
|
|
@@ -389,9 +639,10 @@ export class AsaasDriver {
|
|
|
389
639
|
return event.toLowerCase();
|
|
390
640
|
}
|
|
391
641
|
}
|
|
392
|
-
#mapWebhookData(payload) {
|
|
642
|
+
#mapWebhookData(payload, type) {
|
|
393
643
|
if (payload.payment) {
|
|
394
644
|
const payment = this.#mapPayment(payload.payment);
|
|
645
|
+
const refunded = this.#refundedAmount(payload.payment);
|
|
395
646
|
return {
|
|
396
647
|
gatewayId: payment.gatewayId,
|
|
397
648
|
amount: payment.amount.amount,
|
|
@@ -401,6 +652,14 @@ export class AsaasDriver {
|
|
|
401
652
|
...(payload.payment.externalReference !== undefined
|
|
402
653
|
? { externalReference: payload.payment.externalReference }
|
|
403
654
|
: {}),
|
|
655
|
+
// The payment's CURRENT state, and the two figures that go with it. `payment.updated`
|
|
656
|
+
// is the only event whose type does not state its own outcome — Asaas sends eight
|
|
657
|
+
// different things through it — so without these the processor could keep nothing
|
|
658
|
+
// current and a partial refund had nothing to record.
|
|
659
|
+
status: payment.status,
|
|
660
|
+
...(payment.paidAt !== undefined ? { paidAt: payment.paidAt } : {}),
|
|
661
|
+
...(refunded !== null ? { refundedAmount: refunded } : {}),
|
|
662
|
+
...this.#disputeExtras(payload.payment, type),
|
|
404
663
|
};
|
|
405
664
|
}
|
|
406
665
|
if (payload.subscription) {
|
|
@@ -415,6 +674,65 @@ export class AsaasDriver {
|
|
|
415
674
|
}
|
|
416
675
|
return {};
|
|
417
676
|
}
|
|
677
|
+
/**
|
|
678
|
+
* The dispute fields, added to the payment payload on the two chargeback events that
|
|
679
|
+
* carry a dispute — and to nothing else, so an ordinary `payment.updated` does not start
|
|
680
|
+
* announcing a deadline.
|
|
681
|
+
*
|
|
682
|
+
* `gatewayId` stays the PAYMENT's id (the row the chargeback is about); the chargeback's
|
|
683
|
+
* own id travels as `disputeId`. The amount deliberately stays the payment's too: a
|
|
684
|
+
* PARTIAL chargeback's `chargeback.value` is smaller, and the processor writes `amount`
|
|
685
|
+
* onto the row — the disputed figure is on `event.raw`.
|
|
686
|
+
*
|
|
687
|
+
* Every field is optional because no published Asaas webhook example shows the
|
|
688
|
+
* `chargeback` object at all. The webhook reference sends the payment resource and points
|
|
689
|
+
* at `GET /payments/{id}` for its schema, where `chargeback` lives; if Asaas omits it on
|
|
690
|
+
* the notification, the event is still correct, just without the deadline.
|
|
691
|
+
*/
|
|
692
|
+
#disputeExtras(payment, type) {
|
|
693
|
+
if (type !== 'payment.disputed' && type !== 'payment.dispute_closed')
|
|
694
|
+
return {};
|
|
695
|
+
const chargeback = payment.chargeback;
|
|
696
|
+
const deadline = this.#toIso(chargeback?.deadlineToSendDisputeDocuments);
|
|
697
|
+
return {
|
|
698
|
+
// Asaas' only documented outcome event is the won one; `#mapWebhookType` sends
|
|
699
|
+
// nothing else here, and the processor throws on a close with no outcome.
|
|
700
|
+
...(type === 'payment.dispute_closed' ? { outcome: 'won' } : {}),
|
|
701
|
+
...(chargeback?.id !== undefined ? { disputeId: chargeback.id } : {}),
|
|
702
|
+
...(chargeback?.reason !== undefined ? { reason: chargeback.reason } : {}),
|
|
703
|
+
// The one deadline Asaas publishes: `deadlineToSendDisputeDocuments`. A dispute
|
|
704
|
+
// answered after it is a dispute lost by default, which is the whole reason the
|
|
705
|
+
// normalized event has a field for it.
|
|
706
|
+
...(deadline !== null ? { actionableUntil: deadline } : {}),
|
|
707
|
+
};
|
|
708
|
+
}
|
|
709
|
+
/**
|
|
710
|
+
* How much of this payment has actually gone back, in integer minor units — or `null` when
|
|
711
|
+
* Asaas said nothing about refunds at all.
|
|
712
|
+
*
|
|
713
|
+
* `null` and `0` are different answers and the difference matters: `null` leaves whatever is
|
|
714
|
+
* stored alone (the store's leave-alone rule), while `0` would assert that nothing has been
|
|
715
|
+
* refunded — which is a claim a notification carrying no `refunds` array is not making.
|
|
716
|
+
*
|
|
717
|
+
* Only `DONE` entries count. Asaas can hold a refund `PENDING`, park it awaiting approval,
|
|
718
|
+
* and deny it outright (`PAYMENT_REFUND_DENIED` is a real event) — summing those would write
|
|
719
|
+
* off money still sitting in the account. `fromDecimal` per entry, then integer addition:
|
|
720
|
+
* the reais never meet each other as floats.
|
|
721
|
+
*/
|
|
722
|
+
#refundedAmount(payment) {
|
|
723
|
+
const refunds = payment.refunds;
|
|
724
|
+
if (refunds === undefined || !Array.isArray(refunds))
|
|
725
|
+
return null;
|
|
726
|
+
let total = 0;
|
|
727
|
+
for (const refund of refunds) {
|
|
728
|
+
if (refund?.status !== 'DONE')
|
|
729
|
+
continue;
|
|
730
|
+
if (typeof refund.value !== 'number')
|
|
731
|
+
continue;
|
|
732
|
+
total += fromDecimal(refund.value);
|
|
733
|
+
}
|
|
734
|
+
return total;
|
|
735
|
+
}
|
|
418
736
|
#mapMethod(method) {
|
|
419
737
|
switch (method) {
|
|
420
738
|
case 'pix':
|
|
@@ -439,6 +757,23 @@ export class AsaasDriver {
|
|
|
439
757
|
return 'unknown';
|
|
440
758
|
}
|
|
441
759
|
}
|
|
760
|
+
/**
|
|
761
|
+
* Asaas documents no idempotency mechanism — no header, no body field, on any endpoint;
|
|
762
|
+
* its own guidance is to deduplicate on your side before you retry. Accepting the key
|
|
763
|
+
* and dropping it would turn a caller's retry guarantee into a second refund or a
|
|
764
|
+
* second subscription, so the driver refuses it instead.
|
|
765
|
+
*
|
|
766
|
+
* `charge()` is the one exception, and it earns it by actually DOING the deduplication this
|
|
767
|
+
* message describes: it looks the charge up by `externalReference` before creating one, so
|
|
768
|
+
* the key is honoured rather than accepted and ignored. See {@link AsaasDriver.charge}.
|
|
769
|
+
* Every other method here would have to invent that lookup out of nothing, so it refuses
|
|
770
|
+
* loudly instead — an accepted-and-dropped key on `refund()` is a second refund.
|
|
771
|
+
*/
|
|
772
|
+
#refuseIdempotencyKey(key, operation) {
|
|
773
|
+
if (key === undefined)
|
|
774
|
+
return;
|
|
775
|
+
throw new Error(`[payments] Asaas has no idempotency mechanism, so \`${operation}\` cannot honour an idempotencyKey — no Asaas endpoint documents an idempotency header or field. Deduplicate before you call, e.g. by looking the record up by \`externalReference\` first.`);
|
|
776
|
+
}
|
|
442
777
|
#dueDate(input) {
|
|
443
778
|
return (input.metadata?.dueDate ??
|
|
444
779
|
new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString().slice(0, 10));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asaas.js","sourceRoot":"","sources":["../../../src/drivers/asaas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"asaas.js","sourceRoot":"","sources":["../../../src/drivers/asaas.ts"],"names":[],"mappings":"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"}
|