Place a renewal order
Overview
Renew a subscription and collect recurring revenue using the 2Checkout Subscription Reference. You can renew subscriptions for both catalog and dynamic products. The only requirement is to provide a valid subscription reference.
Requirements
To place a renewal order, you need to provide a valid subscription reference number.
Payment methods
You can place renewal orders using the following payment methods:
- Credit cards
- PayPal
- WeChat Pay
- iDEAL
- Purchase Order
- Wire
Use the PaymentDetails object to change the payment method used in the ordering process.
Parameters
Parameters | Type/Description |
---|---|
sessionID |
Required (string) |
|
Session identifier, the output of the Login method. Include sessionID into all your requests. 2Checkout throws an exception if the values are incorrect. The sessionID expires in 10 minutes. |
Required (Object) |
|
|
Object designed to collect all data necessary for an order, including billing, product/subscription plan and payment details. To place an order with PayPal rather than PayPal Express, use PAYPAL as the type of the PaymentDetails object and send the shopper email and a return URL as part of the PaymentMethod object. See code sample. |
SubscriptionReference |
Required (String) 2Checkout generated subscription reference number. E.q. A8C5671BFE. |
Response
Parameters | Type/Description |
---|---|
Object |
Request
<?php require ('PATH_TO_AUTH'); $Order = new stdClass(); $Order->Currency = 'USD'; $Order->Language = "EN"; $Order->Country = 'US'; $Order->CustomerIP = '91.220.121.21'; $Order->Source = "sourceAPI.net"; $Order->LocalTime = date('Y-m-d H:i:s'); $Order->Items = array(); /**/ $Order->Items[0]->RenewalInformation = new stdClass(); $Order->Items[0]->RenewalInformation->SubscriptionReference = 'A8C5671BFE'; //subscription used in the renewal process $Order->Items[0]->Price = new stdClass(); $Order->Items[0]->Price->Type = 'CUSTOM'; $Order->Items[0]->Price->Amount = '10'; $Order->Items[0]->PriceOptions = array('uniqscale1=4');// $Order->MachineId = "MachineID"; $Order->BillingDetails = new stdClass(); $Order->BillingDetails->Address1 = 'Bil1ing address'; $Order->BillingDetails->Address2 = 'Billing address 2'; $Order->BillingDetails->City = 'Billing City'; $Order->BillingDetails->State = 'Billing State'; $Order->BillingDetails->CountryCode = 'US'; $Order->BillingDetails->Phone = 1231232123; $Order->BillingDetails->Email = 'customer_details@test.com'; $Order->BillingDetails->FirstName = 'First'; $Order->BillingDetails->LastName = 'Customer'; $Order->BillingDetails->Company = 'Billing Company'; $Order->BillingDetails->Zip = '55104'; $Order->DeliveryDetails = new stdClass(); $Order->DeliveryDetails->Address1 = 'Bil1ing address'; $Order->DeliveryDetails->Address2 = 'Billing address 2'; $Order->DeliveryDetails->City = 'Billing City'; $Order->DeliveryDetails->State = 'Billing State'; $Order->DeliveryDetails->CountryCode = 'US'; $Order->DeliveryDetails->Phone = '12345'; $Order->DeliveryDetails->Email = 'customer_details@test.com'; $Order->DeliveryDetails->FirstName = 'First'; $Order->DeliveryDetails->LastName = 'Customer'; $Order->DeliveryDetails->Zip = "55104"; $Order->PaymentDetails = new stdClass(); $Order->PaymentDetails->Type = "CC"; $Order->PaymentDetails->Currency = $currency; $Order->PaymentDetails->PaymentMethod = new stdClass(); /**/ $Order->PaymentDetails->PaymentMethod->CardNumber = "4111111111111111"; $Order->PaymentDetails->PaymentMethod->CardType = "VISA"; $Order->PaymentDetails->PaymentMethod->ExpirationYear = "2019"; $Order->PaymentDetails->PaymentMethod->ExpirationMonth = "12"; $Order->PaymentDetails->PaymentMethod->CCID = "123"; $Order->PaymentDetails->PaymentMethod->HolderName = "John Doe"; $Order->PaymentDetails->PaymentMethod->RecurringEnabled = TRUE; $Order->PaymentDetails->PaymentMethod->HolderNameTime = 1; $Order->PaymentDetails->PaymentMethod->CardNumberTime = 1; /**/ try { $newOrder = $client->placeOrder($sessionID, $Order); } catch (SoapFault $e) { echo "newOrder: " . $e->getMessage(); exit; } var_dump("newOrder", $Order);