Inheritance: extends PayPal\Common\PPModel
Example #1
0
 public function success()
 {
     $paymentId = request('paymentId');
     $payment = Payment::get($paymentId, $this->paypal);
     $execution = new PaymentExecution();
     $execution->setPayerId(request('PayerID'));
     $transaction = new Transaction();
     $amount = new Amount();
     $details = new Details();
     $productsSum = 0.0;
     foreach ($this->order->getProducts() as $product) {
         $productsSum += $product->getTotal();
     }
     $details->setSubtotal($productsSum);
     $total = $productsSum;
     if ($delivery = $this->order->getDelivery()) {
         $details->setShipping($delivery);
         $total += $delivery;
     }
     if ($vat = $this->order->getVat()) {
         $details->setTax($vat);
         $total += $vat;
     }
     $amount->setCurrency($this->order->getCurrency())->setTotal($total)->setDetails($details);
     $transaction->setAmount($amount);
     $execution->addTransaction($transaction);
     try {
         $payment->execute($execution, $this->paypal);
     } catch (\Exception $e) {
         $this->log($e);
         throw $e;
     } finally {
         Payment::get($paymentId, $this->paypal);
     }
 }
 public function ExecutePayment($paymentId = 0, $payerId = 0)
 {
     $apiContext = $this->getApiContext();
     try {
         $payment = Payment::get($paymentId, $apiContext);
     } catch (Exception $ex) {
         $this->error = $ex->getMessage();
         return false;
     }
     $dataP = json_decode($payment->toJSON());
     if ($dataP->payer->payer_info->payer_id != $payerId) {
         $this->error = 'Los datos son inválidos';
         return false;
     }
     if ($dataP->state == 'approved') {
         $this->error = 'El pedido ya fue pagado';
         return false;
     }
     if (!$dataP->state == 'created') {
         $this->error = 'El pedido no ya fue aprobado';
         return false;
     }
     try {
         $paymentExecution = new PaymentExecution();
         $paymentExecution->setPayerId($payerId);
         $payment = $payment->execute($paymentExecution, $apiContext);
     } catch (Exception $ex) {
         $this->error = $ex->getMessage();
         return false;
     }
     return $payment->toJSON();
 }
Example #3
0
 /**
  * Completes the payment once buyer approval has been
  * obtained. Used only when the payment method is 'paypal'
  * 
  * */
 public function executePayment($paymentId, $payerId)
 {
     $payment = $this->getPaymentDetails($paymentId);
     $paymentExecution = new PaymentExecution();
     $paymentExecution->setPayerId($payerId);
     $payment = $payment->execute($paymentExecution, $this->apiContext);
     return $payment;
 }
Example #4
0
 public static function executePayPalPayment($paymentId, $payerId)
 {
     $apiContext = self::getApiContext();
     $payment = Payment::get($paymentId, $apiContext);
     // ### Payment Execute
     // PaymentExecution object includes information necessary
     // to execute a PayPal account payment.
     // The payer_id is added to the request query parameters
     // when the user is redirected from paypal back to your site
     $execution = new PaymentExecution();
     $execution->setPayerId($payerId);
     return $payment->execute($execution, $apiContext);
 }
 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index()
 {
     $apiContext = new \PayPal\Rest\ApiContext(new \PayPal\Auth\OAuthTokenCredential('ATGFkB2ea6f0pM92jwBqkZ17kxsiftDvUhLHyXson-10AUs7n5TocpEc0sis7Cl_fMIxS8uQO04kPP8Q', 'ENP_JPkc3e4Yl6VeHZ_0vgvEh0SYdtzkMvw_VGBrr2nJ67sg9RuKB_YF7y_k4bj-4t2U-_23MaAGV3vD'));
     $status = '';
     if (isset($_GET['success']) && $_GET['success'] == 'true') {
         $transaction = new Transaction();
         $amount = new Amount();
         $paymentId = $_GET['paymentId'];
         $payment = Payment::get($paymentId, $apiContext);
         $amount->setCurrency($payment->transactions[0]->amount->getCurrency());
         $amount->setTotal($payment->transactions[0]->amount->getTotal());
         $amount->setDetails($payment->transactions[0]->amount->getDetails());
         $transaction->setAmount($amount);
         $execution = new PaymentExecution();
         $execution->setPayerId($_GET['PayerID']);
         $execution->addTransaction($transaction);
         $rifas = $payment->transactions[0]->description;
         $rifas = explode(',', $rifas);
         $aux = 0;
         try {
             foreach ($rifas as $rifa) {
                 $aux = Rifa::find($rifa);
                 if ($aux->user_id == NULL) {
                     $aux->user_id = Auth::user()->id;
                     $aux->save();
                 } else {
                     $status = 'Numeros de rifas ja foram escolhidos por outra pessoa, por favor escolha novamente.';
                     return view('confirmacao')->with('status', $status);
                 }
             }
             $result = $payment->execute($execution, $apiContext);
             try {
                 $payment = Payment::get($paymentId, $apiContext);
             } catch (Exception $ex) {
                 $status = 'Pagamento ainda sem confirmacao';
             }
         } catch (Exception $ex) {
             $status = 'Compra nao foi executada';
         }
         if ($result->state == "approved") {
             $status = 'Compra feita com sucesso!';
             $aux = 1;
         }
         return view('confirmacao')->with('status', $status)->with('aux', $aux);
     } else {
         $status = 'Compra cancelada pelo usuario';
         return view('confirmacao')->with('status', $status);
     }
 }
 /**
  * @param array $params
  * @return bool
  */
 public function confirmPayment($params = [])
 {
     $payment = Payment::get($params['paymentId'], $this->apiContext);
     $execution = new PaymentExecution();
     $execution->setPayerId($params['PayerID']);
     $transaction = $this->buildTransaction();
     try {
         $execution->addTransaction($transaction);
         $payment->execute($execution, $this->apiContext);
     } catch (PayPalConnectionException $e) {
         throw new Exception(trans('vendirun::checkout.paypalUnavailable'));
     }
     $vendirunPayment = new VendirunPayment($this->order->getTotalPrice(), date("Y-m-d"), 'paypal', json_encode($payment));
     $this->order->addPayment($vendirunPayment);
     return $this->orderRepository->save($this->order);
 }
Example #7
0
 public function processResult($data)
 {
     $paymentId = ArrayHelper::getValue($data, 'paymentId');
     if (!$paymentId) {
         throw new BadRequestHttpException('Missing payment id');
     }
     $payerId = ArrayHelper::getValue($data, 'PayerID');
     if (!$payerId) {
         throw new BadRequestHttpException('Missing payer id');
     }
     $payment = Payment::get($paymentId, $this->getContext());
     $event = new GatewayEvent(['gatewayData' => $data, 'payment' => $payment]);
     $this->trigger(GatewayEvent::EVENT_PAYMENT_REQUEST, $event);
     if (!$event->handled) {
         throw new ServerErrorHttpException('Error processing request');
     }
     $transaction = \Yii::$app->getDb()->beginTransaction();
     try {
         $paymentExecution = new PaymentExecution();
         $paymentExecution->setPayerId($payerId);
         $event->payment = $payment->execute($paymentExecution, $this->getContext());
         $this->trigger(GatewayEvent::EVENT_PAYMENT_SUCCESS, $event);
         $transaction->commit();
     } catch (\Exception $e) {
         $transaction->rollback();
         \Yii::error('Payment processing error: ' . $e->getMessage(), 'PayPal');
         throw new ServerErrorHttpException('Error processing request');
     }
     return true;
 }
 public function getPaymentStatus()
 {
     // Get the payment ID before session clear
     $payment_id = Session::get('paypal_payment_id');
     // clear the session payment ID
     Session::forget('paypal_payment_id');
     if (empty(Input::get('PayerID')) || empty(Input::get('token'))) {
         return Redirect::route('original.route')->with('error', 'Payment failed');
     }
     $payment = Payment::get($payment_id, $this->_api_context);
     // PaymentExecution object includes information necessary
     // to execute a PayPal account payment.
     // The payer_id is added to the request query parameters
     // when the user is redirected from paypal back to your site
     $execution = new PaymentExecution();
     $execution->setPayerId(Input::get('PayerID'));
     //Execute the payment
     $result = $payment->execute($execution, $this->_api_context);
     echo '<pre>';
     print_r($result);
     echo '</pre>';
     exit;
     // DEBUG RESULT, remove it later
     if ($result->getState() == 'approved') {
         // payment made
         return Redirect::route('original.route')->with('success', 'Payment success');
     }
     return Redirect::route('original.route')->with('error', 'Payment failed');
 }
 public function paymentStatus()
 {
     $payment_id = Session::get('paypal_payment_id');
     Session::forget('paypal_payment_id');
     if (empty(Input::get('PayerID')) || empty(Input::get('token'))) {
         return "Operation failed";
     }
     $payment = Payment::get($payment_id, $this->_api_context);
     $execution = new PaymentExecution();
     $execution->setPayerId(Input::get('PayerID'));
     $result = $payment->execute($execution, $this->_api_context);
     if ($result->getState() == 'approved') {
         return 'Payment was successfull , we Thank you for that';
     } else {
         return "Operation failed";
     }
 }
Example #10
0
 /**
  * {@inheritDoc}
  */
 public function execute($request)
 {
     /** @var $request Capture */
     RequestNotSupportedException::assertSupports($this, $request);
     $details = ArrayObject::ensureArrayObject($request->getModel());
     $payment = new Payment();
     $payer = new Payer();
     $payer->payment_method = "paypal";
     $amount = new Amount();
     $amount->currency = $details['PAYMENTREQUEST_CURRENCYCODE'];
     $amount->total = $details['PAYMENTREQUEST_AMT'];
     $transaction = new Transaction();
     $transaction->amount = $amount;
     $transaction->description = $details['PAYMENTREQUEST_DESCRIPTION'];
     $redirectUrls = new RedirectUrls();
     $redirectUrls->return_url = $details['RETURN_URL'];
     $redirectUrls->cancel_url = $details['CANCEL_URL'];
     $payment->intent = "sale";
     $payment->payer = $payer;
     $payment->redirect_urls = $redirectUrls;
     $payment->transactions = [$transaction];
     if (false == isset($details['response']) && false == isset($details['response']['state']) && isset($payment->payer->payment_method) && 'paypal' == $payment->payer->payment_method) {
         $paymentResponse = $payment->create($this->api);
         $details['response'] = $paymentResponse->toArray();
         foreach ($paymentResponse->links as $link) {
             if ($link->rel == 'approval_url') {
                 throw new HttpRedirect($link->href);
             }
         }
     }
     if (false == isset($details['response']) && false == isset($details['response']['state']) && isset($payment->payer->payment_method) && 'credit_card' == $payment->payer->payment_method) {
         $paymentResponse = $payment->create($this->api);
         $details['response'] = $paymentResponse->toArray();
     }
     $this->gateway->execute(new Sync($details));
     if (true == isset($details['response']) && true == isset($details['response']['state']) && true == isset($details['response']['id']) && isset($payment->payer->payment_method) && 'paypal' == $payment->payer->payment_method && true == isset($details['PayerID'])) {
         $payment->setId($details['response']['id']);
         $execution = new PaymentExecution();
         $execution->setPayerId($details['PayerID']);
         //Execute the payment
         $paymentResponse = $payment->execute($execution, $this->api);
         $details['response'] = $paymentResponse->toArray();
     }
 }
 public function callExecute($clientId, $clientSecret, $paymentId, $payerId, $amount, $currency)
 {
     $oauthCredential = new OAuthTokenCredential($clientId, $clientSecret);
     $apiContext = new ApiContext($oauthCredential);
     $apiContext->setConfig(['mode' => $this->mode]);
     $payment = Payment::get($paymentId, $apiContext);
     $execution = new PaymentExecution();
     $execution->setPayerId($payerId);
     $result = $payment->execute($execution, $apiContext);
     try {
         $payment = Payment::get($paymentId, $apiContext);
     } catch (\Exception $e) {
         throw new PaymentException('unable to find payment: ' . $e->getMessage());
     }
     if ($payment->state == 'approved') {
         return true;
     }
     return false;
 }
