[GH-ISSUE #268] Garanti "Guvenlik Kodu hatalı" Hatası #142

Open
opened 2026-03-03 15:43:27 +03:00 by kerem · 7 comments
Owner

Originally created by @yorulmazsinan on GitHub (Apr 18, 2025).
Original GitHub issue: https://github.com/mewebstudio/pos/issues/268

Laravel paketinizi kullanarak, entegrasyonumuz tamamlandı. get3DFormData() ile aşağıdaki URL’ye form gönderiyoruz:

🔗 https://sanalposprov.garanti.com.tr/servlet/gt3dengine

Ancak form gönderimi sonrası 3D Secure ekranı hiç açılmadan mdstatus=7 ve "Guvenlik Kodu hatalı" hatası alıyoruz.

Kart bilgileri %100 doğru, farklı kartlarla denememize rağmen sonuç aynı.

get3DFormData() çıktısı ise şu şekilde:

Array
(
[gateway] => https://sanalposprov.garanti.com.tr/servlet/gt3dengine
[method] => POST
[inputs] => Array
(
[secure3dsecuritylevel] => 3D
[mode] => PROD
[apiversion] => 512
[terminalprovuserid] => PROVAUT
[terminaluserid] => PROVAUT
[terminalmerchantid] => ******
[terminalid] => ********
[txntype] => sales
[txnamount] => 100
[txncurrencycode] => 949
[txninstallmentcount] =>
[orderid] => ade62f70f9793f64c7
[successurl] => https://.com/payment-status?orderId=ade62f70f9793f64c7
[errorurl] => https://
.com/payment-status?orderId=ade62f70f9793f64c7
[customeripaddress] => ...
[cardnumber] => ****************
[cardexpiredatemonth] => **
[cardexpiredateyear] => **
[cardcvv2] => ***
[secure3dhash] => ******************************************************************
)
)

Yani form doğru bir şekilde oluşuyor, bu aşamadan sonra bankanın 3d doğrulama ekranını görmemiz lazım ama geri dönüp hata alıyoruz. Bazı log kayıtlarımız ise şunlar:

[2025-04-18 23:21:32] local.DEBUG: switching mode {"is_test_mode":false}
[2025-04-18 23:21:32] local.INFO: Sipariş güncellendi {"order_id":34110,"products_count":1}
[2025-04-18 23:21:32] local.DEBUG: preparing 3D form data
[2025-04-18 23:21:32] local.DEBUG: "3D Form" verileri gönderimi: {"bank":"garanti","card_association":"master","install":0}
[2025-04-18 23:21:39] local.DEBUG: switching mode {"is_test_mode":false}
[2025-04-18 23:21:39] local.DEBUG: payment called {"card_provided":false,"tx_type":"pay","model":"3d"}
[2025-04-18 23:21:39] local.ERROR: 3d auth fail {"md_status":"7"}
[2025-04-18 23:21:39] local.DEBUG: mapping 3D payment data {
"3d_auth_response": {
"mdstatus": "7",
"mderrormessage": "Guvenlik Kodu hatali",
"errmsg": "Guvenlik Kodu hatali",
"clientid": "",
"oid": "
",
"response": "Error",
"procreturncode": "99",
"apiversion": "512",
"orderid": "
",
"txninstallmentcount": null,
"terminaluserid": "*******",
"secure3dhash": "
",
"secure3dsecuritylevel": "3D",
"txncurrencycode": "949",
"errorurl": "https://
.com/payment-status?orderId=
",
"terminalmerchantid": "
",
"mode": "PROD",
"terminalprovuserid": "*******",
"txnamount": "100",
"successurl": "https://
.com/payment-status?orderId=
",
"txntype": "sales",
"customeripaddress": "
.
.
.
",
"terminalid": "
"
},
"provision_response": null
}
[2025-04-18 23:21:39] local.ERROR: Ödeme hatası {
"error_message": "Guvenlik Kodu hatali",
"error_code": "99",
"procreturncode": "Yok",
"mdstatus": "Yok",
"response": {
"transaction_time": null,
"payment_model": "3d",
"batch_num": null,
"all": null,
"transaction_security": "MPI fallback",
"md_status": "7",
"masked_number": null,
"tx_status": null,
"eci": null,
"cavv": null,
"md_error_message": "Guvenlik Kodu hatali",
"3d_all": {
"mdstatus": "7",
"mderrormessage": "Guvenlik Kodu hatali",
"errmsg": "Guvenlik Kodu hatali",
"clientid": "
",
"oid": "
",
"response": "Error",
"procreturncode": "99",
"apiversion": "512",
"orderid": "
",
"txninstallmentcount": null,
"terminaluserid": "*******",
"secure3dhash": "
",
"secure3dsecuritylevel": "3D",
"txncurrencycode": "949",
"errorurl": "https://
.com/payment-status?orderId=
",
"terminalmerchantid": "
",
"mode": "PROD",
"terminalprovuserid": "*******",
"txnamount": "100",
"successurl": "https://
.com/payment-status?orderId=
",
"txntype": "sales",
"customeripaddress": "
.
.
.
",
"terminalid": "
"
},
"order_id": "
****",
"transaction_id": null,
"transaction_type": "pay",
"installment_count": 0,
"currency": "TRY",
"amount": 1.0,
"auth_code": null,
"ref_ret_num": null,
"proc_return_code": "99",
"status": "declined",
"status_detail": "general_error",
"error_code": "99",
"error_message": "Guvenlik Kodu hatali"
}
}

Laravel paketi 1.2 sürümünü kullanıyorum.

Originally created by @yorulmazsinan on GitHub (Apr 18, 2025). Original GitHub issue: https://github.com/mewebstudio/pos/issues/268 Laravel paketinizi kullanarak, entegrasyonumuz tamamlandı. get3DFormData() ile aşağıdaki URL’ye form gönderiyoruz: 🔗 https://sanalposprov.garanti.com.tr/servlet/gt3dengine Ancak form gönderimi sonrası 3D Secure ekranı hiç açılmadan mdstatus=7 ve "Guvenlik Kodu hatalı" hatası alıyoruz. Kart bilgileri %100 doğru, farklı kartlarla denememize rağmen sonuç aynı. get3DFormData() çıktısı ise şu şekilde: Array ( [gateway] => https://sanalposprov.garanti.com.tr/servlet/gt3dengine [method] => POST [inputs] => Array ( [secure3dsecuritylevel] => 3D [mode] => PROD [apiversion] => 512 [terminalprovuserid] => PROVAUT [terminaluserid] => PROVAUT [terminalmerchantid] => ****** [terminalid] => ******** [txntype] => sales [txnamount] => 100 [txncurrencycode] => 949 [txninstallmentcount] => [orderid] => ade62f70f9793f64c7 [successurl] => https://***********.com/payment-status?orderId=ade62f70f9793f64c7 [errorurl] => https://***********.com/payment-status?orderId=ade62f70f9793f64c7 [customeripaddress] => ***.**.***.** [cardnumber] => **************** [cardexpiredatemonth] => ** [cardexpiredateyear] => ** [cardcvv2] => *** [secure3dhash] => ****************************************************************** ) ) Yani form doğru bir şekilde oluşuyor, bu aşamadan sonra bankanın 3d doğrulama ekranını görmemiz lazım ama geri dönüp hata alıyoruz. Bazı log kayıtlarımız ise şunlar: [2025-04-18 23:21:32] local.DEBUG: switching mode {"is_test_mode":false} [2025-04-18 23:21:32] local.INFO: Sipariş güncellendi {"order_id":34110,"products_count":1} [2025-04-18 23:21:32] local.DEBUG: preparing 3D form data [2025-04-18 23:21:32] local.DEBUG: "3D Form" verileri gönderimi: {"bank":"garanti","card_association":"master","install":0} [2025-04-18 23:21:39] local.DEBUG: switching mode {"is_test_mode":false} [2025-04-18 23:21:39] local.DEBUG: payment called {"card_provided":false,"tx_type":"pay","model":"3d"} [2025-04-18 23:21:39] local.ERROR: 3d auth fail {"md_status":"7"} [2025-04-18 23:21:39] local.DEBUG: mapping 3D payment data { "3d_auth_response": { "mdstatus": "7", "mderrormessage": "Guvenlik Kodu hatali", "errmsg": "Guvenlik Kodu hatali", "clientid": "********", "oid": "********************", "response": "Error", "procreturncode": "99", "apiversion": "512", "orderid": "********************", "txninstallmentcount": null, "terminaluserid": "*******", "secure3dhash": "********************************************************************************************************", "secure3dsecuritylevel": "3D", "txncurrencycode": "949", "errorurl": "https://***********.com/payment-status?orderId=********************", "terminalmerchantid": "******", "mode": "PROD", "terminalprovuserid": "*******", "txnamount": "100", "successurl": "https://***********.com/payment-status?orderId=********************", "txntype": "sales", "customeripaddress": "***.**.***.**", "terminalid": "********" }, "provision_response": null } [2025-04-18 23:21:39] local.ERROR: Ödeme hatası { "error_message": "Guvenlik Kodu hatali", "error_code": "99", "procreturncode": "Yok", "mdstatus": "Yok", "response": { "transaction_time": null, "payment_model": "3d", "batch_num": null, "all": null, "transaction_security": "MPI fallback", "md_status": "7", "masked_number": null, "tx_status": null, "eci": null, "cavv": null, "md_error_message": "Guvenlik Kodu hatali", "3d_all": { "mdstatus": "7", "mderrormessage": "Guvenlik Kodu hatali", "errmsg": "Guvenlik Kodu hatali", "clientid": "********", "oid": "********************", "response": "Error", "procreturncode": "99", "apiversion": "512", "orderid": "********************", "txninstallmentcount": null, "terminaluserid": "*******", "secure3dhash": "********************************************************************************************************", "secure3dsecuritylevel": "3D", "txncurrencycode": "949", "errorurl": "https://***********.com/payment-status?orderId=********************", "terminalmerchantid": "******", "mode": "PROD", "terminalprovuserid": "*******", "txnamount": "100", "successurl": "https://***********.com/payment-status?orderId=********************", "txntype": "sales", "customeripaddress": "***.**.***.**", "terminalid": "********" }, "order_id": "********************", "transaction_id": null, "transaction_type": "pay", "installment_count": 0, "currency": "TRY", "amount": 1.0, "auth_code": null, "ref_ret_num": null, "proc_return_code": "99", "status": "declined", "status_detail": "general_error", "error_code": "99", "error_message": "Guvenlik Kodu hatali" } } Laravel paketi 1.2 sürümünü kullanıyorum.
Author
Owner

@nuryagdym commented on GitHub (Apr 19, 2025):

Merhabalar,
Garantide test ortamda denedigimde calisiyor, bunlarin test ortaminda 3d onay sayfasi acilmiyor, direk basarili cevap geliyor, yani ayni prod ortami gibi calismiyor.

Anladigim kadariyla amount'u 1 TL vermissiniz, garanti mi bilmiyorum, ama bir bankada dusuk miktar oldugunda hata almistim. 10TL deneyebilir misiniz.

Sorun devam ederse bankaya sorar misiniz, cevabini da paylasirsaniz sevinirim.

<!-- gh-comment-id:2816576395 --> @nuryagdym commented on GitHub (Apr 19, 2025): Merhabalar, Garantide test ortamda denedigimde calisiyor, bunlarin test ortaminda 3d onay sayfasi acilmiyor, direk basarili cevap geliyor, yani ayni prod ortami gibi calismiyor. Anladigim kadariyla amount'u 1 TL vermissiniz, garanti mi bilmiyorum, ama bir bankada dusuk miktar oldugunda hata almistim. 10TL deneyebilir misiniz. Sorun devam ederse bankaya sorar misiniz, cevabini da paylasirsaniz sevinirim.
Author
Owner

@topraksu28 commented on GitHub (Apr 25, 2025):

Merhaba Sinan Bey,
Aynı sorunu bende yaşamaktayım sonu nasıl hallettiğini rica etsem bizimlede paylaşır mısınız?

<!-- gh-comment-id:2829723876 --> @topraksu28 commented on GitHub (Apr 25, 2025): Merhaba Sinan Bey, Aynı sorunu bende yaşamaktayım sonu nasıl hallettiğini rica etsem bizimlede paylaşır mısınız?
Author
Owner

@sahinyghs commented on GitHub (May 9, 2025):

Merhaba, defalarca denedim farklı yöntemler ve farklı ortamlarda. Çözüme ulaşabildiniz mi?

<!-- gh-comment-id:2864750311 --> @sahinyghs commented on GitHub (May 9, 2025): Merhaba, defalarca denedim farklı yöntemler ve farklı ortamlarda. Çözüme ulaşabildiniz mi?
Author
Owner

@yorulmazsinan commented on GitHub (May 20, 2025):

Merhaba, defalarca denedim farklı yöntemler ve farklı ortamlarda. Çözüme ulaşabildiniz mi?

Maalesef, çözüme bende ulaşamadım. Her şey düzgün gözüküyor. Hatta bu pakette QNB, İşbank ve Akbank deniyorum çalışıyor. Ama Yapıkredi ve Garanti'de hata alıyorum. Garanti'nin kendi dokümantasyonunu indirdim bakalım bir karşılaştıracağım.

<!-- gh-comment-id:2895180927 --> @yorulmazsinan commented on GitHub (May 20, 2025): > Merhaba, defalarca denedim farklı yöntemler ve farklı ortamlarda. Çözüme ulaşabildiniz mi? Maalesef, çözüme bende ulaşamadım. Her şey düzgün gözüküyor. Hatta bu pakette QNB, İşbank ve Akbank deniyorum çalışıyor. Ama Yapıkredi ve Garanti'de hata alıyorum. Garanti'nin kendi dokümantasyonunu indirdim bakalım bir karşılaştıracağım.
Author
Owner

@nuryagdym commented on GitHub (Jun 3, 2025):

Bankadan sormayi deneyiniz. Onlardan faydali bir donus olmazsa, isterseniz online meeting ile birlikte bir debugging yapabiliriz.
Bu arada elinizde guncel GarantiPos dokumani varsa paylasir misiniz.

<!-- gh-comment-id:2934288577 --> @nuryagdym commented on GitHub (Jun 3, 2025): Bankadan sormayi deneyiniz. Onlardan faydali bir donus olmazsa, isterseniz online meeting ile birlikte bir debugging yapabiliriz. Bu arada elinizde guncel GarantiPos dokumani varsa paylasir misiniz.
Author
Owner

@sahinyghs commented on GitHub (Jun 10, 2025):

Merhaba, maalesef çözüm olmadı direkt olarak garanti bankası ile entegrasyonu tamamladık.

<!-- gh-comment-id:2958604391 --> @sahinyghs commented on GitHub (Jun 10, 2025): Merhaba, maalesef çözüm olmadı direkt olarak garanti bankası ile entegrasyonu tamamladık.
Author
Owner

@yorulmazsinan commented on GitHub (Jun 20, 2025):

Arkadaşlar sorunu çözdüm. İşlem önceliği sorunuymuş tamamen. Detaylı kodları paylaşacağım buradan.

<!-- gh-comment-id:2991495466 --> @yorulmazsinan commented on GitHub (Jun 20, 2025): Arkadaşlar sorunu çözdüm. İşlem önceliği sorunuymuş tamamen. Detaylı kodları paylaşacağım buradan.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/pos#142
No description provided.