ok

Mini Shell

Direktori : /home2/selectio/public_html/limpiar.in.net/app/Http/Controllers/Payment/
Upload File :
Current File : //home2/selectio/public_html/limpiar.in.net/app/Http/Controllers/Payment/AuthorizenetController.php

<?php

namespace App\Http\Controllers\Payment;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use net\authorize\api\contract\v1 as AnetAPI;
use net\authorize\api\controller as AnetController;
use App\Models\CombinedOrder;
use App\Models\CustomerPackage;
use App\Models\SellerPackage;
use App\Http\Controllers\CustomerPackageController;
use App\Http\Controllers\SellerPackageController;
use App\Http\Controllers\WalletController;
use App\Http\Controllers\CheckoutController;
use Auth;
use Session;

class AuthorizenetController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct() {
        //$this->middleware('auth'); // later enable it when needed user login while payment
    }

    // start page form after start
    public function pay() {
        return view('frontend/authorize_net/pay');
    }

    public function handleonlinepay(Request $request) {
        $input = $request->input();
        $user = Auth::user();
        $invoiceNumber = '';
        $lastName = '';
        $address = '';
        $city = '';
        $zip = '';
        $country = '';

		if(Session::get('payment_type') == 'cart_payment'){
            $database_order = CombinedOrder::findOrFail(Session::get('combined_order_id'));
            $first_order = $database_order->orders->first();

            $invoiceNumber = time().$database_order->id;
            $lastName = json_decode($first_order->shipping_address)->name;
            $address = json_decode($first_order->shipping_address)->address;
			$amount = $database_order->orders->sum('grand_total');
            $city = json_decode($first_order->shipping_address)->city;
            $zip = json_decode($first_order->shipping_address)->postal_code;
            $country = json_decode($first_order->shipping_address)->country;
		}
		
		elseif (Session::get('payment_type') == 'wallet_payment') {
            $invoiceNumber = rand(10000,99999);
			$amount= Session::get('payment_data')['amount'];
            $lastName = $user->name;
		}
		
		elseif (Session::get('payment_type') == 'customer_package_payment') {
            $invoiceNumber = rand(10000,99999);
			$customer_package = CustomerPackage::findOrFail(Session::get('payment_data')['customer_package_id']);
			$amount = $customer_package->amount;
            $lastName = $user->name;
		}
		
		elseif (Session::get('payment_type') == 'seller_package_payment') {
            $invoiceNumber = rand(10000,99999);
			$seller_package = SellerPackage::findOrFail(Session::get('payment_data')['seller_package_id']);
			$amount = $seller_package->amount;
            $lastName = $user->name;
		}
        
        /* Create a merchantAuthenticationType object with authentication details
          retrieved from the constants file */
        $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
        $merchantAuthentication->setName(env('MERCHANT_LOGIN_ID'));
        $merchantAuthentication->setTransactionKey(env('MERCHANT_TRANSACTION_KEY'));

        // Set the transaction's refId
        $refId = 'ref' . time();
        $cardNumber = preg_replace('/\s+/', '', $input['cardNumber']);
        
        // Create the payment data for a credit card
        $creditCard = new AnetAPI\CreditCardType();
        $creditCard->setCardNumber($cardNumber);
        $creditCard->setExpirationDate($input['expiration-year'] . "-" .$input['expiration-month']);
        $creditCard->setCardCode($input['cvv']);

        // Add the payment data to a paymentType object
        $paymentOne = new AnetAPI\PaymentType();
        $paymentOne->setCreditCard($creditCard);
        
        // Create order information
        $order = new AnetAPI\OrderType();
        $order->setInvoiceNumber($invoiceNumber);
//        $order->setDescription("Golf Shirts");

        // Set the customer's Bill To address
        $customerAddress = new AnetAPI\CustomerAddressType();
        $customerAddress->setFirstName("");
        $customerAddress->setLastName($lastName);
        $customerAddress->setAddress($address);
        $customerAddress->setCity($city);
        $customerAddress->setZip($zip);
        $customerAddress->setCountry($country);

        // Set the customer's identifying information
        $customerData = new AnetAPI\CustomerDataType();
        $customerData->setId($user->id);
        $customerData->setEmail($user->email);

        // Create a TransactionRequestType object and add the previous objects to it
        $transactionRequestType = new AnetAPI\TransactionRequestType();
        $transactionRequestType->setTransactionType("authCaptureTransaction");
        $transactionRequestType->setAmount($amount);
        $transactionRequestType->setPayment($paymentOne);
        $transactionRequestType->setOrder($order);
        $transactionRequestType->setPayment($paymentOne);
        $transactionRequestType->setBillTo($customerAddress);
        $transactionRequestType->setCustomer($customerData);

        // Assemble the complete transaction request
        $requests = new AnetAPI\CreateTransactionRequest();
        $requests->setMerchantAuthentication($merchantAuthentication);
        $requests->setRefId($refId);
        $requests->setTransactionRequest($transactionRequestType);

        // Create the controller and get the response
        $controller = new AnetController\CreateTransactionController($requests);
        if (get_setting('authorizenet_sandbox') == 1) {
            $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
        } else {
            $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::PRODUCTION);
        }
        
        // dd($response);
        if ($response != null) {
            // Check to see if the API request was successfully received and acted upon
            if ($response->getMessages()->getResultCode() == "Ok") {
                // Since the API request was successful, look for a transaction response
                // and parse it to display the results of authorizing the card
                $tresponse = $response->getTransactionResponse();

                if ($tresponse != null && $tresponse->getMessages() != null) {
                    // echo " Successfully created transaction with Transaction ID: " . $tresponse->getTransId() . "\n";
                    // echo " Transaction Response Code: " . $tresponse->getResponseCode() . "\n";
                    // echo " Message Code: " . $tresponse->getMessages()[0]->getCode() . "\n";
                    // echo " Auth Code: " . $tresponse->getAuthCode() . "\n";
                    // echo " Description: " . $tresponse->getMessages()[0]->getDescription() . "\n";
                    $payment_detalis = json_encode(
                            array(
                                'transId' => $tresponse->getTransId(),
                                'authCode' => $tresponse->getAuthCode(),
                                'accountType' => $tresponse->getAccountType(),
                                'accountNumber' => $tresponse->getAccountNumber(),
                                'refId' => $response->getRefId(),
                            )
                    );
                    $message_text = $tresponse->getMessages()[0]->getDescription().", Transaction ID: " . $tresponse->getTransId();
                    $msg_type = "success_msg";    
                    
					if(Session::get('payment_type') == 'cart_payment'){
						return (new CheckoutController)->checkout_done(Session::get('combined_order_id'), $payment_detalis);
					}
					elseif (Session::get('payment_type') == 'wallet_payment') {
						return (new WalletController)->wallet_payment_done(Session::get('payment_data'), $payment_detalis);
					}
					elseif (Session::get('payment_type') == 'customer_package_payment') {
						return (new CustomerPackageController)->purchase_payment_done(Session::get('payment_data'), $payment_detalis);
					}
					elseif (Session::get('payment_type') == 'seller_package_payment') {
						return (new SellerPackageController)->purchase_payment_done(Session::get('payment_data'), $payment_detalis);
					}
                    
                } else {
                    $message_text = 'There were some issue with the payment. Please try again later.';
                    $msg_type = "error_msg";                                    

                    if ($tresponse->getErrors() != null) {
                        $message_text = $tresponse->getErrors()[0]->getErrorText();
                        $msg_type = "error_msg";                                    
                    }
                }
                // Or, print errors if the API request wasn't successful
            } else {
                $message_text = 'There were some issue with the payment. Please try again later.';
                $msg_type = "error_msg";                                    

                $tresponse = $response->getTransactionResponse();

                if ($tresponse != null && $tresponse->getErrors() != null) {
                    $message_text = $tresponse->getErrors()[0]->getErrorText();
                    $msg_type = "error_msg";                    
                } else {
                    $message_text = $response->getMessages()->getMessage()[0]->getText();
                    $msg_type = "error_msg";
                }                
            }
        } else {
            $message_text = "No response returned";
            $msg_type = "error_msg";
        }
        
        Session::forget('combined_order_id');
        flash(translate($message_text))->success();
        return redirect()->route('home');
    }

    public function cardType(){
        return (new AnetAPI\CreditCardType())->cardType();
    }
}

Zerion Mini Shell 1.0