Example #12
0
 public function successPay(Request $request)
 {
     // send emails.
     if (Auth::check()) {
         // Get the payment ID before session clear
         $paypal_data = Session::get("paypal_data");
         Session::forget("paypal_data");
         $payment_id = $paypal_data['paypal_payment_id'];
         $order_data = ["msg" => "Error: Payment Failed", "result" => "error"];
         if (empty($request->get("PayerID")) || empty($request->get("token"))) {
             return redirect('/fabrics')->with('order_data', $order_data);
         }
         $payment = Payment::get($payment_id, $paypal_data["paypal_context"]);
         $execution = new PaymentExecution();
         $execution->setPayerId($request->get("PayerID"));
         //Execute the payment
         $result = $payment->execute($execution, $paypal_data["paypal_context"]);
         if ($result->getState() == 'approved') {
             // payment made
             $user = Auth::user();
             $dataMail = $paypal_data["data_mail"];
             Mail::send("email.email-sample", ["data" => $dataMail], function ($mail) use($user) {
                 //$mail->to("*****@*****.**","JJ")->cc("*****@*****.**" , "Javier")->cc("*****@*****.**" ,"Oswaldo")->subject("New Sample Request");
                 $mail->to("*****@*****.**", "DNIM")->subject("New Order");
             });
             Mail::send("email.email-sample", ["data" => $dataMail], function ($mail) use($user) {
                 $mail->to($user->email, $user->name)->subject("New Order Created");
                 //$mail->to("*****@*****.**","DNIM")->subject("New Order");
             });
             $paypal_data["fabric"]->save();
             $paypal_data["order"]->save();
             $order_data = ["msg" => "Success: Order created successfully", "result" => "success"];
             return redirect("/fabrics")->with("order_data", $order_data);
         } else {
             $order_data = ["msg" => "Error: Payment not approved", "result" => "error"];
             return redirect("/fabrics")->with("order_data", $order_data);
         }
     } else {
         return redirect("/");
     }
 }
 /**
  * Complete the PayPal payment
  * @param Request $request
  * @param $temporaryToken
  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  */
 public function completePayment(Request $request, $temporaryToken)
 {
     $token = PaypalTemporaryToken::where('token', '=', $temporaryToken)->where('account_id', '=', get_user()->account_id)->first();
     if ($token === null) {
         $error = trans("errors.paypalTokenInvalid");
         return view("pages.paypal.error", compact('error'));
     }
     $token->delete();
     if ($request->input('paymentId') === null || $request->input('PayerID') === null) {
         $error = trans("errors.missingPaypalInformation");
         return view("pages.paypal.error", compact('error'));
     }
     $payment = Payment::get($request->input('paymentId'), $this->apiContext);
     $execution = new PaymentExecution();
     $execution->setPayerId($request->input('PayerID'));
     try {
         $payment->execute($execution, $this->apiContext);
         $payment = Payment::get($request->input('paymentId'), $this->apiContext);
     } catch (Exception $e) {
         $error = trans("errors.paypalGenericError");
         return view("pages.paypal.error", compact('error'));
     }
     if (strtolower($payment->getState() != 'approved')) {
         $error = trans("errors.paymentNotApproved");
         return view("pages.paypal.error", compact('error'));
     }
     //POST the payment back into Sonar for storage
     try {
         $accountBillingController = new AccountBillingController();
         $transaction = $payment->getTransactions()[0];
         $accountBillingController->storePayPalPayment(get_user()->account_id, $transaction->related_resources[0]->sale->amount->total, $transaction->related_resources[0]->sale->id);
     } catch (Exception $e) {
         $error = trans("errors.failedToApplyPaypalPayment");
         return view("pages.paypal.error", compact('error'));
     }
     $billingController = new BillingController();
     $billingController->clearBillingCache();
     return view("pages.paypal.success");
 }
