mewebstudio / pos

Türk bankaları için sanal pos paketi (PHP)
Other
265 stars 104 forks source link

Akbank 3D Pay Hosting callbackUrl Hk. #165

Closed FikretCin closed 11 months ago

FikretCin commented 1 year ago

Merhabalar;

Akbank 3D pay hosting kullanımında kullanıcı 3D sayfasına çıktıktan sonra şifre onayını verince yada vazgeçince fail yada ok urle nadirde olsa herhangi bir bildirim gelmiyor ve işlem yarıda kalıyor. Sorun tüm kullanıcılarda yaşanmasada yaklaşık 100 ödemede 1 yaşanmaktadır. Akbanka ticket açıp sorunu anlattık düzeltmemizi istedikleri noktayı belirttiler.

Akbank Gateway ile istek gönderirken okUrl ve failUrl e ek olarak callbackurl eklememizi istediler.

ilgili dökümanıda ekte iletiyorum

Nestpay_Entegrasyon_Dokumani_3D_PayHosting.pdf

nuryagdym commented 1 year ago

Merhabalar,

callbackUrl === failUrl olacak sekilde guncellesek ise yarar mi? Diger turlu order'a callbackUrl diye yeni parametre eklenmesi gerekecek.

Dokumantasyon da eski, yeni sha512 hashlemeye gore ornek yok.

Uygunsa bu hafta sonu eklerim.

FikretCin commented 1 year ago

Genelde zaten çoğu sistem ok ve fail i tek url kullanıyor, gelen response a göre redirectlerini gerçekleştiriyor. Bence zararı olmayacaktır dediğiniz gibi güncellerseniz sorun hallolur

FikretCin commented 1 year ago

Sha512 versiyonunu da rica ettim ilettiler.

Hash_Versiyon_3_Dökümantasyon.pdf

nuryagdym commented 1 year ago

callbackUrl ekleyerek test ortamda 3D Pay Hosting odeme denedim, bir turlu bu callbackUrl'e call yada redirect yaptiramadim.

Test ortamda 3D onay sayfada bu islemler mevcut: image

Hangi durumlarda callbackUrl'a redirect veya istek gondermesi gerekir?

FikretCin commented 12 months ago

Akbank a sorup size dönüş yapayım.

FikretCin commented 12 months ago

Akbank tarafından cevap geldi.

Merhaba,

CallbackURL'li ye sonuç gönderilmeden önce 3D tarayıcının kapatılması gibi iletişim aksaklıklarında sipariş sonucunun üye işyerine gönderilmesi için kullanılır. Bu durumda sizin callback için bir URL adres eklemeniz gereklidir. Log kontrolü yapıyorsanız loglardan kontrol edebilirsiniz. Veya arayüzden kontrol sağlayabilirsiniz.

İyi çalışmalar.

nuryagdym commented 12 months ago

Merhaba, o zaman bu durumun reproduce edilmesi zor olur. Anladigim kadariyla, callbackUrl'a banka istek gonderir, failUrl'a redirect yaptigi gibi redirect yapmaz. O yuzden ekstra ayri bir URL eklenmesi gerekiyor, failUrl ile ayni olmasi mantikli olmaz.

Bu tarz durumlar icin V1.0.0 versiyonda destek ekledim, ama hala bitmedi, bu yil sonuna kadar biter diye dusunuyorum. O zamana kadar beklemenizi rica ediyorum.

FikretCin commented 12 months ago

Benim şahsi görüşüm v1 e daha sağlıklı ekleme yapabilmeniz için bence şimdiden callbackUrl === failUrl olarak ekliyelim. Bir süre kullanalım bankadan ve son kullanıcılardan aldığımız dönüşler callbackin nasıl bir yapıda olması gerektiği bilgisini bize gösterecektir yanlış bir yöntemse v1 i daha stabil kılmak adına geliştirme olur, yok sıkıntı çıkartmazsa bu şekilde kalır.

nuryagdym commented 12 months ago

v1'de bu tur ozel degerleri dynamic olarak (kutuphaneyi guncellemeye gerek kalmadan) eklenebilinecek.

Bu yuzden stability sorunu olusmaz. Ornek:

