Delete customer credit card
Last updated: 31-Dec-2020
Rate this article:
Overview
Use the removeCCFromCustomer method via JSON-RPC API 6.0 to delete/unlink a customer's credit card information from the myAccount platform.
Request parameters
Parameter | Type | Required/Optional | Description |
---|---|---|---|
CustomerReference | String | Required | Internal 2Checkout customer reference or your customer identifier. |
TransientToken | String | Required | Transient Token for the card can be found in getCustomerInfoBySSOToken. |
Response
# all good and was deleted
{
"Deleted": true
}
# no and the delete failed with reasons
{
"Deleted": false,
"Subscriptions" [
{
"SubscriptionReference": "ABCF122132",
"Error": {
"error_code": "MY_ERROR_CODE_1",
"message": ".... credit card was not deleted due to ..."
}
},
{
"SubscriptionReference": "DKHGTR12312",
"Error": {
"error_code": "MY_ERROR_CODE_2",
"message": ".... credit card was not deleted due to ..."
}
},
{
"SubscriptionReference": "KHSTT1213",
"Error": {
"error_code": "MY_ERROR_CODE_3",
"message": ".... credit card was not deleted due to ..."
}
}
]
}
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 ACTION = 'unlinkCustomerCreditCard';
public const ADDITIONAL_OPTIONS = null;
//array or JSON
public const PAYLOAD =
<<<json
{
"CustomerReference" : "someref",
"TransientToken" : "sometoken"
}
json;
}
class Client
{
private const LOGIN_METHOD = 'login';
private $calls = 1;
private $sessionId;
public function execute()
{
$this->login(Configuration::URL);
$this->call(Configuration::URL, $this->generateRequestPayload(), Configuration::ACTION);
}
private function login(string $url)
{
$payload = $this->generateAuthPayload();
$response = $this->call($url, array_values($payload), self::LOGIN_METHOD);
$this->sessionId = $response['result'];
}
private function generateAuthPayload(): 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');
}
private function call(
string $url = Configuration::URL,
$payload = Configuration::PAYLOAD,
string $action = Configuration::ACTION
): ?array {
$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);;
}
private function generateRequestPayload(): array
{
if (empty($this->sessionId)) {
throw new LogicException('Login should be called first');
}
$requestPayload = (is_string(Configuration::PAYLOAD))
? json_decode(Configuration::PAYLOAD,
true) : Configuration::PAYLOAD;
$payload = array_merge(
(array)$this->sessionId,
(array)Configuration::ADDITIONAL_OPTIONS
);
$payload[] = $requestPayload;
array_filter($payload);
return $payload;
}
}
$client = new Client();
$result = $client->execute();
var_dump($result);
Rate this article: