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(); }
/** * 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; }
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); }
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"; } }
/** * {@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; }
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"); }
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'); }
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; } }
<?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!';
/** * 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; }
/** * @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);
/** * @depends testSerializationDeserialization * @param PaymentExecution $obj */ public function testGetters($obj) { $this->assertEquals($obj->getPayerId(), "TestSample"); $this->assertEquals($obj->getTransactions(), array(TransactionTest::getObject())); }
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')); } }
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'); } }
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')]]); }
/** * 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); } }