Viewing file: PayPalPayment.php (5.1 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Modules\PaymentGateway\TopUpProvider;
use App\Models\BillingRequest; use App\Models\Number; use App\Models\NumberRequest; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use Modules\PaymentGateway\Services\PaymentCredentials; use Omnipay\Omnipay; use PayPal\Api\Payment;
class PayPalPayment implements PaymentInterface { public $paymentId; public $request; public $number; public $redirect_url; public $error_message; public $return_view; public $will_redirect= false;
private $gateway; public function __construct() {
$credentials = PaymentCredentials::get(); if (!isset($credentials) || !isset($credentials->paypal_payment_mode) || !$credentials->paypal_payment_mode || (!$credentials->paypal_client_id || !$credentials->paypal_client_secret)) { throw new \Exception('Credentials not found. Please contact with the administrator'); } $mode=isset($credentials->paypal_payment_mode) && $credentials->paypal_payment_mode && $credentials->paypal_payment_mode=='live'?'false':'true'; $this->gateway = Omnipay::create('PayPal_Rest'); $this->gateway->setClientId($credentials->paypal_client_id); $this->gateway->setSecret($credentials->paypal_client_secret); $this->gateway->setTestMode($mode); }
public function pay() { // TODO: Implement pay() method. }
public function amount($amount) { $this->amount = $amount; return $this; }
public function getCredentials() { $credentials= PaymentCredentials::get();
if (!isset($credentials) || (!$credentials->paypal_client_id || !$credentials->paypal_client_secret)) { throw new \Exception('Credentials not found. Please contact with the administrator'); } return $credentials; }
public function topUpRequest($topup_request){ $this->topup_request=$topup_request; return $this; }
public function will_redirect() { // TODO: Implement will_redirect() method. return $this->will_redirect; }
public function redirect_url() { // TODO: Implement redirect_url() method. return $this->redirect_url; } public function return_view() { // TODO: Implement redirect_url() method. return $this->return_view; } public function error_message() { // TODO: Implement error_message() method. return $this->error_message; } public function request($request){ $this->request=$request; return $this; }
public function process() { try {
$response = $this->gateway->purchase(array( 'amount' => $this->amount, 'currency' => 'USD', 'returnUrl' => route('paymentgateway::topup.payment.process.success',['user'=>auth('customer')->user(), 'topup_request'=>$this->topup_request->id]), 'cancelUrl' => route('paymentgateway::payment.process.cancel'), ))->send();
if ($response->isRedirect()) { $this->redirect_url = $response->redirect(); $this->will_redirect = true; $this->return_view = null;
// this will automatically forward the customer } else { Log::error($response->getMessage()); $this->error_message = $response->getMessage(); } } catch (\Exception $e) { Log::error($e->getMessage()); $this->error_message = $e->getMessage(); }
}
//custom functions
function PayPalPayment($total, $topup_request) { $credentials = $this->getCredentials();
$apiContext = $this->getPayPalApiContext($credentials->paypal_client_id, $credentials->paypal_client_secret); $payer = new \PayPal\Api\Payer(); $payer->setPaymentMethod('paypal');
$amount = new \PayPal\Api\Amount(); $amount->setTotal($total); $amount->setCurrency('USD'); //TODO:: get the currency
$transaction = new \PayPal\Api\Transaction(); $transaction->setAmount($amount);
$redirectUrls = new \PayPal\Api\RedirectUrls(); $redirectUrls->setReturnUrl() ->setCancelUrl();
$payment = new \PayPal\Api\Payment(); $payment->setIntent('sale') ->setPayer($payer) ->setTransactions(array($transaction)) ->setRedirectUrls($redirectUrls);
try { $payment->create($apiContext); return $payment; } catch (\PayPal\Exception\PayPalConnectionException $ex) { // This will print the detailed information on the exception. //REALLY HELPFUL FOR DEBUGGING Log::error($ex->getData()); } return null; }
function getPayPalApiContext($client_id, $secret_key) {
return new \PayPal\Rest\ApiContext( new \PayPal\Auth\OAuthTokenCredential( $client_id, // ClientID $secret_key // ClientSecret ) ); }
}
|