mirror of
https://github.com/mewebstudio/pos.git
synced 2026-04-26 01:45:55 +03:00
[GH-ISSUE #169] Ziraat (EST) POS "Hash Mismatch !" Exception Hk. #90
Labels
No labels
PayFlexV4
TROY
akbankpos
bug
duplicate
enhancement
garanti
help wanted
isbank
kuveyt
payten
posnet
pull-request
vakifbank
ziraat
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/pos#90
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @FikretCin on GitHub (Dec 11, 2023).
Original GitHub issue: https://github.com/mewebstudio/pos/issues/169
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 commented on GitHub (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
github.com/mewebstudio/pos@f2640ff7b2/src/Crypt/EstV3PosCrypt.php (L21)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 commented on GitHub (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 commented on GitHub (Dec 12, 2023):
o zaman cozum olarak hash hesaplamadan once
parametreleri POST verisinden cikariyoruz, sonra hesapliyoruz, dogru mu anladim?
@FikretCin commented on GitHub (Dec 12, 2023):
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 commented on GitHub (Dec 12, 2023):
github.com/mewebstudio/pos@f2640ff7b2/src/Crypt/EstV3PosCrypt.php (L26)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 commented on GitHub (Dec 12, 2023):
PR guzel olur, ama bir kac ricam olacak:
@nuryagdym commented on GitHub (Dec 14, 2023):
v0.16.1 'de yayina alindi