Retrieve partner subscription renewal price
Last updated: 02-Feb-2026
Rate this article:
Parameters
| Parameters | Type/Description | ||
|---|---|---|---|
| sessionID | Required (String) | ||
| Session identifier, output of the Login method. An exception is thrown for incorrect values. | |||
| Items | Object (Required) | ||
| SubscriptionReference | String (Required) | ||
| The 2Checkout unique subscription code. | |||
| Quantity | String (Required) | ||
| Defines the amount of product units to be renwed. | |||
| PricingOptions | Object (Required) | ||
| Code | The 2Checkout unique pricing code. | ||
| ExtraDiscount | Object (Optional) | ||
| Value | String | ||
| Extra discount you offer to partner orders. | |||
| Type | String | ||
| Possible values: FIXED or PERCENT. | |||
| ExtraMargin | Object (Optional) | ||
| Value | String | ||
| Extra margin you offer to partner orders. | |||
| Type | String | ||
| Possible values: FIXED or PERCENT. |
Request
<?php
declare(strict_types=1);
class Configuration
{
public const MERCHANT_CODE = 'MALWARQO';
public const MERCHANT_KEY = 'SECRET_KEY';
public const URL = 'http://api.avangate.local/soap/6.0';
public const ACTION = 'getPartnerSubscriptionsRenewalPrice';
public const PAYLOAD = <<<JSON
{
"Items": [
{
"SubscriptionReference": "GW3OPY94Q6",
"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);
}
Rate this article: