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,26 @@
1
+ module PagSeguro
2
+ class AuthorizationRequest
3
+ class Response
4
+ def initialize(response)
5
+ @response = response
6
+ end
7
+
8
+ def serialize
9
+ if success?
10
+ xml = Nokogiri::XML(response.body).css('authorizationRequest').first
11
+ ResponseSerializer.new(xml).serialize
12
+ else
13
+ { errors: Errors.new(response) }
14
+ end
15
+ end
16
+
17
+ def success?
18
+ response.success? && response.xml?
19
+ end
20
+
21
+ private
22
+ # The request response.
23
+ attr_reader :response
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ module PagSeguro
2
+ class AuthorizationRequest
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[:code] = xml.css("> code").text
13
+ data[:date] = Time.parse xml.css("date").text
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,8 @@
1
+ module PagSeguro
2
+ class Bank
3
+ include Extensions::MassAssignment
4
+
5
+ # Set the bank name.
6
+ attr_accessor :name
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module PagSeguro
2
+ class BoletoTransactionRequest < TransactionRequest
3
+ # Get the payment_method.
4
+ def payment_method
5
+ "boleto"
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,41 @@
1
+ module PagSeguro
2
+ class Company
3
+ include Extensions::MassAssignment
4
+ include Extensions::EnsureType
5
+
6
+ attr_accessor :name
7
+ attr_accessor :display_name
8
+ attr_accessor :website_url
9
+
10
+ attr_reader :address
11
+ attr_reader :partner
12
+
13
+ def address=(address)
14
+ @address = ensure_type(Address, address)
15
+ end
16
+
17
+ def partner=(partner)
18
+ @partner = ensure_type(Partner, partner)
19
+ end
20
+
21
+ def phones
22
+ @phones ||= Phones.new
23
+ end
24
+
25
+ def phones=(_phones=[])
26
+ _phones.each do |phone|
27
+ phones << ensure_type(Phone, phone)
28
+ end
29
+ end
30
+
31
+ def documents
32
+ @documents ||= Documents.new
33
+ end
34
+
35
+ def documents=(_documents=[])
36
+ _documents.each do |document|
37
+ documents << ensure_type(Document, document)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,34 @@
1
+ module PagSeguro
2
+ # Holds the configuration of the user
3
+ class Config
4
+ # Primary e-mail associated with this account.
5
+ attr_accessor :email
6
+
7
+ # The e-mail that will be displayed when sender is redirected
8
+ # to PagSeguro.
9
+ attr_accessor :receiver_email
10
+
11
+ # The API token associated with this account.
12
+ attr_accessor :token
13
+
14
+ # The application id
15
+ attr_accessor :app_id
16
+
17
+ # A token related to the application that is making the requests
18
+ attr_accessor :app_key
19
+
20
+ # The PagSeguro environment.
21
+ # +production+ or +sandbox+.
22
+ # Defaults to +production+.
23
+ attr_accessor :environment
24
+
25
+ # The encoding that will be used.
26
+ # Defaults to +UTF-8+.
27
+ attr_accessor :encoding
28
+
29
+ def initialize
30
+ @environment = :production
31
+ @encoding = "UTF-8"
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,39 @@
1
+ module PagSeguro
2
+ class CreditCardTransactionRequest < TransactionRequest
3
+ # Set credit card token.
4
+ # Required for credit card payment method.
5
+ attr_accessor :credit_card_token
6
+
7
+ # Get installment info.
8
+ attr_reader :installment
9
+
10
+ # Get credit card holder info.
11
+ attr_reader :holder
12
+
13
+ # Get billing address info.
14
+ attr_reader :billing_address
15
+
16
+ # Get the payment_method.
17
+ def payment_method
18
+ "creditCard"
19
+ end
20
+
21
+ # Set the installment.
22
+ # Required for credit card payment method.
23
+ def installment=(installment)
24
+ @installment = ensure_type(TransactionInstallment, installment)
25
+ end
26
+
27
+ # Set the credit card holder.
28
+ # Required for credit card payment method.
29
+ def holder=(holder)
30
+ @holder = ensure_type(Holder, holder)
31
+ end
32
+
33
+ # Set the billing address.
34
+ # Required for credit card payment method.
35
+ def billing_address=(address)
36
+ @billing_address = ensure_type(Address, address)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,23 @@
1
+ module PagSeguro
2
+ class CreditorFee
3
+ include Extensions::MassAssignment
4
+
5
+ # Set the current transaction intermidiation rate amount
6
+ attr_accessor :intermediation_rate_amount
7
+
8
+ # Set the current transaction intermediation fee amount
9
+ attr_accessor :intermediation_fee_amount
10
+
11
+ # Set the current transaction installment amount
12
+ attr_accessor :installment_fee_amount
13
+
14
+ # Set the current transaction operational fee amount
15
+ attr_accessor :operational_fee_amount
16
+
17
+ # Set the current transaction commission fee amount
18
+ attr_accessor :commission_fee_amount
19
+
20
+ # Set the current transaction freight amount
21
+ attr_accessor :efrete
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module PagSeguro
2
+ class Document
3
+ include Extensions::MassAssignment
4
+
5
+ # Set the type.
6
+ attr_accessor :type
7
+
8
+ # Set the value.
9
+ attr_accessor :value
10
+
11
+ def ==(other)
12
+ [type, value] == [other.type, other.value]
13
+ end
14
+
15
+ def cpf?
16
+ type == 'CPF'
17
+ end
18
+
19
+ def cnpj?
20
+ type == 'CNPJ'
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,5 @@
1
+ module PagSeguro
2
+ class Documents
3
+ include Extensions::CollectionObject
4
+ end
5
+ end
@@ -0,0 +1,57 @@
1
+ module PagSeguro
2
+ class Errors
3
+ extend Forwardable
4
+ include Enumerable
5
+
6
+ def_delegators :@messages, :each, :empty?, :any?, :join, :include?
7
+
8
+ def initialize(response = nil)
9
+ @response = response
10
+ @messages = []
11
+
12
+ process(@response) if response
13
+ end
14
+
15
+ # Adds errors.
16
+ # Accepts a response.
17
+ def add(response)
18
+ process(response)
19
+ end
20
+
21
+ private
22
+ def process(response)
23
+ return unless response.error?
24
+ @messages << error_message(
25
+ error_to_sym(response.error),
26
+ error_to_human(response.error)
27
+ )
28
+
29
+ if response.error == Aitch::BadRequestError
30
+ response.data.css("errors > error").each do |error|
31
+ @messages << error_message(error.css("code").text, error.css("message").text)
32
+ end
33
+ end
34
+ end
35
+
36
+ def error_message(code, message)
37
+ I18n.t(code, scope: "pagseguro.errors", default: message)
38
+ end
39
+
40
+
41
+ # Error formats
42
+ def error_to_sym(error)
43
+ error.to_s.split(/::/)[-1]
44
+ .gsub(/Error$/, '')
45
+ .gsub(/[[:upper:]]/)
46
+ .with_index {|k, i| i == 0 ? k : ('_' + k)}
47
+ .downcase
48
+ .to_sym
49
+ end
50
+
51
+ def error_to_human(error)
52
+ error_to_sym(error).to_s
53
+ .capitalize
54
+ .gsub('_', ' ')
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,3 @@
1
+ module PagSeguro
2
+ InvalidEnvironmentError = Class.new(StandardError)
3
+ end
@@ -0,0 +1,34 @@
1
+ module PagSeguro
2
+ module Extensions
3
+ module CollectionObject
4
+ extend Forwardable
5
+ include Enumerable
6
+ include EnsureType
7
+
8
+ def_delegators :@store, :size, :clear, :empty?, :any?, :each, :include?
9
+
10
+ attr_accessor :store
11
+
12
+ def initialize
13
+ @store = []
14
+ end
15
+
16
+ def collection_type
17
+ PagSeguro.const_get(class_name_singularized)
18
+ end
19
+
20
+ # Adds a new object to the collection.
21
+ def <<(param)
22
+ object = ensure_type(collection_type, param)
23
+ @store << object unless include?(object)
24
+ end
25
+
26
+ private
27
+
28
+ def class_name_singularized
29
+ class_name = self.class.to_s.split('::').last
30
+ class_name[0...-1] if class_name.end_with? 's'
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,17 @@
1
+ module PagSeguro
2
+ module Extensions
3
+ module Credentiable
4
+ # Get the credential object value
5
+ attr_reader :credentials
6
+
7
+ # Set a credential object
8
+ def credentials=(credentials)
9
+ if credentials.kind_of?(ApplicationCredentials) || credentials.kind_of?(AccountCredentials)
10
+ @credentials = credentials
11
+ else
12
+ raise 'Invalid credentials object'
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ module PagSeguro
2
+ module Extensions
3
+ module EnsureType
4
+ def ensure_type(klass, options = {})
5
+ options.kind_of?(klass) ? options : klass.new(options)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ module PagSeguro
2
+ module Extensions
3
+ module MassAssignment
4
+ def initialize(options = {})
5
+ before_initialize if respond_to?(:before_initialize, true)
6
+ options.each {|name, value| public_send("#{name}=", value) }
7
+ after_initialize if respond_to?(:after_initialize, true)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,36 @@
1
+ module PagSeguro
2
+ class Holder
3
+ include Extensions::MassAssignment
4
+ include Extensions::EnsureType
5
+
6
+ # Set the name.
7
+ attr_accessor :name
8
+
9
+ # Set the birth date.
10
+ attr_accessor :birth_date
11
+
12
+ # Get document info.
13
+ attr_reader :document
14
+
15
+ # Get the phone.
16
+ attr_reader :phone
17
+
18
+ # Get the billing address
19
+ attr_reader :billing_address
20
+
21
+ # Set the document.
22
+ def document=(document)
23
+ @document = ensure_type(Document, document)
24
+ end
25
+
26
+ # Set the phone.
27
+ def phone=(phone)
28
+ @phone = ensure_type(Phone, phone)
29
+ end
30
+
31
+ # Set the billing address
32
+ def billing_address=(billing_address)
33
+ @billing_address = ensure_type(Address, billing_address)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,57 @@
1
+ module PagSeguro
2
+ class Installment
3
+ include Extensions::MassAssignment
4
+
5
+ # Set the credit card brand.
6
+ attr_accessor :card_brand
7
+
8
+ # Set the installments quantity.
9
+ attr_accessor :quantity
10
+
11
+ # Set the amount.
12
+ # Must fit the patern: \\d+.\\d{2} (e.g. "12.00")
13
+ attr_accessor :amount
14
+
15
+ # Set total amount.
16
+ attr_accessor :total_amount
17
+
18
+ # Set interest free.
19
+ attr_accessor :interest_free
20
+
21
+ # Find installment options by a given amount
22
+ # Optional. Credit card brand
23
+
24
+ # Return a PagSeguro::Installment::Collection instance
25
+ def self.find(amount, card_brand, options = {})
26
+ request = Request.get("installments", api_version, options.merge(params(amount: amount, card_brand: card_brand)))
27
+ collection = Collection.new
28
+ Response.new(request, collection).serialize
29
+
30
+ collection
31
+ end
32
+
33
+ private
34
+
35
+ def self.params(options)
36
+ RequestSerializer.new(options).to_params
37
+ end
38
+
39
+ def self.api_version
40
+ 'v2'
41
+ end
42
+
43
+ def self.load_from_response(response)
44
+ if response.success? and response.xml?
45
+ Nokogiri::XML(response.body).css("installments > installment").map do |node|
46
+ load_from_xml(node)
47
+ end
48
+ else
49
+ Response.new Errors.new(response)
50
+ end
51
+ end
52
+
53
+ def self.load_from_xml(xml)
54
+ new Serializer.new(xml).serialize
55
+ end
56
+ end
57
+ end