pagseguro-sdk 2.6.2

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 (324) hide show
  1. checksums.yaml +7 -0
  2. data/.github/.gitignore +204 -0
  3. data/.github/ISSUE_TEMPLATE/relatorio-de-bug.md +29 -0
  4. data/.github/workflows/codacy-analysis.yml +46 -0
  5. data/.gitignore +28 -0
  6. data/.rspec +1 -0
  7. data/.travis.yml +13 -0
  8. data/CHANGELOG.md +95 -0
  9. data/CONTRIBUTING.md +39 -0
  10. data/Dockerfile +20 -0
  11. data/Gemfile +2 -0
  12. data/LICENSE-2.0.txt +177 -0
  13. data/README.md +436 -0
  14. data/Rakefile +5 -0
  15. data/docker-compose.yml +5 -0
  16. data/docs/transparent_checkout.md +201 -0
  17. data/examples/authorization/create_authorization.rb +32 -0
  18. data/examples/authorization/create_authorization_with_account.rb +56 -0
  19. data/examples/authorization/search/search_authorization_by_code.rb +29 -0
  20. data/examples/authorization/search/search_authorization_by_date.rb +35 -0
  21. data/examples/authorization/search/search_authorization_by_notification_code.rb +29 -0
  22. data/examples/authorization/search/search_authorization_by_reference.rb +31 -0
  23. data/examples/boot.rb +26 -0
  24. data/examples/checkout/create_payment_request.rb +63 -0
  25. data/examples/checkout/search/search_abandoned_transactions.rb +41 -0
  26. data/examples/checkout/search/search_transaction_by_code.rb +76 -0
  27. data/examples/checkout/search/search_transaction_by_notification_code.rb +76 -0
  28. data/examples/checkout/search/search_transaction_by_reference.rb +36 -0
  29. data/examples/checkout/search/search_transactions_by_date.rb +45 -0
  30. data/examples/create_session.rb +19 -0
  31. data/examples/direct/create_transaction_using_boleto.rb +100 -0
  32. data/examples/direct/create_transaction_using_credit_card.rb +128 -0
  33. data/examples/direct/create_transaction_using_online_debit.rb +104 -0
  34. data/examples/get_installments.rb +40 -0
  35. data/examples/preapproval/cancel_preapproval.rb +26 -0
  36. data/examples/preapproval/change_preapproval_payment.rb +50 -0
  37. data/examples/preapproval/change_preapproval_status.rb +29 -0
  38. data/examples/preapproval/charge_preapproval.rb +36 -0
  39. data/examples/preapproval/create_preapproval.rb +68 -0
  40. data/examples/preapproval/create_preapproval_auto.rb +53 -0
  41. data/examples/preapproval/create_preapproval_discount.rb +30 -0
  42. data/examples/preapproval/create_preapproval_manual.rb +58 -0
  43. data/examples/preapproval/create_preapproval_transparent.rb +41 -0
  44. data/examples/preapproval/preapproval_retry.rb +29 -0
  45. data/examples/preapproval/search/search_by_date_interval.rb +45 -0
  46. data/examples/preapproval/search/search_by_days_interval.rb +46 -0
  47. data/examples/preapproval/search/search_by_notification_code.rb +50 -0
  48. data/examples/preapproval/search/search_by_subscription_code.rb +50 -0
  49. data/examples/preapproval/search/search_subscription_payment_orders.rb +53 -0
  50. data/examples/request_transaction_cancellation.rb +19 -0
  51. data/examples/split_payment/create_authorization.rb +32 -0
  52. data/examples/split_payment/create_payment_request.rb +71 -0
  53. data/examples/split_payment/create_transaction_using_boleto.rb +118 -0
  54. data/examples/split_payment/create_transaction_using_credit_card.rb +152 -0
  55. data/lib/pagseguro-oficial.rb +1 -0
  56. data/lib/pagseguro.rb +221 -0
  57. data/lib/pagseguro/account.rb +29 -0
  58. data/lib/pagseguro/account_credentials.rb +14 -0
  59. data/lib/pagseguro/address.rb +40 -0
  60. data/lib/pagseguro/application_credentials.rb +18 -0
  61. data/lib/pagseguro/authorization.rb +61 -0
  62. data/lib/pagseguro/authorization/collection.rb +28 -0
  63. data/lib/pagseguro/authorization/request_serializer.rb +24 -0
  64. data/lib/pagseguro/authorization/response.rb +49 -0
  65. data/lib/pagseguro/authorization/response_serializer.rb +40 -0
  66. data/lib/pagseguro/authorization_request.rb +84 -0
  67. data/lib/pagseguro/authorization_request/request_serializer.rb +142 -0
  68. data/lib/pagseguro/authorization_request/response.rb +26 -0
  69. data/lib/pagseguro/authorization_request/response_serializer.rb +18 -0
  70. data/lib/pagseguro/bank.rb +8 -0
  71. data/lib/pagseguro/boleto_transaction_request.rb +8 -0
  72. data/lib/pagseguro/company.rb +41 -0
  73. data/lib/pagseguro/config.rb +34 -0
  74. data/lib/pagseguro/credit_card_transaction_request.rb +39 -0
  75. data/lib/pagseguro/creditor_fee.rb +23 -0
  76. data/lib/pagseguro/document.rb +23 -0
  77. data/lib/pagseguro/documents.rb +5 -0
  78. data/lib/pagseguro/errors.rb +57 -0
  79. data/lib/pagseguro/exceptions.rb +3 -0
  80. data/lib/pagseguro/extensions/collection_object.rb +34 -0
  81. data/lib/pagseguro/extensions/credentiable.rb +17 -0
  82. data/lib/pagseguro/extensions/ensure_type.rb +9 -0
  83. data/lib/pagseguro/extensions/mass_assignment.rb +11 -0
  84. data/lib/pagseguro/holder.rb +36 -0
  85. data/lib/pagseguro/installment.rb +57 -0
  86. data/lib/pagseguro/installment/collection.rb +25 -0
  87. data/lib/pagseguro/installment/request_serializer.rb +24 -0
  88. data/lib/pagseguro/installment/response.rb +37 -0
  89. data/lib/pagseguro/installment/response_serializer.rb +22 -0
  90. data/lib/pagseguro/item.rb +34 -0
  91. data/lib/pagseguro/items.rb +23 -0
  92. data/lib/pagseguro/manual_subscription_charger.rb +59 -0
  93. data/lib/pagseguro/manual_subscription_charger/request_serializer.rb +50 -0
  94. data/lib/pagseguro/manual_subscription_charger/response.rb +36 -0
  95. data/lib/pagseguro/manual_subscription_charger/response_serializer.rb +17 -0
  96. data/lib/pagseguro/notification.rb +11 -0
  97. data/lib/pagseguro/notification/authorization.rb +15 -0
  98. data/lib/pagseguro/notification/transaction.rb +15 -0
  99. data/lib/pagseguro/online_debit_transaction_request.rb +17 -0
  100. data/lib/pagseguro/partner.rb +20 -0
  101. data/lib/pagseguro/payment_method.rb +39 -0
  102. data/lib/pagseguro/payment_release.rb +21 -0
  103. data/lib/pagseguro/payment_releases.rb +28 -0
  104. data/lib/pagseguro/payment_request.rb +117 -0
  105. data/lib/pagseguro/payment_request/request_serializer.rb +203 -0
  106. data/lib/pagseguro/payment_request/response.rb +35 -0
  107. data/lib/pagseguro/payment_status.rb +39 -0
  108. data/lib/pagseguro/permission.rb +13 -0
  109. data/lib/pagseguro/person.rb +40 -0
  110. data/lib/pagseguro/phone.rb +20 -0
  111. data/lib/pagseguro/phones.rb +5 -0
  112. data/lib/pagseguro/receiver.rb +20 -0
  113. data/lib/pagseguro/receiver_split.rb +15 -0
  114. data/lib/pagseguro/request.rb +170 -0
  115. data/lib/pagseguro/sender.rb +53 -0
  116. data/lib/pagseguro/session.rb +34 -0
  117. data/lib/pagseguro/session/response.rb +32 -0
  118. data/lib/pagseguro/session/response_serializer.rb +18 -0
  119. data/lib/pagseguro/shipping.rb +57 -0
  120. data/lib/pagseguro/subscription.rb +132 -0
  121. data/lib/pagseguro/subscription/request_serializer.rb +129 -0
  122. data/lib/pagseguro/subscription/response.rb +49 -0
  123. data/lib/pagseguro/subscription/response_serializer.rb +62 -0
  124. data/lib/pagseguro/subscription/subscription_search.rb +135 -0
  125. data/lib/pagseguro/subscription_canceller.rb +30 -0
  126. data/lib/pagseguro/subscription_canceller/response.rb +34 -0
  127. data/lib/pagseguro/subscription_change_payment.rb +46 -0
  128. data/lib/pagseguro/subscription_change_payment/request_serializer.rb +80 -0
  129. data/lib/pagseguro/subscription_change_payment/response.rb +26 -0
  130. data/lib/pagseguro/subscription_change_status.rb +50 -0
  131. data/lib/pagseguro/subscription_change_status/request_serializer.rb +28 -0
  132. data/lib/pagseguro/subscription_change_status/response.rb +26 -0
  133. data/lib/pagseguro/subscription_discount.rb +41 -0
  134. data/lib/pagseguro/subscription_discount/request_serializer.rb +34 -0
  135. data/lib/pagseguro/subscription_discount/response.rb +34 -0
  136. data/lib/pagseguro/subscription_payment_method.rb +21 -0
  137. data/lib/pagseguro/subscription_payment_order.rb +57 -0
  138. data/lib/pagseguro/subscription_payment_order/response.rb +37 -0
  139. data/lib/pagseguro/subscription_payment_order/response_serializer.rb +51 -0
  140. data/lib/pagseguro/subscription_plan.rb +69 -0
  141. data/lib/pagseguro/subscription_plan/request_serializer.rb +81 -0
  142. data/lib/pagseguro/subscription_plan/response.rb +36 -0
  143. data/lib/pagseguro/subscription_plan/response_serializer.rb +17 -0
  144. data/lib/pagseguro/subscription_retry.rb +35 -0
  145. data/lib/pagseguro/subscription_retry/response.rb +34 -0
  146. data/lib/pagseguro/subscription_search_payment_orders.rb +131 -0
  147. data/lib/pagseguro/subscription_transaction.rb +29 -0
  148. data/lib/pagseguro/subscription_transactions.rb +5 -0
  149. data/lib/pagseguro/transaction.rb +215 -0
  150. data/lib/pagseguro/transaction/collection.rb +20 -0
  151. data/lib/pagseguro/transaction/response.rb +45 -0
  152. data/lib/pagseguro/transaction/search.rb +121 -0
  153. data/lib/pagseguro/transaction/search/search_abandoned.rb +20 -0
  154. data/lib/pagseguro/transaction/search/search_by_date.rb +16 -0
  155. data/lib/pagseguro/transaction/search/search_by_reference.rb +13 -0
  156. data/lib/pagseguro/transaction/serializer.rb +181 -0
  157. data/lib/pagseguro/transaction_cancellation.rb +37 -0
  158. data/lib/pagseguro/transaction_cancellation/request_serializer.rb +18 -0
  159. data/lib/pagseguro/transaction_cancellation/response.rb +33 -0
  160. data/lib/pagseguro/transaction_cancellation/response_serializer.rb +17 -0
  161. data/lib/pagseguro/transaction_installment.rb +11 -0
  162. data/lib/pagseguro/transaction_refund.rb +44 -0
  163. data/lib/pagseguro/transaction_refund/request_serializer.rb +24 -0
  164. data/lib/pagseguro/transaction_refund/response.rb +33 -0
  165. data/lib/pagseguro/transaction_refund/response_serializer.rb +17 -0
  166. data/lib/pagseguro/transaction_request.rb +165 -0
  167. data/lib/pagseguro/transaction_request/request_serializer.rb +311 -0
  168. data/lib/pagseguro/transaction_request/response.rb +33 -0
  169. data/lib/pagseguro/transaction_request/response_serializer.rb +117 -0
  170. data/lib/pagseguro/transaction_status.rb +14 -0
  171. data/lib/pagseguro/version.rb +3 -0
  172. data/locales/pt-BR.yml +130 -0
  173. data/pagseguro-oficial.gemspec +31 -0
  174. data/spec/fixtures/authorization/find_authorization.xml +17 -0
  175. data/spec/fixtures/authorization/search_authorization.xml +47 -0
  176. data/spec/fixtures/authorization_request/authorization_request.xml +11 -0
  177. data/spec/fixtures/authorization_request/authorization_request_with_account.xml +47 -0
  178. data/spec/fixtures/authorization_request/success.xml +4 -0
  179. data/spec/fixtures/by_date/success.xml +85 -0
  180. data/spec/fixtures/installment/success.xml +24 -0
  181. data/spec/fixtures/invalid_code.xml +7 -0
  182. data/spec/fixtures/manual_subscription_charger/fail.xml +6 -0
  183. data/spec/fixtures/manual_subscription_charger/success.xml +4 -0
  184. data/spec/fixtures/payment_request/failure.xml +7 -0
  185. data/spec/fixtures/payment_request/success.xml +5 -0
  186. data/spec/fixtures/refund/success.xml +2 -0
  187. data/spec/fixtures/session/success.xml +4 -0
  188. data/spec/fixtures/subscription/fail.xml +6 -0
  189. data/spec/fixtures/subscription/find_success.xml +28 -0
  190. data/spec/fixtures/subscription/search_success.xml +18 -0
  191. data/spec/fixtures/subscription/success.xml +4 -0
  192. data/spec/fixtures/subscription_canceller/fail.xml +6 -0
  193. data/spec/fixtures/subscription_change_payment/fail.xml +7 -0
  194. data/spec/fixtures/subscription_change_status/fail.xml +7 -0
  195. data/spec/fixtures/subscription_discount/fail.xml +6 -0
  196. data/spec/fixtures/subscription_payment_order/success.xml +18 -0
  197. data/spec/fixtures/subscription_plan/fail.xml +6 -0
  198. data/spec/fixtures/subscription_plan/success.xml +4 -0
  199. data/spec/fixtures/subscription_retry/fail.xml +7 -0
  200. data/spec/fixtures/subscription_search_payment_orders/success.xml +43 -0
  201. data/spec/fixtures/transaction_cancellation/success.xml +2 -0
  202. data/spec/fixtures/transaction_request/success.xml +58 -0
  203. data/spec/fixtures/transactions/additional.xml +53 -0
  204. data/spec/fixtures/transactions/search.xml +40 -0
  205. data/spec/fixtures/transactions/success.xml +75 -0
  206. data/spec/fixtures/transactions/without_status_and_type.xml +71 -0
  207. data/spec/pagseguro/account_credentials_spec.rb +10 -0
  208. data/spec/pagseguro/account_spec.rb +27 -0
  209. data/spec/pagseguro/address_spec.rb +17 -0
  210. data/spec/pagseguro/application_credentials_spec.rb +11 -0
  211. data/spec/pagseguro/authorization/collection_spec.rb +49 -0
  212. data/spec/pagseguro/authorization/request_serializer_spec.rb +10 -0
  213. data/spec/pagseguro/authorization/response_serializer_spec.rb +19 -0
  214. data/spec/pagseguro/authorization/response_spec.rb +90 -0
  215. data/spec/pagseguro/authorization_request/request_serializer_spec.rb +323 -0
  216. data/spec/pagseguro/authorization_request/response_serializer_spec.rb +15 -0
  217. data/spec/pagseguro/authorization_request/response_spec.rb +36 -0
  218. data/spec/pagseguro/authorization_request_spec.rb +127 -0
  219. data/spec/pagseguro/authorization_spec.rb +111 -0
  220. data/spec/pagseguro/bank_spec.rb +5 -0
  221. data/spec/pagseguro/boleto_transaction_request_spec.rb +9 -0
  222. data/spec/pagseguro/company_spec.rb +12 -0
  223. data/spec/pagseguro/config_spec.rb +5 -0
  224. data/spec/pagseguro/credit_card_transaction_request_spec.rb +36 -0
  225. data/spec/pagseguro/creditor_fee_spec.rb +10 -0
  226. data/spec/pagseguro/document_spec.rb +21 -0
  227. data/spec/pagseguro/documents_spec.rb +37 -0
  228. data/spec/pagseguro/errors_spec.rb +145 -0
  229. data/spec/pagseguro/extensions/collection_object_spec.rb +77 -0
  230. data/spec/pagseguro/features/create_session_spec.rb +52 -0
  231. data/spec/pagseguro/features/create_transaction_request_spec.rb +58 -0
  232. data/spec/pagseguro/holder_spec.rb +10 -0
  233. data/spec/pagseguro/installment/collection_spec.rb +43 -0
  234. data/spec/pagseguro/installment/request_serializer_spec.rb +16 -0
  235. data/spec/pagseguro/installment/response_serializer_spec.rb +33 -0
  236. data/spec/pagseguro/installment/response_spec.rb +56 -0
  237. data/spec/pagseguro/installment_spec.rb +50 -0
  238. data/spec/pagseguro/item_spec.rb +20 -0
  239. data/spec/pagseguro/items_spec.rb +148 -0
  240. data/spec/pagseguro/manual_subscription_charger/request_serializer_spec.rb +79 -0
  241. data/spec/pagseguro/manual_subscription_charger/response_serializer_spec.rb +10 -0
  242. data/spec/pagseguro/manual_subscription_charger/response_spec.rb +65 -0
  243. data/spec/pagseguro/manual_subscription_charger_spec.rb +68 -0
  244. data/spec/pagseguro/notification_spec.rb +6 -0
  245. data/spec/pagseguro/online_debit_transaction_request_spec.rb +18 -0
  246. data/spec/pagseguro/pagseguro_spec.rb +82 -0
  247. data/spec/pagseguro/partner_spec.rb +8 -0
  248. data/spec/pagseguro/payment_method_spec.rb +42 -0
  249. data/spec/pagseguro/payment_release_spec.rb +9 -0
  250. data/spec/pagseguro/payment_releases_spec.rb +34 -0
  251. data/spec/pagseguro/payment_request/request_serializer_spec.rb +283 -0
  252. data/spec/pagseguro/payment_request/response_spec.rb +13 -0
  253. data/spec/pagseguro/payment_request_spec.rb +148 -0
  254. data/spec/pagseguro/payment_status_spec.rb +33 -0
  255. data/spec/pagseguro/permission_spec.rb +7 -0
  256. data/spec/pagseguro/person_spec.rb +10 -0
  257. data/spec/pagseguro/phone_spec.rb +6 -0
  258. data/spec/pagseguro/phones_spec.rb +38 -0
  259. data/spec/pagseguro/receiver_spec.rb +7 -0
  260. data/spec/pagseguro/receiver_split_spec.rb +7 -0
  261. data/spec/pagseguro/request_spec.rb +114 -0
  262. data/spec/pagseguro/sender_spec.rb +25 -0
  263. data/spec/pagseguro/session/response_serializer_spec.rb +12 -0
  264. data/spec/pagseguro/session/response_spec.rb +57 -0
  265. data/spec/pagseguro/session_spec.rb +45 -0
  266. data/spec/pagseguro/shipping_spec.rb +40 -0
  267. data/spec/pagseguro/subscription/request_serializer_spec.rb +233 -0
  268. data/spec/pagseguro/subscription/response_serializer_spec.rb +46 -0
  269. data/spec/pagseguro/subscription/response_spec.rb +79 -0
  270. data/spec/pagseguro/subscription/subscription_search_spec.rb +154 -0
  271. data/spec/pagseguro/subscription_canceller/response_spec.rb +58 -0
  272. data/spec/pagseguro/subscription_canceller_spec.rb +57 -0
  273. data/spec/pagseguro/subscription_change_payment/request_serializer_spec.rb +150 -0
  274. data/spec/pagseguro/subscription_change_payment/response_spec.rb +41 -0
  275. data/spec/pagseguro/subscription_change_payment_spec.rb +60 -0
  276. data/spec/pagseguro/subscription_change_status/request_serializer_spec.rb +19 -0
  277. data/spec/pagseguro/subscription_change_status/response_spec.rb +41 -0
  278. data/spec/pagseguro/subscription_change_status_spec.rb +53 -0
  279. data/spec/pagseguro/subscription_discount/request_serializer_spec.rb +27 -0
  280. data/spec/pagseguro/subscription_discount/response_spec.rb +58 -0
  281. data/spec/pagseguro/subscription_discount_spec.rb +60 -0
  282. data/spec/pagseguro/subscription_payment_method_spec.rb +10 -0
  283. data/spec/pagseguro/subscription_payment_order/response_serializer_spec.rb +24 -0
  284. data/spec/pagseguro/subscription_payment_order/response_spec.rb +55 -0
  285. data/spec/pagseguro/subscription_payment_order_spec.rb +27 -0
  286. data/spec/pagseguro/subscription_plan/request_serializer_spec.rb +253 -0
  287. data/spec/pagseguro/subscription_plan/response_serializer_spec.rb +10 -0
  288. data/spec/pagseguro/subscription_plan/response_spec.rb +65 -0
  289. data/spec/pagseguro/subscription_plan_spec.rb +118 -0
  290. data/spec/pagseguro/subscription_retry/response_spec.rb +58 -0
  291. data/spec/pagseguro/subscription_retry_spec.rb +62 -0
  292. data/spec/pagseguro/subscription_search_payment_order_spec.rb +129 -0
  293. data/spec/pagseguro/subscription_spec.rb +137 -0
  294. data/spec/pagseguro/subscription_transaction_spec.rb +24 -0
  295. data/spec/pagseguro/subscription_transactions_spec.rb +37 -0
  296. data/spec/pagseguro/transaction/collection_spec.rb +43 -0
  297. data/spec/pagseguro/transaction/response_spec.rb +60 -0
  298. data/spec/pagseguro/transaction/search/search_abandoned_spec.rb +55 -0
  299. data/spec/pagseguro/transaction/search/search_by_date_spec.rb +28 -0
  300. data/spec/pagseguro/transaction/search/search_by_reference_spec.rb +21 -0
  301. data/spec/pagseguro/transaction/search_spec.rb +133 -0
  302. data/spec/pagseguro/transaction/serializer_spec.rb +86 -0
  303. data/spec/pagseguro/transaction_cancellation/request_serializer_spec.rb +13 -0
  304. data/spec/pagseguro/transaction_cancellation/response_serializer_spec.rb +9 -0
  305. data/spec/pagseguro/transaction_cancellation/response_spec.rb +45 -0
  306. data/spec/pagseguro/transaction_cancellation_spec.rb +60 -0
  307. data/spec/pagseguro/transaction_installment_spec.rb +6 -0
  308. data/spec/pagseguro/transaction_refund/request_serializer_spec.rb +15 -0
  309. data/spec/pagseguro/transaction_refund/response_serializer_spec.rb +12 -0
  310. data/spec/pagseguro/transaction_refund/response_spec.rb +39 -0
  311. data/spec/pagseguro/transaction_refund_spec.rb +71 -0
  312. data/spec/pagseguro/transaction_request/request_serializer_spec.rb +677 -0
  313. data/spec/pagseguro/transaction_request/response_serializer_spec.rb +52 -0
  314. data/spec/pagseguro/transaction_request/response_spec.rb +63 -0
  315. data/spec/pagseguro/transaction_request_spec.rb +156 -0
  316. data/spec/pagseguro/transaction_spec.rb +265 -0
  317. data/spec/pagseguro/transaction_status_spec.rb +7 -0
  318. data/spec/spec_helper.rb +35 -0
  319. data/spec/support/ensure_type_macro.rb +35 -0
  320. data/spec/support/helpers.rb +14 -0
  321. data/spec/support/mass_assignment_macro.rb +11 -0
  322. data/spec/support/shared_examples_for_configuration.rb +10 -0
  323. data/transaction/transaction_refund.rb +25 -0
  324. metadata +641 -0
