Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ziraat (EST) POS "Hash Mismatch !" Exception Hk. #169

Closed
FikretCin opened this issue Dec 11, 2023 · 7 comments
Closed

Ziraat (EST) POS "Hash Mismatch !" Exception Hk. #169

FikretCin opened this issue Dec 11, 2023 · 7 comments
Labels
bug Something isn't working payten ziraat

Comments

@FikretCin
Copy link
Contributor

EstV3POS'ta sadece Ziraat kullanırken karşılaşılan bir durum söz konusu. Gateway gayet sağlıklı çalışıyor ödemeleri alıyorken nedenini bilmediğimiz bir şekilde sıkça Hash Mismatch exceptionuna takılıyor. Aşağıda ilettiğim örnekte mdStatus, mdErrorMsg, ProcReturnCode, Response gibi işlemin başarılı olma durumunu kontrol eden tüm parametreler olumlu olmasına rağmen işlem gerçekleşmiyor.

"TranType": "Auth",
"mdErrorMsg": "Success",
"Email": "@.com",
"clientid": "190779401",
"Ecom_Payment_Card_ExpDate_Year": "",
"ErrMsg": "",
"Ecom_Payment_Card_ExpDate_Month": "
",
"failUrl": "https:///34444/",
"eci": "02",
"oid": "34444",
"ProcReturnCode": "00",
"merchantName": "
",
"EXTRA_KAZANILANPUAN": "000000000000",
"xid": "QXHP5xn1YbqwEgrqN7QcMCRnbf4=",
"md": "534981:0ACFEF361050442AF716059AFB4C8C2CFBC9CDF1328B3806BC90DE46FA5DE5DD:4221:##190779401",
"EXTRA_KULLANILABILIRPUAN": "000000000027",
"EXTRA_CARDHOLDERNAME": "AD* ŞE*",
"MaskedPan": "5349813855",
"callbackUrl": "https://
/34444/",
"currency": "949",
"callbackCall": "true",
"lang": "tr",
"TransId": "23345OVZD19023939",
"EXTRA_CARDISSUER": "ZİRAAT BANKASI",
"EXTRA_KULLANILANPUAN": "000000000000",
"HostRefNum": "334514704016",
"amount": "1",
"maskedCreditCard": "5349 81
**** 3855",
"AuthCode": "433766",
"dsId": "2",
"mdStatus": "1",
"EXTRA_CARDBRAND": "MASTERCARD",
"rnd": "w995JfTZOAnZEJlvkcg3",
"encoding": "UTF-8",
"ReturnOid": "34444",
"HASH": "UfhgMdF8jjQA8fnU96vQSFkI+PmvbMrU2QiJ/mKQu5laq/PTOJyFR4655MVb/T76ZPOmPmubli4X1V3FYfgHKg==",
"Response": "Approved",
"cavv": "ABIBAVEAAP/DAAABAAAAAAAAAAA=",
"acqStan": "704016",
"EXTRA_TRXDATE": "20231211 14:21:25",
"storetype": "3d_pay",
"clientIp": ".237.164.",
"SettleId": "112",
"taksit": "",
"okUrl": "https://**/34444/",
"hashAlgorithm": "ver3",
"firmaadi": "
***",
"NATIONALIDNO": ""

Not : Veriler **** ile gizlenmiştir ihtiyaç duyulması halinde özelden iletebilirim

@nuryagdym
Copy link
Collaborator

nuryagdym commented Dec 11, 2023

Gecende biri bununla ilgili issue acmisti, orda kendisi kodda kutuphane kodu calismadan bankadan gelen POST degerleri guncelliyormus.
Boyle bir durum yok ise

public function create3DHash(AbstractPosAccount $account, array $requestData, ?string $txType = null): string
burdaki kodu ayni bankanin ornek kodlardaki olacak sekilde guncelleyip denenmesi gerekiyor.