https://github.com/mewebstudio/pos/blob/refactoring-08/examples/_common-codes/3d/form.php#L58-L74

FikretCin commented 12 months ago

Güzel geliştirme elinize sağlık, ben yinede denemek istiyorum frokladığım projede deneyip bir süre callbackUrl === failUrl olarak kullanacağım dilerseniz sizede bilgi veririm. Şimdilik yapacak bişi kalmadı görüşmek üzere ilginiz için teşekkürler.

nuryagdym commented 12 months ago

evet bilgi verirseniz sevinirim, nasil bir veri gonderdiklerini merak ediyorum.

FikretCin commented 12 months ago

Yaptığım işlemleri ve gelen verileri adım adım iletiyorum.

  1. expose.dev üzerinden bir live server kurdum.

  2. mews/pos kurulumunu yaptım.

  3. akbank (ESTv3) konfigürasyonunu yaptım.

  4. fail ve success urllere aşağıdaki iki urli atadım. 'success_url' => 'https://zfnxulyr5i.sharedwithexpose.com/ok.php', 'fail_url' => https://zfnxulyr5i.sharedwithexpose.com/fail.php',

  5. vendor\mews\pos\src\DataMapper\EstV3PosRequestDataMapper.php dosyasındaki create3DFormData methoduna aşağıdaki eklemeyi yaptım $data['inputs']['callbackUrl'] = 'https://zfnxulyr5i.sharedwithexpose.com/callback.php';

  6. 3D sayfasına gittim Yes butonuna basıp tarayıcıyı kapadım, tekrarladım No butonuna basarak 3-4 kez tekrarladım ve expose ekranından callbacke gelecek verileri takip ettim. image

  7. Aldığım yanıtlar şu şekilde Başarılı işlem : $postParameters = [ 'TranType' => 'Auth', 'mdErrorMsg' => 'Y-status/Challenge authentication via ACS: https://3ds-acs.test.modirum.com/mdpayacs/creq;token=285795591.1699467309._SD6LWcUpcH', 'Email' => 'mail@customer.com', 'clientid' => '700655000200', 'Ecom_Payment_Card_ExpDate_Year' => '26', 'EXTRA_HOSTDATE' => '1108-211515', 'eci' => '05', 'EXTRA_MERCHANTID' => '655000200', 'merchantName' => 'İşbank 3d_pay Store', 'PAResSyntaxOK' => 'true', 'xid' => 'LVYh/MzhC/7NFHAmvHZ5yaLnbD4=', 'md' => '454671:F08524A0B3C4AE53269BF833C353CB09A98078AA3D64DD463A5FA98B7E537208:4014:##700655000200', 'callbackUrl' => 'https://zfnxulyr5i.sharedwithexpose.com/callback.php', 'HostRefNum' => '331200739550', 'maskedCreditCard' => '4546 71 ** 7894', 'dsId' => '1', 'rnd' => 'zh/G2AnBFzH0864gjS2k', 'encoding' => 'ISO-8859-9', 'version' => '2.0', 'HASH' => '8vuyPVytrNuoZYvJMeWG4sKCLH62+JvzEgEcbMKsqLDMsG1sV1JNKgq2EuJeVCUSbL1KhMo+nj4jGYSqlvGbOg==', 'cavv' => 'ABABAEg5kwAAAABllJMSdVWUGZE=', 'EXTRA_AVSAPPROVE' => 'Y', 'txstatus' => 'Y', 'SettleId' => '2647', 'okUrl' => 'https://zfnxulyr5i.sharedwithexpose.com/ok.php', 'firmaadi' => 'John Doe', 'EXTRA_TERMINALID' => '00655020', 'ErrMsg' => '', 'Ecom_Payment_Card_ExpDate_Month' => '12', 'failUrl' => 'https://zfnxulyr5i.sharedwithexpose.com/fail.php', 'oid' => '1699467299', 'ProcReturnCode' => '00', 'sID' => '1', 'PAResVerified' => 'true', 'ACQBIN' => '406456', 'digest' => 'digest', 'MaskedPan' => '454671***7894', 'currency' => '949', 'callbackCall' => 'true', 'lang' => 'tr', 'TransId' => '23312VPOH10152', 'EXTRA_CARDISSUER' => 'ZİRAAT BANKASI', 'amount' => '1.01', 'AuthCode' => 'P50847', 'payResults_dsId' => '1', 'mdStatus' => '1', 'EXTRA_CARDBRAND' => 'VISA', 'ReturnOid' => '1699467299', 'Response' => 'Approved', 'acqStan' => '739550', 'EXTRA_TRXDATE' => '20231108 21:15:14', 'storetype' => '3d_pay_hosting', 'merchantID' => '700655000200', 'clientIp' => '212.154.94.36', 'EXTRA_AVSERRORCODEDETAIL' => 'avshatali-avshatali-avshatali-avshatali-', 'taksit' => '', 'hashAlgorithm' => 'ver3', 'TRANID' => '', 'NATIONALIDNO' => ' ', ];

