Skip to main content

Search proposal history by ID

Last updated: 18-Feb-2021
Rate this article:

Overview

Use the searchProposalHistoryById method via SOAP API 6.0 to find a specific proposal or retrieve the quote version history.

Request parameters

Parameters Type Required/Optional Description

sessionId

String

Required

Unique 2Checkout session ID code.

ProposalId

String

Required

Proposal id.

Offset

Integer

Required

The offset at which the proposals should be returned. Default value: 0.

Limit

Integer

Required

The maximum number of proposal versions (history) to return. Default value: 10.

HasStatusComment String Optional

Filters the history version by statusComment field. It can be “true” or “false”.

Response

Parameters Type Description

Versions

Object

All versions of a proposal, paginated and ordered by date, newest first. Each element in the collection is a Proposal object.

Count

Integer

The total number of proposal versions.

Limit

Integer

The maximum number of proposal versions history to return. Default value: 10.

Offset

Integer

The offset at which the proposal versions history is returned.

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 = 'searchProposalHistoryById';
    public const ADDITIONAL_OPTIONS = 'c0d6955b-f804-4a13-93a0-cb7cd04bc68a'; // existing proposal id
    //array or JSON
    public const PAYLOAD = <<<JSON
{
  "Offset": 0,
  "Limit" : 10
}
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, Configuration::ADDITIONAL_OPTIONS, $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);
}
Rate this article:
Logo of Verifone