For the complete documentation index, see llms.txt. This page is also available as Markdown.

Retrieve partner subscription upgrade price

Request parameters

Parameter
Type / Description

sessionID

String (Required) Session identifier, output of the Login method. An exception is thrown if the values are incorrect.

Items

Object (Required) Details below.

Items.SubscriptionReference

String (Required) The 2Checkout unique subscription code.

Items.UpgradeProductCode

String (Required) Unique product identifier code of the product you wish the subscription to be upgraded to.

Items.Quantity

String (Required) Defines the amount of product units to be upgraded to.

Items.PricingOptions

Object (Required) Details below.

Items.PricingOptions.Code

String (Required) The 2Checkout unique pricing code.

ExtraDiscount

Object (Optional) Details below.

ExtraDiscount.Value

String (Optional) Extra discount you offer to partner orders.

ExtraDiscount.Type

String (Optional) Possible values: FIXED or PERCENT.

ExtraMargin

Object (Optional) Details below.

ExtraMargin.Value

String (Optional) Extra margin you offer to partner orders.

ExtraMargin.Type

String (Optional) Possible values: FIXED or PERCENT.

Request sample

<?php
declare(strict_types=1);
class Configuration
{
    public const MERCHANT_CODE = 'MERCHANT';
    public const MERCHANT_KEY = 'SECRET_KEY';
    public const URL = 'http://api.avangate.local/soap/6.0';
    public const ACTION = 'getPartnerSubscriptionsUpgradePrice';
    
    public const PAYLOAD =  <<<JSON
{
    "Items": [
        {
            "SubscriptionReference": "XYZ23GHUJK",
            "UpgradeProductCode": "Avangate",
            "Quantity": 5,
            "PricingOptions": [
                {
                    "Code": "option30p"
                },
                {
                    "Code": "option20p"
                }
            ]
        }
    ],
    "ExtraDiscount": {
        "Value": 10,
        "Type": "FIXED"
    },
    "ExtraMargin": {
        "Value": 10,
        "Type": "PERCENT"
    }
}
JSON;
 
}
class Client
{
    public function call(
        string $url = Configuration::URL,
        $payload = Configuration::PAYLOAD,
        string $action = Configuration::ACTION
    ): ?object {
        if (is_array($payload)) {
            $payload = json_encode($payload);
        }
        if (!empty($payload)) {
            // SoapClient works with objects(StdClass)
            $payload = json_decode($payload);
        }
        $soapClient = $this->getClient($url);
        $sessionId = $this->getSession($soapClient);
        $args = array_filter([$sessionId, $payload]);
        return $soapClient->$action(...$args);
    }
 
    public function getClient(string $url): SoapClient
    {
        return new SoapClient(
            $url.'?wsdl',
            [
                'location' => $url,
                'cache_wsdl' => WSDL_CACHE_NONE,
            ]
        );
    }
 
    public function getSession(SoapClient $client)
    {
        $date = gmdate('Y-m-d H:i:s');
        $merchantCode = Configuration::MERCHANT_CODE;
        $key = Configuration::MERCHANT_KEY;
        $string = strlen($merchantCode).$merchantCode.strlen($date).$date;
        $algo = 'sha256';
        $hash = hash_hmac($algo, $string, $key);
        $client->__setCookie('XDEBUG_SESSION', 'PHPSTORM');
        return $client->login($merchantCode, $date, $hash, $algo);
    }
}
try {
    $client = new Client();
    var_dump($client->call());
} catch (Exception $ex) {
    var_dump($ex);
}
        $sessionId = $this->getSession($soapClient);
        $args = array_filter([$sessionId, $payload]);
        return $soapClient->$action(...$args);
    }
 
    public function getClient(string $url): SoapClient
    {
        return new SoapClient(
            $url.'?wsdl',
            [
                'location' => $url,
                'cache_wsdl' => WSDL_CACHE_NONE,
            ]
        );
    }
 
    public function getSession(SoapClient $client)
    {
        $date = gmdate('Y-m-d H:i:s');
        $merchantCode = Configuration::MERCHANT_CODE;
        $key = Configuration::MERCHANT_KEY;
        $string = strlen($merchantCode).$merchantCode.strlen($date).$date;
        $algo = 'sha256';
        $hash = hash_hmac($algo, $string, $key);
        $client->__setCookie('XDEBUG_SESSION', 'PHPSTORM');
        return $client->login($merchantCode, $date, $hash, $algo);
    }
}
try {
    $client = new Client();
    var_dump($client->call());
} catch (Exception $ex) {
    var_dump($ex);
}

Last updated

Was this helpful?