Вход Регистрация
Файл: app/Http/Controllers/PaymentController.php
Строк: 99
<?php

namespace AppHttpControllers;

use 
AppModelsCardUserModel;
use 
AppModelsUserModel;
use 
Auth;
use 
AppModelsGameSettingModel;
use 
XsollaSDKAPIXsollaClient;
use 
XsollaSDKAPIPaymentUITokenRequest;
use 
XsollaSDKWebhookWebhookServer;
use 
XsollaSDKWebhookMessageMessage;
use 
XsollaSDKExceptionWebhookXsollaWebhookException;


class 
PaymentController extends Controller
{
    public function 
index()
    {
        
$tokenRequest = new TokenRequest(config('payment.project_id'), (string) Auth::user()->id);
        
$tokenRequest->setUserEmail(Auth::user()->email)
            ->
setSandboxMode(config('payment.sandbox'))
            ->
setUserName(Auth::user()->login);
        
$tokenRequestArray $tokenRequest->toArray();
        
$tokenRequestArray['settings']['ui']['components']['virtual_currency']['custom_amount'] = true;
        
$xsollaClient XsollaClient::factory(array(
            
'merchant_id' => config('payment.merchant_id'),
            
'api_key' => config('payment.api_key_factory'),
        ));
        
$response $xsollaClient->createPaymentUIToken(['request' => $tokenRequestArray]);
        
$token $response['token'];
        return 
view('payment.index', ['token' => $token]);
    }

    public function 
result()
    {
        
$callback = function (Message $message) {
            switch (
$message->getNotificationType()) {
                case 
Message::USER_VALIDATION:
                    
$user UserModel::find((int) $message->getUserId());
                    if(
$user == null)
                        
$this->responseCode(400'INVALID_USER');
                    break;
                case 
Message::PAYMENT:
                    
$count $message->getPurchase()['virtual_currency']['quantity'];
                    
$userId = (int) $message->getUserId();
                    
$user UserModel::find($userId);
                    
$user->valmers += $count;
                    
$action GameSettingModel::where('key''action')->first();
                    if(
$action->value != '')
                    {
                        
$act json_decode($action->value);
                        if(
$act->action == 1$user->valmers += round($count*($act->percent/100));
                        elseif(
$act->action == && $count >= $act->summ)
                        {
                            
CardUserModel::create([
                                
'user' => $userId,
                                
'card' => $act->card,
                                
'status' => 'redeemed'
                            
]);
                        }
                    }
                    if(
$user->ref != 0)
                    {
                        
$referal UserModel::find($user->ref);
                        
$referal->valmers += round($count/2);
                        
$referal->save();
                    }
                    
$user->save();
                    
$this->responseCode(204'PURCHASE_SUCCESS');
                    break;
                case 
Message::REFUND:
                    
$this->responseCode(204'PURCHASE_CANCEL');
                    break;
                default:
                    
$this->responseCode(204'PURCHASE_CANCEL');
            }
        };
        
$webhookServer WebhookServer::create($callbackconfig('payment.code'));
        
$webhookServer->start();
    }

    public function 
responseCode($id$code$message '')
    {
        
header ("HTTP/1.1 $id");
        
$json = array("error" => array("code" => $code"message" => $message));
        echo 
json_encode($json);
        exit;
    }
}
Онлайн: 1
Реклама