mgsmus hocam "Array to string conversion
hatası alıyorum.
<?php
namespace App\Services\Backend\Payment;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Http;
class PaytrService
{
protected $merchantId;
protected $merchantKey;
protected $merchantSalt;
protected $email;
protected $merchantOId;
protected $userName;
protected $userAddress;
protected $userPhone;
protected $merchantOkUrl;
protected $merchantFailUrl;
protected $currency;
protected $timeoutLimit;
protected $debugOn;
protected $testMode;
public function __construct()
{
$this->merchantId = Config::get('services.paytr', 'merchant_id');
$this->merchantKey = Config::get('services.paytr', 'merchant_key');
$this->merchantSalt = Config::get('services.paytr', 'merchant_salt');
$this->email = "umutcankarce1@gmail.com"; // Müşteri E-Mail
$this->userName = "umutcankarce"; // Müşteri Adı Soyadı
$this->userAddress = "umutcankarce1@gmail.com"; // Müşteri Adres
$this->userPhone = "05555555555"; // Müşteri Telefon
$this->merchantOkUrl = route("paytr.success");
$this->merchantFailUrl = route("paytr.error");
$this->currency = "TL"; // Para Birimi
$this->timeoutLimit = "30"; // Zaman Aşımı / Dakika
$this->debugOn = 1;
$this->testMode = 0;
}
public function paytrPayment(Request $request, $cartProducts = [],$totalPrice)
{
$merchantOId = uniqid(); // Sipariş Numarası
$user_basket = base64_encode(json_encode([]));
$userIp = request()->ip(); // Müşteri IP Adresi
$no_installment = 0; // Taksit Seçeneği, Tek Çekim için 1
$max_installment = 0; // En Fazla Taksit Adedi, Sınırsız ise 0
$hash_str = $this->merchantId.$userIp.$merchantOId.$this->email.$totalPrice.$user_basket.$no_installment.$max_installment.$this->currency.$this->testMode;
$paytr_token = base64_encode(hash_hmac('sha256',$hash_str.$this->merchantSalt,$this->merchantKey,true));
$post_vals = [
'merchant_id'=>$this->merchantId,
'user_ip'=>$userIp,
'merchant_oid'=>$merchantOId,
'email'=>$this->email,
'payment_amount'=>$totalPrice,
'paytr_token'=>$paytr_token,
'user_basket'=>$user_basket,
'debug_on'=>$this->debugOn,
'no_installment'=>$no_installment,
'max_installment'=>$max_installment,
'user_name'=>$this->userName,
'user_address'=>$this->userAddress,
'user_phone'=>$this->userPhone,
'merchant_ok_url'=>$this->merchantOkUrl,
'merchant_fail_url'=>$this->merchantFailUrl,
'timeout_limit'=>$this->timeoutLimit,
'currency'=>$this->currency,
'test_mode'=>$this->testMode
];
$result = $this->sendRequest($post_vals);
if($result["status"] == "success")
{
$token = $result["token"];
return $token;
}
else
{
throw new \Exception("PAYTR IFRAME Başarısız Oldu. Sebep: " . $result['reason']);
}
}
protected function sendRequest($post_vals)
{
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.paytr.com/odeme/api/get-token");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1) ;
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vals);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
// XXX: DİKKAT: lokal makinanızda "SSL certificate problem: unable to get local issuer certificate" uyarısı alırsanız eğer
// aşağıdaki kodu açıp deneyebilirsiniz. ANCAK, güvenlik nedeniyle sunucunuzda (gerçek ortamınızda) bu kodun kapalı kalması çok önemlidir!
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$result = @curl_exec($ch);
if(curl_errno($ch))
die("PAYTR IFRAME Bağlantı Hatası. Hata:".curl_error($ch));
curl_close($ch);
return json_decode($result,true);
}
}