Merchant Yöntemi
Bir müşterinin WISECP'den ayrılmadan kredi kartı bilgilerini girdiği yerdir. Süreçler arka planda işlenir. Kullanıcınız 3D güvenlik doğrulaması için sitenizden ayrılabilir veya bir popup görebilir.
"Merchant" yöntemine göre modül oluşturmak için aşağıdaki adımları takip ediniz.
Modülde bulunan sınıf içerisine "capture" adında bir fonksiyon tanımlayın. Bu fonksiyonun kullanım amacı müşteriden temin edilen kredi kartı bilgilerini "capture" fonksiyonuna aktarmaktır. Genellikle ödeme hizmeti sağlayıcısına "HTTP/cURL" isteği göndererek gelen cevaba göre ödemeyi onaylamak için kullanılır.
Eğer ödeme hizmeti sağlayıcınız "3D Secure" ile ödemeyi destekliyorsa, "3D Secure" dokümana göz atınız.
Eğer ödeme hizmeti sağlayıcınız, ödeme iade etme özelliğini destekliyorsa, "İade" dokümanına göz atınız.
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 son kullanma tarihindeki ay bilgisi. (ör. 07) |
expiry_y | integer | Kartının son kullanma tarihindeki yıl bilgisi. (ör. 22) |
cvc | integer | Kartının arkasındaki güvenlik kodu |
clientInfo | object | Müşteri bilgilerinin bulunduğu bir "object" değişkendir. |
clientInfo -> id | integer | ID No |
clientInfo -> name | string | Adı |
clientInfo -> surname | string | Soyadı |
clientInfo -> full_name | string | Tam Adı |
clientInfo -> email | string | E-Posta Adresi |
clientInfo -> gsm_cc | integer | GSM telefon ülke kodu (ör. 1,44,90 vb.) |
clientInfo -> gsm | integer | GSM telefon numarası (ülke kodu olmadan) |
clientInfo -> phone | İnteger | GSM telefon numarası (ülke kodu dahil) |
clientInfo -> lang | string | Kullanılan dil (ör. en,fr,de, vb.) |
clientInfo -> kind | string | Hesap türü (ör. individual, corporate) |
clientInfo -> company_name | String | Firma ünvanı |
clientInfo -> company_tax_number | String | Firma vergi numarası |
clientInfo -> company_tax_office | String | Fimra vergi dairesi |
clientInfo -> address > country_code | string | Seçilen adresin ülke kodu (ör. US,UK,DE, vb.) |
clientInfo -> address > country_name | String | Seçilen adresin ülke adı |
clientInfo -> address > city | String | Seçilen adresin şehir adı |
clientInfo -> address > counti | String | Seçilen adresin ilçe adı |
clientInfo -> address > zipcode | String | Seçilen adresin posta kodu |
clientInfo -> address > address | String | Seçilen adresin ayrıntıları (Ör. x street, building no: 2254, vb.) |
Sistem Değişkenleri
$this->config["settings"]["...your_field..."] # Custom configuration field
$this->name # Module Name
$this->lang["invoice-name"] # Module Display Name
$this->url # Module Directory URL Address
$this->dir # Module Directory Path (eg. /coremio/modules/Payment/SamplePay/)
$this->lang["example"] # Calling a field from a language file
APP_URI # Website URL Address
$this->links["successful"] # Payment successful page link
$this->links["failed"] # Payment failed page link
$this->links["callback"] # Callback link
Yanıt
Fonksiyonun geri dönüş değeri bir "dizi" olmalı ve aşağıdaki değerleri döndürmelidir.
İsim | Türü | Zorunlu | Açıklama |
status | string | Evet | Ödemenin durumu aşağıdakileri içerebilir: successful : Ödemenin başarılı olduğunu belirtir. pending: Ödemenin "bekleniyor" olduğunu belirtir. output: Kart bilgilerinin girildiği alanı temizler ve "output" indisi içerisindeki veriyi yazdırır. redirect: Sayfadan ayrılıp belirtilen URL'ye yönlendirir. (Genelde "3D Secure" süreci için kullanılır. Bu işlemde "callback" yöntemini de kullanmanız gerekir.) error: ödemenin başarısız olduğunu belirtir. |
redirect | string | Hayır | Eğer status değeri "redirect" olarak belirlendiyse, bu alana bir URL adresi girmek zorunludur. Müşteri "Ödeme Yap" düğmesine tıklaıktan sonra, burada belirlenen URL adresine yönlendirilecektir. |
message | string veya array | Hayır | Yöneticiye ödeme hakkında bilgi vermeniz gereken herhangi bir durum olduğunda kullanılır. (Ör: Ödemenin takibi ile alakalı numara) Kabul edilebilir değer:" array" ve "string" |
output | String | Hayır | Eğer status değeri "output" olarak tanımlanırsa, bu indisin içerisindeki veri kredi kartı bilgisi girme alanının yerine yansıtılır. |
paid | Array | Hayır | Ödenen tutarın bilgisi [amount] , [currency] |
paid [amount] | Float | Evet | Ödenen tutarın miktarı |
paid[currency] | String | Evet | Ödenen tutarın para birimi. Ör: USD,EUR,GBP,TRY |
Örnek
Aşağıdaki örnekte bir URL adresine cURL kütüphanesi kullanarak "HTTP/POST" isteği gönderilmektedir. İsteğin gönderilmesinden sonra, gelen yanıt "JSON" çıktısı içermektedir.
public function capture($params=[])
{
$api_key = $this->config["settings"]["example1"] ?? 'N/A';
$secret_key = $this->config["settings"]["example2"] ?? 'N/A';
$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_number' => $params['num'],
'card_holder_name' => $params['holder_name'],
'card_expiry' => $params['expiry_m']."-".$params['expiry_y'],
'card_cvc' => $params['cvc'],
],
'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']],
];
else
return [
'status' => 'error',
'message' => $result['error_message'] ?? '!API ERROR!',
];
}