Hatalı işlem: $postParameters = [ 'mdErrorMsg' => 'Guvenlik Kodu hatali.', 'clientid' => '700655000200', 'Email' => 'mail@customer.com', 'Ecom_Payment_Card_ExpDate_Year' => '26', 'ErrMsg' => 'Guvenlik Kodu hatali.', 'Ecom_Payment_Card_ExpDate_Month' => '12', 'failUrl' => 'https://zfnxulyr5i.sharedwithexpose.com/fail.php', 'oid' => '1699467027', 'ProcReturnCode' => '99', 'merchantName' => 'İşbank 3d_pay Store', 'xid' => '3XuvyGRbQ6Vzz8vm+ZOvmd/+Ay0=', 'currency' => '949', 'callbackUrl' => 'https://zfnxulyr5i.sharedwithexpose.com/callback.php', 'MaskedPan' => '454671*7894', 'callbackCall' => 'true', 'lang' => 'tr', 'HASHPARAMS' => 'clientid:oid:rnd:', 'amount' => '1.01', 'maskedCreditCard' => '4546 71 **** 7894', 'mdStatus' => '7', 'rnd' => 'p53APJWHf8nEWilbSdBs', 'encoding' => 'ISO-8859-9', 'ErrCode' => '3D-1004', 'HASH' => 'bnuFNpc1jKDPSRfdWIitoalkmrc=', 'Response' => 'Error', 'islemtipi' => 'Auth', 'HASHPARAMSVAL' => '7006550002001699467027p53APJWHf8nEWilbSdBs', 'storetype' => '3d_pay_hosting', 'clientIp' => '212.154.94.36', 'taksit' => '', 'okUrl' => 'https://zfnxulyr5i.sharedwithexpose.com/ok.php', 'firmaadi' => 'John Doe', 'NATIONALIDNO' => ' ', ];

  1. Daha sonra normal 3D yanıtları ile aldığımız bu callback cevaplarını karşılaştırdım. Aynı veriler geliyor.

Bu işlemler sonucu callbackUrl === failUrl tezimizin yapılabileceğini düşünüyorum sizin fikriniz nedir ?

@nuryagdym

FikretCin commented 11 months ago

@nuryagdym Deneme şansınız oldumu acaba ?

nuryagdym commented 11 months ago

@FikretCin maalesef hayir, ama bu hafta yuksek ihtimalle bakarim.

Anlattiginiza bakilirsa callbackUrl === failUrl yapmak mantikli olur, ve v1'i release beklemeden, bu hafta bir guncelleme cikarim

FikretCin commented 11 months ago

İlginiz için teşekkürler sabırsızlıkla bekliyorum

nuryagdym commented 11 months ago

Merhabalar, guncellemeleri yaptim 0.16.0 versiyon olarak ciktim

FikretCin commented 11 months ago

Teşekkürler ellerinize sağlık

nuryagdym commented 8 months ago

@FikretCin callbackUrl'in eklenmesi baskalar icin sorun olusturmaya basladi: https://github.com/mewebstudio/pos/issues/176

yeni bir guncellemeyle callbackUrl ve refreshTime bilgileri kaldirmayi dusunuyorum.

v1.0.0'da bunu isteyen kendisi ekleyebilir, v1'i Nisan ayina kadar yayina alirim diye dusunuyorum