Search customers
Use the searchCustomers method via JSON-RPC API 6.0 to be able to identify customers by applying a set of filters.
Request parameters
Parameter name
Type / Description
Email
Optional (string)
Strict match of the email address. It should be case insensitive.
Phone
Optional (string)
Strict match of the phone number.
CountryCode
Optional (string)
Strict match of the customer's country code.
Language
Optional (string)
Strict match of the customer's language.
Trial
Optional (boolean)
Status
Optional (enum)
Can be active, inactive.
Pagination
Optional (object)
Limit
Optional (int)
Page
Optional (int)
Request sample
<?php
declare(strict_types=1);
class Configuration
{
public const MERCHANT_CODE = '';
public const MERCHANT_KEY = '';
//public const URL = 'http://api.2checkout.com/rpc/6.0';
public const URL = 'http://api.avangate.local:8081/rpc/6.0';
public const ACTION = 'searchCustomers';
public const ADDITIONAL_OPTIONS = null;
//array or JSON
public const PAYLOAD = <<<JSON
{
"Email": "test@email.com",
"Language": "en",
"CountryCode": "us",
"Trial": true,
"Status": "ACTIVE",
"Phone": "403324433234",
"Pagination": {
"Limit": 10,
"Page": 1
}
}
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, $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);Last updated
Was this helpful?