Search proposal history by ID
Use the searchProposalHistoryById method via JSON-RPC API 6.0 to find a specific proposal or retrieve the quote version history.
Request parameters
sessionId
Required (string)
Unique 2Checkout session ID code.
ProposalId
Required (string)
Proposal id.
Offset
Required (integer)
The offset at which the proposals should be returned. Default value: 0.
Limit
Required (integer)
The maximum number of proposal versions (history) to return. Default value: 10.
HasStatusComment
Optional (string)
Filters the history version by statusComment field. It can be “true” or “false”.
Request sample
<?php
declare(strict_types=1);
class Configuration
{
public const MERCHANT_CODE = '';
public const MERCHANT_KEY = '';
public const URL = 'http://api.avangate.local/rpc/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
{
"Limit": 10,
"Offset": 0,
}
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
): ?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, Configuration::ADDITIONAL_OPTIONS, $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);Response parameter
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.
Last updated
Was this helpful?