Example #14
0
 public function getPaymentStatus()
 {
     // Get the payment ID before session clear
     $payment_id = \Session::get('paypal_payment_id');
     // clear the session payment ID
     \Session::forget('paypal_payment_id');
     $payerId = \Input::get('PayerID');
     $token = \Input::get('token');
     if (empty($payerId) || empty($token)) {
         return \Redirect::route('home')->with('message', 'Hubo un problema al intentar pagar con Paypal');
     }
     $payment = Payment::get($payment_id, $this->_api_context);
     $execution = new PaymentExecution();
     $execution->setPayerId(\Input::get('PayerID'));
     $result = $payment->execute($execution, $this->_api_context);
     if ($result->getState() == 'approved') {
         $this->saveOrder();
         \Session::forget('cart');
         return \Redirect::route('home')->with('message', 'Compra realizada de forma correcta');
     }
     return \Redirect::route('home')->with('message', 'La compra fue cancelada');
 }
Example #15
0
function execute_payment_test()
{
    $apiContext = $GLOBALS['PAYPAL']['api_context'];
    // ### Approval Status
    // Determine if the user approved the payment or not
    if (isset($_GET['success']) && $_GET['success'] == 'true') {
        // Get the payment Object by passing paymentId
        // payment id was previously stored in session in
        // CreatePaymentUsingPayPal.php
        $paymentId = $_GET['paymentId'];
        $payment = Payment::get($paymentId, $apiContext);
        // ### Payment Execute
        // PaymentExecution object includes information necessary
        // to execute a PayPal account payment.
        // The payer_id is added to the request query parameters
        // when the user is redirected from paypal back to your site
        $execution = new PaymentExecution();
        $execution->setPayerId($_GET['PayerID']);
        // ### Optional Changes to Amount
        // If you wish to update the amount that you wish to charge the customer,
        // based on the shipping address or any other reason, you could
        // do that by passing the transaction object with just `amount` field in it.
        // Here is the example on how we changed the shipping to $1 more than before.
        // $transaction = new Transaction();
        // $amount = new Amount();
        // $details = new Details();
        // $details->setShipping(2.2)
        //     ->setTax(1.3)
        //     ->setSubtotal(17.50);
        // $amount->setCurrency('USD');
        // $amount->setTotal(21);
        // $amount->setDetails($details);
        // $transaction->setAmount($amount);
        // Add the above transaction object inside our Execution object.
        // $execution->addTransaction($transaction);
        try {
            // Execute the payment
            // (See bootstrap.php for more on `ApiContext`)
            $result = $payment->execute($execution, $apiContext);
            // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
            ResultPrinter::printResult("Executed Payment", "Payment", $payment->getId(), $execution, $result);
            try {
                $payment = Payment::get($paymentId, $apiContext);
            } catch (Exception $ex) {
                // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
                ResultPrinter::printError("Get Payment", "Payment", null, null, $ex);
                exit(1);
            }
        } catch (Exception $ex) {
            // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
            ResultPrinter::printError("Executed Payment", "Payment", null, null, $ex);
            exit(1);
        }
        // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
        ResultPrinter::printResult("Get Payment", "Payment", $payment->getId(), null, $payment);
        return $payment;
    } else {
        // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
        ResultPrinter::printResult("User Cancelled the Approval", null);
        exit;
    }
}
Example #16
0
<?php

require 'app/start.php';
use PayPal\Api\Payment;
use PayPal\Api\PaymentExecution;
if (!isset($_GET['success'], $_GET['paymentId'], $_GET['PayerID'])) {
    die;
}
if ((bool) $_GET['success'] === 'false') {
    echo 'Transaction cancelled';
    die;
}
$paymentID = $_GET['paymentId'];
$payerId = $_GET['PayerID'];
$payment = Payment::get($paymentID, $paypal);
$execute = new PaymentExecution();
$execute->setPayerId($payerId);
try {
    $result = $payment->execute($execute, $paypal);
} catch (Exception $e) {
    die($e);
}
echo 'Pay success!';
Example #17
0
 /**
  * Completes the payment once buyer approval has been
  * obtained. Used only when the payment method is 'paypal'
  * 
  * @param string $paymentId id of a previously created
  * 		payment that has its payment method set to 'paypal'
  * 		and has been approved by the buyer.
  * 
  * @param string $payerId PayerId as returned by PayPal post
  * 		buyer approval.
  */
 function executePayment($paymentId, $payerId)
 {
     $payment = getPaymentDetails($paymentId);
     $paymentExecution = new PaymentExecution();
     $paymentExecution->setPayerId($payerId);
     $payment = $payment->execute($paymentExecution, getApiContext());
     return $payment;
 }
Example #18
0
 /**
  * @param string $paymentId
  * @param string $payerId
  *
  * @return void
  */
 public function handleReturn($paymentId, $payerId)
 {
     try {
         $payment = Payment::get($paymentId, $this->context->getApiContext());
         $execution = new PaymentExecution();
         $execution->setPayerId($payerId);
         $payment->execute($execution, $this->context->getApiContext());
         $paidPayment = Payment::get($paymentId, $this->context->getApiContext());
     } catch (\Exception $exception) {
         throw $this->translateException($exception);
     }
     $this->onReturn($this, $paidPayment);
     return $paidPayment;
 }
use PayPal\Api\Payment;
use PayPal\Api\PaymentExecution;
// ### Approval Status
// Determine if the user approved the payment or not
if (isset($_GET['success']) && $_GET['success'] == 'true') {
    // Get the payment Object by passing paymentId
    // payment id was previously stored in session in
    // CreatePaymentUsingPayPal.php
    $paymentId = $_GET['paymentId'];
    $payment = Payment::get($paymentId, $apiContext);
    // ### Payment Execute
    // PaymentExecution object includes information necessary
    // to execute a PayPal account payment.
    // The payer_id is added to the request query parameters
    // when the user is redirected from paypal back to your site
    $execution = new PaymentExecution();
    $execution->setPayerId($_GET['PayerID']);
    try {
        // Execute the payment
        // (See bootstrap.php for more on `ApiContext`)
        $result = $payment->execute($execution, $apiContext);
        ResultPrinter::printResult("Executed Payment", "Payment", $payment->getId(), $execution, $result);
        try {
            $payment = Payment::get($paymentId, $apiContext);
        } catch (Exception $ex) {
            ResultPrinter::printError("Get Payment", "Payment", null, null, $ex);
            exit(1);
        }
    } catch (Exception $ex) {
        ResultPrinter::printError("Executed Payment", "Payment", null, null, $ex);
        exit(1);
Example #20
0
 /**
  * @depends testSerializationDeserialization
  * @param PaymentExecution $obj
  */
 public function testGetters($obj)
 {
     $this->assertEquals($obj->getPayerId(), "TestSample");
     $this->assertEquals($obj->getTransactions(), array(TransactionTest::getObject()));
 }
Example #21
0
 public function getPaymentStatus()
 {
     // Get the payment ID before session clear
     $payment_id = \Session::get('paypal_payment_id');
     // clear the session payment ID
     \Session::forget('paypal_payment_id');
     $payerId = \Input::get('PayerID');
     $token = \Input::get('token');
     //if (empty(\Input::get('PayerID')) || empty(\Input::get('token'))) {
     if (empty($payerId) || empty($token)) {
         return \Redirect::route('home')->with('message', 'Hubo un problema al intentar pagar con Paypal');
     }
     $payment = Payment::get($payment_id, $this->_api_context);
     // PaymentExecution object includes information necessary
     // to execute a PayPal account payment.
     // The payer_id is added to the request query parameters
     // when the user is redirected from paypal back to your site
     $execution = new PaymentExecution();
     $execution->setPayerId(\Input::get('PayerID'));
     //Execute the payment
     $result = $payment->execute($execution, $this->_api_context);
     //echo '<pre>';print_r($result);echo '</pre>';exit; // DEBUG RESULT, remove it later
     if ($result->getState() == 'approved') {
         // payment made
         // Registrar el pedido --- ok
         // Registrar el Detalle del pedido  --- ok
         // Eliminar carrito
         // Enviar correo a user
         // Enviar correo a admin
         // Redireccionar
         $this->saveOrder(\Session::get('cart'));
         \Session::forget('cart');
         return \Redirect::route('home')->with('message', 'Compra realizada de forma correcta');
     }
     return \Redirect::route('home')->with('message', 'La compra fue cancelada');
 }
 function complete_payment_paypal_installment()
 {
     global $insert_id;
     if (isset($_SESSION['paypal']['paymentId']) && isset($_SESSION['paypal']['PayerID'])) {
         // auth
         $apiContext = $this->apiContext();
         try {
             // Get the payment Object by passing paymentId
             $payment = Payment::get($_SESSION['paypal']['paymentId'], $apiContext);
         } catch (Exception $ex) {
             $this->LoggingManager->log(print_r($ex, true), 'DEBUG');
             // redirect
             unset($_SESSION['paypal']);
             xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code, 'SSL'));
         }
         // PaymentExecution
         $execution = new PaymentExecution();
         $execution->setPayerId($_SESSION['paypal']['PayerID']);
         try {
             // Execute the payment
             $payment->execute($execution, $apiContext);
         } catch (Exception $ex) {
             $this->LoggingManager->log(print_r($ex, true), 'DEBUG');
             $this->remove_order($insert_id);
             unset($_SESSION['paypal']);
             xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code, 'SSL'));
         }
         // capture
         if (($this->transaction_type == 'order' || $this->transaction_type == 'authorize') && $this->get_config('PAYPAL_CAPTURE_MANUELL') == '0') {
             $this->capture_payment($payment);
         }
         $sql_data_array = array('orders_id' => $insert_id, 'payment_id' => $_SESSION['paypal']['paymentId'], 'payer_id' => $_SESSION['paypal']['PayerID']);
         xtc_db_perform(TABLE_PAYPAL_PAYMENT, $sql_data_array);
         try {
             // Get the payment Object by passing paymentId
             $payment = Payment::get($_SESSION['paypal']['paymentId'], $apiContext);
         } catch (Exception $ex) {
             $this->LoggingManager->log(print_r($ex, true), 'DEBUG');
             $this->remove_order($insert_id);
             unset($_SESSION['paypal']);
             xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code, 'SSL'));
         }
         $status = $this->get_orders_status($payment);
         $status['status_id'] = $this->get_config('PAYPAL_ORDER_STATUS_ACCEPTED_ID');
         if ($status['status_id'] < 0) {
             $check_query = xtc_db_query("SELECT orders_status\n                                       FROM " . TABLE_ORDERS . " \n                                      WHERE orders_id = '" . (int) $insert_id . "'");
             $check = xtc_db_fetch_array($check_query);
             $status['status_id'] = $check['orders_status'];
         }
         $this->update_order($status['comment'], $status['status_id'], $insert_id);
     } else {
         // redirect
         unset($_SESSION['paypal']);
         xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code, 'SSL'));
     }
 }
Example #23
0
 public function getPaymentStatus()
 {
     // Get the payment ID before session clear
     $payment_id = Session::get('paypal_payment_id');
     // clear the session payment ID
     Session::forget('paypal_payment_id');
     /*if (empty(Input::get('PayerID')) || empty(Input::get('token'))) {
           return Redirect::route('original.route')
               ->with('error', 'Payment failed');
       }
       */
     // Get the Payer id and token
     $payer_id = Input::get('PayerID');
     $token = Input::get('token');
     // If any of the two is empty, payment was not made
     if (empty($payer_id) || empty($token)) {
         return Redirect::route('dashboard')->with('alertError', 'Paypal Transaction aborted');
     }
     $payment = Payment::get($payment_id, $this->_api_context);
     // PaymentExecution object includes information necessary
     // to execute a PayPal account payment.
     // The payer_id is added to the request query parameters
     // when the user is redirected from paypal back to your site
     $execution = new PaymentExecution();
     $execution->setPayerId(Input::get('PayerID'));
     //Execute the payment
     $result = $payment->execute($execution, $this->_api_context);
     /*return Redirect::route('dashboard')
       ->with('alertMessage', 'Transaction Successful');
       */
     $transaction_json = json_decode($result->getTransactions()[0], TRUE);
     //get Payer details
     $payer['email'] = $result->getPayer()->getPayerInfo()->getEmail();
     $payer['phone'] = $result->getPayer()->getPayerInfo()->getPhone();
     $payer['name'] = $result->getPayer()->getPayerInfo()->getFirstName() . $result->getPayer()->getPayerInfo()->getLastName() . $result->getPayer()->getPayerInfo()->getMiddleName();
     //retrieve transaction destination user NOT our business account, set before transaction request was sent to paypal
     $transaction = new IcePayTransaction();
     $transaction->user_id = Auth::user()->id;
     $transaction->tid = $result->getId();
     //transaction id or transaction bordereaux
     $transaction->sender_email = Auth::user()->email;
     //$payer['email']; //sender's email
     $transaction->receiver_email = Session::get('destination');
     //receiver's email or number)
     $transaction->type = 'PAYPAL_TO_' . Session::get('destProvider') . '_' . $transaction_json['related_resources'][0]['sale']['payment_mode'];
     $transaction->status = 'pending';
     //$transaction_json['related_resources'][0]['sale']['state'];
     $transaction->amount = $transaction_json['amount']['total'];
     //total amount deducted and transferred
     $transaction->currency = $transaction_json['amount']['currency'];
     $transaction->save();
     $email = Auth::user()->email;
     //$payer['email'];
     $username = Auth::user()->username;
     //send transaction email to sender confirming transactions in a much professional way.
     Mail::send(['html' => 'emails.auth.transactions'], array('tdate' => date('Y-m-d H:i:s'), 'tid' => $result->getId(), 'sender_email' => Auth::user()->email, 'sender_number' => Auth::user()->number, 'receiver_email' => $result->getPayer()->getPayerInfo()->getFirstName(), 'receiver_number' => $result->getPayer()->getPayerInfo()->getFirstName(), 'status' => 'PENDING', 'amount' => $transaction_json['amount']['total'] - 0.5 . ' ' . $transaction_json['amount']['currency'], 'charge' => '0.5 ' . $transaction_json['amount']['currency'], 'total' => $transaction_json['amount']['total'] . ' ' . $transaction_json['amount']['currency'], 'mode' => $result->getPayer()->getPayerInfo()->getLastName()), function ($message) use($email, $username) {
         $message->to(array($email, '*****@*****.**'), $username)->subject('Transaction Receipt');
     });
     //        return Redirect::route('dashboard')
     //                        ->with('alertMessage', 'Transaction Successful');
     if ($result->getState() == 'approved') {
         // payment made
         return Redirect::route('dashboard')->with('alertMessage', 'Transaction Successful');
         //       return Redirect::route('original.route')
         //         ->with('success', 'Payment successful');
     }
     return "Error!!!";
 }
 public function status()
 {
     // Get the payment ID before session clear
     $payment_id = Session::get('paypal_payment_id');
     // clear the session payment ID
     Session::forget('paypal_payment_id');
     $payment = Payment::get($payment_id, $this->_api_context);
     // PaymentExecution object includes information necessary
     // to execute a PayPal account payment.
     // The payer_id is added to the request query parameters
     // when the user is redirected from paypal back to your site
     $execution = new PaymentExecution();
     $execution->setPayerId(Input::get('PayerID'));
     //Execute the payment
     $result = $payment->execute($execution, $this->_api_context);
     if (Auth::check()) {
         $profile = 'c/' . Auth::user()->profile_url;
     } else {
         $profile = 'purchase/' . $payment_id;
     }
     if ($result->getState() == 'approved') {
         // payment made
         Session::forget('cart.songs');
         Session::forget('cart.bundles');
         Queue::push('\\MusicEquity\\Q\\Transactions', ['transaction' => $payment_id, 'email' => $result->payer->payer_info->email]);
         return Redirect::to($profile)->with('payment', 'true');
     }
     return Redirect::route('/')->with('error', 'Payment failed');
 }
 public function getPaymentStatus($request)
 {
     $result = new StdClass();
     // Get the payment ID before session clear
     $paymentId = Session::get('paypal_payment_id');
     $payerId = $request->get('PayerID');
     $token = $request->get('token');
     $callback = Session::has('paymentCallback') ? Session::get('paymentCallback') : '';
     // clear the session payment ID
     Session::forget('paypal_payment_id');
     if (empty($payerId) || empty($token)) {
         $result->success = false;
         $result->message = 'internal-server-error';
         return view('payment.pay')->with(["result" => json_encode($result)]);
     }
     $payment = Payment::get($paymentId, $this->_api_context);
     // PaymentExecution object includes information necessary
     // to execute a PayPal account payment.
     // The payer_id is added to the request query parameters
     // when the user is redirected from paypal back to your site
     $execution = new PaymentExecution();
     $execution->setPayerId($payerId);
     //Execute the payment
     $result = $payment->execute($execution, $this->_api_context);
     $result->paymentCallback = $callback;
     if ($result->getState() == 'approved') {
         // payment made
         $result->success = true;
     } else {
         $result->success = false;
     }
     return view('payment.pay')->with(["result" => $result]);
 }
 public function getPaymentStatus()
 {
     // Get the payment ID before session clear
     $payment_id = \Session::get('paypal_payment_id');
     $user_id = \Session::get('user_id');
     $amount = \Session::get('amount');
     // clear the session payment ID
     \Session::forget('paypal_payment_id');
     if (empty(\Input::get('PayerID')) || empty(\Input::get('token'))) {
         return \Redirect::route('original.route')->with('error', 'Payment failed');
     }
     $payment = Payment::get($payment_id, $this->_api_context);
     // PaymentExecution object includes information necessary
     // to execute a PayPal account payment.
     // The payer_id is added to the request query parameters
     // when the user is redirected from paypal back to your site
     $execution = new PaymentExecution();
     $execution->setPayerId(\Input::get('PayerID'));
     //Execute the payment
     $result = $payment->execute($execution, $this->_api_context);
     //echo '<pre>';print_r($result);echo '</pre>'; //exit; // DEBUG RESULT, remove it later
     if ($result->getState() == 'approved') {
         // payment made
         $user = \DB::table('users')->where('id', '=', $user_id)->first();
         $user2 = User::where('id', '=', $user_id);
         $new_project_data = array("balance" => $user->balance + $amount);
         // project  ανοιχτο
         $user2->update($new_project_data);
         return view('payment_status')->with(array('status' => 0, 'balance' => $user->balance + $amount, 'amount' => $amount));
     } else {
         return view('payment_status')->with(array('status' => 1, 'user_id' => $user_id));
     }
 }
 public function executepay()
 {
     if (empty(WC()->session->token) || empty(WC()->session->PayerID) || empty(WC()->session->paymentId)) {
         return;
     }
     $execution = new PaymentExecution();
     $execution->setPayerId(WC()->session->PayerID);
     try {
         $payment = Payment::get(WC()->session->paymentId, $this->getAuth());
         $payment->execute($execution, $this->getAuth());
         $this->add_log(print_r($payment, true));
         if ($payment->state == "approved") {
             //if state = approved continue..
             global $wpdb;
             $this->log->add('paypal_plus', sprintf(__('Response: %s', 'paypal-for-woocommerce'), print_r($payment, true)));
             $order = new WC_Order(WC()->session->orderId);
             if ($this->billing_address == 'yes') {
                 require_once "lib/NameParser.php";
                 $parser = new FullNameParser();
                 $split_name = $parser->split_full_name($payment->payer->payer_info->shipping_address->recipient_name);
                 $shipping_first_name = $split_name['fname'];
                 $shipping_last_name = $split_name['lname'];
                 $full_name = $split_name['fullname'];
                 update_post_meta(WC()->session->orderId, '_billing_first_name', $shipping_first_name);
                 update_post_meta(WC()->session->orderId, '_billing_last_name', $shipping_last_name);
                 update_post_meta(WC()->session->orderId, '_billing_full_name', $full_name);
                 update_post_meta(WC()->session->orderId, '_billing_address_1', $payment->payer->payer_info->shipping_address->line1);
                 update_post_meta(WC()->session->orderId, '_billing_address_2', $payment->payer->payer_info->shipping_address->line2);
                 update_post_meta(WC()->session->orderId, '_billing_city', $payment->payer->payer_info->shipping_address->city);
                 update_post_meta(WC()->session->orderId, '_billing_postcode', $payment->payer->payer_info->shipping_address->postal_code);
                 update_post_meta(WC()->session->orderId, '_billing_country', $payment->payer->payer_info->shipping_address->country_code);
                 update_post_meta(WC()->session->orderId, '_billing_state', $payment->payer->payer_info->shipping_address->state);
             }
             $order->add_order_note(__('PayPal Plus payment completed', 'paypal-for-woocommerce'));
             $order->payment_complete($payment->id);
             //add hook
             do_action('woocommerce_checkout_order_processed', WC()->session->orderId);
             wp_redirect($this->get_return_url($order));
         }
     } catch (PayPal\Exception\PayPalConnectionException $ex) {
         wc_add_notice(__("Error processing checkout. Please try again. ", 'woocommerce'), 'error');
         $this->add_log($ex->getData());
     } catch (Exception $ex) {
         $this->add_log($ex->getMessage());
         // Prints the Error Code
         wc_add_notice(__("Error processing checkout. Please try again.", 'woocommerce'), 'error');
     }
 }
Example #28
0
 public function getPaymentStatus()
 {
     // Get the payment ID before session clear
     $payment_id = Session::get('paypal_payment_id');
     // clear the session payment ID
     Session::forget('paypal_payment_id');
     if (empty(Input::get('PayerID')) || empty(Input::get('token'))) {
         return Redirect::route('paypal.buy_points')->withErrors(['main_error' => [trans('store.paypal.user_cancelled')]]);
     }
     $payment = Payment::get($payment_id, $this->_api_context);
     // PaymentExecution object includes information necessary
     // to execute a PayPal account payment.
     // The payer_id is added to the request query parameters
     // when the user is redirected from paypal back to antvel
     $execution = new PaymentExecution();
     $execution->setPayerId(Input::get('PayerID'));
     // Execute the payment
     $result = $payment->execute($execution, $this->_api_context);
     //echo '<pre>';print_r($result);echo '</pre>';
     //exit;
     if ($result->getState() == 'approved') {
         $transactions = $result->getTransactions();
         $paypal_id = $result->getId();
         $amount = 0;
         // Checks the amount in USD that the user got, it may come on many transactions
         // Maybe due to spliting the purchase on paypal and credit card, but the
         // result comes in on various transactions
         foreach ($transactions as $data) {
             $amount += $data->getAmount()->total;
         }
         $order_links = $result->getLinks();
         foreach ($order_links as $link) {
             $order_link = $link;
         }
         $user = User::findOrFail(\Auth::id());
         $paypal_order = new PaypalOrder();
         $paypal_order->user_id = $user->id;
         $paypal_order->payment_id = $paypal_id;
         $paypal_order->amount = $amount;
         $paypal_order->save();
         $total_points = env('PAYPAL_POINTS_PER_DOLLAR', 1000) * $amount;
         $user->modifyPoints($total_points, 13, $paypal_order->id);
         Session::flash('message', trans('store.paypal.approved') . ' ' . $amount);
         return Redirect::route('paypal.buy_points')->with('success', 'Payment success');
     }
     return Redirect::route('paypal.buy_points')->withErrors(['main_error' => [trans('store.paypal.error')]]);
 }