@@ -0,0 +1,16 @@
1
+ module PagSeguro
2
+ class SearchByDate < PagSeguro::Search
3
+ private
4
+ def perform_request_and_serialize
5
+ @response = Request.get(@path, api_version,
6
+ {
7
+ initialDate: options[:starts_at].xmlschema,
8
+ finalDate: options[:ends_at].xmlschema,
9
+ page: page,
10
+ maxPageResults: options.fetch(:per_page, 50),
11
+ credentials: options[:credentials]
12
+ })
13
+ @errors = Errors.new(@response)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ module PagSeguro
2
+ class SearchByReference < PagSeguro::Search
3
+ private
4
+ def perform_request_and_serialize
5
+ @response = Request.get(@path, api_version,
6
+ {
7
+ reference: options[:reference],
8
+ credentials: options[:credentials]
9
+ })
10
+ @errors = Errors.new(@response)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,181 @@
1
+ module PagSeguro
2
+ class Transaction
3
+ class Serializer
4
+ attr_reader :xml
5
+
6
+ def initialize(xml)
7
+ @xml = xml
8
+ end
9
+
10
+ def serialize
11
+ {}.tap do |data|
12
+ serialize_general(data)
13
+ serialize_amounts(data)
14
+ serialize_dates(data)
15
+ serialize_creditor(data)
16
+ serialize_payments(data)
17
+ serialize_items(data)
18
+ serialize_sender(data)
19
+ serialize_shipping(data) if xml.css("shipping").any?
20
+ end
21
+ end
22
+
23
+ def serialize_status_history
24
+ xml.css("status").map do |node|
25
+ PagSeguro::TransactionStatus.new(
26
+ code: node.css("code").text,
27
+ date: Time.parse(node.css("date").text),
28
+ notification_code: node.css("notificationCode").text
29
+ )
30
+ end
31
+ end
32
+
33
+ private
34
+ def serialize_general(data)
35
+ data[:code] = xml.at_css("code").text
36
+ data[:reference] = xml.css("reference").text
37
+ data[:payment_link] = xml.css("paymentLink").text
38
+
39
+ data[:type_id] = serialize_general_type_id
40
+ data[:status] = serialize_general_status
41
+
42
+ cancellation_source = xml.css("cancellationSource")
43
+ data[:cancellation_source] = cancellation_source.text if cancellation_source.any?
44
+
45
+ data[:payment_method] = {
46
+ type_id: xml.css("paymentMethod > type").text,
47
+ code: xml.css("paymentMethod > code").text
48
+ }
49
+ end
50
+
51
+ def serialize_dates(data)
52
+ data[:created_at] = Time.parse(xml.css("date").text)
53
+
54
+ updated_at = xml.css("lastEventDate").text
55
+ data[:updated_at] = Time.parse(updated_at) unless updated_at.empty?
56
+
57
+ escrow_end_date = xml.css("escrowEndDate")
58
+ data[:escrow_end_date] = Time.parse(escrow_end_date.text) if escrow_end_date.any?
59
+ end
60
+
61
+ def serialize_amounts(data)
62
+ data[:gross_amount] = BigDecimal(xml.css("grossAmount").text.to_f.to_s)
63
+ data[:discount_amount] = BigDecimal(xml.css("discountAmount").text.to_f.to_s)
64
+ data[:net_amount] = BigDecimal(xml.css("netAmount").text.to_f.to_s)
65
+ data[:extra_amount] = BigDecimal(xml.css("extraAmount").text.to_f.to_s)
66
+ data[:installments] = xml.css("installmentCount").text.to_i
67
+ end
68
+
69
+ def serialize_creditor(data)
70
+ data[:creditor_fees] = {
71
+ intermediation_rate_amount: BigDecimal(xml.css("creditorFees > intermediationRateAmount").text.to_f.to_s.presence || 0),
72
+ intermediation_fee_amount: BigDecimal(xml.css("creditorFees > intermediationFeeAmount").text.to_f.to_s.presence || 0),
73
+ installment_fee_amount: BigDecimal(xml.css("creditorFees > installmentFeeAmount").text.to_f.to_s.presence || 0),
74
+ }
75
+ operationalFeeAmount = xml.css("creditorFees > operationalFeeAmount").text
76
+ data[:creditor_fees].merge!(operational_fee_amount: BigDecimal(operationalFeeAmount)) if operationalFeeAmount.present?
77
+ commissionFeeAmount = xml.css("creditorFees > commissionFeeAmount").text
78
+ data[:creditor_fees].merge!(commission_fee_amount: BigDecimal(commissionFeeAmount)) if commissionFeeAmount.present?
79
+ efrete = xml.css("creditorFees > efrete").text
80
+ data[:creditor_fees].merge!(efrete: BigDecimal(efrete)) if efrete.present?
81
+ end
82
+
83
+ def serialize_payments(data)
84
+ data[:payment_releases] = []
85
+
86
+ xml.css("paymentReleases > paymentRelease").each do |node|
87
+ payment_release = {}
88
+ payment_release[:installment] = node.css("installment").text
89
+ payment_release[:total_amount] = BigDecimal(node.css("totalAmount").text.to_f.to_s)
90
+ payment_release[:release_amount] = BigDecimal(node.css("releaseAmount").text.to_f.to_s)
91
+ payment_release[:status] = node.css("status").text
92
+ payment_release[:release_date] = Time.parse(node.css("releaseDate").text)
93
+
94
+ data[:payment_releases] << payment_release
95
+ end
96
+ end
97
+
98
+ def serialize_items(data)
99
+ data[:items] = []
100
+
101
+ xml.css("items > item").each do |node|
102
+ item = {}
103
+ item[:id] = node.css("id").text
104
+ item[:description] = node.css("description").text
105
+ item[:quantity] = node.css("quantity").text.to_i
106
+ item[:amount] = BigDecimal(node.css("amount").text.to_f.to_s)
107
+
108
+ data[:items] << item
109
+ end
110
+ end
111
+
112
+ def serialize_sender(data)
113
+ sender = {
114
+ name: xml.css("sender > name").text,
115
+ email: xml.css("sender > email").text
116
+ }
117
+
118
+ serialize_phone(sender)
119
+ serialize_document(sender)
120
+ data[:sender] = sender
121
+ end
122
+
123
+ def serialize_document(data)
124
+ data[:document] = {
125
+ type: xml.css("sender > documents > document > type").text,
126
+ value: xml.css("sender > documents > document > value").text
127
+ }
128
+ end
129
+
130
+ def serialize_phone(data)
131
+ data[:phone] = {
132
+ area_code: xml.css("sender > phone > areaCode").text,
133
+ number: xml.css("sender > phone > number").text
134
+ }
135
+ end
136
+
137
+ def serialize_shipping(data)
138
+ shipping = {
139
+ type_id: xml.css("shipping > type").text,
140
+ cost: BigDecimal(xml.css("shipping > cost").text.to_f.to_s),
141
+ }
142
+
143
+ serialize_address(shipping)
144
+ data[:shipping] = shipping
145
+ end
146
+
147
+ def serialize_address(data)
148
+ data[:address] = {
149
+ street: address_node.css("> street").text,
150
+ number: address_node.css("> number").text,
151
+ complement: address_node.css("> complement").text,
152
+ district: address_node.css("> district").text,
153
+ city: address_node.css("> city").text,
154
+ state: address_node.css("> state").text,
155
+ country: address_node.css("> country").text,
156
+ postal_code: address_node.css("> postalCode").text,
157
+ }
158
+ end
159
+
160
+ def address_node
161
+ @address_node ||= xml.css("shipping > address")
162
+ end
163
+
164
+ def serialize_general_type_id
165
+ type = xml.css('type').detect do |node|
166
+ node if node.parent.name == 'transaction'
167
+ end
168
+
169
+ type.text if type
170
+ end
171
+
172
+ def serialize_general_status
173
+ status = xml.css('status').detect do |node|
174
+ node if node.parent.name == 'transaction'
175
+ end
176
+
177
+ status.text if status
178
+ end
179
+ end
180
+ end
181
+ end
@@ -0,0 +1,37 @@
1
+ module PagSeguro
2
+ class TransactionCancellation
3
+ include Extensions::MassAssignment
4
+
5
+ # Set the transaction code.
6
+ # The transaction status must be: Aguardando pagamento or Em análise.
7
+ attr_accessor :transaction_code
8
+
9
+ # Result from http request.
10
+ attr_accessor :result
11
+
12
+ # Calls the PagSeguro webservice and register the cancellation.
13
+ # Returns PagSeguro::TransactionCancellation.
14
+ def register(extra_params = {})
15
+ response_request = Request.post("transactions/cancels", api_version, params.merge(extra_params))
16
+ Response.new(response_request, self).serialize
17
+ end
18
+
19
+ # Errors object.
20
+ def errors
21
+ @errors ||= Errors.new
22
+ end
23
+
24
+ def update_attributes(attrs)
25
+ attrs.each { |name, value| send("#{name}=", value) }
26
+ end
27
+
28
+ private
29
+ def api_version
30
+ "v2"
31
+ end
32
+
33
+ def params
34
+ RequestSerializer.new(self).to_params
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,18 @@
1
+ module PagSeguro
2
+ class TransactionCancellation
3
+ class RequestSerializer
4
+ # The transaction_cancellation that will be serialized.
5
+ attr_reader :transaction_cancellation
6
+
7
+ def initialize(transaction_cancellation)
8
+ @transaction_cancellation = transaction_cancellation
9
+ end
10
+
11
+ def to_params
12
+ {}.tap do |data|
13
+ data[:transactionCode] = transaction_cancellation.transaction_code
14
+ end.delete_if { |_, value| value.nil? }
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,33 @@
1
+ module PagSeguro
2
+ class TransactionCancellation
3
+ class Response
4
+ def initialize(response, object)
5
+ @response = response
6
+ @object = object
7
+ end
8
+
9
+ def serialize
10
+ if success?
11
+ xml = Nokogiri::XML(response.body)
12
+ serializer = ResponseSerializer.new(xml).serialize
13
+ object.update_attributes(serializer)
14
+ else
15
+ object.errors.add(response)
16
+ end
17
+
18
+ object
19
+ end
20
+
21
+ def success?
22
+ response.success? && response.xml?
23
+ end
24
+
25
+ private
26
+ # The request response.
27
+ attr_reader :response
28
+
29
+ # The PagSeguro::TransactionCancellation instance.
30
+ attr_reader :object
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,17 @@
1
+ module PagSeguro
2
+ class TransactionCancellation
3
+ class ResponseSerializer
4
+ attr_reader :xml
5
+
6
+ def initialize(xml)
7
+ @xml = xml
8
+ end
9
+
10
+ def serialize
11
+ {}.tap do |data|
12
+ data[:result] = xml.css("> result").text
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ module PagSeguro
2
+ class TransactionInstallment
3
+ include Extensions::MassAssignment
4
+
5
+ # Set the installments value.
6
+ attr_accessor :value
7
+
8
+ # Set the installments quantity.
9
+ attr_accessor :quantity
10
+ end
11
+ end
@@ -0,0 +1,44 @@
1
+ module PagSeguro
2
+ class TransactionRefund
3
+ include Extensions::MassAssignment
4
+
5
+ # Set the transaction code.
6
+ # The transaction status must be: Paga (3), Disponível (4), Em disputa (5)
7
+ attr_accessor :transaction_code
8
+
9
+ # Set the refund value.
10
+ # Greater than 0.00 and less or equal than transaction value.
11
+ # If not informed, PagSeguro will assume the total transaction value.
12
+ attr_accessor :value
13
+
14
+ # Result from request.
15
+ attr_accessor :result
16
+
17
+ # PagSeguro::Errors object.
18
+ attr_reader :errors
19
+
20
+ # Calls the PagSeguro webservice and register the refund.
21
+ # Return PagSeguro::TransactionRefund.
22
+ def register(extra_params = {})
23
+ response_request = Request.post("transactions/refunds", api_version, params.merge(extra_params))
24
+ Response.new(response_request, self).serialize
25
+ end
26
+
27
+ def errors
28
+ @errors ||= Errors.new
29
+ end
30
+
31
+ def update_attributes(attrs)
32
+ attrs.map { |name, value| send("#{name}=", value) }
33
+ end
34
+
35
+ private
36
+ def api_version
37
+ "v2"
38
+ end
39
+
40
+ def params
41
+ RequestSerializer.new(self).to_params
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,24 @@
1
+ module PagSeguro
2
+ class TransactionRefund
3
+ class RequestSerializer
4
+ # The refund that will be serialized.
5
+ attr_reader :refund
6
+
7
+ def initialize(refund)
8
+ @refund = refund
9
+ end
10
+
11
+ def to_params
12
+ {}.tap do |data|
13
+ data[:transactionCode] = refund.transaction_code
14
+ data[:refundValue] = to_amount(refund.value)
15
+ end.delete_if { |_, value| value.nil? }
16
+ end
17
+
18
+ private
19
+ def to_amount(amount)
20
+ "%.2f" % BigDecimal(amount.to_s.to_f.to_s).round(2).to_s("F") if amount
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ module PagSeguro
2
+ class TransactionRefund
3
+ class Response
4
+ def initialize(response, object)
5
+ @response = response
6
+ @object = object
7
+ end
8
+
9
+ def serialize
10
+ if success?
11
+ xml = Nokogiri::XML(response.body)
12
+ serializer = ResponseSerializer.new(xml).serialize
13
+ object.update_attributes(serializer)
14
+ else
15
+ object.errors.add(response)
16
+ end
17
+
18
+ object
19
+ end
20
+
21
+ def success?
22
+ response.success? && response.xml?
23
+ end
24
+
25
+ private
26
+ # The request response.
27
+ attr_reader :response
28
+
29
+ # The PagSeguro::Refund object to return
30
+ attr_reader :object
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,17 @@
1
+ module PagSeguro
2
+ class TransactionRefund
3
+ class ResponseSerializer
4
+ attr_reader :xml
5
+
6
+ def initialize(xml)
7
+ @xml = xml
8
+ end
9
+
10
+ def serialize
11
+ {}.tap do |data|
12
+ data[:result] = xml.css("> result").text
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end