Class: AdvancedBilling::SubscriptionProductsController
- Inherits:
-
BaseController
- Object
- BaseController
- AdvancedBilling::SubscriptionProductsController
- Defined in:
- lib/advanced_billing/controllers/subscription_products_controller.rb
Overview
SubscriptionProductsController
Constant Summary
Constants inherited from BaseController
Instance Attribute Summary
Attributes inherited from BaseController
Instance Method Summary collapse
-
#migrate_subscription_product(subscription_id, body: nil) ⇒ SubscriptionResponse
Migrates a subscription to a different product.
-
#preview_subscription_product_migration(subscription_id, body: nil) ⇒ SubscriptionMigrationPreviewResponse
Previews the charges resulting from migrating a subscription to a different product.
Methods inherited from BaseController
#initialize, #new_parameter, #new_request_builder, #new_response_handler, user_agent, user_agent_parameters
Constructor Details
This class inherits a constructor from AdvancedBilling::BaseController
Instance Method Details
#migrate_subscription_product(subscription_id, body: nil) ⇒ SubscriptionResponse
Migrates a subscription to a different product.
To create a migration, you must pass the product_id or product_handle
in the object when you send a POST request. You can also pass either a
product_price_point_id or product_price_point_handle to choose which
price point the subscription is moved to. If no price point identifier is
passed, the subscription is moved to the product's default price point.
The response is the updated subscription.
Valid Subscriptions
Subscriptions should be in the active or trialing state to be
migrated.
(For backwards compatibility reasons, it is possible to migrate a
subscription that is in the trial_ended state via the API, however this
is not recommended. Since trial_ended is an end-of-life state, the
subscription should be canceled, the product changed, and then the
subscription can be reactivated.)
For more information, see [Product Changes and
Migrations](https://docs.maxio.com/hc/en-us/articles/24252069837581-Produc
t-Changes-and-Migrations).
Failed Migrations
Important note: One of the most common ways that a migration can fail is when the attempt is made to migrate a subscription to its current product.
3D Secure (3DS) Authentication post-authentication flow
When a payment requires 3DS Authentication to adhere to Strong Customer Authentication (SCA), the request enters a post-authentication flow where a 422 Unprocessable Entity status is returned with an action_link that will direct the customer through 3DS Authentication. See the [3D Secure Post-Authentication Flow](https://docs.maxio.com/hc/en-us/articles/44277749524365-3D-Secure-Po st-Authentication-Flow) article in the product documentation to learn how to manage the redirect flow. the subscription. TODO: type description here
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/advanced_billing/controllers/subscription_products_controller.rb', line 44 def migrate_subscription_product(subscription_id, body: nil) @api_call .request(new_request_builder(HttpMethodEnum::POST, '/subscriptions/{subscription_id}/migrations.json', Server::PRODUCTION) .template_param(new_parameter(subscription_id, key: 'subscription_id') .is_required(true) .should_encode(true)) .header_param(new_parameter('application/json', key: 'Content-Type')) .body_param(new_parameter(body)) .header_param(new_parameter('application/json', key: 'accept')) .body_serializer(proc do |param| param.to_json unless param.nil? end) .auth(Single.new('BasicAuth'))) .response(new_response_handler .deserializer(APIHelper.method(:custom_type_deserializer)) .deserialize_into(SubscriptionResponse.method(:from_hash)) .local_error_template('422', 'HTTP Response Not OK. Status code: {$statusCode}.'\ ' Response: \'{$response.body}\'.', ErrorListResponseException)) .execute end |
#preview_subscription_product_migration(subscription_id, body: nil) ⇒ SubscriptionMigrationPreviewResponse
Previews the charges resulting from migrating a subscription to a different product.
Previewing a future date
It is also possible to preview the migration for a date in the future, as
long as it's still within the subscription's current billing period, by
passing a proration_date along with the request (e.g.,
"proration_date": "2020-12-18T18:25:43.511Z").
This will calculate the prorated adjustment, charge, payment and credit
applied values assuming the migration is done at that date in the future
as opposed to right now.
the subscription.
TODO: type description here
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/advanced_billing/controllers/subscription_products_controller.rb', line 83 def preview_subscription_product_migration(subscription_id, body: nil) @api_call .request(new_request_builder(HttpMethodEnum::POST, '/subscriptions/{subscription_id}/migrations/preview.json', Server::PRODUCTION) .template_param(new_parameter(subscription_id, key: 'subscription_id') .is_required(true) .should_encode(true)) .header_param(new_parameter('application/json', key: 'Content-Type')) .body_param(new_parameter(body)) .header_param(new_parameter('application/json', key: 'accept')) .body_serializer(proc do |param| param.to_json unless param.nil? end) .auth(Single.new('BasicAuth'))) .response(new_response_handler .deserializer(APIHelper.method(:custom_type_deserializer)) .deserialize_into(SubscriptionMigrationPreviewResponse.method(:from_hash)) .local_error_template('422', 'HTTP Response Not OK. Status code: {$statusCode}.'\ ' Response: \'{$response.body}\'.', ErrorListResponseException)) .execute end |