@adonis-agora/payments 0.2.0 → 0.4.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 (346) hide show
  1. package/CHANGELOG.md +2375 -0
  2. package/dist/assets/spa/assets/index-B7rU8eIL.css +2 -0
  3. package/dist/assets/spa/assets/index-BcM2VH5k.js +10 -0
  4. package/dist/assets/spa/assets/index-BcM2VH5k.js.map +1 -0
  5. package/dist/assets/spa/index.html +20 -0
  6. package/dist/commands/main.d.ts +4 -3
  7. package/dist/commands/main.d.ts.map +1 -1
  8. package/dist/commands/main.js +9 -2
  9. package/dist/commands/main.js.map +1 -1
  10. package/dist/commands/make_billable.d.ts.map +1 -1
  11. package/dist/commands/make_billable.js +1 -1
  12. package/dist/commands/make_billable.js.map +1 -1
  13. package/dist/commands/make_webhook_handler.d.ts.map +1 -1
  14. package/dist/commands/make_webhook_handler.js +1 -1
  15. package/dist/commands/make_webhook_handler.js.map +1 -1
  16. package/dist/commands/payments_health.d.ts +31 -0
  17. package/dist/commands/payments_health.d.ts.map +1 -0
  18. package/dist/commands/payments_health.js +113 -0
  19. package/dist/commands/payments_health.js.map +1 -0
  20. package/dist/commands/payments_sync.d.ts +18 -4
  21. package/dist/commands/payments_sync.d.ts.map +1 -1
  22. package/dist/commands/payments_sync.js +136 -40
  23. package/dist/commands/payments_sync.js.map +1 -1
  24. package/dist/commands/payments_webhook.d.ts.map +1 -1
  25. package/dist/commands/payments_webhook.js.map +1 -1
  26. package/dist/configure.d.ts +12 -5
  27. package/dist/configure.d.ts.map +1 -1
  28. package/dist/configure.js +18 -5
  29. package/dist/configure.js.map +1 -1
  30. package/dist/providers/dashboard_provider.d.ts +97 -0
  31. package/dist/providers/dashboard_provider.d.ts.map +1 -0
  32. package/dist/providers/dashboard_provider.js +430 -0
  33. package/dist/providers/dashboard_provider.js.map +1 -0
  34. package/dist/providers/payments_client_provider.d.ts +41 -0
  35. package/dist/providers/payments_client_provider.d.ts.map +1 -0
  36. package/dist/providers/payments_client_provider.js +95 -0
  37. package/dist/providers/payments_client_provider.js.map +1 -0
  38. package/dist/providers/payments_provider.d.ts +35 -0
  39. package/dist/providers/payments_provider.d.ts.map +1 -1
  40. package/dist/providers/payments_provider.js +250 -36
  41. package/dist/providers/payments_provider.js.map +1 -1
  42. package/dist/src/billing/billing_health.d.ts +85 -0
  43. package/dist/src/billing/billing_health.d.ts.map +1 -0
  44. package/dist/src/billing/billing_health.js +155 -0
  45. package/dist/src/billing/billing_health.js.map +1 -0
  46. package/dist/src/billing/billing_overview.d.ts +4 -3
  47. package/dist/src/billing/billing_overview.d.ts.map +1 -1
  48. package/dist/src/billing/billing_overview.js +14 -5
  49. package/dist/src/billing/billing_overview.js.map +1 -1
  50. package/dist/src/billing/billing_store.d.ts +634 -5
  51. package/dist/src/billing/billing_store.d.ts.map +1 -1
  52. package/dist/src/billing/billing_store.js +18 -1
  53. package/dist/src/billing/billing_store.js.map +1 -1
  54. package/dist/src/billing/index.d.ts +4 -3
  55. package/dist/src/billing/index.d.ts.map +1 -1
  56. package/dist/src/billing/index.js +2 -1
  57. package/dist/src/billing/index.js.map +1 -1
  58. package/dist/src/billing/list_query.d.ts +16 -0
  59. package/dist/src/billing/list_query.d.ts.map +1 -0
  60. package/dist/src/billing/list_query.js +28 -0
  61. package/dist/src/billing/list_query.js.map +1 -0
  62. package/dist/src/billing/lucid_billing_store.d.ts +122 -4
  63. package/dist/src/billing/lucid_billing_store.d.ts.map +1 -1
  64. package/dist/src/billing/lucid_billing_store.js +811 -13
  65. package/dist/src/billing/lucid_billing_store.js.map +1 -1
  66. package/dist/src/billing/mixins/index.d.ts +5 -2
  67. package/dist/src/billing/mixins/index.d.ts.map +1 -1
  68. package/dist/src/billing/mixins/index.js +5 -2
  69. package/dist/src/billing/mixins/index.js.map +1 -1
  70. package/dist/src/billing/mixins/with_audit_event.d.ts +48 -0
  71. package/dist/src/billing/mixins/with_audit_event.d.ts.map +1 -0
  72. package/dist/src/billing/mixins/with_audit_event.js +77 -0
  73. package/dist/src/billing/mixins/with_audit_event.js.map +1 -0
  74. package/dist/src/billing/mixins/with_billable.d.ts.map +1 -1
  75. package/dist/src/billing/mixins/with_customer.d.ts +39 -0
  76. package/dist/src/billing/mixins/with_customer.d.ts.map +1 -0
  77. package/dist/src/billing/mixins/with_customer.js +68 -0
  78. package/dist/src/billing/mixins/with_customer.js.map +1 -0
  79. package/dist/src/billing/mixins/with_dispute.d.ts +68 -0
  80. package/dist/src/billing/mixins/with_dispute.d.ts.map +1 -0
  81. package/dist/src/billing/mixins/with_dispute.js +83 -0
  82. package/dist/src/billing/mixins/with_dispute.js.map +1 -0
  83. package/dist/src/billing/mixins/with_payment.d.ts +42 -0
  84. package/dist/src/billing/mixins/with_payment.d.ts.map +1 -1
  85. package/dist/src/billing/mixins/with_payment.js +29 -3
  86. package/dist/src/billing/mixins/with_payment.js.map +1 -1
  87. package/dist/src/billing/mixins/with_subscription.d.ts +7 -0
  88. package/dist/src/billing/mixins/with_subscription.d.ts.map +1 -1
  89. package/dist/src/billing/mixins/with_subscription.js +15 -1
  90. package/dist/src/billing/mixins/with_subscription.js.map +1 -1
  91. package/dist/src/billing/mixins/with_usage_event.d.ts +7 -0
  92. package/dist/src/billing/mixins/with_usage_event.d.ts.map +1 -1
  93. package/dist/src/billing/mixins/with_usage_event.js +15 -1
  94. package/dist/src/billing/mixins/with_usage_event.js.map +1 -1
  95. package/dist/src/billing/mixins/with_webhook_event.d.ts +18 -0
  96. package/dist/src/billing/mixins/with_webhook_event.d.ts.map +1 -1
  97. package/dist/src/billing/mixins/with_webhook_event.js +18 -1
  98. package/dist/src/billing/mixins/with_webhook_event.js.map +1 -1
  99. package/dist/src/billing/resolve_dispatch.d.ts +22 -0
  100. package/dist/src/billing/resolve_dispatch.d.ts.map +1 -0
  101. package/dist/src/billing/resolve_dispatch.js +44 -0
  102. package/dist/src/billing/resolve_dispatch.js.map +1 -0
  103. package/dist/src/billing/resolve_store.d.ts +18 -0
  104. package/dist/src/billing/resolve_store.d.ts.map +1 -0
  105. package/dist/src/billing/resolve_store.js +35 -0
  106. package/dist/src/billing/resolve_store.js.map +1 -0
  107. package/dist/src/billing/schema.d.ts +108 -0
  108. package/dist/src/billing/schema.d.ts.map +1 -0
  109. package/dist/src/billing/schema.js +350 -0
  110. package/dist/src/billing/schema.js.map +1 -0
  111. package/dist/src/billing/webhook_dispatcher.d.ts +95 -16
  112. package/dist/src/billing/webhook_dispatcher.d.ts.map +1 -1
  113. package/dist/src/billing/webhook_dispatcher.js +186 -33
  114. package/dist/src/billing/webhook_dispatcher.js.map +1 -1
  115. package/dist/src/billing/webhook_events.d.ts +67 -1
  116. package/dist/src/billing/webhook_events.d.ts.map +1 -1
  117. package/dist/src/billing/webhook_events.js +15 -0
  118. package/dist/src/billing/webhook_events.js.map +1 -1
  119. package/dist/src/billing/webhook_processor.d.ts.map +1 -1
  120. package/dist/src/billing/webhook_processor.js +325 -5
  121. package/dist/src/billing/webhook_processor.js.map +1 -1
  122. package/dist/src/client/define_config.d.ts +150 -0
  123. package/dist/src/client/define_config.d.ts.map +1 -0
  124. package/dist/src/client/define_config.js +98 -0
  125. package/dist/src/client/define_config.js.map +1 -0
  126. package/dist/src/client/handlers.d.ts +71 -0
  127. package/dist/src/client/handlers.d.ts.map +1 -0
  128. package/dist/src/client/handlers.js +119 -0
  129. package/dist/src/client/handlers.js.map +1 -0
  130. package/dist/src/client/index.d.ts +15 -0
  131. package/dist/src/client/index.d.ts.map +1 -0
  132. package/dist/src/client/index.js +12 -0
  133. package/dist/src/client/index.js.map +1 -0
  134. package/dist/src/client/statuses.d.ts +38 -0
  135. package/dist/src/client/statuses.d.ts.map +1 -0
  136. package/dist/src/client/statuses.js +42 -0
  137. package/dist/src/client/statuses.js.map +1 -0
  138. package/dist/src/dashboard/actions.d.ts +143 -0
  139. package/dist/src/dashboard/actions.d.ts.map +1 -0
  140. package/dist/src/dashboard/actions.js +112 -0
  141. package/dist/src/dashboard/actions.js.map +1 -0
  142. package/dist/src/dashboard/auth.d.ts +136 -0
  143. package/dist/src/dashboard/auth.d.ts.map +1 -0
  144. package/dist/src/dashboard/auth.js +152 -0
  145. package/dist/src/dashboard/auth.js.map +1 -0
  146. package/dist/src/dashboard/define_config.d.ts +80 -0
  147. package/dist/src/dashboard/define_config.d.ts.map +1 -0
  148. package/dist/src/dashboard/define_config.js +83 -0
  149. package/dist/src/dashboard/define_config.js.map +1 -0
  150. package/dist/src/dashboard/handlers.d.ts +281 -0
  151. package/dist/src/dashboard/handlers.d.ts.map +1 -0
  152. package/dist/src/dashboard/handlers.js +960 -0
  153. package/dist/src/dashboard/handlers.js.map +1 -0
  154. package/dist/src/dashboard/index.d.ts +17 -0
  155. package/dist/src/dashboard/index.d.ts.map +1 -0
  156. package/dist/src/dashboard/index.js +13 -0
  157. package/dist/src/dashboard/index.js.map +1 -0
  158. package/dist/src/dashboard/login_page.d.ts +23 -0
  159. package/dist/src/dashboard/login_page.d.ts.map +1 -0
  160. package/dist/src/dashboard/login_page.js +170 -0
  161. package/dist/src/dashboard/login_page.js.map +1 -0
  162. package/dist/src/dashboard/period.d.ts +31 -0
  163. package/dist/src/dashboard/period.d.ts.map +1 -0
  164. package/dist/src/dashboard/period.js +44 -0
  165. package/dist/src/dashboard/period.js.map +1 -0
  166. package/dist/src/dashboard/session_cookie.d.ts +42 -0
  167. package/dist/src/dashboard/session_cookie.d.ts.map +1 -0
  168. package/dist/src/dashboard/session_cookie.js +97 -0
  169. package/dist/src/dashboard/session_cookie.js.map +1 -0
  170. package/dist/src/dashboard/spa.d.ts +24 -0
  171. package/dist/src/dashboard/spa.d.ts.map +1 -0
  172. package/dist/src/dashboard/spa.js +52 -0
  173. package/dist/src/dashboard/spa.js.map +1 -0
  174. package/dist/src/define_config.d.ts +245 -10
  175. package/dist/src/define_config.d.ts.map +1 -1
  176. package/dist/src/define_config.js +97 -1
  177. package/dist/src/define_config.js.map +1 -1
  178. package/dist/src/diagnostics.d.ts +287 -7
  179. package/dist/src/diagnostics.d.ts.map +1 -1
  180. package/dist/src/diagnostics.js +317 -1
  181. package/dist/src/diagnostics.js.map +1 -1
  182. package/dist/src/driver.d.ts +139 -5
  183. package/dist/src/driver.d.ts.map +1 -1
  184. package/dist/src/drivers/abacate.d.ts +13 -3
  185. package/dist/src/drivers/abacate.d.ts.map +1 -1
  186. package/dist/src/drivers/abacate.js +112 -19
  187. package/dist/src/drivers/abacate.js.map +1 -1
  188. package/dist/src/drivers/adyen.d.ts +164 -0
  189. package/dist/src/drivers/adyen.d.ts.map +1 -0
  190. package/dist/src/drivers/adyen.js +678 -0
  191. package/dist/src/drivers/adyen.js.map +1 -0
  192. package/dist/src/drivers/asaas.d.ts +53 -3
  193. package/dist/src/drivers/asaas.d.ts.map +1 -1
  194. package/dist/src/drivers/asaas.js +364 -29
  195. package/dist/src/drivers/asaas.js.map +1 -1
  196. package/dist/src/drivers/dodo.d.ts +135 -0
  197. package/dist/src/drivers/dodo.d.ts.map +1 -0
  198. package/dist/src/drivers/dodo.js +864 -0
  199. package/dist/src/drivers/dodo.js.map +1 -0
  200. package/dist/src/drivers/efi.d.ts +98 -0
  201. package/dist/src/drivers/efi.d.ts.map +1 -0
  202. package/dist/src/drivers/efi.js +628 -0
  203. package/dist/src/drivers/efi.js.map +1 -0
  204. package/dist/src/drivers/infinitepay.d.ts +156 -0
  205. package/dist/src/drivers/infinitepay.d.ts.map +1 -0
  206. package/dist/src/drivers/infinitepay.js +321 -0
  207. package/dist/src/drivers/infinitepay.js.map +1 -0
  208. package/dist/src/drivers/lemonsqueezy.d.ts +125 -0
  209. package/dist/src/drivers/lemonsqueezy.d.ts.map +1 -0
  210. package/dist/src/drivers/lemonsqueezy.js +632 -0
  211. package/dist/src/drivers/lemonsqueezy.js.map +1 -0
  212. package/dist/src/drivers/mercadopago.d.ts +97 -0
  213. package/dist/src/drivers/mercadopago.d.ts.map +1 -0
  214. package/dist/src/drivers/mercadopago.js +844 -0
  215. package/dist/src/drivers/mercadopago.js.map +1 -0
  216. package/dist/src/drivers/mollie.d.ts +125 -0
  217. package/dist/src/drivers/mollie.d.ts.map +1 -0
  218. package/dist/src/drivers/mollie.js +812 -0
  219. package/dist/src/drivers/mollie.js.map +1 -0
  220. package/dist/src/drivers/paddle.d.ts +148 -0
  221. package/dist/src/drivers/paddle.d.ts.map +1 -0
  222. package/dist/src/drivers/paddle.js +738 -0
  223. package/dist/src/drivers/paddle.js.map +1 -0
  224. package/dist/src/drivers/pagarme.d.ts +97 -0
  225. package/dist/src/drivers/pagarme.d.ts.map +1 -0
  226. package/dist/src/drivers/pagarme.js +829 -0
  227. package/dist/src/drivers/pagarme.js.map +1 -0
  228. package/dist/src/drivers/pagbank.d.ts +57 -0
  229. package/dist/src/drivers/pagbank.d.ts.map +1 -0
  230. package/dist/src/drivers/pagbank.js +499 -0
  231. package/dist/src/drivers/pagbank.js.map +1 -0
  232. package/dist/src/drivers/paypal.d.ts +120 -0
  233. package/dist/src/drivers/paypal.d.ts.map +1 -0
  234. package/dist/src/drivers/paypal.js +891 -0
  235. package/dist/src/drivers/paypal.js.map +1 -0
  236. package/dist/src/drivers/polar.d.ts +118 -0
  237. package/dist/src/drivers/polar.d.ts.map +1 -0
  238. package/dist/src/drivers/polar.js +604 -0
  239. package/dist/src/drivers/polar.js.map +1 -0
  240. package/dist/src/drivers/razorpay.d.ts +103 -0
  241. package/dist/src/drivers/razorpay.d.ts.map +1 -0
  242. package/dist/src/drivers/razorpay.js +867 -0
  243. package/dist/src/drivers/razorpay.js.map +1 -0
  244. package/dist/src/drivers/shared.d.ts +33 -0
  245. package/dist/src/drivers/shared.d.ts.map +1 -0
  246. package/dist/src/drivers/shared.js +37 -0
  247. package/dist/src/drivers/shared.js.map +1 -0
  248. package/dist/src/drivers/square.d.ts +133 -0
  249. package/dist/src/drivers/square.d.ts.map +1 -0
  250. package/dist/src/drivers/square.js +905 -0
  251. package/dist/src/drivers/square.js.map +1 -0
  252. package/dist/src/drivers/stripe.d.ts +41 -4
  253. package/dist/src/drivers/stripe.d.ts.map +1 -1
  254. package/dist/src/drivers/stripe.js +823 -26
  255. package/dist/src/drivers/stripe.js.map +1 -1
  256. package/dist/src/drivers/woovi.d.ts +11 -4
  257. package/dist/src/drivers/woovi.d.ts.map +1 -1
  258. package/dist/src/drivers/woovi.js +162 -29
  259. package/dist/src/drivers/woovi.js.map +1 -1
  260. package/dist/src/ensure_customer.d.ts +34 -1
  261. package/dist/src/ensure_customer.d.ts.map +1 -1
  262. package/dist/src/ensure_customer.js +29 -4
  263. package/dist/src/ensure_customer.js.map +1 -1
  264. package/dist/src/hooks/webhook_handlers.d.ts.map +1 -1
  265. package/dist/src/hooks/webhook_handlers.js.map +1 -1
  266. package/dist/src/http.d.ts +37 -3
  267. package/dist/src/http.d.ts.map +1 -1
  268. package/dist/src/http.js +69 -5
  269. package/dist/src/http.js.map +1 -1
  270. package/dist/src/index.d.ts +54 -26
  271. package/dist/src/index.d.ts.map +1 -1
  272. package/dist/src/index.js +29 -12
  273. package/dist/src/index.js.map +1 -1
  274. package/dist/src/invoice/drivers/asaas.d.ts.map +1 -1
  275. package/dist/src/invoice/drivers/asaas.js.map +1 -1
  276. package/dist/src/invoice/drivers/enotas.d.ts.map +1 -1
  277. package/dist/src/invoice/drivers/enotas.js.map +1 -1
  278. package/dist/src/invoice/drivers/focus.d.ts.map +1 -1
  279. package/dist/src/invoice/drivers/focus.js.map +1 -1
  280. package/dist/src/invoice/drivers/plugnotas.d.ts.map +1 -1
  281. package/dist/src/invoice/drivers/plugnotas.js.map +1 -1
  282. package/dist/src/invoice/drivers/tecnospeed.d.ts.map +1 -1
  283. package/dist/src/invoice/drivers/tecnospeed.js.map +1 -1
  284. package/dist/src/invoice/emit_invoice.d.ts.map +1 -1
  285. package/dist/src/invoice/emit_invoice.js +31 -11
  286. package/dist/src/invoice/emit_invoice.js.map +1 -1
  287. package/dist/src/invoice/invoice_manager.d.ts.map +1 -1
  288. package/dist/src/money.d.ts +23 -5
  289. package/dist/src/money.d.ts.map +1 -1
  290. package/dist/src/money.js +72 -7
  291. package/dist/src/money.js.map +1 -1
  292. package/dist/src/payments_manager.d.ts +8 -1
  293. package/dist/src/payments_manager.d.ts.map +1 -1
  294. package/dist/src/payments_manager.js +168 -6
  295. package/dist/src/payments_manager.js.map +1 -1
  296. package/dist/src/services/main.d.ts +38 -0
  297. package/dist/src/services/main.d.ts.map +1 -1
  298. package/dist/src/services/main.js +130 -0
  299. package/dist/src/services/main.js.map +1 -1
  300. package/dist/src/telescope/index.d.ts +2 -0
  301. package/dist/src/telescope/index.d.ts.map +1 -1
  302. package/dist/src/telescope/index.js +1 -0
  303. package/dist/src/telescope/index.js.map +1 -1
  304. package/dist/src/telescope/payments_watcher.d.ts +10 -4
  305. package/dist/src/telescope/payments_watcher.d.ts.map +1 -1
  306. package/dist/src/telescope/payments_watcher.js +66 -14
  307. package/dist/src/telescope/payments_watcher.js.map +1 -1
  308. package/dist/src/telescope/register.d.ts +62 -0
  309. package/dist/src/telescope/register.d.ts.map +1 -0
  310. package/dist/src/telescope/register.js +48 -0
  311. package/dist/src/telescope/register.js.map +1 -0
  312. package/dist/src/testing/fake_payments.d.ts +62 -0
  313. package/dist/src/testing/fake_payments.d.ts.map +1 -0
  314. package/dist/src/testing/fake_payments.js +82 -0
  315. package/dist/src/testing/fake_payments.js.map +1 -0
  316. package/dist/src/testing/fake_payments_driver.d.ts +1 -1
  317. package/dist/src/testing/fake_payments_driver.d.ts.map +1 -1
  318. package/dist/src/testing/fake_payments_driver.js.map +1 -1
  319. package/dist/src/testing/in_memory_billing_store.d.ts +151 -2
  320. package/dist/src/testing/in_memory_billing_store.d.ts.map +1 -1
  321. package/dist/src/testing/in_memory_billing_store.js +517 -4
  322. package/dist/src/testing/in_memory_billing_store.js.map +1 -1
  323. package/dist/src/testing/index.d.ts +3 -2
  324. package/dist/src/testing/index.d.ts.map +1 -1
  325. package/dist/src/testing/index.js +1 -0
  326. package/dist/src/testing/index.js.map +1 -1
  327. package/dist/src/testing/mutable_clock.d.ts.map +1 -1
  328. package/dist/src/types.d.ts +161 -5
  329. package/dist/src/types.d.ts.map +1 -1
  330. package/dist/src/types.js +30 -1
  331. package/dist/src/types.js.map +1 -1
  332. package/dist/src/webhook_handlers.d.ts +96 -2
  333. package/dist/src/webhook_handlers.d.ts.map +1 -1
  334. package/dist/src/webhook_handlers.js +91 -10
  335. package/dist/src/webhook_handlers.js.map +1 -1
  336. package/dist/src/webhook_security.d.ts +94 -3
  337. package/dist/src/webhook_security.d.ts.map +1 -1
  338. package/dist/src/webhook_security.js +173 -9
  339. package/dist/src/webhook_security.js.map +1 -1
  340. package/dist/stubs/config/payments.stub +13 -0
  341. package/dist/stubs/config/payments_client.stub +42 -0
  342. package/dist/stubs/config/payments_dashboard.stub +38 -0
  343. package/dist/stubs/database/migrations/create_billing_tables.stub +35 -77
  344. package/dist/stubs/main.js.map +1 -1
  345. package/dist/stubs/make/webhook_handler/main.stub +29 -11
  346. package/package.json +67 -32
@@ -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. `idempotencyKey` doubles as it only when the app
87
- // didn't pass an explicit reference (legacy behavior).
88
- ...(input.externalReference !== undefined || input.idempotencyKey !== undefined
89
- ? { externalReference: input.externalReference ?? input.idempotencyKey }
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
- // PIX: busca o QR code da cobrança (o Asaas não retorna no create).
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 ? { pixCopiaECola: data.pixCopiaECola } : {}),
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 data = await this.#request(`/payments?customer=${encodeURIComponent(customerId)}`);
254
- return data.data.map((payment) => ({
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
- const id = `${payload.event}-${payload.payment?.id ?? payload.subscription?.id ?? Math.random()}`;
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: this.#mapWebhookType(payload.event),
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
- if (data.pixCopiaECola !== undefined)
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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"}