Capture İşlemi
Önprovizyon olarak başlatılan bir işlemin daha sonra satışa çevrilmesidir. Satışa çevrilen tutar kart hamilinin ekstresine yansıyacaktır. Önprovizyonu satışa çevirme işlemi tamamlandığında, gün sonu işleminden sonra işyeri hesabına ilgili tutar aktarılacaktır.

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.
language: ZORUNLU
Gelecek olan cevabın dil seçeneğini belirlemekte kullanılır. İki seçenek vardır. en / tr
client_ip: ZORUNLU
İşlemi yapacak kişiye ait IP bilgisi gönderilmelidir.
transaction_id: ZORUNLU
Payfull tarafından üretilip Satış işlemi sonrası cevap bilgisinde geri gönderilir.
total: ZORUNLU
Ödemenin miktarında kuruş değeride belirtilmelidir. Örnek olarak: 10.23 yada 10.00
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.
merchant_trx_id: OPSİYONEL
Bu parametre işlem için özgün bir id değeri tanımlamanız ve göndermeniz içindir. Sonrasında üretmiş olduğunuz bu değeri İşlem Durum Bilgisi için kullanmanız gerekmektedir.
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 : Sale
tota : 23.02
cc_name : ALI
cc_number: 4111111111111111
cc_month: 09
cc_year: 2024
cc_cvc: 000
currency: TRY
merchant: merchant name
installments: 1
language: tr
client_ip: 192.168.1.1
payment_title: just payment title
bank_id: Akbank
gateway: 160
customer_firstname: ALI
customer_lastname: MUHAMMED
customer_email: alitestmail@gmail.com
customer_phone: 5394569832
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"            => 'Capture',
                       "language"        => 'tr',
                     "client_ip"       => '192.168.1.1 
                     "transaction_id"  =>   'T4U_8d8125d10a_481a77f38',
                      "total"           => '21.39',
                    "passive_data"  => 'write here what you like',                  
     );
                     
                     // 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);
                        // Hash kodu üretilip parametreler arasına "hash" index'i ile eklendi.

                       //curl sürecini başlatıyoruz.
                       $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));

                        //curl için gerekli olan URL değeri ve parametreler hazırlandı ve curl_exec() fonksiyonu ile işlemi başlatıp cevabı $response değerine atıyoruz.                      
                         $response = curl_exec($ch);                    

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

           //cevabı öğrenmek için print ediyoruz.                      
           var_dump(json_decode($response));