Satış WebHook


Öncelikle http://app.iqmoneytr.com/merchant/apisetting adresindeki iqmoney üye işyeri panelinde satış web hook URL'nizi (anahtar, değer) ayarlamanız gerekir. Bu özelliği almak için, üye iş yerinin satın alma talebini gönderirken sale_web_hook_key ile faturayı göndermesi gerekir. Bu anahtar isteğe bağlıdır, ancak gönderilirse geçerli bir anahtar olmalıdır. Her ödeme için, aşağıda verilen aşağıdaki parametrelerle satış webhook url'sine bir POST isteği gönderiyoruz

Tip Parametre Örnek Değer
Key iqmoney_status 1
Key order_no 162754070457149
Key invoice_id 1627540702924
Key status_code 100
Key status_description Approved(21210JoDF14161)
Key iqmoney_payment_method 1
Key credit_card_no 450803**** 4509
Key transaction_type Auth
Key payment_status 1
Key payment_method 1
Key error_code 100
Key error Approved(21210JoDF14161)
Key status Completed
Key hash_key 4c63ed8a964ab9a3:f20f : WMnQTMI128rDslYQKRpJfQW0tuskVAwDlMA7Hlp84TbST6tqJo0zuM9U9Iu9lY6u
Key transaction_type “Auth” / ”Pre-Authorization”


KEY Açıkalaması
payment_status payment_staus 1 veya 0 olabilir. 1=başarılı, 0=başarısız
order_no iqmoney sipariş numarası
invoice_id üye iş yeri fatura id'si
status_code iqmoney Status code, 100 başarılı işlem kodudur
status_description işlem açıklaması
transaction_type transaction_type == “Auth” //işlem tutarı anında karttan düşülür. transaction_type == “Pre-Authorization” işlem tutarı daha sonra karttan düşülecektir.
payment_method 1= kredi kartı, 2= mobil, 3= Wallet/cüzdan
error_code status_code değerinin parametresi
error status_description parametresinin değeri
hash_key iqmoney'den gelen talebi doğrulamak için

Yanıt Doğrulama

Durum-1-

payment_status == 1 ve transaction_type == “Auth” // İşlem başarılıdır ve işlem tutarı anında karttan düşülür.

Durum-2-

payment_status == 1 and transaction_type == “Pre-Authorization” // İşlem başarılı olup, işlem tutarı kredi kartından bloke edilir. Bloke tutarın karttan çekilmesi için /api/confirmPayment çağırılmalıdır.

Durum-3-

payment_status == 0 // İşlem başarısız.

Not

Hash_key, isteğin iqmoney'den geldiğini doğrulamak için üye iş yeri tarafında doğrulanmalıdır. Ayrıca İşlem Durumu servisi işlemin başarılı veya Başarısız olduğunu onaylar.


Yinelenen WebHook


Öncelikle https://app.iqmoneytr.com/merchant/apisetting adresindeki Iqmoney üye işyeri panelinde yinelenen web kancası URL'nizi (anahtar, değer) ayarlamanız gerekir. Yinelenen ödeme için üye iş yeri, faturayla birlikte recurring_web_hook_key ayarlamalıdır. Iqmoney, satın alma talebi sırasında bu anahtarın veritabanında mevcut olduğunu doğrular.
Yinelenen her ödeme için Iqmoney aşağıda verilen parametrelerle üye iş yerinin yinelenen web hook url'sine bir POST isteği gönderir.

Tür Parametre Örnek Değer
Key merchant_key $2y$10$snLdZ5xKfpmP561tpNlfWurcNl8r.r7Jg.w8Fi88PGFiGPQDOlfXO
Key invoice_id 266011626686877
Key order_id 162709021159202
Key product_price 0.10
Key plan_code 162668699215UOjS
Key recurring_number 6
Key status Completed
Key attempts 1
Key action_date 2021-07-24 03:00:49

Webhook'u uygulamak için önerilen kılavuz

Adım 1: Doğrulama isteği post ve üye iş yeri anahtarı geçerlidir.

Adım 2: Bundan sonra, yinelenen sorgu API'sini çağırın.

POST /api/recurringPlan/query application/json


Tür Parametre Data Türü Şart
HEADER Authorization string Zorunlu
HEADER Accept string Zorunlu
KEY merchant_key string Zorunlu
KEY plan_code string Zorunlu
KEY recurring_number Integer Zorunlu

