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,13 @@
1
+ module PagSeguro
2
+ class Permission
3
+ include Extensions::MassAssignment
4
+ # The permission code
5
+ attr_accessor :code
6
+
7
+ # The permission status
8
+ attr_accessor :status
9
+
10
+ # The time when the permission was last updated
11
+ attr_accessor :last_update
12
+ end
13
+ end
@@ -0,0 +1,40 @@
1
+ module PagSeguro
2
+ class Person
3
+ include Extensions::MassAssignment
4
+ include Extensions::EnsureType
5
+
6
+ # Set the account name.
7
+ attr_accessor :name
8
+
9
+ # Set the account birth_date.
10
+ # Pattern: aaaa-MM-dd
11
+ attr_accessor :birth_date
12
+
13
+ # Set the account address.
14
+ attr_reader :address
15
+
16
+ def address=(address)
17
+ @address = ensure_type(Address, address)
18
+ end
19
+
20
+ def documents
21
+ @documents ||= Documents.new
22
+ end
23
+
24
+ def documents=(_documents=[])
25
+ _documents.each do |document|
26
+ documents << ensure_type(Document, document)
27
+ end
28
+ end
29
+
30
+ def phones
31
+ @phones ||= Phones.new
32
+ end
33
+
34
+ def phones=(_phones=[])
35
+ _phones.each do |phone|
36
+ phones << ensure_type(Phone, phone)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,20 @@
1
+ module PagSeguro
2
+ class Phone
3
+ include Extensions::MassAssignment
4
+
5
+ # Set the type phone
6
+ # Must be HOME, MOBILE or BUSINESS
7
+ attr_accessor :type
8
+
9
+ # Set the area code.
10
+ attr_accessor :area_code
11
+
12
+ # Set the phone number.
13
+ # Must have 7-9 numbers.
14
+ attr_accessor :number
15
+
16
+ def ==(other)
17
+ [type, area_code, number] == [other.type, other.area_code, other.number]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ module PagSeguro
2
+ class Phones
3
+ include Extensions::CollectionObject
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ module PagSeguro
2
+ class Receiver
3
+ include Extensions::MassAssignment
4
+ include Extensions::EnsureType
5
+
6
+ # Set receiver's email.
7
+ attr_accessor :email
8
+
9
+ # Set receiver's public_key.
10
+ attr_accessor :public_key
11
+
12
+ # Get receiver split.
13
+ attr_reader :split
14
+
15
+ # Set receiver split.
16
+ def split=(split)
17
+ @split = ensure_type(ReceiverSplit, split)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ module PagSeguro
2
+ class ReceiverSplit
3
+ include Extensions::MassAssignment
4
+ include Extensions::EnsureType
5
+
6
+ # Set amount.
7
+ attr_accessor :amount
8
+
9
+ # Set rate percent.
10
+ attr_accessor :rate_percent
11
+
12
+ # Set fee percent.
13
+ attr_accessor :fee_percent
14
+ end
15
+ end
@@ -0,0 +1,170 @@
1
+ module PagSeguro
2
+ module Request
3
+ extend self
4
+ extend Forwardable
5
+
6
+ # Delegates the <tt>:config</tt> and <tt>:configure</tt> methods
7
+ # to the <tt>:request</tt> method, which returns a Aitch::Namespace instance.
8
+ def_delegators :request, :config, :configure
9
+
10
+ # Perform a GET request.
11
+ #
12
+ # # +path+: the path that will be requested. Must be something like <tt>"transactions/code/739D69-79C052C05280-55542D9FBB33-CAB2B1"</tt>.
13
+ # # +api_version+: the current PagSeguro API version of the requested service
14
+ # # +data+: the data that will be sent as query string. Must be a Hash.
15
+ # # +headers+: any additional header that will be sent through the request.
16
+ #
17
+ def get(path, api_version, data = {}, headers = {})
18
+ execute :get, path, api_version, data, headers
19
+ end
20
+
21
+ def get_with_auth_on_url(path, api_version, credentials)
22
+ request.public_send(
23
+ :get,
24
+ PagSeguro.api_url("#{api_version}/#{path}?#{credentials_to_params(credentials)}")
25
+ )
26
+ end
27
+
28
+ def get_without_api_version(path, data={}, headers={})
29
+ request.get(path, extended_data(data), headers)
30
+ end
31
+
32
+ # Perform a POST request.
33
+ #
34
+ # # +path+: the path that will be requested. Must be something like <tt>"checkout"</tt>.
35
+ # # +api_version+: the current PagSeguro API version of the requested service
36
+ # # +data+: the data that will be sent as body data. Must be a Hash.
37
+ # # +headers+: any additional header that will be sent through the request.
38
+ #
39
+ def post(path, api_version, data = {}, headers = {})
40
+ execute :post, path, api_version, data, headers
41
+ end
42
+
43
+ # Perform a POST request, sending XML data.
44
+ #
45
+ # # +path+: the path that will be requested. Must be something like <tt>"checkout"</tt>.
46
+ # # +api_version+: the current PagSeguro API version of the requested service
47
+ # # +credentials+: the credentials like ApplicationCredentials or AccountCredentials.
48
+ # # +data+: the data that will be sent as body data. Must be a XML.
49
+ #
50
+ def post_xml(path, api_version, credentials, data = '', options={})
51
+ credentials_params = credentials_to_params(credentials)
52
+ url_path = [api_version, path].reject(&:nil?).join('/')
53
+
54
+ request.post do
55
+ url PagSeguro.api_url("#{url_path}?#{credentials_params}")
56
+ headers "Content-Type" => "application/xml; charset=#{PagSeguro.encoding}"
57
+ headers.merge!(options[:headers]) if options[:headers]
58
+ body data
59
+ end
60
+ end
61
+
62
+ # Perform a PUT request, sending XML data.
63
+ #
64
+ # # +path+: the path that will be requested. Must be something like <tt>"checkout"</tt>.
65
+ # # +credentials+: the credentials like ApplicationCredentials or AccountCredentials.
66
+ # # +data+: the data that will be sent as body data. Must be a XML.
67
+ #
68
+ def put_xml(path, credentials, data)
69
+ full_url = PagSeguro.api_url("#{path}?#{credentials_to_params(credentials)}")
70
+
71
+ request.put do
72
+ url full_url
73
+ headers "Content-Type" => "application/xml; charset=#{PagSeguro.encoding}",
74
+ "Accept" => "application/vnd.pagseguro.com.br.v1+xml;charset=ISO-8859-1"
75
+ body data
76
+ end
77
+ end
78
+
79
+ # Perform the specified HTTP request. It will include the API credentials,
80
+ # api_version, encoding and additional headers.
81
+ def execute(request_method, path, api_version, data, headers) # :nodoc:
82
+ request.public_send(
83
+ request_method,
84
+ PagSeguro.api_url("#{api_version}/#{path}"),
85
+ extended_data(data),
86
+ extended_headers(request_method, headers)
87
+ )
88
+ end
89
+
90
+ private
91
+ def request
92
+ @request ||= Aitch::Namespace.new
93
+ @request.configure do |config|
94
+ config.timeout = 50
95
+ end
96
+ @request
97
+ end
98
+
99
+ def extended_data(data)
100
+ if data[:credentials]
101
+ data.merge!(credentials_object(data))
102
+ else
103
+ data.merge!(global_credentials(data))
104
+ end
105
+ data.merge!({ charset: PagSeguro.encoding })
106
+ data.delete_if { |_, value| value.nil? }
107
+ end
108
+
109
+ def extended_headers(request_method, headers)
110
+ headers.merge __send__("headers_for_#{request_method}")
111
+ end
112
+
113
+ def headers_for_post
114
+ {
115
+ "Accept-Charset" => PagSeguro.encoding,
116
+ "Content-Type" => "application/x-www-form-urlencoded; charset=#{PagSeguro.encoding}"
117
+ }
118
+ end
119
+
120
+ def headers_for_get
121
+ {
122
+ "Accept-Charset" => PagSeguro.encoding
123
+ }
124
+ end
125
+
126
+ def credentials_to_params(credentials)
127
+ credentials_object(credentials: credentials)
128
+ .delete_if { |_, value| value.nil? }
129
+ .map { |key, value| "#{key}=#{value}" }
130
+ .join('&')
131
+ end
132
+
133
+ def credentials_object(data)
134
+ credentials = data.delete(:credentials)
135
+ if credentials.respond_to? :app_id
136
+ {
137
+ appId: credentials.app_id,
138
+ appKey: credentials.app_key,
139
+ authorizationCode: credentials.authorization_code
140
+ }
141
+ else
142
+ {
143
+ email: credentials.email,
144
+ token: credentials.token
145
+ }
146
+ end
147
+ end
148
+
149
+ def global_credentials(data)
150
+ if PagSeguro.app_id && PagSeguro.app_key
151
+ {
152
+ appId: PagSeguro.app_id,
153
+ appKey: PagSeguro.app_key
154
+ }
155
+ else
156
+ {
157
+ email: data[:email] || PagSeguro.email,
158
+ token: data[:token] || PagSeguro.token
159
+ }
160
+ end
161
+ end
162
+ end
163
+
164
+ Request.configure do |config|
165
+ config.default_headers = {
166
+ "lib-description" => "ruby:#{PagSeguro::VERSION}",
167
+ "language-engine-description" => "ruby:#{RUBY_VERSION}"
168
+ }
169
+ end
170
+ end
@@ -0,0 +1,53 @@
1
+ module PagSeguro
2
+ class Sender
3
+ include Extensions::MassAssignment
4
+ include Extensions::EnsureType
5
+
6
+ # Get the sender phone.
7
+ attr_reader :phone
8
+
9
+ # Get the sender document
10
+ attr_reader :document
11
+
12
+ # Get the sender address
13
+ attr_reader :address
14
+
15
+ # Set the sender name.
16
+ attr_accessor :name
17
+
18
+ # Set the sender e-mail.
19
+ attr_accessor :email
20
+
21
+ # Set the sender ip
22
+ attr_accessor :ip
23
+
24
+ # Set sender hash.
25
+ # It's used to identify the sender.
26
+ attr_accessor :hash
27
+
28
+ # Set the sender phone.
29
+ def phone=(phone)
30
+ @phone = ensure_type(Phone, phone)
31
+ end
32
+
33
+ def documents
34
+ @documents ||= Documents.new
35
+ end
36
+
37
+ def documents=(_documents=[])
38
+ _documents.each do |document|
39
+ documents << document
40
+ end
41
+ end
42
+
43
+ # Set the sender document.
44
+ def document=(document)
45
+ documents << ensure_type(Document, document)
46
+ end
47
+
48
+ # Set the sender address.
49
+ def address=(address)
50
+ @address = ensure_type(Address, address)
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,34 @@
1
+ module PagSeguro
2
+ class Session
3
+ include Extensions::MassAssignment
4
+
5
+ # The session id.
6
+ attr_accessor :id
7
+
8
+ # The PageSeguro::Errors object.
9
+ attr_writer :errors
10
+
11
+ def errors
12
+ @errors ||= Errors.new
13
+ end
14
+
15
+ # Create a payment session.
16
+ # Return a PagSeguro::Session instance.
17
+ def self.create
18
+ response = Request.post("sessions", api_version)
19
+ session = Session.new
20
+ response = Response.new(response, session).serialize
21
+
22
+ session
23
+ end
24
+
25
+ def update_attributes(attrs)
26
+ attrs.map { |name, value| send("#{name}=", value) }
27
+ end
28
+
29
+ private
30
+ def self.api_version
31
+ 'v2'
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,32 @@
1
+ module PagSeguro
2
+ class Session
3
+ class Response
4
+ def initialize(response, session)
5
+ @response = response
6
+ @session = session
7
+ end
8
+
9
+ def serialize
10
+ if success?
11
+ xml = Nokogiri::XML(response.body).css("session").first
12
+ session.update_attributes(ResponseSerializer.new(xml).serialize)
13
+ else
14
+ session.errors.add(response)
15
+ end
16
+
17
+ session
18
+ end
19
+
20
+ def success?
21
+ response.success? && response.xml?
22
+ end
23
+
24
+ private
25
+ # The request response.
26
+ attr_reader :response
27
+
28
+ # The Session instance.
29
+ attr_reader :session
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,18 @@
1
+ module PagSeguro
2
+ class Session
3
+ class ResponseSerializer
4
+ # The session that will be serialized
5
+ attr_reader :xml
6
+
7
+ def initialize(xml)
8
+ @xml = xml
9
+ end
10
+
11
+ def serialize
12
+ {}.tap do |data|
13
+ data[:id] = xml.css("id").text
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,57 @@
1
+ module PagSeguro
2
+ class Shipping
3
+ # Set the available shipping type.
4
+ TYPE = {
5
+ pac: 1,
6
+ sedex: 2,
7
+ not_specified: 3
8
+ }
9
+
10
+ # Define the error class for invalid type assignment.
11
+ InvalidShippingTypeError = Class.new(StandardError)
12
+
13
+ include Extensions::MassAssignment
14
+ include Extensions::EnsureType
15
+
16
+ # Define the shipping type id.
17
+ attr_reader :type_id
18
+
19
+ # Get the shipping type name.
20
+ attr_reader :type_name
21
+
22
+ # Get the address object.
23
+ attr_reader :address
24
+
25
+ # Set the shipping cost.
26
+ attr_accessor :cost
27
+
28
+ # Set the shipping address info.
29
+ def address=(address)
30
+ @address = ensure_type(Address, address)
31
+ end
32
+
33
+ # Set the shipping type.
34
+ # It raises the PagSeguro::Shipping::InvalidShippingTypeError exception
35
+ # when trying to assign an invalid type name.
36
+ def type_name=(type_name)
37
+ type_name = type_name.to_sym
38
+ @type_id = TYPE.fetch(type_name) {
39
+ raise InvalidShippingTypeError, "invalid #{type_name.inspect} type name"
40
+ }
41
+ @type_name = type_name
42
+ end
43
+
44
+ # Set the shipping type id.
45
+ # It raises the PagSeguro::Shipping::InvalidShippingTypeError exception
46
+ # when trying to assign an invalid type id.
47
+ def type_id=(id)
48
+ type_id = id.to_i
49
+
50
+ raise InvalidShippingTypeError,
51
+ "invalid #{id.inspect} type id" unless TYPE.value?(type_id)
52
+
53
+ @type_id = type_id
54
+ @type_name = TYPE.key(type_id)
55
+ end
56
+ end
57
+ end