@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagarme.js","sourceRoot":"","sources":["../../../src/drivers/pagarme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { PagBankDriverConfig } from '../define_config.js';
2
+ import type { ChargeInput, CheckoutInput, CreateCustomerInput, CreateSubscriptionInput, PaymentsDriver, UpdateCustomerInput, UpdateSubscriptionInput, WebhookVerificationState } from '../driver.js';
3
+ import type { EmitInvoiceContext } from '../invoice/emit_invoice.js';
4
+ import type { CheckoutSession, Customer, Invoice, Money, Payment, Refund, Subscription, WebhookEvent } from '../types.js';
5
+ /**
6
+ * PagBank (PagSeguro) driver — the **Orders API v4** (`api.pagseguro.com/orders`), Bearer
7
+ * token, money as integer centavos in `amount.value` (no decimal conversion anywhere in
8
+ * this file). Uses `fetch` directly, no SDK.
9
+ *
10
+ * Two things about this gateway shape the whole driver:
11
+ *
12
+ * 1. **An order is not a charge.** Every payment — Pix included, since the v2 Pix flow —
13
+ * is a `charges[]` entry inside an order, and each has its own id. The webhook delivers
14
+ * the *order*, so this driver uses the **order id** (`ORDE_…`) as the `gatewayId`
15
+ * everywhere; keying on the charge id would file the charge you created and the webhook
16
+ * that confirms it under two different ids, and nothing would reconcile. `refund()`
17
+ * accepts either id and resolves the charge (`CHAR_…`) itself.
18
+ * 2. **There is no customer resource and no subscription.** Customer data is inline on
19
+ * each order, and recurring billing is a different PagBank product (the Assinaturas
20
+ * API). Those methods throw instead of pretending.
21
+ */
22
+ export declare class PagBankDriver implements PaymentsDriver {
23
+ #private;
24
+ readonly provider = "pagbank";
25
+ readonly supportedMethods: readonly ['pix', 'credit_card', 'debit_card', 'boleto'];
26
+ readonly capabilities: {
27
+ refunds: boolean;
28
+ invoices: boolean;
29
+ subscriptions: boolean;
30
+ };
31
+ constructor(ctx: EmitInvoiceContext, config?: PagBankDriverConfig);
32
+ createCustomer(_input: CreateCustomerInput): Promise<Customer>;
33
+ findCustomer(_customerId: string): Promise<Customer | null>;
34
+ updateCustomer(_customerId: string, _input: UpdateCustomerInput): Promise<Customer>;
35
+ charge(input: ChargeInput): Promise<Payment>;
36
+ findPayment(gatewayId: string): Promise<Payment | null>;
37
+ refund(paymentGatewayId: string, amount?: Money, options?: {
38
+ idempotencyKey?: string;
39
+ }): Promise<Refund>;
40
+ createCheckout(input: CheckoutInput): Promise<CheckoutSession>;
41
+ createSubscription(_input: CreateSubscriptionInput): Promise<Subscription>;
42
+ cancelSubscription(_subscriptionGatewayId: string, _options?: {
43
+ atPeriodEnd?: boolean;
44
+ }): Promise<Subscription>;
45
+ updateSubscription(_subscriptionGatewayId: string, _input: UpdateSubscriptionInput): Promise<Subscription>;
46
+ findSubscription(_gatewayId: string): Promise<Subscription | null>;
47
+ listInvoices(_customerId: string): Promise<Invoice[]>;
48
+ /**
49
+ * Whether a delivery to `POST /payments/webhook/:provider` can be authenticated.
50
+ *
51
+ * `verifyWebhooks: false` is a deliberate opt-out, and it is reported as what it is so the
52
+ * boot check can refuse it unless the app also opted out there.
53
+ */
54
+ get webhookVerification(): WebhookVerificationState;
55
+ parseWebhook(rawBody: string, headers: Record<string, string | string[] | undefined>): WebhookEvent;
56
+ }
57
+ //# sourceMappingURL=pagbank.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagbank.d.ts","sourceRoot":"","sources":["../../../src/drivers/pagbank.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,OAAO,EACP,KAAK,EACL,OAAO,EAEP,MAAM,EACN,YAAY,EACZ,YAAY,EACb,MAAM,aAAa,CAAC;AAwDrB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAc,YAAW,cAAc;;IAClD,QAAQ,CAAC,QAAQ,aAAa;IAG9B,QAAQ,CAAC,gBAAgB,YAAI,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAW;IACpF,QAAQ,CAAC,YAAY;QAAK,OAAO;QAAQ,QAAQ;QAAS,aAAa;MAAU;IASjF,YAAY,GAAG,EAAE,kBAAkB,EAAE,MAAM,GAAE,mBAAwB,EAiBpE;IAIK,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAKnE;IAEK,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAKhE;IAEK,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAIxF;IAIK,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BjD;IAEK,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAc5D;IAEK,MAAM,CACV,gBAAgB,EAAE,MAAM,EACxB,MAAM,CAAC,EAAE,KAAK,EACd,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GACpC,OAAO,CAAC,MAAM,CAAC,CA2BjB;IAIK,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAuCnE;IAIK,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC,CAK/E;IAEK,kBAAkB,CACtB,sBAAsB,EAAE,MAAM,EAC9B,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GACnC,OAAO,CAAC,YAAY,CAAC,CAIvB;IAEK,kBAAkB,CACtB,sBAAsB,EAAE,MAAM,EAC9B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAIvB;IAEK,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAIvE;IAIK,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAW1D;IAID;;;;;OAKG;IACH,IAAI,mBAAmB,IAAI,wBAAwB,CAElD;IAED,YAAY,CACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD,YAAY,CAwDd;CAiQF"}
@@ -0,0 +1,499 @@
1
+ import { publishPaymentDiagnostics, publishRefundDiagnostics } from '../diagnostics.js';
2
+ import { headerValue, httpRequest, isNotFound } from '../http.js';
3
+ import { emitInvoiceIfRequested } from '../invoice/emit_invoice.js';
4
+ import { verifyPagBankAuthenticityToken } from '../webhook_security.js';
5
+ import { requireCredential } from './shared.js';
6
+ /**
7
+ * PagBank (PagSeguro) driver — the **Orders API v4** (`api.pagseguro.com/orders`), Bearer
8
+ * token, money as integer centavos in `amount.value` (no decimal conversion anywhere in
9
+ * this file). Uses `fetch` directly, no SDK.
10
+ *
11
+ * Two things about this gateway shape the whole driver:
12
+ *
13
+ * 1. **An order is not a charge.** Every payment — Pix included, since the v2 Pix flow —
14
+ * is a `charges[]` entry inside an order, and each has its own id. The webhook delivers
15
+ * the *order*, so this driver uses the **order id** (`ORDE_…`) as the `gatewayId`
16
+ * everywhere; keying on the charge id would file the charge you created and the webhook
17
+ * that confirms it under two different ids, and nothing would reconcile. `refund()`
18
+ * accepts either id and resolves the charge (`CHAR_…`) itself.
19
+ * 2. **There is no customer resource and no subscription.** Customer data is inline on
20
+ * each order, and recurring billing is a different PagBank product (the Assinaturas
21
+ * API). Those methods throw instead of pretending.
22
+ */
23
+ export class PagBankDriver {
24
+ provider = 'pagbank';
25
+ // No `'undefined'`: the Orders API makes you choose up front — a Pix order carries
26
+ // `qr_codes`, a card/boleto order carries `charges`. There is no "payer decides later".
27
+ supportedMethods = ['pix', 'credit_card', 'debit_card', 'boleto'];
28
+ capabilities = { refunds: true, invoices: false, subscriptions: false };
29
+ #baseUrl;
30
+ #token;
31
+ #webhookToken;
32
+ #verifyWebhooks;
33
+ #notificationUrls;
34
+ #invoiceCtx;
35
+ constructor(ctx, config = {}) {
36
+ this.#invoiceCtx = ctx;
37
+ const token = requireCredential({
38
+ driver: 'pagbank',
39
+ option: 'token',
40
+ env: 'PAGBANK_TOKEN',
41
+ value: config.token,
42
+ });
43
+ this.#token = token;
44
+ const sandbox = config.sandbox ?? process.env.NODE_ENV !== 'production';
45
+ this.#baseUrl = sandbox ? 'https://sandbox.api.pagseguro.com' : 'https://api.pagseguro.com';
46
+ // PagBank signs the webhook with the SAME token that authenticates API calls — there
47
+ // is no separate webhook secret to configure, so this defaults to the API token and
48
+ // verification is on unless you turn it off.
49
+ this.#webhookToken = config.webhookToken ?? process.env.PAGBANK_WEBHOOK_TOKEN ?? token;
50
+ this.#verifyWebhooks = config.verifyWebhooks ?? true;
51
+ this.#notificationUrls = config.notificationUrls ?? [];
52
+ }
53
+ // ── Customers ────────────────────────────────────────────────────────────────────────
54
+ async createCustomer(_input) {
55
+ throw new Error('[payments] PagBank has no customer resource — the Orders API carries the payer inline on each order. ' +
56
+ 'Pass `customer: { name, email, taxId }` on the charge instead, and keep the mapping in your own table.');
57
+ }
58
+ async findCustomer(_customerId) {
59
+ throw new Error('[payments] PagBank has no customer resource to look up — the payer lives on the order. ' +
60
+ 'Read it from `payment.payload.customer`, or from your own records.');
61
+ }
62
+ async updateCustomer(_customerId, _input) {
63
+ throw new Error('[payments] PagBank has no customer resource to update — the payer is sent inline with every order.');
64
+ }
65
+ // ── Payments ─────────────────────────────────────────────────────────────────────────
66
+ async charge(input) {
67
+ const method = this.#resolveMethod(input);
68
+ const body = {
69
+ // `reference_id` is the app's own id, echoed back on the order and on the webhook —
70
+ // the routing key handlers read. `idempotencyKey` doubles as it only when no
71
+ // explicit reference was given (same rule as the Asaas driver).
72
+ ...(input.externalReference !== undefined || input.idempotencyKey !== undefined
73
+ ? { reference_id: input.externalReference ?? input.idempotencyKey }
74
+ : {}),
75
+ customer: this.#requireCustomer(input),
76
+ items: [
77
+ {
78
+ name: input.description ?? 'Payment',
79
+ quantity: 1,
80
+ // Centavos, straight through: PagBank speaks the same unit this library does.
81
+ unit_amount: input.amount,
82
+ },
83
+ ],
84
+ ...(this.#notificationUrls.length > 0 ? { notification_urls: this.#notificationUrls } : {}),
85
+ charges: [this.#buildCharge(input, method)],
86
+ };
87
+ const order = await this.#request('/orders', {
88
+ method: 'POST',
89
+ body,
90
+ ...(input.idempotencyKey !== undefined ? { idempotencyKey: input.idempotencyKey } : {}),
91
+ });
92
+ const payment = this.#mapOrder(order);
93
+ await emitInvoiceIfRequested(this.#invoiceCtx, input, payment, this);
94
+ publishPaymentDiagnostics(payment);
95
+ return payment;
96
+ }
97
+ async findPayment(gatewayId) {
98
+ try {
99
+ // Accept either id: the driver hands out order ids, but a charge id (`CHAR_…`) read
100
+ // off a payload should not be a dead end.
101
+ if (gatewayId.startsWith('CHAR_')) {
102
+ const charge = await this.#request(`/charges/${gatewayId}`);
103
+ return this.#mapOrder({ id: gatewayId, charges: [charge] });
104
+ }
105
+ const order = await this.#request(`/orders/${gatewayId}`);
106
+ return this.#mapOrder(order);
107
+ }
108
+ catch (error) {
109
+ if (isNotFound(error))
110
+ return null;
111
+ throw error;
112
+ }
113
+ }
114
+ async refund(paymentGatewayId, amount, options) {
115
+ const charge = await this.#resolveCharge(paymentGatewayId);
116
+ // PagBank wants the amount on every cancel, so a "full refund" is spelled out as the
117
+ // amount actually paid rather than left to a default this driver cannot see.
118
+ const value = amount ?? charge.amount.summary?.paid ?? charge.amount.value;
119
+ const data = await this.#request(`/charges/${charge.id}/cancel`, {
120
+ method: 'POST',
121
+ body: { amount: { value } },
122
+ // Same `x-idempotency-key` the charge uses: a retried cancel with the key returns
123
+ // the original refund instead of taking the money out a second time.
124
+ ...(options?.idempotencyKey !== undefined ? { idempotencyKey: options.idempotencyKey } : {}),
125
+ });
126
+ const refund = {
127
+ id: data.id,
128
+ gatewayId: data.id,
129
+ provider: this.provider,
130
+ amount: { amount: value, currency: 'brl' },
131
+ // A full cancel flips the charge to CANCELED; a partial one leaves it PAID with a
132
+ // non-zero `refunded` summary. Either way PagBank accepted the refund.
133
+ status: data.status === 'CANCELED' || (data.amount.summary?.refunded ?? 0) > 0
134
+ ? 'succeeded'
135
+ : 'pending',
136
+ createdAt: new Date().toISOString(),
137
+ };
138
+ publishRefundDiagnostics(refund);
139
+ return refund;
140
+ }
141
+ // ── Checkout ─────────────────────────────────────────────────────────────────────────
142
+ async createCheckout(input) {
143
+ // PagBank's hosted, "we render the payment page" product is Checkout PagBank — a
144
+ // different API (`/checkouts`) with its own contract. From the Orders API the closest
145
+ // honest thing is a Pix order: the payer gets a BR Code, not a redirect, so `url` is
146
+ // empty rather than pointing somewhere that does not exist.
147
+ const order = await this.#request('/orders', {
148
+ method: 'POST',
149
+ body: {
150
+ // Same routing key as a charge: PagBank echoes `reference_id` on the order and on
151
+ // every webhook it sends about it.
152
+ ...(input.externalReference !== undefined || input.idempotencyKey !== undefined
153
+ ? { reference_id: input.externalReference ?? input.idempotencyKey }
154
+ : {}),
155
+ customer: this.#requireCustomer(input),
156
+ items: [{ name: input.description ?? 'Checkout', quantity: 1, unit_amount: input.amount }],
157
+ ...(this.#notificationUrls.length > 0 ? { notification_urls: this.#notificationUrls } : {}),
158
+ charges: [
159
+ {
160
+ ...(input.description !== undefined ? { description: input.description } : {}),
161
+ amount: { value: input.amount, currency: 'BRL' },
162
+ payment_method: {
163
+ type: 'PIX',
164
+ pix: { expiration_date: new Date(Date.now() + 60 * 60 * 1000).toISOString() },
165
+ },
166
+ },
167
+ ],
168
+ },
169
+ ...(input.idempotencyKey !== undefined ? { idempotencyKey: input.idempotencyKey } : {}),
170
+ });
171
+ const brCode = order.charges?.[0]?.qr_code?.text ?? order.qr_codes?.[0]?.text;
172
+ return {
173
+ id: order.id,
174
+ gatewayId: order.id,
175
+ provider: this.provider,
176
+ url: '',
177
+ status: 'open',
178
+ amount: { amount: input.amount, currency: 'brl' },
179
+ ...(brCode !== undefined ? { pixCode: brCode, pixCopiaECola: brCode } : {}),
180
+ };
181
+ }
182
+ // ── Subscriptions ────────────────────────────────────────────────────────────────────
183
+ async createSubscription(_input) {
184
+ throw new Error('[payments] PagBank recurring billing is a separate product (the Assinaturas API), not the Orders API this driver speaks. ' +
185
+ 'Charge each cycle yourself, or add a driver for the Assinaturas API.');
186
+ }
187
+ async cancelSubscription(_subscriptionGatewayId, _options) {
188
+ throw new Error('[payments] PagBank subscriptions live in the Assinaturas API, which this driver does not speak.');
189
+ }
190
+ async updateSubscription(_subscriptionGatewayId, _input) {
191
+ throw new Error('[payments] PagBank subscriptions live in the Assinaturas API, which this driver does not speak.');
192
+ }
193
+ async findSubscription(_gatewayId) {
194
+ throw new Error('[payments] PagBank subscriptions live in the Assinaturas API, which this driver does not speak.');
195
+ }
196
+ // ── Invoices ─────────────────────────────────────────────────────────────────────────
197
+ async listInvoices(_customerId) {
198
+ // `capabilities.invoices` is false, so this throws rather than returning `[]`: an
199
+ // empty array is indistinguishable from "this customer has no invoices", which is
200
+ // not something PagBank told us. The Orders API has no invoice concept and no
201
+ // per-customer index to list over — orders are found by their own id or by
202
+ // `reference_id`.
203
+ throw new Error('[payments] PagBank has no invoices to list. The Orders API indexes orders by their own id ' +
204
+ 'or by `reference_id`, not by customer, and has no invoice resource. Use `findPayment`, or ' +
205
+ 'an invoice provider with `invoice: true` for a fiscal note.');
206
+ }
207
+ // ── Webhooks ─────────────────────────────────────────────────────────────────────────
208
+ /**
209
+ * Whether a delivery to `POST /payments/webhook/:provider` can be authenticated.
210
+ *
211
+ * `verifyWebhooks: false` is a deliberate opt-out, and it is reported as what it is so the
212
+ * boot check can refuse it unless the app also opted out there.
213
+ */
214
+ get webhookVerification() {
215
+ return this.#verifyWebhooks ? 'configured' : 'unconfigured';
216
+ }
217
+ parseWebhook(rawBody, headers) {
218
+ if (this.#verifyWebhooks) {
219
+ const received = headerValue(headers, 'x-authenticity-token');
220
+ if (!verifyPagBankAuthenticityToken(rawBody, received, this.#webhookToken)) {
221
+ throw new Error('[payments] Invalid or missing PagBank webhook authenticity token (`x-authenticity-token`).');
222
+ }
223
+ }
224
+ let payload;
225
+ try {
226
+ payload = JSON.parse(rawBody);
227
+ }
228
+ catch {
229
+ // PagBank's *post-transaction* events (balance released, chargeback) still use the
230
+ // legacy form-encoded `notificationCode=…&notificationType=transaction` shape, which
231
+ // is a different API with a different lookup and no authenticity token at all: the
232
+ // code is resolved against `ws.pagseguro.uol.com.br/v3/transactions/notifications/{code}`
233
+ // with an account email and `token_api`, and answers in XML. The dispute lives there
234
+ // as legacy transaction status **9, "Retenção temporária"** ("o comprador abriu uma
235
+ // solicitação de chargeback junto à operadora do cartão") — status **5, "Em disputa"**
236
+ // being the earlier in-PagBank complaint. The Orders API enum this driver reads
237
+ // (AUTHORIZED/PAID/IN_ANALYSIS/DECLINED/CANCELED/WAITING) has no dispute member at
238
+ // all, so PagBank sends this driver no chargeback, no pre-dispute alert and no
239
+ // defense deadline — half-parsing a body from the other API would not change that.
240
+ throw new Error('[payments] PagBank webhook body is not JSON. This driver handles Orders API notifications; ' +
241
+ 'legacy `notificationCode` notifications (post-transaction events) need their own route.');
242
+ }
243
+ if (typeof payload.id !== 'string') {
244
+ throw new Error('[payments] PagBank webhook payload has no order id.');
245
+ }
246
+ const charge = payload.charges?.[0];
247
+ const status = charge?.status;
248
+ const refunded = charge?.amount.summary?.refunded ?? 0;
249
+ const payment = this.#mapOrder(payload);
250
+ return {
251
+ // PagBank sends no event id, so it is derived from what changed: the same state
252
+ // transition redelivered dedupes in the ledger, a later transition does not.
253
+ id: `${payload.id}:${charge?.id ?? 'order'}:${status ?? 'CREATED'}:${refunded}`,
254
+ provider: this.provider,
255
+ type: this.#mapWebhookType(status, refunded),
256
+ createdAt: charge?.paid_at ?? charge?.created_at ?? new Date().toISOString(),
257
+ data: {
258
+ gatewayId: payment.gatewayId,
259
+ amount: payment.amount.amount,
260
+ currency: payment.amount.currency,
261
+ ...(payload.reference_id !== undefined ? { externalReference: payload.reference_id } : {}),
262
+ ...(charge !== undefined
263
+ ? { metadata: { chargeId: charge.id, status: charge.status } }
264
+ : {}),
265
+ },
266
+ raw: payload,
267
+ };
268
+ }
269
+ // ── Mappers ──────────────────────────────────────────────────────────────────────────
270
+ /**
271
+ * Normalize an order (the shape both the API and the webhook return) into a
272
+ * {@link Payment}. `gatewayId` is the ORDER id — see the class doc for why.
273
+ */
274
+ #mapOrder(order) {
275
+ const charge = order.charges?.[0];
276
+ const qr = order.qr_codes?.[0];
277
+ // Integer centavos on both sides — unlike the Asaas/Woovi drivers there is no
278
+ // `fromDecimal` here, and that is deliberate: PagBank's `amount.value` already IS the
279
+ // currency's smallest unit, so converting would divide the money by a hundred.
280
+ const amount = charge?.amount.value ?? qr?.amount.value ?? 0;
281
+ const refunded = charge?.amount.summary?.refunded ?? 0;
282
+ const result = {
283
+ id: order.id,
284
+ gatewayId: order.id,
285
+ provider: this.provider,
286
+ amount: { amount, currency: 'brl' },
287
+ status: this.#mapStatus(charge?.status, refunded),
288
+ payload: order,
289
+ createdAt: order.created_at ?? charge?.created_at ?? new Date().toISOString(),
290
+ };
291
+ const method = this.#mapMethodToType(charge, qr);
292
+ if (method !== 'unknown')
293
+ result.method = method;
294
+ // v2 Pix puts the BR Code on the charge; the older order-level `qr_codes` shape is
295
+ // still read, because an account or an old webhook can still deliver it.
296
+ const brCode = charge?.qr_code?.text ?? qr?.text;
297
+ if (brCode !== undefined) {
298
+ result.pixCode = brCode;
299
+ result.pixCopiaECola = brCode;
300
+ }
301
+ // No `pixQrCodeImage`: PagBank returns *links* to the rendered PNG/base64, not the
302
+ // image itself, and this field is documented as base64 content. The links stay in
303
+ // `payload.qr_codes[0].links` rather than being passed off as something they are not.
304
+ const payLink = charge?.links?.find((link) => link.rel === 'PAY');
305
+ if (payLink !== undefined)
306
+ result.hostedUrl = payLink.href;
307
+ if (charge?.paid_at !== undefined)
308
+ result.paidAt = charge.paid_at;
309
+ return result;
310
+ }
311
+ #mapStatus(status, refunded) {
312
+ if (refunded > 0)
313
+ return 'refunded';
314
+ switch (status) {
315
+ case 'PAID':
316
+ return 'paid';
317
+ case 'DECLINED':
318
+ return 'failed';
319
+ case 'CANCELED':
320
+ return 'canceled';
321
+ // A pre-authorization: PagBank is holding the money on the card and nothing has
322
+ // been captured. It used to collapse into `pending`, which understates a hold the
323
+ // acquirer has already granted — and `paid` would have been worse, since an
324
+ // authorization expires. IN_ANALYSIS and WAITING are plainly not paid either, and
325
+ // an unpaid Pix order has no charge at all.
326
+ case 'AUTHORIZED':
327
+ return 'authorized';
328
+ default:
329
+ return 'pending';
330
+ }
331
+ }
332
+ #mapWebhookType(status, refunded) {
333
+ if (refunded > 0)
334
+ return 'payment.refunded';
335
+ switch (status) {
336
+ case 'PAID':
337
+ return 'payment.succeeded';
338
+ case 'DECLINED':
339
+ case 'CANCELED':
340
+ return 'payment.failed';
341
+ default:
342
+ return 'payment.updated';
343
+ }
344
+ }
345
+ #mapMethodToType(charge, qr) {
346
+ switch (charge?.payment_method?.type) {
347
+ case 'PIX':
348
+ return 'pix';
349
+ case 'CREDIT_CARD':
350
+ return 'card';
351
+ case 'DEBIT_CARD':
352
+ return 'debit_card';
353
+ case 'BOLETO':
354
+ return 'boleto';
355
+ default:
356
+ return qr !== undefined ? 'pix' : 'unknown';
357
+ }
358
+ }
359
+ // ── Request building ─────────────────────────────────────────────────────────────────
360
+ /** Which PagBank flow this charge is: Pix (a QR code) or a charge (card/boleto). */
361
+ #resolveMethod(input) {
362
+ if (input.method === 'pix')
363
+ return 'pix';
364
+ if (input.method === 'boleto')
365
+ return 'boleto';
366
+ if (input.method === 'debit_card')
367
+ return 'debit_card';
368
+ if (input.method === 'credit_card' ||
369
+ input.paymentMethodId !== undefined ||
370
+ input.card !== undefined) {
371
+ return 'credit_card';
372
+ }
373
+ return 'pix';
374
+ }
375
+ #buildCharge(input, method) {
376
+ const paymentMethod = method === 'pix'
377
+ ? // Pix is a charge with its own `payment_method`, not an order-level `qr_codes`
378
+ // entry: PagBank's v2 Pix flow returns the BR Code on `charges[].qr_code.text`.
379
+ { type: 'PIX', pix: { expiration_date: this.#pixExpiration(input) } }
380
+ : method === 'boleto'
381
+ ? { type: 'BOLETO', boleto: this.#buildBoleto(input) }
382
+ : {
383
+ type: method === 'debit_card' ? 'DEBIT_CARD' : 'CREDIT_CARD',
384
+ installments: Number(input.metadata?.installments ?? 1),
385
+ capture: input.metadata?.capture !== false,
386
+ card: this.#buildCard(input),
387
+ };
388
+ return {
389
+ ...(input.externalReference !== undefined ? { reference_id: input.externalReference } : {}),
390
+ ...(input.description !== undefined ? { description: input.description } : {}),
391
+ amount: { value: input.amount, currency: 'BRL' },
392
+ payment_method: paymentMethod,
393
+ };
394
+ }
395
+ #buildCard(input) {
396
+ const token = input.card?.token ?? input.paymentMethodId;
397
+ if (token === undefined) {
398
+ throw new Error("[payments] PagBank card charge needs a card. Pass `card: { token }` (the blob from PagBank's " +
399
+ 'card-encryption SDK) or `paymentMethodId` (a stored `CARD_…` id).');
400
+ }
401
+ // PagBank takes either a saved card id or the encrypted blob its frontend SDK
402
+ // produces. The `CARD_` prefix is the only thing that tells them apart.
403
+ const card = token.startsWith('CARD_')
404
+ ? { id: token }
405
+ : { encrypted: token };
406
+ const holderName = input.card?.holder?.name ?? input.customer?.name;
407
+ if (holderName !== undefined)
408
+ card.holder = { name: holderName };
409
+ if (input.card?.holder === undefined && input.metadata?.store === true)
410
+ card.store = true;
411
+ return card;
412
+ }
413
+ #buildBoleto(input) {
414
+ const holder = input.customer ?? {
415
+ ...(input.card?.holder !== undefined
416
+ ? {
417
+ name: input.card.holder.name,
418
+ email: input.card.holder.email,
419
+ taxId: input.card.holder.cpfCnpj,
420
+ }
421
+ : {}),
422
+ };
423
+ const address = input.metadata?.address;
424
+ if (!holder.name || !holder.taxId || !holder.email || address === undefined) {
425
+ throw new Error('[payments] PagBank boleto needs the payer on the charge: `customer: { name, email, taxId }` ' +
426
+ 'plus `metadata.address` (street, number, locality, city, region_code, country, postal_code) — ' +
427
+ 'PagBank prints them on the boleto and refuses the charge without them.');
428
+ }
429
+ return {
430
+ due_date: input.metadata?.dueDate ??
431
+ new Date(Date.now() + 3 * 24 * 60 * 60 * 1000).toISOString().slice(0, 10),
432
+ instruction_lines: input.metadata?.instructionLines ?? {
433
+ line_1: 'Pagamento processado para',
434
+ line_2: input.description ?? 'DESC Sistema',
435
+ },
436
+ holder: {
437
+ name: holder.name,
438
+ tax_id: holder.taxId.replace(/\D/g, ''),
439
+ email: holder.email,
440
+ address,
441
+ },
442
+ };
443
+ }
444
+ /** PagBank requires the payer (with a CPF/CNPJ) on every order. */
445
+ #requireCustomer(input) {
446
+ const source = 'customer' in input && input.customer !== undefined
447
+ ? input.customer
448
+ : 'card' in input && input.card?.holder !== undefined
449
+ ? {
450
+ name: input.card.holder.name,
451
+ email: input.card.holder.email,
452
+ taxId: input.card.holder.cpfCnpj,
453
+ }
454
+ : undefined;
455
+ if (!source?.name || !source.email || !source.taxId) {
456
+ throw new Error('[payments] PagBank requires the payer on every order. Pass `customer: { name, email, taxId }` ' +
457
+ '(CPF or CNPJ) on the charge — the Orders API has no stored customer to reference.');
458
+ }
459
+ return {
460
+ name: source.name,
461
+ email: source.email,
462
+ tax_id: source.taxId.replace(/\D/g, ''),
463
+ ...(input.metadata?.phones !== undefined ? { phones: input.metadata.phones } : {}),
464
+ };
465
+ }
466
+ #pixExpiration(input) {
467
+ const explicit = input.metadata?.expirationDate;
468
+ if (explicit !== undefined)
469
+ return explicit;
470
+ const minutes = Number(input.metadata?.expiresInMinutes ?? 60);
471
+ return new Date(Date.now() + minutes * 60 * 1000).toISOString();
472
+ }
473
+ /** The `CHAR_…` behind an id that may be an order id or a charge id. */
474
+ async #resolveCharge(gatewayId) {
475
+ if (gatewayId.startsWith('CHAR_')) {
476
+ return this.#request(`/charges/${gatewayId}`);
477
+ }
478
+ const order = await this.#request(`/orders/${gatewayId}`);
479
+ const charge = order.charges?.[0];
480
+ if (charge === undefined) {
481
+ throw new Error(`[payments] PagBank order ${gatewayId} has no charge to refund. A Pix order only becomes a charge once it is paid.`);
482
+ }
483
+ return charge;
484
+ }
485
+ async #request(path, options = {}) {
486
+ return httpRequest(path, {
487
+ baseUrl: this.#baseUrl,
488
+ ...(options.method !== undefined ? { method: options.method } : {}),
489
+ ...(options.body !== undefined ? { body: options.body } : {}),
490
+ bearerToken: this.#token,
491
+ // PagBank deduplicates on this header for 48h — a retried charge with the same key
492
+ // returns the original order instead of creating a second one.
493
+ ...(options.idempotencyKey !== undefined
494
+ ? { headers: { 'x-idempotency-key': options.idempotencyKey } }
495
+ : {}),
496
+ });
497
+ }
498
+ }
499
+ //# sourceMappingURL=pagbank.js.map