Create fixed discount
Use setPromotionDiscount to set a fixed promotion discount.
Request parameters
sessionID
Required (string)
Output of the Login method.
promotionCode
Required (string)
The code corresponding to the promotion that you want to set the discount for.
promotionDiscount
Required (object)
promotionDiscount.Type
Required (string)
Discount type:
PERCENT: use with
ValueFIXED: use with
ValuesandDefaultCurrency
promotionDiscount.Value/Values
Required (int / array of objects)
Value (int): determines the discount percentage from 0 to 100
Values (array of value objects)
promotionDiscount.Value/Values.Value
Required (object)
promotionDiscount.Value/Values.Value.Currency
Required (string)
Discount currency ISO code (ISO 4217).
promotionDiscount.Value/Values.Value.Amount
Required (int)
Discount amount in corresponding currency.
promotionDiscount.DefaultCurrency
Required (string)
Default discount currency ISO code (ISO 4217).
Request sample
<?php
declare(strict_types=1);
class Configuration
{
public const MERCHANT_CODE = '';
public const MERCHANT_KEY = '';
public const URL = 'http://api.2checkout.com/soap/6.0';
public const ACTION = 'setPromotionDiscount';
public const ADDITIONAL_OPTIONS = null;
public const PROMOTION_CODE = "AB3WMME0UA";
//array or JSON
public const PAYLOAD = <<<JSON
{
"Type": "FIXED",
"DefaultCurrency": "USD",
"Values": [
{
"Currency": "USD",
"Amount": 10
},
{
"Currency": "EUR",
"Amount": 10
}
]
}
JSON;
}
class Client
{
public function call(
string $url = Configuration::URL,
$payload = Configuration::PAYLOAD,
string $action = Configuration::ACTION,
string $promotionCode = Configuration::PROMOTION_CODE
): ?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, $promotionCode, $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;
$hash = hash_hmac('md5', $string, $key);
$client->__setCookie('XDEBUG_SESSION', 'PHPSTORM');
return $client->login($merchantCode, $date, $hash);
}
}
try {
$client = new Client();
var_dump($client->call());
} catch (Exception $ex) {
var_dump($ex);
}Response parameters
promotionDiscount
Object
Last updated
Was this helpful?