Create fixed discount
Overview
Use setPromotionDiscount to set a fixed promotion discount.
Parameters
Parameter | Type/Description | |||
---|---|---|---|---|
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) |
|||
|
Type |
Required (String) |
||
|
|
Discount type:
|
||
|
Value / Values |
Required (Int / Array of objects) |
||
|
|
|
||
|
|
Value |
Required (Object) |
|
|
|
|
Currency |
Required (String) |
|
|
|
|
Discount currency ISO code (ISO 4217). |
|
|
|
Amount |
Required (Int) |
|
|
|
|
Discount amount in corresponding currency. |
|
DefaultCurrency |
Required (String) |
||
|
|
Default discount currency ISO code (ISO 4217). |
Response
Parameter | Type/Description |
---|---|
promotionDiscount | Object |
Request
<?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 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 { private const LOGIN_METHOD = 'login'; private $calls = 1; private $sessionId; private function generateAuth(): array { $merchantCode = Configuration::MERCHANT_CODE; $key = Configuration::MERCHANT_KEY; $date = gmdate('Y-m-d H:i:s'); $string = strlen($merchantCode) . $merchantCode . strlen($date) . $date; $hash = hash_hmac('md5', $string, $key); return compact('merchantCode', 'date', 'hash'); } public function login(string $url) { $payload = $this->generateAuth(); $response = $this->call($url, array_values($payload), self::LOGIN_METHOD); $this->sessionId = $response['result']; } public function call( string $url = Configuration::URL, $payload = Configuration::PAYLOAD, string $action = Configuration::ACTION, string $promotionCode = Configuration::PROMOTION_CODE ): ?array { if (empty($this->sessionId) && $action !== self::LOGIN_METHOD) { $this->login($url); } if(is_string($payload)) { $payload = json_decode($payload, true); } if (!empty($this->sessionId)) { $payload = [$this->sessionId, $promotionCode, $payload]; } $payload = array_filter($payload); $request = json_encode([ 'jsonrpc' => '2.0', 'method' => $action, 'params' => $payload, 'id' => $this->calls++, ]); $curl = curl_init($url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSLVERSION, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Accept: application/json', 'Cookie: XDEBUG_SESSION=PHPSTORM')); curl_setopt($curl, CURLOPT_POSTFIELDS, $request); $response = curl_exec($curl); if(empty($response)) { die('Server unavailable'); } echo $response . '</br>'; return json_decode($response, true);; } } $client = new Client(); $result = $client->call(); var_dump($result);