Closed sekizlipenguen closed 5 months ago
Merhaba, kod refactor edildi, ama hash hesaplama algoritmasi degismedi. Eskiden hash degerler eslesmediginde odemeyi tamamlamiyorduk, $this->response'de odeme basariz oldugunu belirtiyorduk. Son yapilan degisimlerle ise exception firlatiyoruz, bu da odeme basarisiz olmadigi anlamina geliyor.
Su an test ortamda test ettigimde sorunsuz calisiyor.
Test ortamda calisip prod ortamda calismiyorsa buyuk ihtimalle sizde kodda bir sorun vardir.
burdaki hash data verileri dogru oldugunu kontrol ediniz, ozellikle $account
verileri:
https://github.com/mewebstudio/pos/blob/af545367050b091d604cce92365c9be91f13dd1f/src/Crypt/PayForPosCrypt.php#L39-L48
Merhaba, kod refactor edildi, ama hash hesaplama algoritmasi degismedi. Su an test ortamda test ettigimde sorunsuz calisiyor.
Test ortamda calisip prod ortamda calismiyorsa buyuk ihtimalle sizde kodda bir sorun vardir.
burdaki hash data verileri dogru oldugunu kontrol ediniz, ozellikle
$account
verileri:
Selam,
Sorunun kaynağını buldum. Aslında burada hash kontrolü yapmandan önce gelen mesajı görmemiz gerekiyor çünkü gelen mesajı yazdırdığımda: "bu sipariş numarası ile daha önce kayıt vardır" uyarısı aldım. Hash mantığımız doğru fakat bankalar onun öncesinde hata da iletiyorlar.
Destek için teşekkürler @nuryagdym
@sekizlipenguen ornek response'u paylasir misiniz, ona gore guncellerim belki
Tabiii örnek tekrar oluşturdum. @nuryagdym
Şu ikisi ile kontrol yapılabilir gibi duruyor.
"ErrMsg" => "Verilen sipariş no önceden kullanılmıştır."
"ProcReturnCode" => "101310"
uzun hali
array:120 [▼ // vendor/mews/pos/src/Gateways/PayForPos.php:48
"RequestGuid" => "0"
"TransactionDate" => "01.03.2024 13:22:05"
"MbrId" => "5"
"MerchantID" => "guvenliksebebi-ile-gizlendi"
"OrderId" => "guvenliksebebi-ile-gizlendi"
"RequestIp" => ""
"RequestStat" => "1,5"
"SecureType" => "3DModel"
"PurchAmount" => "374.99"
"Exponent" => ""
"Currency" => "guvenliksebebi-ile-gizlendi"
"Description" => ""
"OkUrl" => "guvenliksebebi-ile-gizlendi"
"FailUrl" => "guvenliksebebi-ile-gizlendi"
"PayerTxnId" => ""
"PayerAuthenticationCode" => ""
"Eci" => ""
"MD" => ""
"Hash" => "guvenliksebebi-ile-gizlendi+Zh/tuY="
"TerminalID" => ""
"TxnType" => "Auth"
"OrgOrderId" => ""
"SubMerchantCode" => ""
"recur_frequency" => ""
"recur_expiry" => ""
"CardType" => ""
"Lang" => "TR"
"BonusAmount" => ""
"InstallmentCount" => "0"
"Rnd" => "guvenliksebebi-ile-gizlendi"
"AlphaCode" => ""
"Ecommerce" => "1"
"MrcCountryCode" => ""
"MrcName" => ""
"MerchantHomeUrl" => ""
"CardHolderName" => "guvenliksebebi-ile-gizlendi guvenliksebebi-ile-gizlendi"
"IrcDet" => ""
"IrcCode" => ""
"Version" => ""
"TxnStatus" => ""
"CavvAlg" => ""
"ParesVerified" => ""
"ParesSyntaxOk" => ""
"ErrMsg" => "Verilen sipariş no önceden kullanılmıştır."
"VendorDet" => ""
"D3Stat" => ""
"3DStatus" => "-1"
"TxnResult" => ""
"AuthCode" => ""
"HostRefNum" => ""
"ProcReturnCode" => "101310"
"ReturnUrl" => "guvenliksebebi-ile-gizlendi"
"ErrorData" => ""
"BatchNo" => "0"
"VoidDate" => ""
"CardMask" => ""
"ReqId" => "0"
"UsedPoint" => "0"
"SrcType" => "VPO"
"RefundedAmount" => "0"
"RefundedPoint" => "0"
"ReqDate" => "0"
"SysDate" => "0"
"F11" => "0"
"F37" => ""
"RRN" => ""
"IsRepeatTxn" => ""
"CavvResult" => ""
"VposElapsedTime" => "0"
"BankingElapsedTime" => "0"
"SocketElapsedTime" => "0"
"HsmElapsedTime" => "0"
"MpiElapsedTime" => "0"
"hasOrderId" => "False"
"TemplateType" => "0"
"HasAddressCount" => "False"
"IsPaymentFacilitator" => "False"
"MerchantCountryCode" => ""
"OrgTxnType" => ""
"F11_ORG" => "0"
"F12_ORG" => "0"
"F13_ORG" => ""
"F22_ORG" => "0"
"F25_ORG" => "0"
"MTI_ORG" => "0"
"DsBrand" => ""
"IntervalType" => "0"
"IntervalDuration" => "0"
"RepeatCount" => "0"
"CustomerCode" => ""
"RequestMerchantDomain" => ""
"RequestClientIp" => "guvenliksebebi-ile-gizlendi"
"ResponseRnd" => "guvenliksebebi-ile-gizlendi"
"ResponseHash" => "guvenliksebebi-ile-gizlendi="
"BankInternalResponseCode" => ""
"BankInternalResponseMessage" => ""
"BankInternalResponseSubcode" => ""
"BankInternalResponseSubmessage" => ""
"BayiKodu" => ""
"VoidTime" => "0"
"VoidUserCode" => ""
"PaymentLinkId" => "0"
"ClientId" => ""
"IsQRValid" => ""
"IsFastValid" => ""
"IsQR" => ""
"IsFast" => ""
"QRRefNo" => ""
"FASTGonderenKatilimciKodu" => ""
"FASTAlanKatilimciKodu" => ""
"FASTReferansNo" => ""
"FastGonderenIBAN" => ""
"FASTGonderenAdi" => ""
"MobileECI" => ""
"HubConnId" => ""
"WalletData" => ""
"Tds2dsTransId" => ""
"Is3DHost" => ""
"ArtiTaksit" => "0"
"AuthId" => ""
]
tmm tesekkurler, zaman bulunca ilgilenirim
v1.0.0 versiyonda, once 3D/MD statusu kontrole ediyoruz, sonra hash kontrolu yapiyoruz. Bu sekilde artik hatali HashMismatchException'i firlatmamasi gerekiyor
Hatanın özeti
Hash Mismatch! hatası almaya başladım. Eski versiyon kullanıldığı için sorun olmuyordu. Şu an güncel versiyonda bu blog değişmiş bu sebeple burada sorun olduğunu düşünüyorum.
eski hata almadığım blok
güncel hatalı blok