• 07-08-2022, 19:41:35
    #1
    Merhaba,

    https://github.com/bsevgin/garantipos kodlarını kullanarak basit bir post sayfası yapmaya çalışıyorum şöyle bir sorunum var aşağıdaki kodları 'amount' => $_POST['tutar'], olarak yazdığımda https://prnt.sc/IEonj4nO2Lb9 3d şifre ekranına tutar doğru gidiyor fakat banka amount 0 olarak geldiğinden dolayı işlemin başarısız olduğunu söylüyor 'amount' => 1, olarak yapıldığında kart bilgilerini post olarak girdiğimde sorunsuz bir şekilde ödeme alıyor kart adı numara, ccv, ay, yıl sorunsuz post ediyor ve dönüyor amount da post yapıldığında hata veriyor sizce bu neden kaynaklanır

    <?php
    /**
     * Created by PhpStorm.
     * User: bsevgin
     * Date: 15.12.2017
     * Time: 14:50
     */
    
    session_start();
    if (!isset($_SESSION['orderNumber']) || !empty($_SESSION['orderNumber'])) {
        $_SESSION['orderNumber'] = uniqid();
    }
    
    // Pos tanımları, sipariş bilgileri ve ödeme bilgileri burada tanımlanıyor
    $params = array(
        // Pos tanımları (Pos panelinde tanımlanıp buraya girilecek)
        'mode' => "TEST", // Pos modu, test için: "TEST", production için: "PROD"
        'merchantID' => "XXXXX", // Merchant numarası
        'terminalID' => "XXXXX", // Terminal numarası
        'provUserID' => "PROVAUT", // Provision kullanıcı adı
        'provUserPassword' => "XXXXX", // Provision kullanıcı parolası
        'garantiPayProvUserID' => "PROVOOS", // GarantiPay için provision kullanıcı adı
        'garantiPayProvUserPassword' => "XXXXX", // GarantiPay için provision kullanıcı parolası
        'storeKey' => "XXXXX", // 24byte hex 3D secure anahtarı
        'successUrl' => "https://localhost/garantipos/example.php?action=success", // Başarılı ödeme sonrası dönülecek adres
        'errorUrl' => "https://localhost/garantipos/example.php?action=error", // Hatalı ödeme sonrası dönülecek adres
        'companyName' => "GarantiPos PHP", // Firma adı
        'paymentType' => "creditcard", // Ödeme tipi - kredi kartı için: "creditcard", GarantiPay için: "garantipay"
    
        // Müşteri tanımları
        'orderNo' => $_SESSION['orderNumber'], // Sipariş numarası
        [B][U][COLOR=#B8312F]'amount' => $_POST['tutar'],[/COLOR][/U][/B] // Çekilecek tutar (ondalıklı olarak değil tam sayı olarak gönderilmeli, örn. 1.20tl için 120 gönderilmeli)
        'installmentCount' => "", // Tek çekim olacaksa boş bırakılmalıdır
        'currencyCode' => 949, // Döviz cinsi kodu(varsayılan:949): TRY=949, USD=840, EUR=978, GBP=826, JPY=392
        'customerIP' => $_SERVER['REMOTE_ADDR'], // Müşteri IP adresi
        'customerEmail' => "bunyaminsevgin@gmail.com", // Müşteri e-mail adresi
    
        // Kart bilgisi tanımları (GarantiPay ile ödemede bu alanların doldurulması zorunlu değildir)
        'cardName' => "XXX XXX", // Kart üzerindeki ad soyad
        'cardNumber' => "XXXXXXXXXXXXXXXX", // Kart numarası (16 haneli boşluksuz)
        'cardExpiredMonth' => "XX", // Kart geçerlilik tarihi ay
        'cardExpiredYear' => "XX", // Kart geçerlilik tarihi yıl (yılın son 2 hanesi)
        'cardCvv' => "XXX", // Kartın arka yüzündeki son 3 numara(CVV kodu)
    );
    
    
    // GarantiPos sınıfı tanımlanıyor
    require_once("GarantiPos.php");
    $garantipos = new GarantiPos();
    $garantipos->debugMode = false;
    $params['paymentType'] = isset($_POST['paymenttype']) ? $_POST['paymenttype'] : $params['paymentType'];
    $garantipos->setParams($params);
    
    $action = isset($_GET['action']) ? $_GET['action'] : false;
    if ($action) {
        $result = $garantipos->callback($action);
        if ($result['success'] == 'success') {
            unset($_SESSION['orderNumber']); // Sipariş başarıyla tamamlandığı için session siliniyor
        }
    
        var_dump($result);
    } else {
        $garantipos->debugUrlUse = false; // Parametre değerlerinin check edildiği adrese gönderilmesi
    
        $garantipos->pay(); // 3D doğrulama için bankaya yönlendiriliyor
    }
    <?php
    /**
     * Created by PhpStorm.
     * User: bsevgin
     * Date: 31.10.2017
     * Time: 13:54
     */
    
    class GarantiPos
    {
        public $debugMode = false;
        public $debugUrlUse = false;
        public $version = "v0.01";
        public $mode = "TEST"; // Test ortamı "TEST", gerçek ortam için "PROD"
        public $terminalMerchantID = ""; // Üye işyeri numarası
        public $terminalID = ""; // Terminal numarası
        public $provUserID = ""; // Terminal prov kullanıcı adı
        public $provUserPassword = ""; // Terminal prov kullanıcı şifresi
        public $garantiPayProvUserID = ""; // GarantiPay için prov kullanıcı adı
        public $garantiPayProvUserPassword = ""; // GarantiPay için prov kullanıcı şifresi
        public $storeKey = ""; // 24byte hex 3D secure anahtarı
        public $successUrl = "?action=success"; // 3D başarıyla sonuçlandığında yönlenecek sayfa
        public $errorUrl = "?action=error"; // 3D başarısız olduğunda yönlenecek sayfa
        public $paymentType = "creditcard"; // Ödeme tipi - kredi kartı için: "creditcard", GarantiPay için: "garantipay"
    
        public $terminalID_;
        public $paymentUrl = "https://sanalposprov.garanti.com.tr/servlet/gt3dengine";
        public $paymentTestUrl = "https://sanalposprovtest.garanti.com.tr/servlet/gt3dengine";
        public $debugPaymentUrl = "https://eticaret.garanti.com.tr/destek/postback.aspx";
        public $provisionUrl = "https://sanalposprov.garanti.com.tr/VPServlet"; // Provizyon için xml'in post edileceği adres
        public $provisionTestUrl = "https://sanalposprovtest.garanti.com.tr/VPServlet"; // Provizyon için xml'in post edileceği adres
        public $currencyCode = "949"; // TRY=949, USD=840, EUR=978, GBP=826, JPY=392
        public $lang = "tr";
        public $paymentRefreshTime = "0"; // Ödeme alındıktan bekletilecek süre
        public $timeOutPeriod = "60";
        public $addCampaignInstallment = "N";
        public $totalInstallamentCount = "0";
        public $installmentOnlyForCommercialCard = "N";
    
        // GarantiPay tanımlamalar
        public $useGarantipay = "Y"; // GarantiPay kullanımı: Y/N
        public $useBnsuseflag = "Y"; // Bonus kullanımı: Y/N
        public $useFbbuseflag = "Y"; // Fbb kullanımı: Y/N
        public $useChequeuseflag = "N"; // Çek kullanımı: Y/N
        public $useMileuseflag = "N"; // Mile kullanımı: Y/N
    
        public $companyName;
        public $orderNo;
        public $amount;
        public $installmentCount;
        public $cardName;
        public $cardNumber;
        public $cardExpiredMonth;
        public $cardExpiredYear;
        public $cardCVV;
        public $customerIP;
        public $customerEmail;
        public $orderAddress;
    
        /**
         * Bankadan dönen hata kodları ve mesajları
         *
         * @var array
         */
        public $mdStatuses = array(
            0 => "Doğrulama başarısız, 3-D Secure imzası geçersiz",
            1 => "Tam doğrulama",
            2 => "Kart sahibi banka veya kart 3D-Secure üyesi değil",
            3 => "Kartın bankası 3D-Secure üyesi değil",
            4 => "Kart sahibi banka sisteme daha sonra kayıt olmayı seçmiş",
            5 => "Doğrulama yapılamıyor",
            7 => "Sistem hatası",
            8 => "Bilinmeyen kart numarası",
            9 => "Üye işyeri 3D-Secure üyesi değil",
        );
    
        /**
         * GarantiPos constructor.
         */
        public function __construct()
        {
        }
    
        /**
         * Ödeme işlemi için tanımlar set ediliyor
         *
         * @param $params
         */
        public function setParams($params)
        {
            $this->mode = $params['mode'];
            $this->terminalMerchantID = $params['merchantID'];
            $this->terminalID = $params['terminalID'];
            $this->terminalID_ = "0" . $params['terminalID'];
            $this->provUserID = $params['provUserID'];
            $this->provUserPassword = $params['provUserPassword'];
            $this->garantiPayProvUserID = $params['garantiPayProvUserID'];
            $this->garantiPayProvUserPassword = $params['garantiPayProvUserPassword'];
            $this->storeKey = $params['storeKey'];
            $this->successUrl = $params['successUrl'];
            $this->errorUrl = $params['errorUrl'];
            $this->paymentType = $params['paymentType'];
    
            $this->companyName = $params['companyName'];
            $this->orderNo = $params['orderNo']; // Her işlemde yeni sipariş numarası gönderilmeli
            $this->amount = str_replace(array(",", "."), "", $params['amount']); // İşlem tutarı 1 TL için 1.00 gönderilmeli
            $this->installmentCount = $params['installmentCount'] > 1 ? $params['installmentCount'] : ""; // Taksit yapılmayacaksa boş gönderilmeli
            $this->currencyCode = $params['currencyCode'] ? $params['currencyCode'] : $this->currencyCode;
            $this->customerIP = $params['customerIP'];
            $this->customerEmail = $params['customerEmail'];
            $this->cardName = $params['cardName'];
            $this->cardNumber = $params['cardNumber'];
            $this->cardExpiredMonth = $params['cardExpiredMonth'];
            $this->cardExpiredYear = $params['cardExpiredYear'];
            $this->cardCVV = $params['cardCvv'];
    
            // Fatura bilgileri gönderildiğinde ekleniyor
            if (!empty($params['orderAddresses'])) {
                $this->orderAddresses = $params['orderAddresses'];
            }
        }
    
        /**
         * Kredi kartı ile ödeme için buraya istek yapılacak
         */
        public function pay()
        {
            $params = array(
                'refreshtime' => $this->paymentRefreshTime,
                'paymenttype' => $this->paymentType
            );
            if ($this->paymentType == "creditcard") {
                $params['secure3dsecuritylevel'] = "3D";
                $params['txntype'] = "sales";
                $params['cardname'] = $this->cardName;
                $params['cardnumber'] = $this->cardNumber;
                $params['cardexpiredatemonth'] = $this->cardExpiredMonth;
                $params['cardexpiredateyear'] = $this->cardExpiredYear;
                $params['cardcvv2'] = $this->cardCVV;
            } elseif ($this->paymentType == "garantipay") {
                $this->provUserID = $this->garantiPayProvUserID;
                $this->provUserPassword = $this->garantiPayProvUserPassword;
    
                $params['secure3dsecuritylevel'] = "CUSTOM_PAY";
                $params['txntype'] = "gpdatarequest";
                $params['txnsubtype'] = "sales";
                $params['garantipay'] = $this->useGarantipay;
                $params['bnsuseflag'] = $this->useBnsuseflag;
                $params['fbbuseflag'] = $this->useFbbuseflag;
                $params['chequeuseflag'] = $this->useChequeuseflag;
                $params['mileuseflag'] = $this->useMileuseflag;
            }
    
            $this->redirect_for_payment($params);
        }
    
        /**
         * Bankadan dönen cevap success ise burası çağrılacak
         *
         * @param string $type
         * @param string $action
         * @return array
         */
        public function callback($action = "")
        {
            $postParams = $_POST;
    
            if ($this->debugMode) {
                echo '<pre>' . var_export($postParams, true) . '</pre>';
            }
    
            $result = array();
            if ($this->paymentType == "creditcard") {
                $result = $this->creditcard_callback($postParams, $action);
            } elseif ($this->paymentType == "garantipay") {
                $result = $this->garantipay_callback($postParams);
            }
    
            $result['paymenttype'] = $this->paymentType;
            $result['postParams'] = $postParams;
    
            return $result;
        }
    
        /**
         * Kredi kartı ile ödemede success durumunda burası çağrılacak
         *
         * @param $postParams
         * @param string $action
         * @return array
         */
        private function creditcard_callback($postParams, $action = "")
        {
            $strMDStatus = isset($this->mdStatuses[$postParams["mdstatus"]]) ? $postParams["mdstatus"] : 7; // 7=Sistem hatası
            if ($action == "success" && in_array($strMDStatus, array(1, 2, 3, 4))) {
                // Tam Doğrulama, Kart Sahibi veya bankası sisteme kayıtlı değil, Kartın bankası sisteme kayıtlı değil, Kart sahibi sisteme daha sonra kayıt olmayı seçmiş cevaplarını alan işlemler için provizyon almaya çalışıyoruz
    
                $strNumber = ""; // Kart bilgilerinin boş gitmesi gerekiyor
                $strExpireDate = ""; // Kart bilgilerinin boş gitmesi gerekiyor
                $strCVV2 = ""; // Kart bilgilerinin boş gitmesi gerekiyor
                $strCardholderPresentCode = "13"; // 3D Model işlemde bu değer 13 olmalı
                $strType = $postParams["txntype"];
                $strMotoInd = "N";
                $strAuthenticationCode = $postParams["cavv"];
                $strSecurityLevel = $postParams["eci"];
                $strTxnID = $postParams["xid"];
                $strMD = $postParams["md"];
                $SecurityData = strtoupper(sha1($this->provUserPassword . $this->terminalID_));
                $HashData = strtoupper(sha1($this->orderNo . $this->terminalID . $this->amount . $SecurityData)); //Daha kısıtlı bilgileri HASH ediyoruz.
    
                // Provizyona Post edilecek XML Şablonu
                $strXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
                <GVPSRequest>
                    <Mode>{$this->mode}</Mode>
                    <Version>{$this->version}</Version>
                    <ChannelCode></ChannelCode>
                    <Terminal>
                        <ProvUserID>{$this->provUserID}</ProvUserID>
                        <HashData>{$HashData}</HashData>
                        <UserID>{$this->terminalMerchantID}</UserID>
                        <ID>{$this->terminalID}</ID>
                        <MerchantID>{$this->terminalMerchantID}</MerchantID>
                    </Terminal>
                    <Customer>
                        <IPAddress>{$this->customerIP}</IPAddress>
                        <EmailAddress>{$this->customerEmail}</EmailAddress>
                    </Customer>
                    <Card>
                        <Number>{$strNumber}</Number>
                        <ExpireDate>{$strExpireDate}</ExpireDate>
                        <CVV2>{$strCVV2}</CVV2>
                    </Card>
                    <Order>
                        <OrderID>{$this->orderNo}</OrderID>
                        <GroupID></GroupID>
                        <AddressList>
                            <Address>
                                <Type>B</Type>
                                <Name></Name>
                                <LastName></LastName>
                                <Company></Company>
                                <Text></Text>
                                <District></District>
                                <City></City>
                                <PostalCode></PostalCode>
                                <Country></Country>
                                <PhoneNumber></PhoneNumber>
                            </Address>
                        </AddressList>
                    </Order>
                    <Transaction>
                        <Type>{$strType}</Type>
                        <InstallmentCnt>{$this->installmentCount}</InstallmentCnt>
                        <Amount>{$this->amount}</Amount>
                        <CurrencyCode>{$this->currencyCode}</CurrencyCode>
                        <CardholderPresentCode>{$strCardholderPresentCode}</CardholderPresentCode>
                        <MotoInd>{$strMotoInd}</MotoInd>
                        <Secure3D>
                            <AuthenticationCode>{$strAuthenticationCode}</AuthenticationCode>
                            <SecurityLevel>{$strSecurityLevel}</SecurityLevel>
                            <TxnID>{$strTxnID}</TxnID>
                            <Md>{$strMD}</Md>
                        </Secure3D>
                    </Transaction>
                </GVPSRequest>";
    
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, ($this->mode == "TEST" ? $this->provisionTestUrl : $this->provisionUrl));
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, "data=" . $strXML);
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
                $resultContent = curl_exec($ch);
                curl_close($ch);
    
                if ($this->debugMode) {
                    echo '<pre>' . var_export($resultContent, true) . '</pre>';
                }
    
                $resultXML = simplexml_load_string($resultContent);
                $responseCode = $resultXML->Transaction->Response->Code;
                $responseMessage = $resultXML->Transaction->Response->Message;
                if ($responseCode == "00" || $responseMessage == "Approved") {
                    $result = array(
                        'status' => 'success',
                        'message' => 'OK'
                    );
                } else {
                    $result = array(
                        'status' => 'error',
                        'message' => $resultXML->Transaction->Response->ErrorMsg[0]
                    );
                }
            } else {
                // MD status değeri Tam Doğrulama, Kart Sahibi veya bankası sisteme kayıtlı değil, Kartın bankası sisteme kayıtlı değil veya Kart sahibi sisteme daha sonra kayıt olmayı seçmiş haricindeyse hata mesajı alınıyor
                $result = array(
                    'status' => 'error',
                    'message' => $postParams['errmsg'] ? $postParams['errmsg'] : ($postParams['ErrorMsg'] ? $postParams['ErrorMsg'] : ($postParams['mderrormessage'] ? $postParams['mderrormessage'] : ($postParams['mdErrorMsg'] ? $postParams['mdErrorMsg'] : "3D process failure")))
                );
            }
    
            return $result;
        }
    
        /**
         * GarantiPay ile ödemede success durumunda burası çağrılacak
         *
         * @param $postParams
         * @return array
         */
        private function garantipay_callback($postParams)
        {
            // GarantiPay için dönen cevabın bankadan geldiği doğrulanıyor
            $responseHashparams = $postParams["hashparams"];
            $responseHash = $postParams["hash"];
            $isValidHash = false;
            if ($responseHashparams !== null && $responseHashparams !== "") {
                $digestData = "";
                $paramList = explode(":", $responseHashparams);
                foreach ($paramList as $param) {
                    if (isset($postParams[strtolower($param)])) {
                        $value = $postParams[strtolower($param)];
                        if ($value == null) {
                            $value = "";
                        }
                        $digestData .= $value;
                    }
                }
    
                $digestData .= $this->storeKey;
                $hashCalculated = base64_encode(pack('H*', sha1($digestData)));
    
                if ($responseHash == $hashCalculated) {
                    $isValidHash = true;
                }
            }
    
            if ($isValidHash) {
                $result = array(
                    'status' => 'success',
                    'message' => 'OK',
                );
            } else {
                $result = array(
                    'status' => 'error',
                    'message' => $postParams['errmsg']
                );
            }
    
            return $result;
        }
    
        /**
         * Ödeme için banka ekranına yönlendirme işlemi yapılıyor
         *
         * @param $params
         */
        private function redirect_for_payment($params)
        {
            $params['companyname'] = $this->companyName;
            $params['apiversion'] = $this->version;
            $params['mode'] = $this->mode;
            $params['terminalprovuserid'] = $this->provUserID;
            $params['terminaluserid'] = $this->terminalID;
            $params['terminalid'] = $this->terminalID;
            $params['terminalmerchantid'] = $this->terminalMerchantID;
            $params['orderid'] = $this->orderNo;
            $params['customeremailaddress'] = $this->customerEmail;
            $params['customeripaddress'] = $this->customerIP;
            $params['txnamount'] = $this->amount;
            $params['txncurrencycode'] = $this->currencyCode;
            $params['txninstallmentcount'] = $this->installmentCount;
            $params['successurl'] = $this->successUrl;
            $params['errorurl'] = $this->errorUrl;
            $params['lang'] = $this->lang;
            $params['txntimestamp'] = time();
            $params['txntimeoutperiod'] = $this->timeOutPeriod;
            $params['addcampaigninstallment'] = $this->addCampaignInstallment;
            $params['totallinstallmentcount'] = $this->totalInstallamentCount;
            $params['installmentonlyforcommercialcard'] = $this->installmentOnlyForCommercialCard;
            $SecurityData = strtoupper(sha1($this->provUserPassword . $this->terminalID_));
            $HashData = strtoupper(sha1($this->terminalID . $params['orderid'] . $params['txnamount'] . $params['successurl'] . $params['errorurl'] . $params['txntype'] . $params['txninstallmentcount'] . $this->storeKey . $SecurityData));
            $params['secure3dhash'] = $HashData;
    
            if ($this->debugMode) {
                echo '<pre>' . var_export($params, true) . '</pre>';
            }
    
            print('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');
            print('<html>');
            print('<body>');
            print('<form action="' . ($this->debugUrlUse ? $this->debugPaymentUrl : ($this->mode == "TEST" ? $this->paymentTestUrl : $this->paymentUrl)) . '" method="post" id="three_d_form"/>');
            foreach ($params as $name => $value) {
                print('<input type="hidden" name="' . $name . '" value="' . $value . '"/>');
            }
            if ($this->orderAddress) {
                $i = 1;
                foreach ($this->orderAddress as $orderAdress) {
                    print('<input type="hidden" name="orderaddresscount" value="' . $i . '"/>');
                    foreach ($orderAdress as $name => $value) {
                        print('<input type="hidden" name="' . $name . $i . '" value="' . $value . '"/>');
                    }
                    $i++;
                }
            }
            print('<input type="submit" value="Öde" style="' . ($this->debugMode ? '' : 'display:none;') . '"/>');
            print('<noscript>');
            print('<br/>');
            print('<div style="text-align:center;">');
            print('<h1>3D Secure Yönlendirme İşlemi</h1>');
            print('<h2>Javascript internet tarayıcınızda kapatılmış veya desteklenmiyor.<br/></h2>');
            print('<h3>Lütfen banka 3D Secure sayfasına yönlenmek için tıklayınız.</h3>');
            print('<input type="submit" value="3D Secure Sayfasına Yönlen">');
            print('</div>');
            print('</noscript>');
            print('</form>');
            print('</body>');
            if (!$this->debugMode) {
                print('<script>document.getElementById("three_d_form").submit();</script>');
            }
            print('</html>');
            exit();
        }
    
    }
  • 07-08-2022, 19:46:00
    #2
    kuruş olarak yazın 1 yerine 100 grin
    edit: baktım 0.01 tl çekmeye çalışıyormuşsunuz 1 tl deneyin isterseniz
    edit2: olay çok farklıymış tekrar okudum int($_POST['tutar']) yapıp dener misiniz
  • 07-08-2022, 19:48:06
    #3
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    kuruş olarak yazın 1 yerine 100 grin
    edit: baktım 0.01 tl çekmeye çalışıyormuşsunuz 1 tl deneyin isterseniz
    aynı sorun devam ediyor 1 yazdığımda 0,01 olarak çekiyor orada sorun yok dediğinizide denedim post değilde kod kısmından 1 yazdığımda 0,001 olarak karttan çekmesini anlayamıyorum
  • 07-08-2022, 19:48:44
    #4
    AngellorD adlı üyeden alıntı: mesajı görüntüle
    aynı sorun devam ediyor 1 yazdığımda 0,01 olarak çekiyor orada sorun yok dediğinizide denedim post değilde kod kısmından 1 yazdığımda 0,001 olarak karttan çekmesini anlayamıyorum
    mesajı editledim int() içine alıp deneyin isterseniz
    $_POST dan gelen veri string olarak geliyor json kullanıyorsa string olarak gelir sorun çıkarabilir
  • 07-08-2022, 19:55:28
    #5
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    mesajı editledim int() içine alıp deneyin isterseniz
    $_POST dan gelen veri string olarak geliyor json kullanıyorsa string olarak gelir sorun çıkarabilir
    'amount' => int($_POST['tutar']), // Çekilecek tutar (ondalıklı olarak değil tam sayı olarak gönderilmeli, örn. 1.20tl için 120 gönderilmeli)
    dediğiniz gibi yaptım ama 500 hatası aldım neden olabilir nerde hata yapmış olabilirim

    edit:
    'amount' => (int)$_POST['tutar'], // Çekilecek tutar (ondalıklı olarak değil tam sayı olarak gönderilmeli, örn. 1.20tl için 120 gönderilmeli)
    çalıştırdım sorun devam ediyor çözemedim
  • 07-08-2022, 20:05:24
    #6
    number_format ile decimal ayarlarsanız sorun çözülecektir bence.

    $tutar = number_format($_POST['tutar'], 2);
  • 07-08-2022, 20:11:56
    #7
    BySocial adlı üyeden alıntı: mesajı görüntüle
    number_format ile decimal ayarlarsanız sorun çözülecektir bence.

    $tutar = number_format($_POST['tutar'], 2);
    https://prnt.sc/6j63N2VGjwbZ teşekkür ederim ilginiz için yine olmadı rakamı sorunsuz gönderiyor bankaya ama dönüşte ne oluyorsa orada hata oluyor gibi garantipos.php de yapılması gereken bir alan mı var çok baktım ben bulamadım sorunu