Authorization

Authorization, bağlantı girişimine izin verildiğini doğrulayan bir başlık anahtarıdır. Yöntem " Bearer " olmalıdır

Örnek değer

Bearer
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImRlMG
VlZGFiZjdhZDhkODYzYTgyMzQ4Nzk5NTFkYzFlMDZkZTUxYjU0NW
RjYmU3MzRjMmQ1OGNkMWFlOWE4YjliZTkyMjdlZGVmZDdlMDliIn0
.eyJhdWQiOiIxNSIsImp0aSI6ImRlMGVlZGFiZjdhZDhkODYzYTgyMzQ
4Nzk5NTFkYzFlMDZkZTUxYjU0NWRjYmU3MzRjMmQ1OGNkMWFlOW
E4YjliZTkyMjdlZGVmZDdlMDliIiwiaWF0IjoxNTczNzUyNDcyLCJuYmYiOjE
1NzM3NTI0NzIsImV4cCI6MTYwNTM3NDg3Miwic3ViIjoiMSIsInNjb3BlcyI6W119.

Acceept

Accept, istemci tarafında ne tür bir temsilin istendiğini belirler. Değer "application / json" olmalıdır

merchant_key

merchant key, Iqmoney tarafından sağlanan üye işyerinin benzersiz anahtarıdır.

plan_code

plan_code, ilk ödeme sırasında oluşturulan benzersiz anahtardır. (Bu durumda, plan_code web kancası yanıtından alınmalıdır).

recurring_number

recurring_number her yinelemede Iqmoney'e gönderilen webHook isteğinden alınmalıdır..


İade WebHook


Üye iş yerinin, https://app.Iqmoney.com.tr/merchant/apisetting adresindeki Iqmoney üye iş yeri panelinde geri ödeme web hook URL'nizi (anahtar/key, değer/value) ayarlaması gerekir. Geri ödeme için geri ödeme isteği parametresi ile refund_web_hook_key anahtarı gönderilmelidir. Iqmoney, iade talebinde bulunurken anahtarın veritabanında bulunduğunu doğrular. Geri ödeme onayında, aşağıda belirtilen parametrelerle bir üye iş yeri geri ödeme web hook url'sine bir POST isteği gönderilir.
Yinelenen her ödeme için Iqmoney aşağıda verilen parametrelerle üye iş yerinin yinelenen web hook url'sine bir POST isteği gönderir.

Tip Parametre Örnek Değer
KEY invoice_id 8iu75g
KEY order_id 15767887576675
KEY amount 10.50
KEY status Completed
KEY hash_key 5uUVKijz5im5FfStic2wVX4gG8ngRfMS3H+FvAauQvOc1nAnh9GZ9T6zyxV5WUnQP2F

Hash Anahtarını Kullanarak WebHook İade Yanıt Doğrulaması

İade Onayında Iqmoney, web hook url'sine bir gönderi isteği gönderir. Bu bağlantılarla ilgili sorun, anonim bir kişi tarafından erişilebilmesidir. Bu sorunu önlemek için, istek parametreleriyle birlikte durum, invoice_id, order_id, amount ve hash_key gibi bağlantılara bazı parametreler eklendiğinden, talebin hash anahtarı kullanılarak doğrulanması önerilir.

function validateHashKey($hash_key, $secret_key){
    $status = '';
    $amount = $invoice_id = $order_id = 0;
    if (!empty($hash_key)) {
        $hash_key = str_replace('__', '/', $hash_key);
        $password = sha1($secret_key);
        $components = explode(':', $hash_key);
        if (count($components) >2) {
            $iv = $components[0] ?? '';
            $salt = $components[1] ?? '';
            $salt = hash('sha256', $password . $salt);
            $encrypted_msg = $components[2] ?? '';
            $decrypted_msg = openssl_decrypt($encrypted_msg, 'aes-256-cbc', $salt, null, $iv);
            if (strpos($decrypted_msg, '|') !== false){
                $array = explode('|', $decrypted_msg);
                $status = $array[0] ?? 0;
                $amount = $array[1] ?? 0;
                $invoice_id = $array[2] ?? '0';
                $order_id = $array[3] ?? 0;
            }
        }
    }
    return [$status, $amount, $invoice_id, $order_id];
}

$hash_key istekten alınmalı , $secret_key üye işyeri app secret bilgisi Iqmoney tarafından sağlanmaktadır.