Akbank Hash Mismatch! Hatası
Closed this issue · 2 comments
Information | Description |
---|---|
Kütüphane versiyonu | 0.16.1 |
PHP versiyonu | 8.1 |
Gateway ismi | EstPos |
Banka ismi | Akbank |
Hatanın özeti
Hash Mismatch! hatası almaya başladım. 01.03.2024 tarihine kadar test ortamında yaptığım işlemlerde herhangi bir hata almamaktaydım. Fakat bugün ki işlemlerimde hata almaktayım. Kodumda herhangi bir değişiklik vs yapmadım.
Yazdığım Kod
`<?php
namespace App\Http\Controllers;
use Mews\Pos\Entity\Card\AbstractCreditCard;
use Mews\Pos\Gateways\AbstractGateway;
class TestController extends Controller
{
public function index()
{
$account = \Mews\Pos\Factory\AccountFactory::createEstPosAccount(
'akbank', //pos config'deki ayarın index name'i
'100200000',
'103243237admin',
'TEST1010',
AbstractGateway::MODEL_3D_PAY,
'123456',
AbstractGateway::LANG_TR
);
try {
$pos = \Mews\Pos\Factory\PosFactory::createPosGateway($account);
$pos->setTestMode(true);
} catch (\Mews\Pos\Exceptions\BankNotFoundException | \Mews\Pos\Exceptions\BankClassNullException $e) {
}
$kartNo = '4256691944867646';
$card = \Mews\Pos\Factory\CreditCardFactory::create(
$pos,
$kartNo,
'30',
'12',
'000',
'Onur Evren',
$this->kartTipi($kartNo) == 'visa' ? AbstractCreditCard::CARD_TYPE_VISA : AbstractCreditCard::CARD_TYPE_MASTERCARD,
);
$id = rand(1, 1000).time();
session()->put('id', $id);
$order = [
'id' => $id,
'amount' => 100.00,
'currency' => 'TRY', //TRY|USD|EUR, optional. default: TRY
'installment' => 0, //0 ya da 1'den büyük değer, optional. default: 0
'success_url' => 'https://site.com/success',
'fail_url' => 'https://site.com/fail',
//gateway'e gore zorunlu olan degerler ip adress
'ip' => 'ip adresi', // EstPos, Garanti, KuveytPos, VakifBank
'email' => 'test@gmail.com', // EstPos, Garanti, KuveytPos, VakifBank
'name' => 'Onur Evren', // EstPos, Garanti
'user_id' => '11111141', // EstPos
'rand' => $id, // EstPos, Garanti, PayFor, InterPos, VakifBank. Rastegele değer.
'lang' => AbstractGateway::LANG_TR, //LANG_TR|LANG_EN. Kullanıcının yönlendirileceği banka gateway sayfasının ve gateway'den dönen mesajların dili.
];
$pos->prepare($order, \Mews\Pos\Gateways\AbstractGateway::TX_PAY, $card);
try {
$formData = $pos->get3DFormData();
} catch (\Throwable $e) {
print_r($e);
}
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', $formData['gateway'], [
'form_params' => $formData['inputs']
]);
echo $response->getBody()->getContents();
}
public function success()
{
$id = session()->get('id');
$order = [
'id' => $id,
'amount' => 100.00,
'currency' => 'TRY', //TRY|USD|EUR, optional. default: TRY
'installment' => 0, //0 ya da 1'den büyük değer, optional. default: 0
'success_url' => 'https://site.com/success',
'fail_url' => 'https://site.com/fail',
//gateway'e gore zorunlu olan degerler ip adress
'ip' => 'ip adresi', // EstPos, Garanti, KuveytPos, VakifBank
'email' => 'test@gmail.com', // EstPos, Garanti, KuveytPos, VakifBank
'name' => 'Onur Evren', // EstPos, Garanti
'user_id' => '11111141', // EstPos
'rand' => $id, // EstPos, Garanti, PayFor, InterPos, VakifBank. Rastegele değer.
'lang' => AbstractGateway::LANG_TR, //LANG_TR|LANG_EN. Kullanıcının yönlendirileceği banka gateway sayfasının ve gateway'den dönen mesajların dili.
];
$account = \Mews\Pos\Factory\AccountFactory::createEstPosAccount(
'akbank', //pos config'deki ayarın index name'i
'100200000',
'103243237admin',
'TEST1010',
AbstractGateway::MODEL_3D_PAY,
'123456',
AbstractGateway::LANG_TR
);
try {
$pos = \Mews\Pos\Factory\PosFactory::createPosGateway($account);
$pos->setTestMode(true);
} catch (\Mews\Pos\Exceptions\BankNotFoundException | \Mews\Pos\Exceptions\BankClassNullException $e) {
}
// $card = \Mews\Pos\Factory\CreditCardFactory::create(
// $pos,
// '5571135571135575',
// '26',
// '12',
// '001',
// 'Onur Evren',
// AbstractCreditCard::CARD_TYPE_MASTERCARD,
//
// );
$pos->prepare($order, \Mews\Pos\Gateways\AbstractGateway::TX_PAY);
try {
$pos->payment(null);
if ($pos->isSuccess()) {
// Ödeme başarılı
echo "Ödeme başarılı";
} else {
// Ödeme başarısız
echo "Ödeme başarısız";
}
// Sonuç çıktısı
dump($pos->getResponse());
// response içeriği için /examples/template/_payment_response.php dosyaya bakınız.
} catch (\Throwable $e) {
// todo
}
}
public function kartTipi($number){
$number=str_replace(" ", "", $number);
$cardType = array(
"visa" => "/^4[0-9]{12}(?:[0-9]{3})?$/",
"mastercard" => "/^5[1-5][0-9]{14}$/",
);
foreach ($cardType as $key => $value) {
if (preg_match($value,$number))
{
$type= $key;
break;
}else{
$type= false;
}
}
return $type;
}
}
`
Merhabalar,
-
Hala pos config'de (https://github.com/mewebstudio/pos/blob/master/config/pos.php#L29)
EstPos
kullaniyorsaniz,Mews\Pos\Gateways\EstV3Pos::class
kullanmayi deneyiniz.
Not:pos.php
'yi direk kullanmayiniz, projenizde kopyasini olusturup onu kullaniniz. -
Ilk cozum sorunu gidermiyorsa bu satirda: https://github.com/mewebstudio/pos/blob/master/src/Gateways/EstPos.php#L42
var_dump($request->all());
calistirarak icerigini paylasiniz.
- Yönetimi kullanarak da çözülebiliyor. Haricinde bankayı aradığımda 100200000 mağaza numarasında şuanlık bir sıkıntı olduğunu söylediler. 100100000 kullanıp aynı zamanda 'akbank' alanını da 'akbankv3' yaptığımda sorun çözüldü.