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.
- checksums.yaml +7 -0
- data/.github/.gitignore +204 -0
- data/.github/ISSUE_TEMPLATE/relatorio-de-bug.md +29 -0
- data/.github/workflows/codacy-analysis.yml +46 -0
- data/.gitignore +28 -0
- data/.rspec +1 -0
- data/.travis.yml +13 -0
- data/CHANGELOG.md +95 -0
- data/CONTRIBUTING.md +39 -0
- data/Dockerfile +20 -0
- data/Gemfile +2 -0
- data/LICENSE-2.0.txt +177 -0
- data/README.md +436 -0
- data/Rakefile +5 -0
- data/docker-compose.yml +5 -0
- data/docs/transparent_checkout.md +201 -0
- data/examples/authorization/create_authorization.rb +32 -0
- data/examples/authorization/create_authorization_with_account.rb +56 -0
- data/examples/authorization/search/search_authorization_by_code.rb +29 -0
- data/examples/authorization/search/search_authorization_by_date.rb +35 -0
- data/examples/authorization/search/search_authorization_by_notification_code.rb +29 -0
- data/examples/authorization/search/search_authorization_by_reference.rb +31 -0
- data/examples/boot.rb +26 -0
- data/examples/checkout/create_payment_request.rb +63 -0
- data/examples/checkout/search/search_abandoned_transactions.rb +41 -0
- data/examples/checkout/search/search_transaction_by_code.rb +76 -0
- data/examples/checkout/search/search_transaction_by_notification_code.rb +76 -0
- data/examples/checkout/search/search_transaction_by_reference.rb +36 -0
- data/examples/checkout/search/search_transactions_by_date.rb +45 -0
- data/examples/create_session.rb +19 -0
- data/examples/direct/create_transaction_using_boleto.rb +100 -0
- data/examples/direct/create_transaction_using_credit_card.rb +128 -0
- data/examples/direct/create_transaction_using_online_debit.rb +104 -0
- data/examples/get_installments.rb +40 -0
- data/examples/preapproval/cancel_preapproval.rb +26 -0
- data/examples/preapproval/change_preapproval_payment.rb +50 -0
- data/examples/preapproval/change_preapproval_status.rb +29 -0
- data/examples/preapproval/charge_preapproval.rb +36 -0
- data/examples/preapproval/create_preapproval.rb +68 -0
- data/examples/preapproval/create_preapproval_auto.rb +53 -0
- data/examples/preapproval/create_preapproval_discount.rb +30 -0
- data/examples/preapproval/create_preapproval_manual.rb +58 -0
- data/examples/preapproval/create_preapproval_transparent.rb +41 -0
- data/examples/preapproval/preapproval_retry.rb +29 -0
- data/examples/preapproval/search/search_by_date_interval.rb +45 -0
- data/examples/preapproval/search/search_by_days_interval.rb +46 -0
- data/examples/preapproval/search/search_by_notification_code.rb +50 -0
- data/examples/preapproval/search/search_by_subscription_code.rb +50 -0
- data/examples/preapproval/search/search_subscription_payment_orders.rb +53 -0
- data/examples/request_transaction_cancellation.rb +19 -0
- data/examples/split_payment/create_authorization.rb +32 -0
- data/examples/split_payment/create_payment_request.rb +71 -0
- data/examples/split_payment/create_transaction_using_boleto.rb +118 -0
- data/examples/split_payment/create_transaction_using_credit_card.rb +152 -0
- data/lib/pagseguro-oficial.rb +1 -0
- data/lib/pagseguro.rb +221 -0
- data/lib/pagseguro/account.rb +29 -0
- data/lib/pagseguro/account_credentials.rb +14 -0
- data/lib/pagseguro/address.rb +40 -0
- data/lib/pagseguro/application_credentials.rb +18 -0
- data/lib/pagseguro/authorization.rb +61 -0
- data/lib/pagseguro/authorization/collection.rb +28 -0
- data/lib/pagseguro/authorization/request_serializer.rb +24 -0
- data/lib/pagseguro/authorization/response.rb +49 -0
- data/lib/pagseguro/authorization/response_serializer.rb +40 -0
- data/lib/pagseguro/authorization_request.rb +84 -0
- data/lib/pagseguro/authorization_request/request_serializer.rb +142 -0
- data/lib/pagseguro/authorization_request/response.rb +26 -0
- data/lib/pagseguro/authorization_request/response_serializer.rb +18 -0
- data/lib/pagseguro/bank.rb +8 -0
- data/lib/pagseguro/boleto_transaction_request.rb +8 -0
- data/lib/pagseguro/company.rb +41 -0
- data/lib/pagseguro/config.rb +34 -0
- data/lib/pagseguro/credit_card_transaction_request.rb +39 -0
- data/lib/pagseguro/creditor_fee.rb +23 -0
- data/lib/pagseguro/document.rb +23 -0
- data/lib/pagseguro/documents.rb +5 -0
- data/lib/pagseguro/errors.rb +57 -0
- data/lib/pagseguro/exceptions.rb +3 -0
- data/lib/pagseguro/extensions/collection_object.rb +34 -0
- data/lib/pagseguro/extensions/credentiable.rb +17 -0
- data/lib/pagseguro/extensions/ensure_type.rb +9 -0
- data/lib/pagseguro/extensions/mass_assignment.rb +11 -0
- data/lib/pagseguro/holder.rb +36 -0
- data/lib/pagseguro/installment.rb +57 -0
- data/lib/pagseguro/installment/collection.rb +25 -0
- data/lib/pagseguro/installment/request_serializer.rb +24 -0
- data/lib/pagseguro/installment/response.rb +37 -0
- data/lib/pagseguro/installment/response_serializer.rb +22 -0
- data/lib/pagseguro/item.rb +34 -0
- data/lib/pagseguro/items.rb +23 -0
- data/lib/pagseguro/manual_subscription_charger.rb +59 -0
- data/lib/pagseguro/manual_subscription_charger/request_serializer.rb +50 -0
- data/lib/pagseguro/manual_subscription_charger/response.rb +36 -0
- data/lib/pagseguro/manual_subscription_charger/response_serializer.rb +17 -0
- data/lib/pagseguro/notification.rb +11 -0
- data/lib/pagseguro/notification/authorization.rb +15 -0
- data/lib/pagseguro/notification/transaction.rb +15 -0
- data/lib/pagseguro/online_debit_transaction_request.rb +17 -0
- data/lib/pagseguro/partner.rb +20 -0
- data/lib/pagseguro/payment_method.rb +39 -0
- data/lib/pagseguro/payment_release.rb +21 -0
- data/lib/pagseguro/payment_releases.rb +28 -0
- data/lib/pagseguro/payment_request.rb +117 -0
- data/lib/pagseguro/payment_request/request_serializer.rb +203 -0
- data/lib/pagseguro/payment_request/response.rb +35 -0
- data/lib/pagseguro/payment_status.rb +39 -0
- data/lib/pagseguro/permission.rb +13 -0
- data/lib/pagseguro/person.rb +40 -0
- data/lib/pagseguro/phone.rb +20 -0
- data/lib/pagseguro/phones.rb +5 -0
- data/lib/pagseguro/receiver.rb +20 -0
- data/lib/pagseguro/receiver_split.rb +15 -0
- data/lib/pagseguro/request.rb +170 -0
- data/lib/pagseguro/sender.rb +53 -0
- data/lib/pagseguro/session.rb +34 -0
- data/lib/pagseguro/session/response.rb +32 -0
- data/lib/pagseguro/session/response_serializer.rb +18 -0
- data/lib/pagseguro/shipping.rb +57 -0
- data/lib/pagseguro/subscription.rb +132 -0
- data/lib/pagseguro/subscription/request_serializer.rb +129 -0
- data/lib/pagseguro/subscription/response.rb +49 -0
- data/lib/pagseguro/subscription/response_serializer.rb +62 -0
- data/lib/pagseguro/subscription/subscription_search.rb +135 -0
- data/lib/pagseguro/subscription_canceller.rb +30 -0
- data/lib/pagseguro/subscription_canceller/response.rb +34 -0
- data/lib/pagseguro/subscription_change_payment.rb +46 -0
- data/lib/pagseguro/subscription_change_payment/request_serializer.rb +80 -0
- data/lib/pagseguro/subscription_change_payment/response.rb +26 -0
- data/lib/pagseguro/subscription_change_status.rb +50 -0
- data/lib/pagseguro/subscription_change_status/request_serializer.rb +28 -0
- data/lib/pagseguro/subscription_change_status/response.rb +26 -0
- data/lib/pagseguro/subscription_discount.rb +41 -0
- data/lib/pagseguro/subscription_discount/request_serializer.rb +34 -0
- data/lib/pagseguro/subscription_discount/response.rb +34 -0
- data/lib/pagseguro/subscription_payment_method.rb +21 -0
- data/lib/pagseguro/subscription_payment_order.rb +57 -0
- data/lib/pagseguro/subscription_payment_order/response.rb +37 -0
- data/lib/pagseguro/subscription_payment_order/response_serializer.rb +51 -0
- data/lib/pagseguro/subscription_plan.rb +69 -0
- data/lib/pagseguro/subscription_plan/request_serializer.rb +81 -0
- data/lib/pagseguro/subscription_plan/response.rb +36 -0
- data/lib/pagseguro/subscription_plan/response_serializer.rb +17 -0
- data/lib/pagseguro/subscription_retry.rb +35 -0
- data/lib/pagseguro/subscription_retry/response.rb +34 -0
- data/lib/pagseguro/subscription_search_payment_orders.rb +131 -0
- data/lib/pagseguro/subscription_transaction.rb +29 -0
- data/lib/pagseguro/subscription_transactions.rb +5 -0
- data/lib/pagseguro/transaction.rb +215 -0
- data/lib/pagseguro/transaction/collection.rb +20 -0
- data/lib/pagseguro/transaction/response.rb +45 -0
- data/lib/pagseguro/transaction/search.rb +121 -0
- data/lib/pagseguro/transaction/search/search_abandoned.rb +20 -0
- data/lib/pagseguro/transaction/search/search_by_date.rb +16 -0
- data/lib/pagseguro/transaction/search/search_by_reference.rb +13 -0
- data/lib/pagseguro/transaction/serializer.rb +181 -0
- data/lib/pagseguro/transaction_cancellation.rb +37 -0
- data/lib/pagseguro/transaction_cancellation/request_serializer.rb +18 -0
- data/lib/pagseguro/transaction_cancellation/response.rb +33 -0
- data/lib/pagseguro/transaction_cancellation/response_serializer.rb +17 -0
- data/lib/pagseguro/transaction_installment.rb +11 -0
- data/lib/pagseguro/transaction_refund.rb +44 -0
- data/lib/pagseguro/transaction_refund/request_serializer.rb +24 -0
- data/lib/pagseguro/transaction_refund/response.rb +33 -0
- data/lib/pagseguro/transaction_refund/response_serializer.rb +17 -0
- data/lib/pagseguro/transaction_request.rb +165 -0
- data/lib/pagseguro/transaction_request/request_serializer.rb +311 -0
- data/lib/pagseguro/transaction_request/response.rb +33 -0
- data/lib/pagseguro/transaction_request/response_serializer.rb +117 -0
- data/lib/pagseguro/transaction_status.rb +14 -0
- data/lib/pagseguro/version.rb +3 -0
- data/locales/pt-BR.yml +130 -0
- data/pagseguro-oficial.gemspec +31 -0
- data/spec/fixtures/authorization/find_authorization.xml +17 -0
- data/spec/fixtures/authorization/search_authorization.xml +47 -0
- data/spec/fixtures/authorization_request/authorization_request.xml +11 -0
- data/spec/fixtures/authorization_request/authorization_request_with_account.xml +47 -0
- data/spec/fixtures/authorization_request/success.xml +4 -0
- data/spec/fixtures/by_date/success.xml +85 -0
- data/spec/fixtures/installment/success.xml +24 -0
- data/spec/fixtures/invalid_code.xml +7 -0
- data/spec/fixtures/manual_subscription_charger/fail.xml +6 -0
- data/spec/fixtures/manual_subscription_charger/success.xml +4 -0
- data/spec/fixtures/payment_request/failure.xml +7 -0
- data/spec/fixtures/payment_request/success.xml +5 -0
- data/spec/fixtures/refund/success.xml +2 -0
- data/spec/fixtures/session/success.xml +4 -0
- data/spec/fixtures/subscription/fail.xml +6 -0
- data/spec/fixtures/subscription/find_success.xml +28 -0
- data/spec/fixtures/subscription/search_success.xml +18 -0
- data/spec/fixtures/subscription/success.xml +4 -0
- data/spec/fixtures/subscription_canceller/fail.xml +6 -0
- data/spec/fixtures/subscription_change_payment/fail.xml +7 -0
- data/spec/fixtures/subscription_change_status/fail.xml +7 -0
- data/spec/fixtures/subscription_discount/fail.xml +6 -0
- data/spec/fixtures/subscription_payment_order/success.xml +18 -0
- data/spec/fixtures/subscription_plan/fail.xml +6 -0
- data/spec/fixtures/subscription_plan/success.xml +4 -0
- data/spec/fixtures/subscription_retry/fail.xml +7 -0
- data/spec/fixtures/subscription_search_payment_orders/success.xml +43 -0
- data/spec/fixtures/transaction_cancellation/success.xml +2 -0
- data/spec/fixtures/transaction_request/success.xml +58 -0
- data/spec/fixtures/transactions/additional.xml +53 -0
- data/spec/fixtures/transactions/search.xml +40 -0
- data/spec/fixtures/transactions/success.xml +75 -0
- data/spec/fixtures/transactions/without_status_and_type.xml +71 -0
- data/spec/pagseguro/account_credentials_spec.rb +10 -0
- data/spec/pagseguro/account_spec.rb +27 -0
- data/spec/pagseguro/address_spec.rb +17 -0
- data/spec/pagseguro/application_credentials_spec.rb +11 -0
- data/spec/pagseguro/authorization/collection_spec.rb +49 -0
- data/spec/pagseguro/authorization/request_serializer_spec.rb +10 -0
- data/spec/pagseguro/authorization/response_serializer_spec.rb +19 -0
- data/spec/pagseguro/authorization/response_spec.rb +90 -0
- data/spec/pagseguro/authorization_request/request_serializer_spec.rb +323 -0
- data/spec/pagseguro/authorization_request/response_serializer_spec.rb +15 -0
- data/spec/pagseguro/authorization_request/response_spec.rb +36 -0
- data/spec/pagseguro/authorization_request_spec.rb +127 -0
- data/spec/pagseguro/authorization_spec.rb +111 -0
- data/spec/pagseguro/bank_spec.rb +5 -0
- data/spec/pagseguro/boleto_transaction_request_spec.rb +9 -0
- data/spec/pagseguro/company_spec.rb +12 -0
- data/spec/pagseguro/config_spec.rb +5 -0
- data/spec/pagseguro/credit_card_transaction_request_spec.rb +36 -0
- data/spec/pagseguro/creditor_fee_spec.rb +10 -0
- data/spec/pagseguro/document_spec.rb +21 -0
- data/spec/pagseguro/documents_spec.rb +37 -0
- data/spec/pagseguro/errors_spec.rb +145 -0
- data/spec/pagseguro/extensions/collection_object_spec.rb +77 -0
- data/spec/pagseguro/features/create_session_spec.rb +52 -0
- data/spec/pagseguro/features/create_transaction_request_spec.rb +58 -0
- data/spec/pagseguro/holder_spec.rb +10 -0
- data/spec/pagseguro/installment/collection_spec.rb +43 -0
- data/spec/pagseguro/installment/request_serializer_spec.rb +16 -0
- data/spec/pagseguro/installment/response_serializer_spec.rb +33 -0
- data/spec/pagseguro/installment/response_spec.rb +56 -0
- data/spec/pagseguro/installment_spec.rb +50 -0
- data/spec/pagseguro/item_spec.rb +20 -0
- data/spec/pagseguro/items_spec.rb +148 -0
- data/spec/pagseguro/manual_subscription_charger/request_serializer_spec.rb +79 -0
- data/spec/pagseguro/manual_subscription_charger/response_serializer_spec.rb +10 -0
- data/spec/pagseguro/manual_subscription_charger/response_spec.rb +65 -0
- data/spec/pagseguro/manual_subscription_charger_spec.rb +68 -0
- data/spec/pagseguro/notification_spec.rb +6 -0
- data/spec/pagseguro/online_debit_transaction_request_spec.rb +18 -0
- data/spec/pagseguro/pagseguro_spec.rb +82 -0
- data/spec/pagseguro/partner_spec.rb +8 -0
- data/spec/pagseguro/payment_method_spec.rb +42 -0
- data/spec/pagseguro/payment_release_spec.rb +9 -0
- data/spec/pagseguro/payment_releases_spec.rb +34 -0
- data/spec/pagseguro/payment_request/request_serializer_spec.rb +283 -0
- data/spec/pagseguro/payment_request/response_spec.rb +13 -0
- data/spec/pagseguro/payment_request_spec.rb +148 -0
- data/spec/pagseguro/payment_status_spec.rb +33 -0
- data/spec/pagseguro/permission_spec.rb +7 -0
- data/spec/pagseguro/person_spec.rb +10 -0
- data/spec/pagseguro/phone_spec.rb +6 -0
- data/spec/pagseguro/phones_spec.rb +38 -0
- data/spec/pagseguro/receiver_spec.rb +7 -0
- data/spec/pagseguro/receiver_split_spec.rb +7 -0
- data/spec/pagseguro/request_spec.rb +114 -0
- data/spec/pagseguro/sender_spec.rb +25 -0
- data/spec/pagseguro/session/response_serializer_spec.rb +12 -0
- data/spec/pagseguro/session/response_spec.rb +57 -0
- data/spec/pagseguro/session_spec.rb +45 -0
- data/spec/pagseguro/shipping_spec.rb +40 -0
- data/spec/pagseguro/subscription/request_serializer_spec.rb +233 -0
- data/spec/pagseguro/subscription/response_serializer_spec.rb +46 -0
- data/spec/pagseguro/subscription/response_spec.rb +79 -0
- data/spec/pagseguro/subscription/subscription_search_spec.rb +154 -0
- data/spec/pagseguro/subscription_canceller/response_spec.rb +58 -0
- data/spec/pagseguro/subscription_canceller_spec.rb +57 -0
- data/spec/pagseguro/subscription_change_payment/request_serializer_spec.rb +150 -0
- data/spec/pagseguro/subscription_change_payment/response_spec.rb +41 -0
- data/spec/pagseguro/subscription_change_payment_spec.rb +60 -0
- data/spec/pagseguro/subscription_change_status/request_serializer_spec.rb +19 -0
- data/spec/pagseguro/subscription_change_status/response_spec.rb +41 -0
- data/spec/pagseguro/subscription_change_status_spec.rb +53 -0
- data/spec/pagseguro/subscription_discount/request_serializer_spec.rb +27 -0
- data/spec/pagseguro/subscription_discount/response_spec.rb +58 -0
- data/spec/pagseguro/subscription_discount_spec.rb +60 -0
- data/spec/pagseguro/subscription_payment_method_spec.rb +10 -0
- data/spec/pagseguro/subscription_payment_order/response_serializer_spec.rb +24 -0
- data/spec/pagseguro/subscription_payment_order/response_spec.rb +55 -0
- data/spec/pagseguro/subscription_payment_order_spec.rb +27 -0
- data/spec/pagseguro/subscription_plan/request_serializer_spec.rb +253 -0
- data/spec/pagseguro/subscription_plan/response_serializer_spec.rb +10 -0
- data/spec/pagseguro/subscription_plan/response_spec.rb +65 -0
- data/spec/pagseguro/subscription_plan_spec.rb +118 -0
- data/spec/pagseguro/subscription_retry/response_spec.rb +58 -0
- data/spec/pagseguro/subscription_retry_spec.rb +62 -0
- data/spec/pagseguro/subscription_search_payment_order_spec.rb +129 -0
- data/spec/pagseguro/subscription_spec.rb +137 -0
- data/spec/pagseguro/subscription_transaction_spec.rb +24 -0
- data/spec/pagseguro/subscription_transactions_spec.rb +37 -0
- data/spec/pagseguro/transaction/collection_spec.rb +43 -0
- data/spec/pagseguro/transaction/response_spec.rb +60 -0
- data/spec/pagseguro/transaction/search/search_abandoned_spec.rb +55 -0
- data/spec/pagseguro/transaction/search/search_by_date_spec.rb +28 -0
- data/spec/pagseguro/transaction/search/search_by_reference_spec.rb +21 -0
- data/spec/pagseguro/transaction/search_spec.rb +133 -0
- data/spec/pagseguro/transaction/serializer_spec.rb +86 -0
- data/spec/pagseguro/transaction_cancellation/request_serializer_spec.rb +13 -0
- data/spec/pagseguro/transaction_cancellation/response_serializer_spec.rb +9 -0
- data/spec/pagseguro/transaction_cancellation/response_spec.rb +45 -0
- data/spec/pagseguro/transaction_cancellation_spec.rb +60 -0
- data/spec/pagseguro/transaction_installment_spec.rb +6 -0
- data/spec/pagseguro/transaction_refund/request_serializer_spec.rb +15 -0
- data/spec/pagseguro/transaction_refund/response_serializer_spec.rb +12 -0
- data/spec/pagseguro/transaction_refund/response_spec.rb +39 -0
- data/spec/pagseguro/transaction_refund_spec.rb +71 -0
- data/spec/pagseguro/transaction_request/request_serializer_spec.rb +677 -0
- data/spec/pagseguro/transaction_request/response_serializer_spec.rb +52 -0
- data/spec/pagseguro/transaction_request/response_spec.rb +63 -0
- data/spec/pagseguro/transaction_request_spec.rb +156 -0
- data/spec/pagseguro/transaction_spec.rb +265 -0
- data/spec/pagseguro/transaction_status_spec.rb +7 -0
- data/spec/spec_helper.rb +35 -0
- data/spec/support/ensure_type_macro.rb +35 -0
- data/spec/support/helpers.rb +14 -0
- data/spec/support/mass_assignment_macro.rb +11 -0
- data/spec/support/shared_examples_for_configuration.rb +10 -0
- data/transaction/transaction_refund.rb +25 -0
- metadata +641 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class PaymentRelease
|
3
|
+
include Extensions::MassAssignment
|
4
|
+
include Extensions::EnsureType
|
5
|
+
|
6
|
+
# Set the number of installments
|
7
|
+
attr_accessor :installment
|
8
|
+
|
9
|
+
# Set the total amount
|
10
|
+
attr_accessor :total_amount
|
11
|
+
|
12
|
+
# Set the total amount of the current release
|
13
|
+
attr_accessor :release_amount
|
14
|
+
|
15
|
+
# Set the status of current release
|
16
|
+
attr_accessor :status
|
17
|
+
|
18
|
+
# Set the release date
|
19
|
+
attr_accessor :release_date
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class PaymentReleases
|
3
|
+
include Enumerable
|
4
|
+
extend Forwardable
|
5
|
+
include Extensions::EnsureType
|
6
|
+
|
7
|
+
def_delegators :@payments, :each, :size
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@payments = []
|
11
|
+
end
|
12
|
+
|
13
|
+
# Adds payment to payment list.
|
14
|
+
def <<(payment)
|
15
|
+
payment = ensure_type(PaymentRelease, payment)
|
16
|
+
|
17
|
+
@payments << payment unless @payments.include? payment
|
18
|
+
end
|
19
|
+
|
20
|
+
# Verify if a payment is already included to payment list.
|
21
|
+
# Returns Boolean.
|
22
|
+
def include?(payment)
|
23
|
+
self.find do |included_payment|
|
24
|
+
included_payment.installment == ensure_type(PaymentRelease, payment).installment
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class PaymentRequest
|
3
|
+
include Extensions::MassAssignment
|
4
|
+
include Extensions::EnsureType
|
5
|
+
include Extensions::Credentiable
|
6
|
+
|
7
|
+
# Set the payment currency.
|
8
|
+
# Defaults to BRL.
|
9
|
+
attr_accessor :currency
|
10
|
+
|
11
|
+
# Get the payment sender.
|
12
|
+
attr_reader :sender
|
13
|
+
|
14
|
+
# Set and get primary receiver email.
|
15
|
+
attr_accessor :primary_receiver
|
16
|
+
|
17
|
+
# Get the payment receivers.
|
18
|
+
attr_reader :receivers
|
19
|
+
|
20
|
+
# Get the shipping info.
|
21
|
+
attr_reader :shipping
|
22
|
+
|
23
|
+
# Set the redirect url.
|
24
|
+
# The URL that will be used by PagSeguro to redirect the user after
|
25
|
+
# the payment information is processed. Typically this is a
|
26
|
+
# confirmation page on your web site.
|
27
|
+
attr_accessor :redirect_url
|
28
|
+
|
29
|
+
# Set the extra amount to be applied to the transaction's total.
|
30
|
+
# This value can be used to add an extra charge to the transaction
|
31
|
+
# or provide a discount, if negative.
|
32
|
+
attr_accessor :extra_amount
|
33
|
+
|
34
|
+
# Set the reference code.
|
35
|
+
# Optional. You can use the reference code to store an identifier so you can
|
36
|
+
# associate the PagSeguro transaction to a transaction in your system.
|
37
|
+
# Tipically this is the order id.
|
38
|
+
attr_accessor :reference
|
39
|
+
|
40
|
+
# Set the payment request duration, in seconds.
|
41
|
+
attr_accessor :max_age
|
42
|
+
|
43
|
+
# How many times the payment redirect uri returned by the payment
|
44
|
+
# web service can be accessed.
|
45
|
+
# Optional. After this payment request is submitted, the payment
|
46
|
+
# redirect uri returned by the payment web service will remain valid
|
47
|
+
# for the number of uses specified here.
|
48
|
+
attr_accessor :max_uses
|
49
|
+
|
50
|
+
# Determines for which url PagSeguro will send the order related
|
51
|
+
# notifications codes.
|
52
|
+
# Optional. Any change happens in the transaction status, a new notification
|
53
|
+
# request will be send to this url. You can use that for update the related
|
54
|
+
# order.
|
55
|
+
attr_accessor :notification_url
|
56
|
+
|
57
|
+
# Determines for which url PagSeguro will send the buyer when he doesn't
|
58
|
+
# complete the payment.
|
59
|
+
attr_accessor :abandon_url
|
60
|
+
|
61
|
+
# The extra parameters for payment request
|
62
|
+
attr_accessor :extra_params
|
63
|
+
|
64
|
+
# Products/items in this payment request.
|
65
|
+
def items
|
66
|
+
@items ||= Items.new
|
67
|
+
end
|
68
|
+
|
69
|
+
# Set the payment sender.
|
70
|
+
def sender=(sender)
|
71
|
+
@sender = ensure_type(Sender, sender)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Set the receivers.
|
75
|
+
def receivers=(receivers)
|
76
|
+
receivers.each do |receiver|
|
77
|
+
@receivers << ensure_type(Receiver, receiver)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
# Set the shipping info.
|
82
|
+
def shipping=(shipping)
|
83
|
+
@shipping = ensure_type(Shipping, shipping)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Calls the PagSeguro web service and register this request for payment.
|
87
|
+
def register
|
88
|
+
request = if @receivers.empty?
|
89
|
+
Request.post('checkout', api_version, params)
|
90
|
+
else
|
91
|
+
Request.post_xml('checkouts', api_version, credentials, xml_params)
|
92
|
+
end
|
93
|
+
|
94
|
+
Response.new(request)
|
95
|
+
end
|
96
|
+
|
97
|
+
private
|
98
|
+
|
99
|
+
def xml_params
|
100
|
+
RequestSerializer.new(self).to_xml_params
|
101
|
+
end
|
102
|
+
|
103
|
+
def params
|
104
|
+
RequestSerializer.new(self).to_params
|
105
|
+
end
|
106
|
+
|
107
|
+
def before_initialize
|
108
|
+
self.extra_params = []
|
109
|
+
self.currency = "BRL"
|
110
|
+
@receivers = []
|
111
|
+
end
|
112
|
+
|
113
|
+
def api_version
|
114
|
+
'v2'
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,203 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class PaymentRequest
|
3
|
+
class RequestSerializer
|
4
|
+
# The payment request that will be serialized.
|
5
|
+
attr_reader :payment_request
|
6
|
+
|
7
|
+
def initialize(payment_request)
|
8
|
+
@payment_request = payment_request
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_xml_params
|
12
|
+
xml_builder.to_xml(
|
13
|
+
save_with:
|
14
|
+
Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS |
|
15
|
+
Nokogiri::XML::Node::SaveOptions::FORMAT
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_params
|
20
|
+
{}.tap do |data|
|
21
|
+
data[:receiverEmail] = PagSeguro.receiver_email
|
22
|
+
data[:currency] = payment_request.currency
|
23
|
+
data[:reference] = payment_request.reference
|
24
|
+
data[:extraAmount] = to_amount(payment_request.extra_amount)
|
25
|
+
data[:redirectURL] = payment_request.redirect_url
|
26
|
+
data[:notificationURL] = payment_request.notification_url
|
27
|
+
data[:abandonURL] = payment_request.abandon_url
|
28
|
+
data[:maxUses] = payment_request.max_uses
|
29
|
+
data[:maxAge] = payment_request.max_age
|
30
|
+
data[:credentials] = payment_request.credentials
|
31
|
+
payment_request.items.each_with_index do |item, index|
|
32
|
+
serialize_item(data, item, index.succ)
|
33
|
+
end
|
34
|
+
|
35
|
+
serialize_sender(data, payment_request.sender)
|
36
|
+
serialize_shipping(data, payment_request.shipping)
|
37
|
+
serialize_receivers(data, payment_request.receivers)
|
38
|
+
serialize_extra_params(data, payment_request.extra_params)
|
39
|
+
end.delete_if { |_, value| value.nil? }
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def serialize_receivers(data, receivers)
|
45
|
+
receivers.each.with_index(1) do |receiver, idx|
|
46
|
+
data["receiver[#{idx}].email"] = receiver.email
|
47
|
+
serialize_receiver_split(data, receiver, idx, receiver.split)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def serialize_receiver_split(data, receiver, idx, split)
|
52
|
+
data["receiver[#{idx}].split.amount"] = receiver.split.amount
|
53
|
+
data["receiver[#{idx}].split.feePercent"] = receiver.split.fee_percent
|
54
|
+
data["receiver[#{idx}].split.ratePercent"] = receiver.split.rate_percent
|
55
|
+
end
|
56
|
+
|
57
|
+
def serialize_item(data, item, index)
|
58
|
+
data["itemId#{index}"] = item.id
|
59
|
+
data["itemDescription#{index}"] = item.description
|
60
|
+
data["itemAmount#{index}"] = to_amount(item.amount)
|
61
|
+
data["itemQuantity#{index}"] = item.quantity
|
62
|
+
data["itemShippingCost#{index}"] = to_amount(item.shipping_cost)
|
63
|
+
data["itemWeight#{index}"] = item.weight if item.weight
|
64
|
+
end
|
65
|
+
|
66
|
+
def serialize_sender(data, sender)
|
67
|
+
return unless sender
|
68
|
+
|
69
|
+
data[:senderEmail] = sender.email
|
70
|
+
data[:senderName] = sender.name
|
71
|
+
|
72
|
+
serialize_documents(data, sender.documents)
|
73
|
+
serialize_phone(data, sender.phone)
|
74
|
+
end
|
75
|
+
|
76
|
+
def serialize_documents(data, documents)
|
77
|
+
return if documents.empty?
|
78
|
+
|
79
|
+
documents.each do |document|
|
80
|
+
data[:senderCPF] = document.value if document.cpf?
|
81
|
+
data[:senderCNPJ] = document.value if document.cnpj?
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def serialize_phone(data, phone)
|
86
|
+
return unless phone
|
87
|
+
|
88
|
+
data[:senderAreaCode] = phone.area_code
|
89
|
+
data[:senderPhone] = phone.number
|
90
|
+
end
|
91
|
+
|
92
|
+
def serialize_shipping(data, shipping)
|
93
|
+
return unless shipping
|
94
|
+
|
95
|
+
data[:shippingType] = shipping.type_id
|
96
|
+
data[:shippingCost] = to_amount(shipping.cost)
|
97
|
+
|
98
|
+
serialize_address(data, shipping.address)
|
99
|
+
end
|
100
|
+
|
101
|
+
def serialize_address(data, address)
|
102
|
+
return unless address
|
103
|
+
|
104
|
+
data[:shippingAddressCountry] = address.country
|
105
|
+
data[:shippingAddressState] = address.state
|
106
|
+
data[:shippingAddressCity] = address.city
|
107
|
+
data[:shippingAddressPostalCode] = address.postal_code
|
108
|
+
data[:shippingAddressDistrict] = address.district
|
109
|
+
data[:shippingAddressStreet] = address.street
|
110
|
+
data[:shippingAddressNumber] = address.number
|
111
|
+
data[:shippingAddressComplement] = address.complement
|
112
|
+
end
|
113
|
+
|
114
|
+
def serialize_extra_params(data, extra_params)
|
115
|
+
return unless extra_params
|
116
|
+
|
117
|
+
extra_params.each do |extra_param|
|
118
|
+
data[extra_param.keys.first] = extra_param.values.first
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def to_amount(amount)
|
123
|
+
"%.2f" % BigDecimal(amount.to_s.to_f.to_s).round(2).to_s("F") if amount
|
124
|
+
end
|
125
|
+
|
126
|
+
def xml_builder
|
127
|
+
Nokogiri::XML::Builder.new(encoding: PagSeguro.encoding) do |xml|
|
128
|
+
xml.send(:checkout) {
|
129
|
+
xml_serialize_receivers(xml)
|
130
|
+
xml_serialize_sender(xml, payment_request.sender)
|
131
|
+
xml.send(:currency, payment_request.currency)
|
132
|
+
xml.send(:reference, payment_request.reference)
|
133
|
+
xml.send(:redirectURL, payment_request.redirect_url)
|
134
|
+
xml.send(:notificationURL, payment_request.notification_url)
|
135
|
+
xml_serialize_items(xml, payment_request.items)
|
136
|
+
}
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def xml_serialize_items(xml, items)
|
141
|
+
xml.send(:items) {
|
142
|
+
items.each do |item|
|
143
|
+
xml.send(:item) {
|
144
|
+
xml.send(:id, item.id)
|
145
|
+
xml.send(:description, item.description)
|
146
|
+
xml.send(:quantity, item.quantity)
|
147
|
+
xml.send(:amount, to_amount(item.amount))
|
148
|
+
xml.send(:weight, item.weight) if item.weight
|
149
|
+
xml.send(:shippingCost, to_amount(item.shipping_cost))
|
150
|
+
}
|
151
|
+
end
|
152
|
+
}
|
153
|
+
end
|
154
|
+
|
155
|
+
def xml_serialize_documents(xml, documents)
|
156
|
+
return if documents.empty?
|
157
|
+
|
158
|
+
xml.send(:documents) {
|
159
|
+
documents.each do |document|
|
160
|
+
xml.send(:document) {
|
161
|
+
xml.send(:type, document.type)
|
162
|
+
xml.send(:value, document.value)
|
163
|
+
}
|
164
|
+
end
|
165
|
+
}
|
166
|
+
end
|
167
|
+
|
168
|
+
def xml_serialize_sender(xml, sender)
|
169
|
+
return unless sender
|
170
|
+
|
171
|
+
xml.send(:sender) {
|
172
|
+
xml.send(:name, sender.name)
|
173
|
+
xml.send(:email, sender.email)
|
174
|
+
if sender.phone
|
175
|
+
xml.send(:phone) {
|
176
|
+
xml.send(:areaCode, sender.phone.area_code)
|
177
|
+
xml.send(:number, sender.phone.number)
|
178
|
+
}
|
179
|
+
end
|
180
|
+
|
181
|
+
xml_serialize_documents(xml, sender.documents)
|
182
|
+
}
|
183
|
+
end
|
184
|
+
|
185
|
+
def xml_serialize_receivers(xml)
|
186
|
+
xml.send(:primaryReceiver) {
|
187
|
+
xml.send(:email, payment_request.primary_receiver)
|
188
|
+
}
|
189
|
+
|
190
|
+
xml.send(:receivers) {
|
191
|
+
payment_request.receivers.each do |receiver|
|
192
|
+
xml.send(:receiver) {
|
193
|
+
xml.send(:email, receiver.email)
|
194
|
+
xml.send(:split) {
|
195
|
+
xml.send(:amount, receiver.split.amount)
|
196
|
+
}
|
197
|
+
}
|
198
|
+
end
|
199
|
+
}
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class PaymentRequest
|
3
|
+
class Response
|
4
|
+
extend Forwardable
|
5
|
+
|
6
|
+
def_delegators :response, :success?
|
7
|
+
attr_reader :response
|
8
|
+
|
9
|
+
def initialize(response)
|
10
|
+
@response = response
|
11
|
+
end
|
12
|
+
|
13
|
+
def errors
|
14
|
+
@errors ||= Errors.new(response)
|
15
|
+
end
|
16
|
+
|
17
|
+
def url
|
18
|
+
PagSeguro.site_url("#{api_version}/checkout/payment.html?code=#{code}") if code
|
19
|
+
end
|
20
|
+
|
21
|
+
def code
|
22
|
+
@code ||= response.data.css("checkout > code").text if success?
|
23
|
+
end
|
24
|
+
|
25
|
+
def created_at
|
26
|
+
@created_at ||= Time.parse(response.data.css("checkout > date").text) if success?
|
27
|
+
end
|
28
|
+
|
29
|
+
# Default PagSeguro API version for payments
|
30
|
+
def api_version
|
31
|
+
'v2'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class PaymentStatus
|
3
|
+
STATUSES = {
|
4
|
+
"0" => :initiated,
|
5
|
+
"1" => :waiting_payment,
|
6
|
+
"2" => :in_analysis,
|
7
|
+
"3" => :paid,
|
8
|
+
"4" => :available,
|
9
|
+
"5" => :in_dispute,
|
10
|
+
"6" => :refunded,
|
11
|
+
"7" => :cancelled,
|
12
|
+
"8" => :chargeback_charged,
|
13
|
+
"9" => :contested
|
14
|
+
}.freeze
|
15
|
+
|
16
|
+
# The payment status id.
|
17
|
+
attr_reader :id
|
18
|
+
|
19
|
+
def initialize(id)
|
20
|
+
@id = id
|
21
|
+
end
|
22
|
+
|
23
|
+
# Dynamically define helpers.
|
24
|
+
STATUSES.each do |id, _status|
|
25
|
+
define_method "#{_status}?" do
|
26
|
+
_status == status
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Return a readable status.
|
31
|
+
def status
|
32
|
+
STATUSES.fetch(id.to_s) { raise "PagSeguro::PaymentStatus#id isn't mapped" }
|
33
|
+
end
|
34
|
+
|
35
|
+
def description
|
36
|
+
I18n.t(id, scope: "pagseguro.payment_status")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|