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

Create fixed discount

Use setPromotionDiscount to set a fixed promotion discount.

Request 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)

promotionDiscount.Type

Required (string)

Discount type:

  • PERCENT: use with Value

  • FIXED: use with Values and DefaultCurrency

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

Parameter
Type

promotionDiscount

Object

Last updated

Was this helpful?