univapay-client-sdk 1.0.0
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/LICENSE +28 -0
- data/README.md +212 -0
- data/bin/console +15 -0
- data/lib/univapay_client_sdk/api_helper.rb +10 -0
- data/lib/univapay_client_sdk/apis/base_api.rb +67 -0
- data/lib/univapay_client_sdk/apis/cancels_api.rb +293 -0
- data/lib/univapay_client_sdk/apis/charges_api.rb +909 -0
- data/lib/univapay_client_sdk/apis/merchants_api.rb +57 -0
- data/lib/univapay_client_sdk/apis/refunds_api.rb +298 -0
- data/lib/univapay_client_sdk/apis/stores_api.rb +126 -0
- data/lib/univapay_client_sdk/apis/subscriptions_api.rb +1014 -0
- data/lib/univapay_client_sdk/apis/transaction_tokens_api.rb +455 -0
- data/lib/univapay_client_sdk/apis/webhooks_api.rb +463 -0
- data/lib/univapay_client_sdk/client.rb +128 -0
- data/lib/univapay_client_sdk/configuration.rb +179 -0
- data/lib/univapay_client_sdk/events/unknown_event.rb +32 -0
- data/lib/univapay_client_sdk/events/webhooks/bank_transfer_handler.rb +37 -0
- data/lib/univapay_client_sdk/events/webhooks/cancel_handler.rb +37 -0
- data/lib/univapay_client_sdk/events/webhooks/charge_handler.rb +37 -0
- data/lib/univapay_client_sdk/events/webhooks/customs_handler.rb +37 -0
- data/lib/univapay_client_sdk/events/webhooks/refund_handler.rb +37 -0
- data/lib/univapay_client_sdk/events/webhooks/subscription_handler.rb +37 -0
- data/lib/univapay_client_sdk/events/webhooks/token_handler.rb +37 -0
- data/lib/univapay_client_sdk/exceptions/api_error_exception.rb +199 -0
- data/lib/univapay_client_sdk/exceptions/api_exception.rb +21 -0
- data/lib/univapay_client_sdk/extensions.rb +127 -0
- data/lib/univapay_client_sdk/http/api_response.rb +19 -0
- data/lib/univapay_client_sdk/http/auth/oauth_2.rb +58 -0
- data/lib/univapay_client_sdk/http/http_call_back.rb +10 -0
- data/lib/univapay_client_sdk/http/http_method_enum.rb +10 -0
- data/lib/univapay_client_sdk/http/http_request.rb +10 -0
- data/lib/univapay_client_sdk/http/http_response.rb +10 -0
- data/lib/univapay_client_sdk/http/proxy_settings.rb +22 -0
- data/lib/univapay_client_sdk/logging/configuration/api_logging_configuration.rb +186 -0
- data/lib/univapay_client_sdk/logging/sdk_logger.rb +17 -0
- data/lib/univapay_client_sdk/models/api_error_detail.rb +87 -0
- data/lib/univapay_client_sdk/models/api_error_status.rb +26 -0
- data/lib/univapay_client_sdk/models/bank_transfer_event.rb +27 -0
- data/lib/univapay_client_sdk/models/bank_transfer_ledger.rb +199 -0
- data/lib/univapay_client_sdk/models/bank_transfer_ledger_bank_ledger_type.rb +36 -0
- data/lib/univapay_client_sdk/models/bank_transfer_ledger_list.rb +104 -0
- data/lib/univapay_client_sdk/models/bank_transfer_ledger_mode.rb +36 -0
- data/lib/univapay_client_sdk/models/bank_transfer_payment_status.rb +44 -0
- data/lib/univapay_client_sdk/models/bank_transfer_status_data.rb +229 -0
- data/lib/univapay_client_sdk/models/bank_transfer_status_webhook_callback.rb +134 -0
- data/lib/univapay_client_sdk/models/bank_transfer_status_webhook_callback_extension.rb +75 -0
- data/lib/univapay_client_sdk/models/base_bank_transfer_data.rb +100 -0
- data/lib/univapay_client_sdk/models/base_konbini_data.rb +99 -0
- data/lib/univapay_client_sdk/models/base_konbini_data_convenience_store.rb +60 -0
- data/lib/univapay_client_sdk/models/base_model.rb +110 -0
- data/lib/univapay_client_sdk/models/base_online_data.rb +123 -0
- data/lib/univapay_client_sdk/models/base_online_data_brand.rb +48 -0
- data/lib/univapay_client_sdk/models/base_online_data_call_method.rb +52 -0
- data/lib/univapay_client_sdk/models/base_online_data_os_type.rb +36 -0
- data/lib/univapay_client_sdk/models/base_online_data_user_identifier_source.rb +36 -0
- data/lib/univapay_client_sdk/models/cancel.rb +183 -0
- data/lib/univapay_client_sdk/models/cancel_create_request.rb +77 -0
- data/lib/univapay_client_sdk/models/cancel_event.rb +26 -0
- data/lib/univapay_client_sdk/models/cancel_list.rb +94 -0
- data/lib/univapay_client_sdk/models/cancel_status.rb +44 -0
- data/lib/univapay_client_sdk/models/cancel_update_request.rb +76 -0
- data/lib/univapay_client_sdk/models/cancel_webhook_callback.rb +132 -0
- data/lib/univapay_client_sdk/models/cancel_webhook_callback_extension.rb +74 -0
- data/lib/univapay_client_sdk/models/card_processor_installment_config.rb +89 -0
- data/lib/univapay_client_sdk/models/charge.rb +411 -0
- data/lib/univapay_client_sdk/models/charge_capture_request.rb +84 -0
- data/lib/univapay_client_sdk/models/charge_create_request.rb +179 -0
- data/lib/univapay_client_sdk/models/charge_create_request_client_metadata.rb +76 -0
- data/lib/univapay_client_sdk/models/charge_create_request_redirect.rb +75 -0
- data/lib/univapay_client_sdk/models/charge_create_request_three_ds.rb +88 -0
- data/lib/univapay_client_sdk/models/charge_create_request_three_ds_mode.rb +44 -0
- data/lib/univapay_client_sdk/models/charge_event.rb +36 -0
- data/lib/univapay_client_sdk/models/charge_list.rb +104 -0
- data/lib/univapay_client_sdk/models/charge_mode.rb +36 -0
- data/lib/univapay_client_sdk/models/charge_redirect.rb +96 -0
- data/lib/univapay_client_sdk/models/charge_status.rb +56 -0
- data/lib/univapay_client_sdk/models/charge_three_ds.rb +97 -0
- data/lib/univapay_client_sdk/models/charge_transaction_token_type.rb +40 -0
- data/lib/univapay_client_sdk/models/charge_update_request.rb +75 -0
- data/lib/univapay_client_sdk/models/charge_webhook_event.rb +138 -0
- data/lib/univapay_client_sdk/models/cursor_direction_query.rb +36 -0
- data/lib/univapay_client_sdk/models/customs_declaration_create_request.rb +106 -0
- data/lib/univapay_client_sdk/models/customs_declaration_event.rb +27 -0
- data/lib/univapay_client_sdk/models/customs_declaration_patch_request.rb +77 -0
- data/lib/univapay_client_sdk/models/customs_declaration_webhook_callback.rb +135 -0
- data/lib/univapay_client_sdk/models/customs_declaration_webhook_callback_extension.rb +76 -0
- data/lib/univapay_client_sdk/models/customs_declaration_webhook_data.rb +232 -0
- data/lib/univapay_client_sdk/models/customs_declaration_webhook_declaration.rb +121 -0
- data/lib/univapay_client_sdk/models/customs_declaration_webhook_error.rb +127 -0
- data/lib/univapay_client_sdk/models/customs_declaration_webhook_other_error.rb +120 -0
- data/lib/univapay_client_sdk/models/customs_declaration_webhook_result.rb +125 -0
- data/lib/univapay_client_sdk/models/customs_declaration_webhook_status.rb +44 -0
- data/lib/univapay_client_sdk/models/generic_metadata.rb +111 -0
- data/lib/univapay_client_sdk/models/installment_fixed_cycles.rb +70 -0
- data/lib/univapay_client_sdk/models/installment_plan_type.rb +36 -0
- data/lib/univapay_client_sdk/models/issuer_token.rb +177 -0
- data/lib/univapay_client_sdk/models/issuer_token_call_method.rb +51 -0
- data/lib/univapay_client_sdk/models/issuer_token_payload.rb +105 -0
- data/lib/univapay_client_sdk/models/issuer_token_payment_type.rb +36 -0
- data/lib/univapay_client_sdk/models/merchant.rb +179 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_bank_transfer_configuration.rb +342 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_card_brand_percent_fees.rb +167 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_card_configuration.rb +301 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_checkout_configuration.rb +87 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_checkout_toggle.rb +77 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_configuration.rb +505 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_convenience_configuration.rb +88 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_customer_management_configuration.rb +99 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_installment_plan_configuration.rb +139 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_limit_charge_by_card_configuration.rb +88 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_limit_refund_by_sales_configuration.rb +100 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_money_amount.rb +85 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_online_configuration.rb +77 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_paidy_configuration.rb +77 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_qr_merchant_configuration.rb +77 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_qr_scan_configuration.rb +93 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_recurring_cvv_confirmation_config.rb +97 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_recurring_token_configuration.rb +109 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_security_configuration.rb +234 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_subscription_configuration.rb +138 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_subscription_plan_configuration.rb +138 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_transfer_schedule_configuration.rb +159 -0
- data/lib/univapay_client_sdk/models/merchant_webhook_user_transactions_configuration.rb +349 -0
- data/lib/univapay_client_sdk/models/mode_query.rb +36 -0
- data/lib/univapay_client_sdk/models/payment_error.rb +178 -0
- data/lib/univapay_client_sdk/models/plan_settings_type.rb +36 -0
- data/lib/univapay_client_sdk/models/refund.rb +240 -0
- data/lib/univapay_client_sdk/models/refund_create_request.rb +118 -0
- data/lib/univapay_client_sdk/models/refund_event.rb +26 -0
- data/lib/univapay_client_sdk/models/refund_list.rb +104 -0
- data/lib/univapay_client_sdk/models/refund_reason_request.rb +42 -0
- data/lib/univapay_client_sdk/models/refund_reason_response.rb +62 -0
- data/lib/univapay_client_sdk/models/refund_status.rb +47 -0
- data/lib/univapay_client_sdk/models/refund_update_request.rb +99 -0
- data/lib/univapay_client_sdk/models/refund_webhook_callback.rb +132 -0
- data/lib/univapay_client_sdk/models/refund_webhook_callback_extension.rb +74 -0
- data/lib/univapay_client_sdk/models/restrict_ip_after_failed_charge_config.rb +99 -0
- data/lib/univapay_client_sdk/models/store.rb +119 -0
- data/lib/univapay_client_sdk/models/store_list.rb +104 -0
- data/lib/univapay_client_sdk/models/store_list_item.rb +114 -0
- data/lib/univapay_client_sdk/models/subscription.rb +310 -0
- data/lib/univapay_client_sdk/models/subscription_create_request.rb +216 -0
- data/lib/univapay_client_sdk/models/subscription_event.rb +54 -0
- data/lib/univapay_client_sdk/models/subscription_installment_plan.rb +86 -0
- data/lib/univapay_client_sdk/models/subscription_list.rb +104 -0
- data/lib/univapay_client_sdk/models/subscription_list_item.rb +352 -0
- data/lib/univapay_client_sdk/models/subscription_next_payment.rb +222 -0
- data/lib/univapay_client_sdk/models/subscription_patch_payment_request.rb +117 -0
- data/lib/univapay_client_sdk/models/subscription_patch_token_request.rb +79 -0
- data/lib/univapay_client_sdk/models/subscription_payment.rb +185 -0
- data/lib/univapay_client_sdk/models/subscription_payment_list.rb +94 -0
- data/lib/univapay_client_sdk/models/subscription_period.rb +56 -0
- data/lib/univapay_client_sdk/models/subscription_plan_settings.rb +98 -0
- data/lib/univapay_client_sdk/models/subscription_schedule_settings.rb +132 -0
- data/lib/univapay_client_sdk/models/subscription_status.rb +56 -0
- data/lib/univapay_client_sdk/models/subscription_suspend_request.rb +79 -0
- data/lib/univapay_client_sdk/models/subscription_terminate_with_status.rb +36 -0
- data/lib/univapay_client_sdk/models/subscription_termination_mode.rb +36 -0
- data/lib/univapay_client_sdk/models/subscription_update_next_payment.rb +104 -0
- data/lib/univapay_client_sdk/models/subscription_update_request.rb +134 -0
- data/lib/univapay_client_sdk/models/subscription_update_schedule_settings.rb +110 -0
- data/lib/univapay_client_sdk/models/subscription_update_status.rb +37 -0
- data/lib/univapay_client_sdk/models/subscription_user_data.rb +134 -0
- data/lib/univapay_client_sdk/models/subscription_webhook_event.rb +143 -0
- data/lib/univapay_client_sdk/models/suspend_schedule_settings.rb +78 -0
- data/lib/univapay_client_sdk/models/three_ds_issuer_token.rb +116 -0
- data/lib/univapay_client_sdk/models/three_ds_issuer_token_call_method.rb +26 -0
- data/lib/univapay_client_sdk/models/three_ds_issuer_token_payment_type.rb +26 -0
- data/lib/univapay_client_sdk/models/token_create_bank_transfer_data.rb +122 -0
- data/lib/univapay_client_sdk/models/token_create_card_data.rb +230 -0
- data/lib/univapay_client_sdk/models/token_create_card_data_cvv_authorize.rb +95 -0
- data/lib/univapay_client_sdk/models/token_create_card_data_three_ds.rb +97 -0
- data/lib/univapay_client_sdk/models/token_create_konbini_data.rb +146 -0
- data/lib/univapay_client_sdk/models/token_create_online_data.rb +142 -0
- data/lib/univapay_client_sdk/models/token_create_phone_number.rb +104 -0
- data/lib/univapay_client_sdk/models/token_event.rb +59 -0
- data/lib/univapay_client_sdk/models/token_response_bank_transfer_data.rb +181 -0
- data/lib/univapay_client_sdk/models/token_response_card_data.rb +129 -0
- data/lib/univapay_client_sdk/models/token_response_card_data_billing.rb +153 -0
- data/lib/univapay_client_sdk/models/token_response_card_data_card.rb +187 -0
- data/lib/univapay_client_sdk/models/token_response_card_data_cvv_authorize.rb +132 -0
- data/lib/univapay_client_sdk/models/token_response_card_data_cvv_authorize_check.rb +118 -0
- data/lib/univapay_client_sdk/models/token_response_card_data_three_ds.rb +142 -0
- data/lib/univapay_client_sdk/models/token_response_card_data_three_ds_status.rb +48 -0
- data/lib/univapay_client_sdk/models/token_response_konbini_data.rb +135 -0
- data/lib/univapay_client_sdk/models/token_response_online_data.rb +158 -0
- data/lib/univapay_client_sdk/models/token_response_phone_number.rb +96 -0
- data/lib/univapay_client_sdk/models/token_webhook_event.rb +144 -0
- data/lib/univapay_client_sdk/models/transaction_token.rb +250 -0
- data/lib/univapay_client_sdk/models/transaction_token_create_request.rb +161 -0
- data/lib/univapay_client_sdk/models/transaction_token_create_request_metadata.rb +124 -0
- data/lib/univapay_client_sdk/models/transaction_token_create_request_payment_type.rb +44 -0
- data/lib/univapay_client_sdk/models/transaction_token_create_request_type.rb +40 -0
- data/lib/univapay_client_sdk/models/transaction_token_list.rb +104 -0
- data/lib/univapay_client_sdk/models/transaction_token_list_item.rb +204 -0
- data/lib/univapay_client_sdk/models/transaction_token_list_item_user_data.rb +96 -0
- data/lib/univapay_client_sdk/models/transaction_token_mode.rb +36 -0
- data/lib/univapay_client_sdk/models/transaction_token_payment_type.rb +48 -0
- data/lib/univapay_client_sdk/models/transaction_token_type.rb +40 -0
- data/lib/univapay_client_sdk/models/transaction_token_update_request.rb +95 -0
- data/lib/univapay_client_sdk/models/transaction_token_update_request_data.rb +184 -0
- data/lib/univapay_client_sdk/models/transaction_token_update_request_data_phone_number.rb +86 -0
- data/lib/univapay_client_sdk/models/webhook.rb +191 -0
- data/lib/univapay_client_sdk/models/webhook_callback_envelope.rb +98 -0
- data/lib/univapay_client_sdk/models/webhook_create_request.rb +97 -0
- data/lib/univapay_client_sdk/models/webhook_event.rb +166 -0
- data/lib/univapay_client_sdk/models/webhook_event_list.rb +94 -0
- data/lib/univapay_client_sdk/models/webhook_list.rb +94 -0
- data/lib/univapay_client_sdk/models/webhook_trigger.rb +104 -0
- data/lib/univapay_client_sdk/models/webhook_update_request.rb +108 -0
- data/lib/univapay_client_sdk/utilities/date_time_helper.rb +11 -0
- data/lib/univapay_client_sdk/utilities/file_wrapper.rb +28 -0
- data/lib/univapay_client_sdk/utilities/union_type_lookup.rb +182 -0
- data/lib/univapay_client_sdk.rb +285 -0
- data/test/apis/api_test_base.rb +23 -0
- data/test/apis/test_cancels_api.rb +162 -0
- data/test/apis/test_charges_api.rb +565 -0
- data/test/apis/test_error_messages.rb +38 -0
- data/test/apis/test_merchants_api.rb +50 -0
- data/test/apis/test_refunds_api.rb +172 -0
- data/test/apis/test_stores_api.rb +86 -0
- data/test/apis/test_subscriptions_api.rb +579 -0
- data/test/apis/test_transaction_tokens_api.rb +305 -0
- data/test/apis/test_webhooks_api.rb +245 -0
- data/test/events/webhooks/test_bank_transfer_handler.rb +95 -0
- data/test/events/webhooks/test_cancel_handler.rb +90 -0
- data/test/events/webhooks/test_charge_handler.rb +138 -0
- data/test/events/webhooks/test_customs_handler.rb +100 -0
- data/test/events/webhooks/test_refund_handler.rb +95 -0
- data/test/events/webhooks/test_subscription_handler.rb +346 -0
- data/test/events/webhooks/test_token_handler.rb +332 -0
- data/test/framework_integrations/rails_app_test_helper.rb +14 -0
- data/test/framework_integrations/webhooks/apps/hanami_charge_app.rb +61 -0
- data/test/framework_integrations/webhooks/apps/rails_charge_app.rb +24 -0
- data/test/framework_integrations/webhooks/apps/sinatra_charge_app.rb +27 -0
- data/test/framework_integrations/webhooks/test/test_hanami_charge_app.rb +57 -0
- data/test/framework_integrations/webhooks/test/test_rails_charge_app.rb +57 -0
- data/test/framework_integrations/webhooks/test/test_sinatra_charge_app.rb +58 -0
- data/test/http_response_catcher.rb +32 -0
- metadata +366 -0
|
@@ -0,0 +1,579 @@
|
|
|
1
|
+
# univapay_client_sdk
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated for Univapay
|
|
4
|
+
# by APIMATIC v3.0 ( https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
require_relative 'api_test_base'
|
|
7
|
+
|
|
8
|
+
class SubscriptionsApiTest < ApiTestBase
|
|
9
|
+
# Called only once for the class before any test has executed
|
|
10
|
+
def setup
|
|
11
|
+
setup_class
|
|
12
|
+
@controller = @client.subscriptions
|
|
13
|
+
@response_catcher = @controller.http_call_back
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Creates a new subscription.
|
|
17
|
+
def test_create_subscription
|
|
18
|
+
# Parameters for the API call
|
|
19
|
+
idempotency_key = 'f64be872-353d-4c3c-84cb-3dc617fe89f7'
|
|
20
|
+
body = SubscriptionCreateRequest.from_hash(APIHelper.json_deserialize(
|
|
21
|
+
'{"transaction_token_id":"11ef32a7-3a71-8662-803f-1bc27702eeec","amount"'\
|
|
22
|
+
':1000,"currency":"JPY","period":"monthly"}', false))
|
|
23
|
+
|
|
24
|
+
# Perform the API call through the SDK function
|
|
25
|
+
result = @controller.create_subscription(idempotency_key: idempotency_key,
|
|
26
|
+
body: body)
|
|
27
|
+
|
|
28
|
+
# Test response code
|
|
29
|
+
assert_equal(201, @response_catcher.response.status_code)
|
|
30
|
+
# Test headers
|
|
31
|
+
expected_headers = {}
|
|
32
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
33
|
+
|
|
34
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
35
|
+
|
|
36
|
+
# Test whether the captured response is as we expected
|
|
37
|
+
refute_nil(result)
|
|
38
|
+
expected_body = JSON.parse(
|
|
39
|
+
'{"id":"11ef335e-9aa5-c54a-8313-7f9847da313a","store_id":"11edf541-c42d-'\
|
|
40
|
+
'653c-8c3d-dfe0a55f95c0","transaction_token_id":"11ef32a7-3a71-8662-803f'\
|
|
41
|
+
'-1bc27702eeec","amount":1250,"currency":"USD","amount_formatted":12.5,"'\
|
|
42
|
+
'initial_amount":1000,"initial_amount_formatted":10.0,"subsequent_cycles'\
|
|
43
|
+
'_start":null,"only_direct_currency":false,"first_charge_authorization_o'\
|
|
44
|
+
'nly":false,"status":"current","metadata":{"order_id":"ORD-987"},"mode":'\
|
|
45
|
+
'"live","created_on":"2024-06-26T01:51:28.627023Z","period":"monthly","n'\
|
|
46
|
+
'ext_payment":{"id":"11ef3360-1f9a-c54a-8313-7f9847da313b","due_date":"2'\
|
|
47
|
+
'024-07-26","zone_id":"Asia/Tokyo","amount":1250,"currency":"USD","amoun'\
|
|
48
|
+
't_formatted":12.5,"is_paid":false}}'
|
|
49
|
+
)
|
|
50
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
51
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Lists all subscriptions across all stores.
|
|
55
|
+
def test_list_all_subscriptions
|
|
56
|
+
# Parameters for the API call
|
|
57
|
+
limit = 10
|
|
58
|
+
cursor = '3541d4fa-596d-428e-8a36-f274e1b3d505'
|
|
59
|
+
cursor_direction = 'desc'
|
|
60
|
+
|
|
61
|
+
# Perform the API call through the SDK function
|
|
62
|
+
result = @controller.list_all_subscriptions(
|
|
63
|
+
limit: limit, cursor: cursor, cursor_direction: cursor_direction
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# Test response code
|
|
67
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
68
|
+
# Test headers
|
|
69
|
+
expected_headers = {}
|
|
70
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
71
|
+
|
|
72
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
73
|
+
|
|
74
|
+
# Test whether the captured response is as we expected
|
|
75
|
+
refute_nil(result)
|
|
76
|
+
expected_body = JSON.parse(
|
|
77
|
+
'{"items":[{"id":"11ef3410-aaaa-4bcd-8e1f-1a2b3c4d5e60","store_id":"11ed'\
|
|
78
|
+
'f541-c42d-653c-8c3d-dfe0a55f95c0","transaction_token_id":"11ef3413-dddd'\
|
|
79
|
+
'-4ef0-b142-4d5e6f809193","amount":1250,"currency":"USD","amount_formatt'\
|
|
80
|
+
'ed":12.5,"status":"current","merchant_name":"管理画面ガイド","store_name":"管理画'\
|
|
81
|
+
'面ガイド_TEST店舗","payment_type":"card","next_payment_date":"2024-07-26","us'\
|
|
82
|
+
'er_data":{"type":"charge","cardholder_name":"taro yamada","email":"taro'\
|
|
83
|
+
'@test.com","brand":"visa"}},{"id":"11ef3411-bbbb-4cde-9f20-2b3c4d5e6f71'\
|
|
84
|
+
'","store_id":"22af6520-d53e-764d-9d4e-ef01b66fa6d1","transaction_token_'\
|
|
85
|
+
'id":"11ef3414-eeee-4f01-c253-5e6f80919204","amount":3000,"currency":"JP'\
|
|
86
|
+
'Y","amount_formatted":3000,"status":"current","merchant_name":"管理画面ガイド"'\
|
|
87
|
+
',"store_name":"管理画面ガイド_Online店舗","payment_type":"card","next_payment_da'\
|
|
88
|
+
'te":"2024-08-10","user_data":{"type":"charge","cardholder_name":"hanako'\
|
|
89
|
+
' suzuki","email":"hanako@test.com","brand":"mastercard"}},{"id":"11ef34'\
|
|
90
|
+
'12-cccc-4def-a031-3c4d5e6f8082","store_id":"33af7631-e64f-875e-ae5f-f01'\
|
|
91
|
+
'2c77fb7e2","transaction_token_id":"11ef3415-ffff-4012-d364-6f8091920315'\
|
|
92
|
+
'","amount":9800,"currency":"JPY","amount_formatted":9800,"status":"susp'\
|
|
93
|
+
'ended","merchant_name":"管理画面ガイド","store_name":"管理画面ガイド_Osaka店舗","paymen'\
|
|
94
|
+
't_type":"card","next_payment_date":"2024-09-15","user_data":{"type":"ch'\
|
|
95
|
+
'arge","cardholder_name":"jiro tanaka","email":"jiro@test.com","brand":"'\
|
|
96
|
+
'jcb"}}],"has_more":false,"total_hits":3}'
|
|
97
|
+
)
|
|
98
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
99
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Lists all subscriptions for a specific store.
|
|
103
|
+
def test_list_store_subscriptions
|
|
104
|
+
# Parameters for the API call
|
|
105
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
106
|
+
search = 'order_id:12345'
|
|
107
|
+
status = 'current'
|
|
108
|
+
mode = 'live'
|
|
109
|
+
limit = 10
|
|
110
|
+
cursor = '3541d4fa-596d-428e-8a36-f274e1b3d505'
|
|
111
|
+
cursor_direction = 'desc'
|
|
112
|
+
|
|
113
|
+
# Perform the API call through the SDK function
|
|
114
|
+
result = @controller.list_store_subscriptions(
|
|
115
|
+
store_id, search: search, status: status, mode: mode, limit: limit,
|
|
116
|
+
cursor: cursor, cursor_direction: cursor_direction
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
# Test response code
|
|
120
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
121
|
+
# Test headers
|
|
122
|
+
expected_headers = {}
|
|
123
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
124
|
+
|
|
125
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
126
|
+
|
|
127
|
+
# Test whether the captured response is as we expected
|
|
128
|
+
refute_nil(result)
|
|
129
|
+
expected_body = JSON.parse(
|
|
130
|
+
'{"items":[{"id":"11ef335e-9aa5-c54a-8313-7f9847da313a","store_id":"11ed'\
|
|
131
|
+
'f541-c42d-653c-8c3d-dfe0a55f95c0","transaction_token_id":"11ef32a7-3a71'\
|
|
132
|
+
'-8662-803f-1bc27702eeec","amount":1250,"currency":"USD","amount_formatt'\
|
|
133
|
+
'ed":12.5,"status":"current","merchant_name":"管理画面ガイド","store_name":"管理画'\
|
|
134
|
+
'面ガイド_TEST店舗","payment_type":"card","next_payment_date":"2024-07-26","us'\
|
|
135
|
+
'er_data":{"type":"charge","cardholder_name":"taro yamada","email":"test'\
|
|
136
|
+
'@test.com","brand":"visa"}},{"id":"11ef3401-1a2b-4c3d-8e4f-5a6b7c8d9e0f'\
|
|
137
|
+
'","store_id":"11edf541-c42d-653c-8c3d-dfe0a55f95c0","transaction_token_'\
|
|
138
|
+
'id":"11ef3402-2b3c-4d5e-9f60-6b7c8d9e0f11","amount":5000,"currency":"JP'\
|
|
139
|
+
'Y","amount_formatted":5000,"status":"current","merchant_name":"管理画面ガイド"'\
|
|
140
|
+
',"store_name":"管理画面ガイド_TEST店舗","payment_type":"card","next_payment_date'\
|
|
141
|
+
'":"2024-08-01","user_data":{"type":"charge","cardholder_name":"hanako s'\
|
|
142
|
+
'uzuki","email":"hanako@test.com","brand":"mastercard"}},{"id":"11ef3403'\
|
|
143
|
+
'-3c4d-5e6f-a071-7c8d9e0f1122","store_id":"11edf541-c42d-653c-8c3d-dfe0a'\
|
|
144
|
+
'55f95c0","transaction_token_id":"11ef3404-4d5e-6f70-b182-8d9e0f112233",'\
|
|
145
|
+
'"amount":9800,"currency":"JPY","amount_formatted":9800,"status":"suspen'\
|
|
146
|
+
'ded","merchant_name":"管理画面ガイド","store_name":"管理画面ガイド_TEST店舗","payment_t'\
|
|
147
|
+
'ype":"card","next_payment_date":"2024-09-15","user_data":{"type":"charg'\
|
|
148
|
+
'e","cardholder_name":"jiro tanaka","email":"jiro@test.com","brand":"jcb'\
|
|
149
|
+
'"}}],"has_more":false,"total_hits":3}'
|
|
150
|
+
)
|
|
151
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
152
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# Retrieves the details of an existing subscription. Supports internal polling to wait for status changes.
|
|
156
|
+
def test_get_subscription
|
|
157
|
+
# Parameters for the API call
|
|
158
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
159
|
+
id = '11ef335e-9aa5-c54a-8313-7f9847da313a'
|
|
160
|
+
polling = true
|
|
161
|
+
|
|
162
|
+
# Perform the API call through the SDK function
|
|
163
|
+
result = @controller.get_subscription(store_id, id, polling: polling)
|
|
164
|
+
|
|
165
|
+
# Test response code
|
|
166
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
167
|
+
# Test headers
|
|
168
|
+
expected_headers = {}
|
|
169
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
170
|
+
|
|
171
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
172
|
+
|
|
173
|
+
# Test whether the captured response is as we expected
|
|
174
|
+
refute_nil(result)
|
|
175
|
+
expected_body = JSON.parse(
|
|
176
|
+
'{"id":"11ef335e-9aa5-c54a-8313-7f9847da313a","store_id":"11edf541-c42d-'\
|
|
177
|
+
'653c-8c3d-dfe0a55f95c0","transaction_token_id":"11ef32a7-3a71-8662-803f'\
|
|
178
|
+
'-1bc27702eeec","amount":1250,"currency":"USD","amount_formatted":12.5,"'\
|
|
179
|
+
'initial_amount":null,"initial_amount_formatted":null,"subsequent_cycles'\
|
|
180
|
+
'_start":null,"schedule_settings":{"start_on":"2024-07-01","zone_id":"As'\
|
|
181
|
+
'ia/Tokyo","preserve_end_of_month":false,"retry_interval":"P7D","termina'\
|
|
182
|
+
'tion_mode":"immediate"},"only_direct_currency":false,"first_charge_capt'\
|
|
183
|
+
'ure_after":null,"first_charge_authorization_only":false,"status":"curre'\
|
|
184
|
+
'nt","metadata":{"order_id":"12345"},"mode":"test","created_on":"2024-06'\
|
|
185
|
+
'-26T01:51:28.627023Z","period":"monthly","next_payment":{"id":"11ef335e'\
|
|
186
|
+
'-9ae2-8322-8e79-e7ba4b56234e","due_date":"2024-07-26","zone_id":"Asia/T'\
|
|
187
|
+
'okyo","amount":1250,"currency":"USD","amount_formatted":12.5,"is_paid":'\
|
|
188
|
+
'false,"is_last_payment":false,"created_on":"2024-06-26T01:51:29.025129Z'\
|
|
189
|
+
'","updated_on":"2024-06-26T01:51:29.025129Z","retry_date":null}}'
|
|
190
|
+
)
|
|
191
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
192
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# Updates the configuration, payment method, or schedule of a specific subscription.
|
|
196
|
+
def test_update_subscription
|
|
197
|
+
# Parameters for the API call
|
|
198
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
199
|
+
id = 'c4e87129-cad4-47fb-8ded-b4c0a4ae0dd4'
|
|
200
|
+
idempotency_key = 'f64be872-353d-4c3c-84cb-3dc617fe89f7'
|
|
201
|
+
body = SubscriptionUpdateRequest.from_hash(APIHelper.json_deserialize(
|
|
202
|
+
'{"metadata":{"order_id":"12345"},"schedule_settings":{"termination_mode'\
|
|
203
|
+
'":"on_next_payment"}}', false))
|
|
204
|
+
|
|
205
|
+
# Perform the API call through the SDK function
|
|
206
|
+
result = @controller.update_subscription(store_id, id,
|
|
207
|
+
idempotency_key: idempotency_key,
|
|
208
|
+
body: body)
|
|
209
|
+
|
|
210
|
+
# Test response code
|
|
211
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
212
|
+
# Test headers
|
|
213
|
+
expected_headers = {}
|
|
214
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
215
|
+
|
|
216
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
217
|
+
|
|
218
|
+
# Test whether the captured response is as we expected
|
|
219
|
+
refute_nil(result)
|
|
220
|
+
expected_body = JSON.parse(
|
|
221
|
+
'{"id":"11ef335e-9aa5-c54a-8313-7f9847da313a","store_id":"11edf541-c42d-'\
|
|
222
|
+
'653c-8c3d-dfe0a55f95c0","transaction_token_id":"11ef3362-3700-c54a-9baa'\
|
|
223
|
+
'-6f7e6527c9d9","amount":1250,"currency":"USD","amount_formatted":12.5,"'\
|
|
224
|
+
'initial_amount":null,"initial_amount_formatted":null,"subsequent_cycles'\
|
|
225
|
+
'_start":null,"schedule_settings":{"start_on":"2024-07-01","zone_id":"As'\
|
|
226
|
+
'ia/Tokyo","preserve_end_of_month":false,"retry_interval":"P7D","termina'\
|
|
227
|
+
'tion_mode":"on_next_payment"},"only_direct_currency":false,"first_charg'\
|
|
228
|
+
'e_capture_after":null,"first_charge_authorization_only":false,"status":'\
|
|
229
|
+
'"current","metadata":{"order_id":"12345"},"mode":"test","created_on":"2'\
|
|
230
|
+
'024-06-26T01:51:28.627023Z","period":"monthly","next_payment":{"id":"11'\
|
|
231
|
+
'ef335e-9ae2-8322-8e79-e7ba4b56234e","due_date":"2030-01-01","zone_id":"'\
|
|
232
|
+
'Asia/Tokyo","amount":1250,"currency":"USD","amount_formatted":12.5,"is_'\
|
|
233
|
+
'paid":false,"is_last_payment":false,"created_on":"2024-06-26T01:51:29.0'\
|
|
234
|
+
'25129Z","updated_on":"2024-06-26T01:51:29.025129Z","retry_date":null}}'
|
|
235
|
+
)
|
|
236
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
237
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
# Cancels an existing subscription. The subscription status will be permanently changed to `canceled` and it cannot be resumed. Please proceed with caution.
|
|
241
|
+
def test_cancel_subscription
|
|
242
|
+
# Parameters for the API call
|
|
243
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
244
|
+
id = 'c4e87129-cad4-47fb-8ded-b4c0a4ae0dd4'
|
|
245
|
+
|
|
246
|
+
# Perform the API call through the SDK function
|
|
247
|
+
@controller.cancel_subscription(store_id, id)
|
|
248
|
+
|
|
249
|
+
# Test response code
|
|
250
|
+
assert_equal(204, @response_catcher.response.status_code)
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
# Retrieves a list of all historical and scheduled payments for a specific subscription.
|
|
254
|
+
def test_list_subscription_payments
|
|
255
|
+
# Parameters for the API call
|
|
256
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
257
|
+
subscription_id = '25d0fb2c-18ef-11e7-9dd3-db8fb7b820e7'
|
|
258
|
+
limit = 10
|
|
259
|
+
cursor = '3541d4fa-596d-428e-8a36-f274e1b3d505'
|
|
260
|
+
cursor_direction = 'desc'
|
|
261
|
+
|
|
262
|
+
# Perform the API call through the SDK function
|
|
263
|
+
result = @controller.list_subscription_payments(
|
|
264
|
+
store_id, subscription_id, limit: limit, cursor: cursor,
|
|
265
|
+
cursor_direction: cursor_direction
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
# Test response code
|
|
269
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
270
|
+
# Test headers
|
|
271
|
+
expected_headers = {}
|
|
272
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
273
|
+
|
|
274
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
275
|
+
|
|
276
|
+
# Test whether the captured response is as we expected
|
|
277
|
+
refute_nil(result)
|
|
278
|
+
expected_body = JSON.parse(
|
|
279
|
+
'{"items":[{"id":"11e89a0a-8cee-d660-b984-3fcaaed46e7c","due_date":"2018'\
|
|
280
|
+
'-08-21","zone_id":"Asia/Tokyo","amount":10000,"currency":"JPY","amount_'\
|
|
281
|
+
'formatted":10000,"is_paid":false,"is_last_payment":false,"created_on":"'\
|
|
282
|
+
'2018-08-07T06:24:33.961256Z","updated_on":"2018-08-07T06:24:33.961256Z"'\
|
|
283
|
+
'},{"id":"11e89a0a-8cc5-2662-9460-2b14b1a601ba","due_date":"2018-08-07",'\
|
|
284
|
+
'"zone_id":"Asia/Tokyo","amount":1000,"currency":"JPY","amount_formatted'\
|
|
285
|
+
'":1000,"is_paid":true,"is_last_payment":false,"created_on":"2018-08-07T'\
|
|
286
|
+
'06:24:33.646223Z","updated_on":"2018-08-07T06:24:33.887760Z"}],"has_mor'\
|
|
287
|
+
'e":false}'
|
|
288
|
+
)
|
|
289
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
290
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
# Retrieves the details of an individual payment associated with a specific subscription.
|
|
294
|
+
def test_get_subscription_payment
|
|
295
|
+
# Parameters for the API call
|
|
296
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
297
|
+
subscription_id = '25d0fb2c-18ef-11e7-9dd3-db8fb7b820e7'
|
|
298
|
+
payment_id = '11e89a0a-8cee-d660-b984-3fcaaed46e7c'
|
|
299
|
+
|
|
300
|
+
# Perform the API call through the SDK function
|
|
301
|
+
result = @controller.get_subscription_payment(store_id, subscription_id,
|
|
302
|
+
payment_id)
|
|
303
|
+
|
|
304
|
+
# Test response code
|
|
305
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
306
|
+
# Test headers
|
|
307
|
+
expected_headers = {}
|
|
308
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
309
|
+
|
|
310
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
311
|
+
|
|
312
|
+
# Test whether the captured response is as we expected
|
|
313
|
+
refute_nil(result)
|
|
314
|
+
expected_body = JSON.parse(
|
|
315
|
+
'{"id":"11e89a0a-8cee-d660-b984-3fcaaed46e7c","due_date":"2018-08-21","z'\
|
|
316
|
+
'one_id":"Asia/Tokyo","amount":10000,"currency":"JPY","amount_formatted"'\
|
|
317
|
+
':10000,"is_paid":false,"is_last_payment":false,"created_on":"2018-08-07'\
|
|
318
|
+
'T06:24:33.961256Z"}'
|
|
319
|
+
)
|
|
320
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
321
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
# Updates properties of a specific scheduled payment for a subscription. Can be used to change the due date when permitted, mark the payment as paid, schedule a termination status, or set a retry interval.
|
|
325
|
+
def test_update_subscription_payment
|
|
326
|
+
# Parameters for the API call
|
|
327
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
328
|
+
subscription_id = '25d0fb2c-18ef-11e7-9dd3-db8fb7b820e7'
|
|
329
|
+
payment_id = '11e89a0a-8cee-d660-b984-3fcaaed46e7c'
|
|
330
|
+
body = SubscriptionPatchPaymentRequest.from_hash(APIHelper.json_deserialize(
|
|
331
|
+
'{"due_date":"2026-09-01","is_paid":false}', false))
|
|
332
|
+
idempotency_key = 'f64be872-353d-4c3c-84cb-3dc617fe89f7'
|
|
333
|
+
|
|
334
|
+
# Perform the API call through the SDK function
|
|
335
|
+
result = @controller.update_subscription_payment(
|
|
336
|
+
store_id, subscription_id, payment_id, body,
|
|
337
|
+
idempotency_key: idempotency_key
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
# Test response code
|
|
341
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
342
|
+
# Test headers
|
|
343
|
+
expected_headers = {}
|
|
344
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
345
|
+
|
|
346
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
347
|
+
|
|
348
|
+
# Test whether the captured response is as we expected
|
|
349
|
+
refute_nil(result)
|
|
350
|
+
expected_body = JSON.parse(
|
|
351
|
+
'{"id":"11e89a0a-8cee-d660-b984-3fcaaed46e7c","due_date":"2026-09-01","z'\
|
|
352
|
+
'one_id":"Asia/Tokyo","amount":10000,"currency":"JPY","amount_formatted"'\
|
|
353
|
+
':10000,"is_paid":false,"is_last_payment":false,"created_on":"2018-08-07'\
|
|
354
|
+
'T06:24:33.961256Z","updated_on":"2026-04-22T06:00:00.000000Z"}'
|
|
355
|
+
)
|
|
356
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
357
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
# Retrieves the most recent charge created for a specific subscription. Returns 404 if no charges have been attempted yet.
|
|
361
|
+
def test_get_subscription_latest_charge
|
|
362
|
+
# Parameters for the API call
|
|
363
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
364
|
+
subscription_id = '25d0fb2c-18ef-11e7-9dd3-db8fb7b820e7'
|
|
365
|
+
|
|
366
|
+
# Perform the API call through the SDK function
|
|
367
|
+
result = @controller.get_subscription_latest_charge(store_id,
|
|
368
|
+
subscription_id)
|
|
369
|
+
|
|
370
|
+
# Test response code
|
|
371
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
372
|
+
# Test headers
|
|
373
|
+
expected_headers = {}
|
|
374
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
375
|
+
|
|
376
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
377
|
+
|
|
378
|
+
# Test whether the captured response is as we expected
|
|
379
|
+
refute_nil(result)
|
|
380
|
+
expected_body = JSON.parse(
|
|
381
|
+
'{"id":"6efb4e5c-690a-40f3-a4f1-0e19c5f84e98","store_id":"11edf541-c42d-'\
|
|
382
|
+
'653c-8c3d-dfe0a55f95c0","transaction_token_id":"11ef32a7-3a71-8662-803f'\
|
|
383
|
+
'-1bc27702eeec","transaction_token_type":"recurring","subscription_id":"'\
|
|
384
|
+
'11ef335e-9aa5-c54a-8313-7f9847da313a","requested_amount":1250,"requeste'\
|
|
385
|
+
'd_currency":"USD","requested_amount_formatted":12.5,"charged_amount":12'\
|
|
386
|
+
'50,"charged_currency":"USD","charged_amount_formatted":12.5,"only_direc'\
|
|
387
|
+
't_currency":false,"status":"successful","error":null,"mode":"test","cre'\
|
|
388
|
+
'ated_on":"2024-06-26T01:51:30.000000Z"}'
|
|
389
|
+
)
|
|
390
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
391
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
392
|
+
end
|
|
393
|
+
|
|
394
|
+
# Retrieves a paginated list of charges linked to a subscription. Backend search uses the same charge search surface as normal charge listing and adds a subscription filter for the requested subscription.
|
|
395
|
+
def test_list_subscription_charges
|
|
396
|
+
# Parameters for the API call
|
|
397
|
+
merchant_id = '01234567-89ab-cdef-0123-456789abcdef'
|
|
398
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
399
|
+
subscription_id = '25d0fb2c-18ef-11e7-9dd3-db8fb7b820e7'
|
|
400
|
+
limit = 10
|
|
401
|
+
cursor = '3541d4fa-596d-428e-8a36-f274e1b3d505'
|
|
402
|
+
cursor_direction = 'desc'
|
|
403
|
+
|
|
404
|
+
# Perform the API call through the SDK function
|
|
405
|
+
result = @controller.list_subscription_charges(
|
|
406
|
+
merchant_id, store_id, subscription_id, limit: limit, cursor: cursor,
|
|
407
|
+
cursor_direction: cursor_direction
|
|
408
|
+
)
|
|
409
|
+
|
|
410
|
+
# Test response code
|
|
411
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
412
|
+
# Test headers
|
|
413
|
+
expected_headers = {}
|
|
414
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
415
|
+
|
|
416
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
417
|
+
|
|
418
|
+
# Test whether the captured response is as we expected
|
|
419
|
+
refute_nil(result)
|
|
420
|
+
expected_body = JSON.parse(
|
|
421
|
+
'{"items":[{"id":"6efb4e5c-690a-40f3-a4f1-0e19c5f84e98","store_id":"11ed'\
|
|
422
|
+
'f541-c42d-653c-8c3d-dfe0a55f95c0","transaction_token_id":"11ef32a7-3a71'\
|
|
423
|
+
'-8662-803f-1bc27702eeec","transaction_token_type":"recurring","subscrip'\
|
|
424
|
+
'tion_id":"11ef335e-9aa5-c54a-8313-7f9847da313a","requested_amount":1250'\
|
|
425
|
+
',"requested_currency":"USD","requested_amount_formatted":12.5,"charged_'\
|
|
426
|
+
'amount":1250,"charged_currency":"USD","charged_amount_formatted":12.5,"'\
|
|
427
|
+
'only_direct_currency":false,"status":"successful","error":{},"mode":"te'\
|
|
428
|
+
'st","created_on":"2024-06-26T01:51:30.000000Z"}],"has_more":false,"tota'\
|
|
429
|
+
'l_hits":1}'
|
|
430
|
+
)
|
|
431
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
432
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
433
|
+
end
|
|
434
|
+
|
|
435
|
+
# Retrieves a paginated list of all charge attempts made for a specific scheduled payment of a subscription. Useful for inspecting retry history.
|
|
436
|
+
def test_list_charges_for_subscription_payment
|
|
437
|
+
# Parameters for the API call
|
|
438
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
439
|
+
subscription_id = '25d0fb2c-18ef-11e7-9dd3-db8fb7b820e7'
|
|
440
|
+
payment_id = '11e89a0a-8cee-d660-b984-3fcaaed46e7c'
|
|
441
|
+
limit = 10
|
|
442
|
+
cursor = '3541d4fa-596d-428e-8a36-f274e1b3d505'
|
|
443
|
+
cursor_direction = 'desc'
|
|
444
|
+
|
|
445
|
+
# Perform the API call through the SDK function
|
|
446
|
+
result = @controller.list_charges_for_subscription_payment(
|
|
447
|
+
store_id, subscription_id, payment_id, limit: limit, cursor: cursor,
|
|
448
|
+
cursor_direction: cursor_direction
|
|
449
|
+
)
|
|
450
|
+
|
|
451
|
+
# Test response code
|
|
452
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
453
|
+
# Test headers
|
|
454
|
+
expected_headers = {}
|
|
455
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
456
|
+
|
|
457
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
458
|
+
|
|
459
|
+
# Test whether the captured response is as we expected
|
|
460
|
+
refute_nil(result)
|
|
461
|
+
expected_body = JSON.parse(
|
|
462
|
+
'{"items":[{"id":"6efb4e5c-690a-40f3-a4f1-0e19c5f84e98","store_id":"11ed'\
|
|
463
|
+
'f541-c42d-653c-8c3d-dfe0a55f95c0","transaction_token_id":"11ef32a7-3a71'\
|
|
464
|
+
'-8662-803f-1bc27702eeec","transaction_token_type":"recurring","subscrip'\
|
|
465
|
+
'tion_id":"11ef335e-9aa5-c54a-8313-7f9847da313a","requested_amount":1250'\
|
|
466
|
+
',"requested_currency":"USD","requested_amount_formatted":12.5,"charged_'\
|
|
467
|
+
'amount":1250,"charged_currency":"USD","charged_amount_formatted":12.5,"'\
|
|
468
|
+
'only_direct_currency":false,"status":"successful","error":{},"mode":"te'\
|
|
469
|
+
'st","created_on":"2024-06-26T01:51:30.000000Z"}],"has_more":false,"tota'\
|
|
470
|
+
'l_hits":1}'
|
|
471
|
+
)
|
|
472
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
473
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
474
|
+
end
|
|
475
|
+
|
|
476
|
+
# Suspends a subscription that is currently `current` or `unpaid`. The `termination_mode` controls when the suspension takes effect: `immediate` (default) suspends right away, `on_next_payment` waits until the next scheduled payment date before suspending.
|
|
477
|
+
def test_suspend_subscription
|
|
478
|
+
# Parameters for the API call
|
|
479
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
480
|
+
subscription_id = '11ef335e-9aa5-c54a-8313-7f9847da313a'
|
|
481
|
+
idempotency_key = 'f64be872-353d-4c3c-84cb-3dc617fe89f7'
|
|
482
|
+
body = SubscriptionSuspendRequest.from_hash(APIHelper.json_deserialize(
|
|
483
|
+
'{"schedule_settings":{"termination_mode":"on_next_payment"}}', false))
|
|
484
|
+
|
|
485
|
+
# Perform the API call through the SDK function
|
|
486
|
+
result = @controller.suspend_subscription(store_id, subscription_id,
|
|
487
|
+
idempotency_key: idempotency_key,
|
|
488
|
+
body: body)
|
|
489
|
+
|
|
490
|
+
# Test response code
|
|
491
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
492
|
+
# Test headers
|
|
493
|
+
expected_headers = {}
|
|
494
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
495
|
+
|
|
496
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
497
|
+
|
|
498
|
+
# Test whether the captured response is as we expected
|
|
499
|
+
refute_nil(result)
|
|
500
|
+
expected_body = JSON.parse(
|
|
501
|
+
'{"id":"11ef335e-9aa5-c54a-8313-7f9847da313a","store_id":"11edf541-c42d-'\
|
|
502
|
+
'653c-8c3d-dfe0a55f95c0","transaction_token_id":"11ef32a7-3a71-8662-803f'\
|
|
503
|
+
'-1bc27702eeec","amount":1250,"currency":"USD","amount_formatted":12.5,"'\
|
|
504
|
+
'status":"suspended","mode":"test","created_on":"2024-06-26T01:51:28.627'\
|
|
505
|
+
'023Z","period":"monthly"}'
|
|
506
|
+
)
|
|
507
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
508
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
509
|
+
end
|
|
510
|
+
|
|
511
|
+
# Resumes a subscription that is currently `suspended`, setting its status back to `unpaid` and rescheduling the next payment. No request body is required.
|
|
512
|
+
def test_unsuspend_subscription
|
|
513
|
+
# Parameters for the API call
|
|
514
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
515
|
+
subscription_id = '11ef335e-9aa5-c54a-8313-7f9847da313a'
|
|
516
|
+
idempotency_key = 'f64be872-353d-4c3c-84cb-3dc617fe89f7'
|
|
517
|
+
|
|
518
|
+
# Perform the API call through the SDK function
|
|
519
|
+
result = @controller.unsuspend_subscription(
|
|
520
|
+
store_id, subscription_id, idempotency_key: idempotency_key
|
|
521
|
+
)
|
|
522
|
+
|
|
523
|
+
# Test response code
|
|
524
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
525
|
+
# Test headers
|
|
526
|
+
expected_headers = {}
|
|
527
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
528
|
+
|
|
529
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
530
|
+
|
|
531
|
+
# Test whether the captured response is as we expected
|
|
532
|
+
refute_nil(result)
|
|
533
|
+
expected_body = JSON.parse(
|
|
534
|
+
'{"id":"11ef335e-9aa5-c54a-8313-7f9847da313a","store_id":"11edf541-c42d-'\
|
|
535
|
+
'653c-8c3d-dfe0a55f95c0","transaction_token_id":"11ef32a7-3a71-8662-803f'\
|
|
536
|
+
'-1bc27702eeec","amount":1250,"currency":"USD","amount_formatted":12.5,"'\
|
|
537
|
+
'status":"unpaid","mode":"test","created_on":"2024-06-26T01:51:28.627023'\
|
|
538
|
+
'Z","period":"monthly"}'
|
|
539
|
+
)
|
|
540
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
541
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
542
|
+
end
|
|
543
|
+
|
|
544
|
+
# Replaces the payment method (transaction token) used for a subscription. Useful when a card expires or a customer wants to switch payment methods. The new token must belong to the same store, be active, and match the subscription's processing mode (live/test). One-time tokens are not accepted; use a recurring or subscription token.
|
|
545
|
+
def test_update_subscription_token
|
|
546
|
+
# Parameters for the API call
|
|
547
|
+
store_id = '0cab399b-5621-425b-993b-f8507eba1e78'
|
|
548
|
+
subscription_id = '11ef335e-9aa5-c54a-8313-7f9847da313a'
|
|
549
|
+
body = SubscriptionPatchTokenRequest.from_hash(APIHelper.json_deserialize(
|
|
550
|
+
'{"transaction_token_id":"11ef3362-3700-c54a-9baa-6f7e6527c9d9"}', false))
|
|
551
|
+
idempotency_key = 'f64be872-353d-4c3c-84cb-3dc617fe89f7'
|
|
552
|
+
|
|
553
|
+
# Perform the API call through the SDK function
|
|
554
|
+
result = @controller.update_subscription_token(
|
|
555
|
+
store_id, subscription_id, body, idempotency_key: idempotency_key
|
|
556
|
+
)
|
|
557
|
+
|
|
558
|
+
# Test response code
|
|
559
|
+
assert_equal(200, @response_catcher.response.status_code)
|
|
560
|
+
# Test headers
|
|
561
|
+
expected_headers = {}
|
|
562
|
+
expected_headers['content-type'] = 'application/json; charset=utf-8'
|
|
563
|
+
|
|
564
|
+
assert(ComparisonHelper.match_headers(expected_headers, @response_catcher.response.headers))
|
|
565
|
+
|
|
566
|
+
# Test whether the captured response is as we expected
|
|
567
|
+
refute_nil(result)
|
|
568
|
+
expected_body = JSON.parse(
|
|
569
|
+
'{"id":"11ef335e-9aa5-c54a-8313-7f9847da313a","store_id":"11edf541-c42d-'\
|
|
570
|
+
'653c-8c3d-dfe0a55f95c0","transaction_token_id":"11ef3362-3700-c54a-9baa'\
|
|
571
|
+
'-6f7e6527c9d9","amount":1250,"currency":"USD","amount_formatted":12.5,"'\
|
|
572
|
+
'status":"current","mode":"test","created_on":"2024-06-26T01:51:28.62702'\
|
|
573
|
+
'3Z","period":"monthly"}'
|
|
574
|
+
)
|
|
575
|
+
received_body = JSON.parse(@response_catcher.response.raw_body)
|
|
576
|
+
assert(ComparisonHelper.match_body(expected_body, received_body))
|
|
577
|
+
end
|
|
578
|
+
|
|
579
|
+
end
|