Ben bankadan kopyalarken hash hesaplama algorithmasina iyilestirme yaptim diye hatirliyorum, o yuzden bankanin verdigi ornek ile ayni sekilde guncellenip denenmesi gerekiyor

@FikretCin
Copy link
Contributor Author

FikretCin commented Dec 12, 2023

Payten ile iletişime geçtim, ilettikleri hash string için gerekli parametrelerin dışında bir kaç tane daha fazladan post_data içerisinde key göndermekteler. Örneğin "NATIONALIDNO": "" parametresi hash içerisine dahil edilmemesi gereken bir parametreymiş bunun yanı sıra bazı isteklerde "EXTRA_TAKSITTUTARI_1:"000000000025" gibi veriler geliyor Ziraat tarafından bu nedenle ksort yapılmadan önce arrayden gereksiz parametrelerin temizlenmesi gerekiyor.

Issueya örnek olarak eklediğim istek için "NATIONALIDNO": "" parametresini kaldırarak doğru sonuca ulaşabildim.

Payten tarafındna iletilen hash sıralaması aşağıdaki gibidir.

'acqStan',
'amount',
'AuthCode',
'callbackCall',
'callbackUrl',
'cavv',
'clientid',
'clientIp',
'currency',
'dsId',
'eci',
'Ecom_Payment_Card_ExpDate_Month',
'Ecom_Payment_Card_ExpDate_Year',
'Email',
'ErrMsg',
'EXTRA_CARDBRAND',
'EXTRA_CARDHOLDERNAME',
'EXTRA_CARDISSUER',
'EXTRA_KAZANILANPUAN',
'EXTRA_KULLANILABILIRPUAN',
'EXTRA_KULLANILANPUAN',
'EXTRA_TRXDATE',
'failUrl',
'firmaadi',
'hashAlgorithm',
'HostRefNum',
'lang',
'maskedCreditCard',
'MaskedPan',
'md',
'mdErrorMsg',
'mdStatus',
'merchantName',
'oid',
'okUrl',
'ProcReturnCode',
'Response',
'ReturnOid',
'rnd',
'SettleId',
'storetype',
'taksit',
'TransId',
'TranType',
'xid',

Edit : EXTRA_TAKSITTUTARI_X parametreleri body içerisinde ise hashe dahilmiş, sadece NATIONALIDNO parametresini unset etmemiz yeterli oldu.

@nuryagdym
Copy link
Collaborator

o zaman cozum olarak hash hesaplamadan once

  • EXTRA_TAKSITTUTARI_x
  • NATIONALIDNO
    parametreleri POST verisinden cikariyoruz, sonra hesapliyoruz, dogru mu anladim?

@FikretCin
Copy link
Contributor Author

Sadece NATIONALIDNO parametresini çıkartmamız yeterli olacak anladığım kadarıyla testlerim ve iletişimim devam etmekte, farklı bir durumda sizi tekrar bilgilendireceğim.

@FikretCin
Copy link
Contributor Author

if (in_array(strtolower($key), ['hash', 'encoding'])) {

Kod satırındaki hashe dahil edilmemesi gerekenler arrayini ['hash', 'encoding', 'nationalidno'] olarak güncelledik.

Canlıda bir çok ödeme geçerek işlemi test ettik. Tüm işlemler başarılı oldu. Parametrenin paket içerisine eklenmesi için dilerseniz PR çalışmasıda yapabilirim.

@nuryagdym
Copy link
Collaborator

nuryagdym commented Dec 12, 2023

PR guzel olur, ama bir kac ricam olacak:

  • unit test ile bu durumun test edilmesi, yani NATIONALIDNO iceren bir data verilecek testte
  • 26 satir uzerine neden nationalidno'nun filtreledigimiz yorum olarak aciklanmasi

@nuryagdym nuryagdym added the bug Something isn't working label Dec 14, 2023
@nuryagdym
Copy link
Collaborator

v0.16.1 'de yayina alindi

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working payten ziraat
Projects
None yet
Development

No branches or pull requests

2 participants