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,29 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class SubscriptionTransaction
|
3
|
+
include Extensions::MassAssignment
|
4
|
+
|
5
|
+
STATUSES = {
|
6
|
+
waiting_payment: 1,
|
7
|
+
in_review: 2,
|
8
|
+
paid: 3,
|
9
|
+
available: 4,
|
10
|
+
in_dispute: 5,
|
11
|
+
returned: 6,
|
12
|
+
canceled: 7,
|
13
|
+
charged: 8,
|
14
|
+
temporary_retention: 9
|
15
|
+
}
|
16
|
+
|
17
|
+
attr_accessor :code
|
18
|
+
attr_accessor :status
|
19
|
+
attr_accessor :date
|
20
|
+
|
21
|
+
def status_code
|
22
|
+
STATUSES[status.to_sym]
|
23
|
+
end
|
24
|
+
|
25
|
+
def ==(object)
|
26
|
+
[code, status, date] == [object.code, object.status, object.date]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,215 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class Transaction
|
3
|
+
ONE_DAY_IN_SECONDS = 86400
|
4
|
+
FIFTEEN_MINUTES_IN_SECONDS = 900
|
5
|
+
|
6
|
+
include Extensions::MassAssignment
|
7
|
+
include Extensions::EnsureType
|
8
|
+
include Extensions::Credentiable
|
9
|
+
|
10
|
+
# When the payment request was created.
|
11
|
+
attr_accessor :created_at
|
12
|
+
|
13
|
+
# The transaction code.
|
14
|
+
attr_accessor :code
|
15
|
+
|
16
|
+
# The reference code identifies the order you placed on the payment request.
|
17
|
+
# It's used by the store and can be something like the order id.
|
18
|
+
attr_accessor :reference
|
19
|
+
|
20
|
+
# The transaction type.
|
21
|
+
attr_accessor :type_id
|
22
|
+
|
23
|
+
# The last notification's update.
|
24
|
+
attr_accessor :updated_at
|
25
|
+
|
26
|
+
# The transaction status.
|
27
|
+
attr_reader :status
|
28
|
+
|
29
|
+
# The payment method.
|
30
|
+
attr_reader :payment_method
|
31
|
+
|
32
|
+
# The boleto payment url.
|
33
|
+
attr_accessor :payment_link
|
34
|
+
|
35
|
+
# The gross amount.
|
36
|
+
attr_accessor :gross_amount
|
37
|
+
|
38
|
+
# The discount amount.
|
39
|
+
attr_accessor :discount_amount
|
40
|
+
|
41
|
+
# The charged fees.
|
42
|
+
attr_reader :creditor_fees
|
43
|
+
|
44
|
+
# The net amount.
|
45
|
+
attr_accessor :net_amount
|
46
|
+
|
47
|
+
# Set the extra amount applied to the transaction's total.
|
48
|
+
# It's considered as an extra charge when positive, or a discount if
|
49
|
+
# negative.
|
50
|
+
attr_accessor :extra_amount
|
51
|
+
|
52
|
+
# The installment count.
|
53
|
+
attr_accessor :installments
|
54
|
+
|
55
|
+
# The payer information (who is sending money).
|
56
|
+
attr_reader :sender
|
57
|
+
|
58
|
+
# The shipping information.
|
59
|
+
attr_reader :shipping
|
60
|
+
|
61
|
+
# The cancellation source.
|
62
|
+
attr_accessor :cancellation_source
|
63
|
+
|
64
|
+
# The escrow end date.
|
65
|
+
attr_accessor :escrow_end_date
|
66
|
+
|
67
|
+
# Set the transaction errors.
|
68
|
+
attr_reader :errors
|
69
|
+
|
70
|
+
# Find a transaction by its transactionCode
|
71
|
+
# Return a PagSeguro::Transaction instance
|
72
|
+
def self.find_by_code(code, options = {})
|
73
|
+
load_from_response send_request("transactions/#{code}", options)
|
74
|
+
end
|
75
|
+
|
76
|
+
# Find a transaction by its notificationCode.
|
77
|
+
# Return a PagSeguro::Transaction instance.
|
78
|
+
def self.find_by_notification_code(code, options = {})
|
79
|
+
load_from_response send_request("transactions/notifications/#{code}", options)
|
80
|
+
end
|
81
|
+
|
82
|
+
# Search transactions within a date range.
|
83
|
+
# Return a PagSeguro::SearchByDate instance
|
84
|
+
#
|
85
|
+
# Options:
|
86
|
+
#
|
87
|
+
# # +starts_at+: the starting date. Defaults to the last 24-hours.
|
88
|
+
# # +ends_at+: the ending date.
|
89
|
+
# # +page+: the current page.
|
90
|
+
# # +per_page+: the result limit.
|
91
|
+
#
|
92
|
+
def self.find_by_date(options = {}, page = 0)
|
93
|
+
options = {
|
94
|
+
starts_at: Time.now - ONE_DAY_IN_SECONDS,
|
95
|
+
ends_at: Time.now,
|
96
|
+
per_page: 50
|
97
|
+
}.merge(options)
|
98
|
+
SearchByDate.new("transactions", options, page)
|
99
|
+
end
|
100
|
+
|
101
|
+
# Search a transaction by its reference code
|
102
|
+
# Return a PagSeguro::SearchByReference instance
|
103
|
+
#
|
104
|
+
# Options:
|
105
|
+
#
|
106
|
+
# # +reference+: the transaction reference code
|
107
|
+
#
|
108
|
+
def self.find_by_reference(reference, options = {})
|
109
|
+
SearchByReference.new("transactions", { reference: reference }.merge(options))
|
110
|
+
end
|
111
|
+
|
112
|
+
# Get abandoned transactions.
|
113
|
+
# Return a PagSeguro::SearchByDate instance
|
114
|
+
#
|
115
|
+
# Options:
|
116
|
+
#
|
117
|
+
# # +starts_at+: the starting date. Defaults to the last 24-hours.
|
118
|
+
# # +ends_at+: the ending date. Defaults to 15 minutes ago. **Attention:** you have to set it this to <tt>Time.now - 15 minutes</tt>, otherwise the "finalDate must be lower than allowed limit" error will be returned.
|
119
|
+
# # +page+: the current page.
|
120
|
+
# # +per_page+: the result limit.
|
121
|
+
#
|
122
|
+
def self.find_abandoned(options = {}, page = 0)
|
123
|
+
options = {
|
124
|
+
starts_at: Time.now - ONE_DAY_IN_SECONDS,
|
125
|
+
ends_at: Time.now - FIFTEEN_MINUTES_IN_SECONDS,
|
126
|
+
per_page: 50
|
127
|
+
}.merge(options)
|
128
|
+
|
129
|
+
SearchAbandoned.new("transactions/abandoned", options, page)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Normalize creditor fees object
|
133
|
+
def creditor_fees=(creditor_fees)
|
134
|
+
@creditor_fees = ensure_type(CreditorFee, creditor_fees)
|
135
|
+
end
|
136
|
+
|
137
|
+
# Normalize the sender object.
|
138
|
+
def sender=(sender)
|
139
|
+
@sender = ensure_type(Sender, sender)
|
140
|
+
end
|
141
|
+
|
142
|
+
# Normalize the shipping object.
|
143
|
+
def shipping=(shipping)
|
144
|
+
@shipping = ensure_type(Shipping, shipping)
|
145
|
+
end
|
146
|
+
|
147
|
+
# Hold the transaction's payments
|
148
|
+
def payment_releases
|
149
|
+
@payment_releases ||= PaymentReleases.new
|
150
|
+
end
|
151
|
+
|
152
|
+
# Normalize the transaction's payments list
|
153
|
+
def payment_releases=(_payments)
|
154
|
+
_payments.each { |payment| payment_releases << payment }
|
155
|
+
end
|
156
|
+
|
157
|
+
# Hold the transaction's items.
|
158
|
+
def items
|
159
|
+
@items ||= Items.new
|
160
|
+
end
|
161
|
+
|
162
|
+
# Normalize the items list.
|
163
|
+
def items=(_items)
|
164
|
+
_items.each {|item| items << item }
|
165
|
+
end
|
166
|
+
|
167
|
+
# Normalize the payment method.
|
168
|
+
def payment_method=(payment_method)
|
169
|
+
@payment_method = ensure_type(PaymentMethod, payment_method)
|
170
|
+
end
|
171
|
+
|
172
|
+
# Normalize the payment status.
|
173
|
+
def status=(status)
|
174
|
+
@status = ensure_type(PaymentStatus, status)
|
175
|
+
end
|
176
|
+
|
177
|
+
# Set errors.
|
178
|
+
def errors
|
179
|
+
@errors ||= Errors.new
|
180
|
+
end
|
181
|
+
|
182
|
+
# Update all attributes
|
183
|
+
def update_attributes(attrs)
|
184
|
+
attrs.each { |name, value| send("#{name}=", value) }
|
185
|
+
end
|
186
|
+
|
187
|
+
# Serialize the XML object.
|
188
|
+
def self.load_from_xml(xml) # :nodoc:
|
189
|
+
new Serializer.new(xml).serialize
|
190
|
+
end
|
191
|
+
|
192
|
+
private
|
193
|
+
def self.api_version
|
194
|
+
'v3'
|
195
|
+
end
|
196
|
+
|
197
|
+
def after_initialize
|
198
|
+
@errors = Errors.new
|
199
|
+
end
|
200
|
+
|
201
|
+
# Serialize the HTTP response into data.
|
202
|
+
def self.load_from_response(request) # :nodoc:
|
203
|
+
transaction = new
|
204
|
+
response = Response.new(request, transaction)
|
205
|
+
response.serialize
|
206
|
+
|
207
|
+
transaction
|
208
|
+
end
|
209
|
+
|
210
|
+
# Send a get request to v3 API version, with the path given
|
211
|
+
def self.send_request(path, options = {})
|
212
|
+
Request.get(path, api_version, options)
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class Transaction
|
3
|
+
class Collection
|
4
|
+
extend Forwardable
|
5
|
+
|
6
|
+
def_delegators :@transactions, :each, :empty?, :any?
|
7
|
+
|
8
|
+
def transactions=(objects)
|
9
|
+
@transactions = objects
|
10
|
+
end
|
11
|
+
|
12
|
+
def errors
|
13
|
+
@errors ||= Errors.new
|
14
|
+
end
|
15
|
+
|
16
|
+
# PagSeguro::TransactionStatus instances.
|
17
|
+
attr_reader :transactions
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class Transaction
|
3
|
+
class Response
|
4
|
+
def initialize(response, object)
|
5
|
+
@response = response
|
6
|
+
@object = object
|
7
|
+
end
|
8
|
+
|
9
|
+
def serialize
|
10
|
+
if success?
|
11
|
+
object.update_attributes(Serializer.new(xml).serialize)
|
12
|
+
else
|
13
|
+
object.errors.add response
|
14
|
+
end
|
15
|
+
|
16
|
+
object
|
17
|
+
end
|
18
|
+
|
19
|
+
def serialize_statuses
|
20
|
+
if success?
|
21
|
+
object.statuses = Serializer.new(xml).serialize_status_history
|
22
|
+
else
|
23
|
+
object.errors.add(response)
|
24
|
+
end
|
25
|
+
|
26
|
+
object
|
27
|
+
end
|
28
|
+
|
29
|
+
def success?
|
30
|
+
response.success? && response.xml?
|
31
|
+
end
|
32
|
+
|
33
|
+
# The http response.
|
34
|
+
attr_reader :response
|
35
|
+
|
36
|
+
# Set the that will receive errors or updates
|
37
|
+
attr_reader :object
|
38
|
+
|
39
|
+
private
|
40
|
+
def xml
|
41
|
+
Nokogiri::XML(response.body)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class Search
|
3
|
+
# Set the report options.
|
4
|
+
#
|
5
|
+
# # +per_page+: the page size.
|
6
|
+
# # +starts_at+: the report's starting date. Can't be older than 6 months.
|
7
|
+
# # +ends_at+: the report's ending date. Can't be greater than 30 days from the starting date.
|
8
|
+
#
|
9
|
+
attr_reader :options
|
10
|
+
|
11
|
+
# Set the errors from the report request.
|
12
|
+
attr_reader :errors
|
13
|
+
|
14
|
+
# Return the current page.
|
15
|
+
attr_reader :page
|
16
|
+
|
17
|
+
def initialize(path, options, page = 0)
|
18
|
+
@path = path
|
19
|
+
@options = options
|
20
|
+
@page = page
|
21
|
+
end
|
22
|
+
|
23
|
+
# Return the list of transactions.
|
24
|
+
# Each item will be wrapped in a PagSeguro::Transaction instance.
|
25
|
+
# Notice that transactions instantiated by the report won't have all attributes.
|
26
|
+
# If you need additional attributes, do a PagSeguro::Transaction.find_by_notification_code
|
27
|
+
# call. Remember that this will perform an additional HTTP request.
|
28
|
+
def transactions
|
29
|
+
xml do |xml|
|
30
|
+
xml.css("transactionSearchResult > transactions > transaction").map do |node|
|
31
|
+
Transaction.load_from_xml(node)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# The report's creation date.
|
37
|
+
def created_at
|
38
|
+
xml do |xml|
|
39
|
+
@created_at ||= Time.parse xml.css("transactionSearchResult > date").text
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# How many results the report returned on the given page.
|
44
|
+
def results
|
45
|
+
xml do |xml|
|
46
|
+
@results ||= xml.css("transactionSearchResult > resultsInThisPage").text.to_i
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# How many pages the report returned.
|
51
|
+
def total_pages
|
52
|
+
xml do |xml|
|
53
|
+
@total_pages ||= xml.css("transactionSearchResult > totalPages").text.to_i
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# Detect if the report has a next page.
|
58
|
+
def next_page?
|
59
|
+
page.zero? || page < total_pages
|
60
|
+
end
|
61
|
+
|
62
|
+
# Detect if the report has a previous page.
|
63
|
+
def previous_page?
|
64
|
+
page > 1
|
65
|
+
end
|
66
|
+
|
67
|
+
# Move the page pointer to the next page.
|
68
|
+
def next_page!
|
69
|
+
return unless next_page?
|
70
|
+
@page += 1
|
71
|
+
clear!
|
72
|
+
end
|
73
|
+
|
74
|
+
# Move the page pointer to the previous page.
|
75
|
+
def previous_page!
|
76
|
+
return unless previous_page?
|
77
|
+
@page -= 1
|
78
|
+
clear!
|
79
|
+
end
|
80
|
+
|
81
|
+
# Detect if the report request returned errors.
|
82
|
+
def valid?
|
83
|
+
fetch { errors.empty? }
|
84
|
+
end
|
85
|
+
|
86
|
+
private
|
87
|
+
def perform_request_and_serialize
|
88
|
+
raise NotImplementedError.new("'.perform_request_and_serialize' must be implemented in specific search class")
|
89
|
+
end
|
90
|
+
|
91
|
+
# The default PagSeguro API version
|
92
|
+
def api_version
|
93
|
+
'v3'
|
94
|
+
end
|
95
|
+
|
96
|
+
def fetched?
|
97
|
+
@fetched
|
98
|
+
end
|
99
|
+
|
100
|
+
def fetched!
|
101
|
+
@fetched = true
|
102
|
+
end
|
103
|
+
|
104
|
+
def clear!
|
105
|
+
@fetched = false
|
106
|
+
end
|
107
|
+
|
108
|
+
def fetch(&block)
|
109
|
+
unless fetched?
|
110
|
+
perform_request_and_serialize
|
111
|
+
fetched!
|
112
|
+
end
|
113
|
+
|
114
|
+
instance_eval(&block)
|
115
|
+
end
|
116
|
+
|
117
|
+
def xml(&block)
|
118
|
+
valid? && block.call(@response.data)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module PagSeguro
|
2
|
+
class SearchAbandoned < PagSeguro::Search
|
3
|
+
private
|
4
|
+
def perform_request_and_serialize
|
5
|
+
@response = Request.get(@path, api_version,
|
6
|
+
{
|
7
|
+
initialDate: options[:starts_at].xmlschema,
|
8
|
+
finalDate: options[:ends_at].xmlschema,
|
9
|
+
page: page,
|
10
|
+
maxPageResults: options.fetch(:per_page, 50),
|
11
|
+
credentials: options[:credentials]
|
12
|
+
})
|
13
|
+
@errors = Errors.new(@response)
|
14
|
+
end
|
15
|
+
|
16
|
+
def api_version
|
17
|
+
'v2'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|