Skip to main content

Delete customer credit card

Delete customer credit card

Last updated: 31-Dec-2020
Rate this article:

Overview

Use the removeCCFromCustomer method via SOAP 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/soap/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
{
    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, $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) {
    echo $ex->xdebug_message;
    var_dump($ex);
}
Rate this article:

Need help?

Do you have a question? If you didn’t find the answer you are looking for in our documentation, you can contact our Support teams for more information. If you have a technical issue or question, please contact us. We are happy to help.

Not yet a Verifone customer?

We’ll help you choose the right payment solution for your business, wherever you want to sell, in-person or online. Our team of experts will happily discuss your needs.

Verifone logo