İade WebHook

Üye iş yerinin, https://app.sipay.com.tr/merchant/apisetting adresindeki Sipay ü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. Sipay, 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.

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 Sipay, 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 sipay tarafından sağlanmaktadır.