kayıtlı Kart İle Satış İşlemi [TOKEN]
- Satış işlemi kart bilgileri girmeden sadece ilgili karta ait TOKEN değeri gönderilerek gerçekleştirilebilir.
- Taksitli işlem yapılmak istenirse installments parametresi kullanılarak taksit değeri belirlenir.Ayrıca bank_di, gateway parametreleride zorunlu hale gelir.
- Taksitli işlem yapmadan önce taksit imkanlarınız, banka_id ve gateway değerlerini bilmeniz gerekmektedir.
Gerekli parametreler
merchant: ZORUNLU
Payfull hesabınız içerisinde(Ayarlar->Apı Hesapları) tanımladığınız Apı hesabına ait "Üye İşyeri Adı" alanına girilen değerdir.
type: ZORUNLU
İşlem tipi Sale olmalıdır.
total: ZORUNLU
Ödemenin miktarında kuruş değeride belirtilmelidir. Örnek olarak: 10.23 yada 10.00
cc_token: ZORUNLU
kart kayıt işlemine dönen cevap içerisinde bulunan TOKEN değeri atanmalıdır.
currency: ZORUNLU
Desteklenen para birimleri şunlardır. TRY/USD/EUR/GBP
installments: ZORUNLU
Taksit değerinin girildiği alanı ifade eder. Tek çekim işlem tapılacaksa değer 1 olarak atanmalıdır.
language: ZORUNLU
Satış işlemi sonrası gelecek olan cevabın dil seçeneğini belirlemekte kullanılır. İki seçenek vardır. en / tr
client_ip: ZORUNLU
İşlemi yapacak(parayı ödeyecek) olan kişiye ait IP bilgisi gönderilmelidir.
payment_title: ZORUNLU
Her satış işlemine ait belirlenmesi gereken işlem başlığıdır. Örnek olarak: Çay Bardağı 6'lı Set
bank_id: OPSİYONEL
bank_id değeri zorunlu değildir. Ancak taksitli işlem yapılmak istendiğinde ZORUNLU hale gelir.
Taksitli işlemin hangi bankadan yapılmasını istiyorsanız o bankanın bank_id değerini göndermeniz gerekmektedir. İlgili değeri nasıl temin edeceğinizi Taksit Bilgisi sayfasından öğrenebilirsiniz.
gateway: OPSİYONEL
Taksitli işlem yapılmak istenildiğinde ZORUNLU olan bir parametre daha. bank_id ile beraber kullanılmak istenen bankaya ait özel bir değer girilmesi gerekir. İlgili değeri nasıl temin edeceğinizi Taksit Bilgisi sayfasından öğrenebilirsiniz.
customer_firstname: ZORUNLU
İşlemi yapan kişinin bilgilerine ihtiyaç vardır. İlk olarak isim.
customer_lastname: ZORUNLU
Soyisim
customer_email: ZORUNLU
Email hesabı
customer_phone: ZORUNLU
Telefon numarası
customer_tc: OPSİYONEL
TC kimlik numarası.
passive_data: OPSİYONEL
Bu parametre işlem için göndermek ve sonrasında tekrar geri almak istediğiniz herhangi data yada bilgi için oluşturulmuş bir parametredir.
hash: ZORUNLU
İşlemin hangi api kullanıcısına ait olduğunu anlamamız ve güvenlik için kullanılan Güvenlik kodu parametresidir. Nasıl oluşturulacağı aşağıda anlatılmış olup sayfanın sağ tarafındaki örnekte php örneği olarak gösterilmiştir.

Güvenlik kodu (hash) değerini oluşturmak için aşağıdaki işlemler sırası ile gerçekleştirilmelidir;

- Bütün parametrelerin oluşturulduğundan emin olun. Her senaryo için Güvenlik kodu (hash) oluşturma işlemi son işlem ve son parametreniz olmalıdır.
- Parametreleri alfabetik olarak A'dan Z'ye sıralayınız.
- Bir string değeri($siraliParametreler) oluşturup teker teker her parametrenizin uzunluğunu ve kendisini yanyana ekleyiniz.
- sha256 hash kodu üretici fonksiyon ile parametrelerinizden oluşturduğunuz ($siraliParametreler) string değerinizi ve Payfull hesabınızda belirlenen "Üye İşyeri Şifresi" ni kullanarak bir Güvenlik kodu üretiniz.
- Parametreleriniz içerisine parametre ismi "hash", değeri ise şimdi oluştuduğunuz Güvenlik kodunu yerleştirerek Api isteğinizi Endpoint Url'inize gönderiniz.

> İstek Örneği

merchant : merchant name
type : Sale
total: 23.02
cc_token: A5NVH5VFTXE3XT3DUTVJMT
D2BR2U7K5LBS2UNOXFTA5W2BII
currency: TRY
installments: 1
language: tr
client_ip: 192.168.1.1
payment_title: just payemnt title
bank_id: Akbank
gateway: 160
customer_firstname: ALI
customer_lastname: MUHAMAD
customer_email: alitestemail@gmail.com
customer_phone: 5394659832
customer_tc: 12590326514
passive_data: just any passive data
hash: 14339MjuG01015018

> Cevap Örneği

{
“type”: "Sale",
“status”: "1",
“transaction_id”: "T4U_7dd053f6b8_d9a58906b",
“ErrorMSG”: "Success Transaction",
“ErrorCode”: "00",
“passive_data”: "just any passive data",
“original_currency”: "TRY",
“total”: "23.02",
“currency”: "TRY",
“conversion_rate”: "1",
“bank_id”: "Akbank",
“use3d”: "0",
“installments”: "1",
“time”: "08-09-2016 02:53:25",
}

>  Php Örneği

//API isteğini göndereceğiniz Endpoint URL değeri
$api_url =
'https://yourSubDomain.payfull.com/integration/api/v1';    //Payfull hesabınız içerisinde oluştuduğunuz API hesabına ait "Üye İşyeri Şifresi" değeri.

   $merchantPassword = 'your merchant password';

//parametrelerinizi oluşturduğunuz dizi. 
                        $params = array(                  
                     "merchant"        => 'your merchant name',
                       "type"            => 'Sale',          
                        "total"            => '1.01',
                        "cc_token"         => 'A5NVH5VFTXE3XT3DUTVJMT
D2BR2U7K5LBS2UNOXFTA5W2BII',
                       "currency"        => 'TRY',
                     "installments"       => '1'
                      "language"       => 'tr'
                      "client_ip"       => '192.168.1.1'
                      "bank_id"       => 'Akbank'
                      "gateway"       => '160'
                      "customer_firstname"       => 'ALI'
                      "customer_lastname"       => 'MUHAMAD'
                      "customer_email"       => 'alitestemail@gmail.com'
                      "customer_tc"       => '12590326514'
                      "passive_data"       => write here what you like4'

                        );

                     // Hash kodu üretme yöntemi.
                        ksort($params);
                     $hashString = "";
                     foreach ($params as $key=>$val) {                             
                      $l = mb_strlen($val);  
                      if($l) $hashString .= $l . $val;
                       }


                       $params["hash"] = hash_hmac("sha256", $hashString, $merchantPassword);

                       $ch = curl_init();
                       curl_setopt($ch, CURLOPT_URL, $api_url);            
                        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                               curl_setopt($ch, CURLOPT_TIMEOUT, 60);      
                        curl_setopt($ch, CURLOPT_POST, 1);  
                        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));

                         $response = curl_exec($ch);                    

           $curlerrcode = curl_errno($ch);
           $curlerr = curl_error($ch);              

           var_dump(json_decode($response));