İşlem Bildirimi
Craftgate, aşağıda belirtilen işlemlerin sonucunu ve işlem bilgilerini, sizin tanımlayacağınız bir URL e düzenli olarak iletir. Böylece Craftgate üzerinden gerçekleştirilen tüm ödeme/iptal/iade/para transferi işlemlerinizin sonuçlarını -ödeme akışı kesintiye uğrasa bile- dinleyebilir, akışlarınızı ödeme sonuçlarına göre planlayabilirsiniz.
- Ödeme İşlemi Sonucu(API_AUTH): Ödeme işleminin sonucu, başarılı ya da başarısız olması farketmeksizin, sizin ödeme sırasında ilettiğiniz webhook adresine iletilir.
- 3D Ödeme İşlemi Sonucu(API_VERIFY_AND_AUTH): 3D Pay model ödeme yöntemlerinde bu event gönderilir.
- Ödeme Formu kullanımlarında Ödeme İşlemi Sonucu(CHECKOUTFORM_AUTH): Ödeme formu kullanılarak yapılan ödeme işleminin sonucu, başarılı ya da başarısız olması farketmeksizin, sizin 3D ödeme başlatma sırasında ilettiğiniz webhook adresine iletilir.
- 3D Secure Doğrulama İşlemi Sonucu(THREEDS_VERIFY): 3D Secure doğrulama işleminin sonucu, başarılı ya da başarısız olması farketmeksizin, sizin 3D ödeme başlatma sırasında ilettiğiniz webhook adresine iletilir.
- Ödeme İade İşlemi Sonucu(REFUND): Ödeme iade işleminin sonucu başarılı ise webhook adresine iletilir.
- Ödeme Kırılımı İade İşlemi Sonucu(REFUND_TX): Ödeme kırılımının iade işleminin sonucu başarılı ise webhook adresine iletilir.
- Para Transferi Tamamlama İşlemi Sonucu(PAYOUT_COMPLETED): Pazaryerlerindeki para transferi işleminin tamamlanması sonucunda iletilir.
- Autopilot İşlemi Sonucu(AUTOPILOT): Autopilot işlemleri sonucu webhook adresine iletilir.
- Cüzdan Oluşma işlemi sonucu(WALLET_CREATED): Cüzdan oluşması durumunda cüzdan bilgileri ile webhook adresine iletilir.
- Cüzdan Hareketi İşlemi Sonucu(WALLET_TX_CREATED): Cüzdan hareketi gerçekleştirildiğinde işlem sonucu webhook adresine iletilir.
- Alışveriş Kredisi Sonucu (BNPL_NOTIFICATION): BNPL süreçlerinden alışveriş kredisi için kredi başvurusu sonrası durum değişikliği olduğunda işlem sonucu webhook adresine iletilir.
- Banka Hesap Hareketi İşlemi(BANK_ACCOUNT_TRACKING_RECORD): Banka hesap hareketi izleme sonucunda bir para transferi gerçekleştirildiğinde işlem sonucu webhook adresine iletilir.
- Parçalı Ödeme Tamamlanma(MULTI_PAYMENT_COMPLETED): Parçalı ödeme işlemleri tamamlandığında webhook adresine iletilir.
- BKM Express Ödeme Kontrol(BKM_EXPRESS_PAYMENT_NOTIFICATION): Ödeme tamamlanmadan önce ödemeye ait kontrollerin yapılması için bildirim gönderilir.
Önemli Not
- 3DS ödeme akışında, iletmiş olduğunuz
callbackUrl
adresine yapılacak olan istekler tarayıcı üzerinden gerçekleşmektedir. Son kullanıcının bu akışı durdurması veya kullanıcının internetinde yaşanabilecek sorunlardan dolayıcallbackUrl
adresine yapılan istekler yapılamayabilir. O nedenle webhook servislerimiz özellikle 3DS ödemelerin takibi ve kullanıcı davranışlarının tespiti için faydalı olabilmektedir. - İşlem bildirimine zamanla yeni eventler eklenebilmektedir. Bu nedenle, işlemediğiniz bir event gelmesi durumunda uygulamanızı buna göre tasarlamalısınız.
Webhook Bildirimi Alınabilmesi için Adres Tanımı Yapılması
Webhook bildiriminin aktifleşleştirilmesi için Craftgate paneli Ayarlar
->Üye İşyeri Ayarları
->Webhook Bildirim Ayarları
altındaki Üye işyeri Webhook URL
alanının doldurulması gerekmektedir. Webhook URL adresi olarak POST
isteklerini kabul edip HTTP
kodlarından 2xx
dönen bir URL bilgisi girmeniz durumunda, Craftgate ödemeler sonrası ilgili veriyi gönderiyor olacaktır.
Webhook Adresine Çağrı Yapılması ve İletilen İstek
Webhook çağrısı, ödemeyle alakalı ilgili aksiyon tamamlandıktan 30 saniye sonra sizin belirttiğiniz webhookUrl adresine yapılmaya başlanır. 2xx cevabı alınmadığı durumda sırasıyla 10 sn, 30 sn, 3 dk, 10 dk, 30 dk bekletilerek tekrar tekrar deneme yapılır. 5 denemenin sonucunda hala başarılı olmamışsa iptal edilir. Tekrar deneme mekanizması nedeniyle, gelen mesajın karşılığı olan ödeme ile ilgili sisteminizdeki durumunun kontrol edilmesi önemlidir.
Ödeme, İptal, İade, 3D ödeme ve 3D secure doğrulama, Para transferi sonuçları belirtmiş olduğunuz webhook adresine JSON formatında POST
http metodu ile iletilir.
3DS ödemesi sırasında:
- Eğer POS
3D Model
kullanılıyorsa, 3DS kullanıcı doğrulama aşamasından sonra 3DS tamamlama servisini çağırmanız gerektiği anlamına gelir. Bu aşamadaTHREEDS_VERIFY
event'i 3DS kullanıcı doğrulamasından sonra veAPI_AUTH
event'i 3DS tamamlandıktan sonra gönderilecektir. - Eğer POS
3D Pay
modelini kullanıyorsa,THREEDS_VERIFY
yerine -kullanıcı doğruladığında banka tarafında ödeme çekileceği için-API_VERIFY_AND_AUTH
event'i gönderilecektir. - Ödeme formu kullanıyorsanız, diğer event'ler yerine yalnızca
CHECKOUTFORM_AUTH
gönderilecektir.
İstek Parametreleri
İsteğin oluşturulduğu tarihin epoch değeri
İsteğin hangi işlem için gerçekleştiğini belirtir
İşleme ait durum bilgisidir
Event tipine göre işlemin ID değeri. Örn; Ödemeye ait ID değeri veya Ödeme formuna ait token bilgisi gibi
Gelen eventType
bilgisine göre ilgili işleme ait ek detayları içerir. PAYOUT_COMPLETED
, AUTOPILOT
,WALLET_CREATED
, WALLET_TX_CREATED
, BNPL_NOTIFICATION
, BANK_ACCOUNT_TRACKING_RECORD
eventleri için dolu gelir.
Webhook Adresine İletilen İsteğin Craftgate tarafından Gönderildiği Kontrolü
Webhook URL inize gelen isteklerin Craftgate sisteminden gönderildiğini bilgisinin teyit edilebilmesi için, HTTP headerları arasında gönderilen x-cg-signature-v1
değerinin kontrol edilmesi gerekmektedir. x-cg-signature-v1
değeri, istek içerisinde gönderilen -payload dışındaki- alanların String
olarak birleştirilmesi, bu değerin HmacSHA256
algoritması ile hash'lenmesi, sonrasında oluşan yeni değerin Base64
ile encode edilmesi ile hesaplanır. Hesaplama sırasında SHA-256 çıktısının digest (bytes), byte encoding'inin de UTF-8 olması gerektiği unutmayınız.
Örnek olarak, API entegrasyonu kullanılarak, 2022-01-01T09:30:32 GMT+3 (epoch: 1641018632) tarihinde başarılı bir şekilde alınan 2150001 id'li ödeme için eventType+eventTimestamp+status+payloadId
bilgileri String olarak birleştirildiğinde API_AUTH1641018632SUCCESS2150001
değeri oluşmaktadır. Bu değeri Craftgate Üye işyeri paneli Ayarlar kısmında bulunan Üye İşyeri Webhook Key
değeri olan 1Q2w3E4r5T6y7U8i9Op
ile hash'leyip, Base64 ile encode ettiğinizde, sonuç eNXKxfxUpVmp/wBrNUmOLjNXL0sYl0mh1s/rEB8K8NU=
şeklinde oluşacaktır. Değer Craftgate tarafından header'da iletilen x-cg-signature-v1
değeri ile karşılaştırılabilir.
Algoritmanın detayları için client'larımıza ait aşağıdaki kodlar incelenebilir.
Webhook Örnek Veri
İşlem Tipi | Örnek Veri |
---|---|
API_AUTH | {"eventType": "API_AUTH","eventTime": "2023-04-13T14:15:32.123456","eventTimestamp": 1681384532,"status": "SUCCESS","payloadId": "271591"} |
API_VERIFY_AND_AUTH | {"eventType": "API_VERIFY_AND_AUTH","eventTime": "2023-04-13T14:15:32.123456","eventTimestamp": 1681384532,"status": "SUCCESS","payloadId": "271591"} |
CHECKOUTFORM_AUTH | {"eventType": "CHECKOUTFORM_AUTH","eventTime": "2023-04-13T13:58:17.123456","eventTimestamp": 1681383497,"status": "SUCCESS","payloadId": "14755c78-2e55-4171-ade2-7c9e7dc453ef"} |
THREEDS_VERIFY | {"eventType": "THREEDS_VERIFY","eventTime": "2023-04-13T14:13:12.123456","eventTimestamp": 1681384392,"status": "SUCCESS","payloadId": "271591"} |
REFUND | {"eventType": "REFUND","eventTime": "2023-04-14T11:27:17.123456","eventTimestamp": 1681460837,"status": "SUCCESS","payloadId": "24"} |
REFUND_TX | {"eventType": "REFUND_TX","eventTime": "2023-04-14T11:27:22.123456","eventTimestamp": 1681460842,"status": "SUCCESS","payloadId": "144"} |
PAYOUT_COMPLETED | {"eventType": "PAYOUT_COMPLETED","eventTime": "2023-04-14T10:41:07.123456","eventTimestamp": 1681458067,"status": "SUCCESS","payloadId": "50","payload": {"settlementFileId": 50,"settlementType": "SETTLEMENT"}} |
AUTOPILOT | {"eventType": "AUTOPILOT","eventTime": "2023-04-14T11:07:31.123456","eventTimestamp": 1681459651,"status": "SUCCESS","payloadId": "62-garanti-59","payload": {"posAlias": "62-garanti-59","posName": "garanti","nonThreeDsStatus": "PASSIVE","threeDsStatus": "ACTIVE","notificationsEnabled": false}} |
WALLET_CREATED | {"eventType": "WALLET_CREATED", "eventTime": "2023-04-26T16:16:47.123456", "eventTimestamp": 1682515007, "status": "SUCCESS", "payloadId": "34", "payload": { "currency": "TRY", "walletId": 34, "memberId": 39, "negativeAmountLimit": 0 } } |
WALLET_TX_CREATED | {"eventType": "WALLET_TX_CREATED", "eventTime": "2023-04-28T15:13:12.123456", "eventTimestamp": 1682683992, "status": "SUCCESS", "payloadId": "34", "payload": { "currency": "TRY", "walletTransactionType": "PAYMENT_REDEEM", "id": 158, "memberId": 39, "transactionId": 1, "walletId": 34, "amount": -10 } } |
BNPL_NOTIFICATION | {"eventType": "BNPL_NOTIFICATION", "eventTime": "2023-11-01T00:00:00.123456", "eventTimestamp": 1699477200, "status": "SUCCESS", "payloadId": "204", "payload": {"additionalAction": "APPROVAL_REQUIRED"}} |
BANK_ACCOUNT_TRACKING_RECORD | {"eventType": "BANK_ACCOUNT_TRACKING_RECORD","eventTime": "2023-07-24T10:27:00.123456","eventTimestamp": 1690208820,"status": "SUCCESS","payloadId": "537","payload": {"currency": "TRY","recordDate": "2016-02-05T12:24:41","senderName": "Alican Akkuş","key": "160205987654321","recordType": "RECEIVE","description": "7654321 numaralı sipariş","senderIban": "TR870006400000111351052758","amount": 81500}} |
MULTI_PAYMENT_COMPLETED | {"eventType": "MULTI_PAYMENT_COMPLETED", "eventTime": "2024-04-05T15:40:02.123456", "eventTimestamp": 1712320802, "status": "SUCCESS", "payloadId": "774a7c17-1a47-4104-a562-35a521ad3ac7", "payload": { "paymentIds": [ 11914 ], "conversationId": "convId-123", "externalId": "externalId-123", "multiPaymentStatus": "COMPLETED", "token": "774a7c17-1a47-4104-a562-35a521ad3ac7" } } |
BKM_EXPRESS_PAYMENT_NOTIFICATION | {"eventType":"BKM_EXPRESS_PAYMENT_NOTIFICATION","eventTime":"2024-06-26T18:56:37.123456","eventTimestamp":1719417397,"status":"SUCCESS","payloadId":"dcfdc163-0545-46d7-8f86-5a11718e56ec","payload":{"ticketId":"dcfdc163-0545-46d7-8f86-5a11718e56ec","paidPrice":"1,00","installment":1,"price":"1,00"}} |