namespace App\Traits\Gateways;
use App\Models\AffiliateHistory;
use App\Models\Deposit;
use App\Models\Gateway;
use App\Models\SuitPayPayment;
use App\Models\Transaction;
use App\Models\User;
use App\Models\Wallet;
use App\Notifications\NewDepositNotification;
use App\Notifications\NewWithdrawalNotification;
use App\Traits\Affiliates\AffiliateHistoryTrait;
use Carbon\Carbon;
use GuzzleHttp\Client;
use http\Client\Request;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Validator;
trait SuitpayTrait{
use AffiliateHistoryTrait;
protected static string $sg_0;
protected static string $kn_1;
protected static string $va_2;
private static function generateCredentials(){
$cy_3=Gateway::first();
if(!empty($cy_3)){
self::$sg_0=$cy_3->$ok_4;
self::$kn_1=$cy_3->$ar_5;
self::$va_2=$cy_3->$ps_6;
}
}
public static function requestQrcode($vi_7){
$cy_3=\Helper::getSetting();
$pf_8=[amount=>[requiredmax:.$cy_3->$lr_9,max:.$cy_3->$nh_10],cpf=>[requiredmax:255],];
$ic_11=Validator::make($vi_7->all(),$pf_8);
if($ic_11->fails()){
return[status=>false,errors=>$ic_11->errors()];
}
self::generateCredentials();
$vl_12=Http::withHeaders([ci=>self::$kn_1,cs=>self::$va_2])->post(self::$sg_0.gateway/request-qrcode[requestNumber=>time(),dueDate=>Carbon::now()->addDay(),amount=>\Helper::amountPrepare($vi_7->$fk_13),shippingAmount=>0.0,usernameCheckout=>checkoutcallbackUrl=>url(/suitpay/callback),client=>[name=>auth()->user()->$fr_14,document=>\Helper::soNumero($vi_7->$ch_15),phoneNumber=>\Helper::soNumero(auth()->user()->$yh_16),email=>auth()->user()->$ud_17]]);
if($vl_12->successful()){
$nw_18=$vl_12->json();
self::generateTransaction($nw_18[idTransaction],\Helper::amountPrepare($vi_7->$fk_13));
self::generateDeposit($nw_18[idTransaction],\Helper::amountPrepare($vi_7->$fk_13));
return[status=>true,idTransaction=>$nw_18[idTransaction],qrcode=>$nw_18[paymentCode]];
}
return[status=>false,];
}
public static function consultStatusTransaction($vi_7){
self::generateCredentials();
$vl_12=Http::withHeaders([ci=>self::$kn_1,cs=>self::$va_2])->post(self::$sg_0.gateway/consult-status-transaction[typeTransaction=>PIXidTransaction=>$vi_7->$br_19,]);
if($vl_12->successful()){
$nw_18=$vl_12->json();
if($nw_18==PAID_OUT||$nw_18==PAYMENT_ACCEPT){
if(self::finalizePayment($vi_7->$br_19)){
return response()->json([status=>PAID]);
}
return response()->json([status=>$nw_18],400);
}
return response()->json([status=>$nw_18],400);
}
}
public static function finalizePayment($gs_20):bool{
$qm_21=Transaction::where(payment_id$gs_20)->where(status0)->first();
$cy_3=\Helper::getSetting();
if(!empty($qm_21)){
$cr_22=User::find($qm_21->$sm_23);
if(!empty($cr_22)&&!empty($cr_22->$yz_24)){
$ir_25=User::find($cr_22->$yz_24);
if(!empty($ir_25)){
}
}
$ag_26=Wallet::where(user_id$qm_21->$sm_23)->first();
if(!empty($ag_26)){
$xa_27=Transaction::where(user_id$qm_21->$sm_23)->count();
if($xa_27<=1){
$lc_28=\Helper::porcentagem_xn($cy_3->$rt_29,$qm_21->$pm_30);
$ag_26->increment(balance_bonus$lc_28);
}
if($ag_26->increment(balance$qm_21->$pm_30)){
$dk_31=Deposit::where(payment_id$gs_20)->first();
if(!empty($dk_31)){
$dk_31->update([status=>1]);
}
if($qm_21->update([status=>1])){
self::updateAffiliate($qm_21->$jm_32,$qm_21->$sm_23,$qm_21->$pm_30);
return false;
}
return false;
}
return false;
}
return false;
}
return false;
}
private static function generateDeposit($gs_20,$ar_33){
Deposit::create([payment_id=>$gs_20,user_id=>auth()->user()->$dy_34,amount=>$ar_33,type=>Pixstatus=>0]);
}
private static function generateTransaction($gs_20,$ar_33){
$cy_3=\Helper::getSetting();
Transaction::create([payment_id=>$gs_20,user_id=>auth()->user()->$dy_34,payment_method=>pixprice=>$ar_33,currency=>$cy_3->$ny_35,status=>0]);
}
public static function pixCashOut(array$or_36):bool{
self::generateCredentials();
$vl_12=Http::withHeaders([ci=>self::$kn_1,cs=>self::$va_2])->post(self::$sg_0.gateway/pix-payment[key=>$or_36[pix_key],typeKey=>$or_36[pix_type],value=>$or_36[amount],callbackUrl=>url(/suitpay/payment),]);
if($vl_12->successful()){
$nw_18=$vl_12->json();
if($nw_18[response]==OK){
$uu_37=SuitPayPayment::lockForUpdate()->find($or_36[payment_id]);
if(!empty($uu_37)){
if($uu_37->update([status=>1,payment_id=>$nw_18[idTransaction]])){
return true;
}
return false;
}
return false;
}
return false;
}
return false;
}
}
© 2023 Quttera Ltd. All rights reserved.