[GH-ISSUE #188] Akbank Hash Mismatch! Hatası #103

Closed
opened 2026-03-03 15:43:03 +03:00 by kerem · 2 comments
Owner

Originally created by @evrenonur on GitHub (Mar 4, 2024).
Original GitHub issue: https://github.com/mewebstudio/pos/issues/188

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;
}

}
`

Originally created by @evrenonur on GitHub (Mar 4, 2024). Original GitHub issue: https://github.com/mewebstudio/pos/issues/188 | 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; } } `
kerem 2026-03-03 15:43:03 +03:00
  • closed this issue
  • added the
    payten
    label
Author
Owner

@nuryagdym commented on GitHub (Mar 4, 2024):

Merhabalar,

<!-- gh-comment-id:1975924035 --> @nuryagdym commented on GitHub (Mar 4, 2024): 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.
Author
Owner

@evrenonur commented on GitHub (Mar 4, 2024):

  1. 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ü.
<!-- gh-comment-id:1975935227 --> @evrenonur commented on GitHub (Mar 4, 2024): 1. 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ü.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/pos#103
No description provided.