Update a subscription plan/product
          Last updated: 11-Sep-2019
        
        
    Rate this article:
    
    
  
        Overview
Use the updateProduct method to update the configuration of a subscription plan/product you already configured for your account.
Parameters
| 
 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)  | 
|
| 
 
  | 
 Use this object to configure your subscription plans/products. 
 You can update/edit all parameters, except the following: 
 
  | 
When updating a subscription plan/product, you also update its PricingConfigurations. However, you cannot modify:
- The pricing configuration CODE.
 - The PricingSchema from DYNAMIC to FLAT or vice versa.
 - The intervals of an existing pricing configuration (MinQuantity and MaxQuantity).
 
Response
bool(true)
Request
<?php
$host   = "https://api.avangate.com";
$client = new SoapClient($host . "/soap/3.0/?wsdl", array(
    'location' => $host . "/soap/3.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 = "YOURCODE123"; //your account's merchant code available in the 'System settings' area of the cPanel: https://secure.2checkout.com/cpanel/account_settings.php
$key          = "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;
}
$ProductCode = 'NewSubscriptionPlan_Code_12345';
try {
    $ProdbyCode = $client->getProductByCode($sessionID, $ProductCode);
}
catch (SoapFault $e) {
    echo "ProductInfo: " . $e->getMessage();
    exit;
}
var_dump("ProductInfo", $ProdbyCode);
$ProdbyCode->ProductName = 'NewSubscriptionPlan_Name_2.0';
try {
    $NewSubscriptionPlan = $client->updateProduct($sessionID, $ProdbyCode);
}
catch (SoapFault $e) {
    echo "UpdatedProductInfo: " . $e->getMessage();
    exit;
}
var_dump("UpdatedProductInfo", $NewSubscriptionPlan);
?>
    Rate this article: