Update a subscription
Overview
Change specific details about a subscription. Use the updateSubscription method to change specific details about a subscription.
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 sessionIDexpires in 10 minutes. |
|
Required (Object) |
||
|
You need to include the entire Subscription object keeping its structure unchanged (retrieve it using getSubscription) but you can update only specific parameters enumerated below. |
|
|
EndUser |
Object |
|
|
|
|
ExpirationDate |
String |
|
|
Subscription expiration date - If you changed the time zone for the 2Checkout API by editing system settings under Account settings, then 2Checkout calculates the ExpirationDate according to your custom configuration. Note: The default 2Checkout API time zone is GMT+02:00. You cannot set an expiration date from the past. |
|
SubscriptionEnabled |
Boolean |
|
|
Possible values: TRUE/FALSE |
|
RecurringEnabled |
Boolean |
|
|
Possible values: TRUE/FALSE |
|
ExternalCustomerReference |
String |
|
|
Unique customer alphanumeric (string) identifiers that you control. Move a subscription from under a customer to another customer entity. Use the updateSubscription method. 2Checkout moves subscription under the customer for which you provide the 2Checkout customer reference or theExternal customer reference during the subscription update process. View example. |
|
ProductId |
Int |
|
|
System-generated unique product ID. Needs to be the ID of an existing product in the 2Checkout system created under your account. The product ID governs the product to which the subscription is associated with. Product types must match Regular - Regular or Bundle - Bundle. IDs must identify products with the renewal system enabled (max billing cycle 36 months). |
|
ProductName |
String |
|
|
The name of the product for identifier used under ProductID. |
|
ProductQuantity |
Int |
|
|
Ordered quantity. |
|
PriceOptionCodes |
Array |
|
|
Array of product options codes. Pricing options codes are case sensitive. To impact the renewal price, the PriceOptionsCodes need to belong to price options of pricing configurations used for the product with which the subscription is associated. |
All other parameters of the Subscription object are non-editable.
The 2Checkout system uses the updated subscription information for:
- Manual and automatic renewals
- Upgrades
- Trial conversions
Response
Boolean |
true or false depending on whether the changes were successful or not. |
Request
<?php
$host = "https://api.2checkout.com";
$client = new SoapClient($host . "/soap/4.0/?wsdl", array(
'location' => $host . "/soap/4.0/",
"stream_context" => stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false
)
))
));
function hmac($key, $data)
{
$b = 64; // byte length for md5
if (strlen($key) > $b) {
$key = pack("H*", md5($key));
}
$key = str_pad($key, $b, chr(0x00));
$ipad = str_pad('', $b, chr(0x36));
$opad = str_pad('', $b, chr(0x5c));
$k_ipad = $key ^ $ipad;
$k_opad = $key ^ $opad;
return md5($k_opad . pack("H*", md5($k_ipad . $data)));
}
$merchantCode = "YOUR_MERCHANT_CODE";// your account's merchant code available in the 'System settings' area of the cPanel: https://secure.2checkout.com/cpanel/account_settings.php
$key = "YOUR_SECRET_KEY";// your account's secret key available in the 'System settings' area of the cPanel: https://secure.2checkout.com/cpanel/account_settings.php
$now = gmdate('Y-m-d H:i:s'); //date_default_timezone_set('UTC')
$string = strlen($merchantCode) . $merchantCode . strlen($now) . $now;
$hash = hmac($key, $string);
try {
$sessionID = $client->login($merchantCode, $now, $hash);
}
catch (SoapFault $e) {
echo "Authentication: " . $e->getMessage();
exit;
}
$SubscriptionReferenceTest = '0177AAA92B';
try {
$retrievedSubscription = $client->getSubscription($sessionID, $SubscriptionReferenceTest);
}
catch (SoapFault $e) {
echo "retrievedSubscription: " . $e->getMessage();
exit;
}
var_dump("retrievedSubscription", $retrievedSubscription);
var_dump ($retrievedSubscription);
$retrievedSubscription->RecurringEnabled = false;
$retrievedSubscription-> SubscriptionEnabled = true;
$retrievedSubscription->ExpirationDate = '2020-12-12';
try {
$updatedSubscription = $client->updateSubscription($sessionID, $retrievedSubscription);
}
catch (SoapFault $e) {
echo "updatedSubscription: " . $e->getMessage();
exit;
}
var_dump("updatedSubscription", $updatedSubscription);