Geliştirici Merkezi

TR

Tokenized Yöntemi

Bir müşterinin WISECP'den ayrılmadan kredi kartı bilgilerini girdiği, isteğine bağlı olarak kart kaydetme özelliğini seçtiği ve bu bilgileri yerel olarak depolanmadan ödeme hizmeti sağlayıcısına iletildiği ve karşılığında alınan jeton ile ödeme tahsilat edildiği bir türdür. Ödeme sağlayıcısından alınan jeton ile ödeme işlemleri yürütülür.

"Tokenized" yöntemi "Merchant" yöntemi ile aynı adımlara sahiptir. Yapmanız gereken "Kart Saklama" özelliğini etkin hale getirmek ve ödeme hizmeti sağlayıcısından elde edilen "token" bilgisini WISECP’ye tanıtmaktır.

Kart Saklama Özelliğini Etkinleştirmek

Daha önce belirtildiği üzere "config.php" dosyasında "card-storage-supported" indisini “true” değer olarak tanımlamanız durumunda, modül için kart saklama özelliğini etkinleştirmiş olacaksınız.

Ödeme Tahsil Etmek

Müşterinin tanımladığı kart bilgileri, "capture" işlevine iletilir. Eğer saklı bir kart seçiliyse, işleve iletilen parametrede "card_storage" indisi dolu bir şekilde gelecektir.

Değişkenler

Aşağıda belirtilen tüm değişkenler "capture" fonksiyonuna iletilmektedir.

İsim Türü Açıklama
checkout_id integer Ödeme için benzersiz kimlik numarası (ör. 1234567)
amount float Ödenecek tutar bilgisi
currency integer Para birimi kodu (ör. USD,EUR, gibi…)
installment integer Kaç taksit talep edildiği
holder_name string Kart üzerindeki isim
type string Kart türü (Ör. VISA,MASTERCARD, gibi…)
num integer 16 haneli kart numarası
expiry_m integer Kartının son kullanma tarihindeki ayı (ör: 07)
expiry_y integer Kartının son kullanma tarihindeki yılı (ör: 27)
cvc integer Kartının arkasındaki güvenlik kodu
clientInfo object Müşteri bilgilerinin bulunduğu bir "object" değişkendir.
card_storage array Saklı kart bilgileri
card_storage -> id integer Saklı kart ID numarası
card_storage -> user_id integer Müşterinin ID numarası
card_storage -> as_default integer Kart varsayılan ise "1" değilse "0"
card_storage -> card_country string Kartın ülke bilgisi (ör: US,UK,DE, vb…)
card_storage -> card_type string Kartın türü ("debit" ve "credit" değerini alabilir.)
card_storage -> card_schema string Kartın şeması (ör: "MASTERCARD", "VISA", gibi…)
card_storage -> card_brand string Kartın markası (ör. "bonus","axess", gibi…)
card_storage -> bank_name string Kartın ait olduğu banka adı
card_storage -> ln4 string Kart numarasının son 4 numarası
card_storage -> cvc string Kartın arkasında güvenlik kodu (veritabanında kriptolanarak saklanmaktadır)
card_storage -> name string Kart üzerindeki isim
card_storage -> expiry_month string Kart son kullanma tarihindeki ayı (ör: 07)
card_storage -> expiry_year string Kart son kullanma tarihindeki yılı (ör. 27)
card_storage -> token string Ödeme hizmeti sağlayıcısından temin edilen token bilgisi (veritabanında kriptolanarak saklanmaktadır)

Örnek

public function capture($params=[])
{
    $api_key            = $this->config["settings"]["example1"] ?? 'N/A';
    $secret_key         = $this->config["settings"]["example2"] ?? 'N/A';
    $storage_token      = '';

    if($params['card_storage'])
        $storage_token = $params['card_storage']['token'];


    if($storage_token)
        $card = [];
    else
        $card = [
            'card_number'        => $params['num'],
            'card_holder_name'   => $params['holder_name'],
            'card_expiry'        => $params['expiry_m']."-".$params['expiry_y'],
            'card_cvc'           => $params['cvc'],
        ];

    // Does the customer want to keep the card?
    if($this->checkSaveCard()) $card['card_storage'] = 'enable';


    $fields             = [
        'client' => [
            'first_name'    => $params["clientInfo"]->name,
            'last_name'     => $params["clientInfo"]->surname,
            'email'         => $params["clientInfo"]->email,
            'address'       => [
                'country'       => $params["clientInfo"]->address->country_code,
                'city'          => $params["clientInfo"]->address->city,
                'state'         => $params["clientInfo"]->address->counti,
                'postcode'      => $params["clientInfo"]->address->zipcode,
                'detail'        => $params["clientInfo"]->address->address,
            ],
        ],
        'card'                  => $card,
        'storage_token'         => $storage_token,
        'amount'                => $params['amount'],
        'currency'              => $this->currency($params['currency']),
        'custom_id'             => $params["checkout_id"],
    ];


    // Here we are making an API call.
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "api.sample.com/checkout/capture");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'APIKEY: '.$api_key,
        'SECRET: '.$secret_key,
        'Content-Type: application/json',
    ));
    curl_setopt($curl,CURLOPT_POST,1);
    curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($fields));
    $result = curl_exec($curl);
    if(curl_errno($curl))
    {
        return [
            'status' => 'error',
            'message' => curl_error($curl)
        ];
    }
    $result             = json_decode($result,true);

    if($result && $result['status'] == 'success')
        return [
            'status' => 'successful',
            'message' => ['Merchant Transaction ID' => $result['transaction_id']],
            'card_storage_token' => $result["storage_token"] ?? '',
        ];
    else
        return [
            'status'            => 'error',
            'message'           => $result['error_message'] ?? '!API ERROR!',
        ];

}

Saklanan Kartı Silmek

Ödeme hizmeti sağlayıcınız kart silme özelliğini destekliyorsa aşağıda verilen işlevi kullanabilirsiniz.

public function remove_stored_card($params=[])
{
    $api_key        = $this->config["settings"]["example1"] ?? 'N/A';
    $secret_key     = $this->config["settings"]["example2"] ?? 'N/A';
    $token          = $params['token'];

    // Here we are making an API call.
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "api.sample.com/card-storage/remove/".$token);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'APIKEY: '.$api_key,
        'SECRET: '.$secret_key,
        'Content-Type: application/json',
    ));
    $result = curl_exec($curl);
    if(curl_errno($curl))
    {
        $result      = false;
        $this->error = curl_error($curl);
    }
    $result             = json_decode($result,true);

    if($result && $result['status'] == 'OK') $result = true;
    else
    {
        $this->error = $result['message'] ?? 'something went wrong';
        $result = false;
    }

    return $result;
}
Merchant Yöntemi Subscription Yöntemi

Bir Sorunuz mu Var?

Bize yazmaktan çekinmeyin. En kısa sürede yanıt göndereceğiz.
Bize Ulaşın.
Copyright © 2024. All Rights Reserved.
Join Our Discord Channel
Top