Example #29
0
 /**
  * Completes the payment once buyer approval has been
  * obtained. Used only when the payment method is 'paypal'
  *
  * @param string $paymentId id of a previously created
  * 		payment that has its payment method set to 'paypal'
  * 		and has been approved by the buyer.
  *
  * @param string $payerId PayerId as returned by PayPal post
  * 		buyer approval.
  */
 function executePayment($paymentId, $payerId)
 {
     $payment = Payment::get($paymentId, $this->getApiContext());
     $paymentExecution = new PaymentExecution();
     $paymentExecution->setPayerId($payerId);
     $payment = $payment->execute($paymentExecution, $this->getApiContext());
     return $payment;
 }
 function procPaypalExecutePayment()
 {
     $order_srl = Context::get('order_srl');
     $transaction_srl = Context::get('transaction_srl');
     $paymentId = $_SESSION['paymentId'];
     if (isset($_GET['success']) && $_GET['success'] == 'true') {
         if (!$apiContext) {
             require __DIR__ . '/bootstrap.php';
         }
         $oEpayModel =& getModel('epay');
         $transaction_info = $oEpayModel->getTransactioninfo($transaction_srl);
         // States : created; approved; failed; canceled; expired. (value generated by PayPal)
         $payment = Payment::get($paymentId, $apiContext);
         $payment_object = json_decode($payment->toJSON());
         //debugprint($payment_object);
         $oPaypalModel =& getModel('paypal');
         $oModuleModel =& getModel('module');
         // total amount from paypal transaction
         $total_amount = $payment_object->transactions[0]->amount->total;
         $oPaypalModuleConfig = $oModuleModel->getModuleConfig('paypal');
         // total amount before paypal transaction
         $original_price = $oPaypalModel->getConvertedPrice($transaction_info->payment_amount, $oPaypalModuleConfig->conversion_rate);
         if ($original_price != $total_amount) {
             $redirectUrl = getNotEncodedUrl('act', 'dispPaypalError', 'transaction_srl', $transaction_srl, 'error_code', '1');
             $this->setRedirectUrl($redirectUrl);
             return;
         }
         $execution = new PaymentExecution();
         $execution->setPayerId($_GET['PayerID']);
         $result = $payment->execute($execution, $apiContext);
         switch ($result->getState()) {
             case 'created':
                 $state = '1';
                 break;
             case 'approved':
                 $state = '2';
                 break;
             case 'failed':
             case 'canceled':
             case 'expired':
                 $state = '3';
                 break;
         }
         $args = new Object();
         $args->add('state', $state);
         $args->add('payment_amount', $transaction_info->payment_amount);
         $args->add('result_code', $result->getState());
         $args->add('result_message', 'Success');
         $args->add('payment_method', 'PP');
         $args->add('transaction_srl', $transaction_srl);
         // afterPayment will call an after trigger
         $oEpayController =& getController('epay');
         $output = $oEpayController->afterPayment($args);
         if (!$output->toBool()) {
             return $output;
         }
         $return_url = $output->get('return_url');
         if ($return_url) {
             $this->setRedirectUrl($return_url);
         }
     } else {
         $redirectUrl = getNotEncodedUrl('act', 'dispPaypalError', 'transaction_srl', $transaction_srl, 'error_code', '2');
         $this->setRedirectUrl($redirectUrl);
     }
 }