setPayer() public method

Source of the funds for this payment represented by a PayPal account or a direct credit card.
public setPayer ( Payer $payer )
$payer Payer
Esempio n. 1
0
 /**
  * @param PaymentInterface $payment
  */
 public function init(PaymentInterface $payment)
 {
     $credentials = new OAuthTokenCredential($this->options['client_id'], $this->options['secret']);
     $apiContext = new ApiContext($credentials);
     $apiContext->setConfig(['mode' => $this->options['mode']]);
     $payer = new Payer();
     $payer->setPaymentMethod('paypal');
     $amount = new Amount();
     $amount->setCurrency($this->options['currency']);
     $amount->setTotal($payment->getPaymentSum());
     $item = new Item();
     $item->setName($payment->getDescription());
     $item->setCurrency($amount->getCurrency());
     $item->setQuantity(1);
     $item->setPrice($amount->getTotal());
     $itemList = new ItemList();
     $itemList->addItem($item);
     $transaction = new Transaction();
     $transaction->setAmount($amount);
     $transaction->setDescription($payment->getDescription());
     $transaction->setItemList($itemList);
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl($payment->getExtraData('return_url'));
     $redirectUrls->setCancelUrl($payment->getExtraData('cancel_url'));
     $paypalPayment = new Payment();
     $paypalPayment->setIntent('sale');
     $paypalPayment->setPayer($payer);
     $paypalPayment->setTransactions([$transaction]);
     $paypalPayment->setRedirectUrls($redirectUrls);
     $paypalPayment->create($apiContext);
     $payment->setExtraData('paypal_payment_id', $paypalPayment->getId());
     $payment->setExtraData('approval_link', $paypalPayment->getApprovalLink());
 }
Esempio n. 2
0
 public function makePaymentUsingPayPal($total, $currency, $paymentDesc, $returnUrl)
 {
     $payer = new Payer();
     $payer->setPaymentMethod('paypal');
     // specify the payment ammount
     $amount = new Amount();
     $amount->setCurrency($currency);
     $amount->setTotal($total);
     // ###Transaction
     // A transaction defines the contract of a
     // payment - what is the payment for and who
     // is fulfilling it. Transaction is created with
     // a `Payee` and `Amount` types
     $transaction = new Transaction();
     $transaction->setAmount($amount);
     $transaction->setDescription($paymentDesc);
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl($returnUrl . '&success=true');
     $redirectUrls->setCancelUrl($returnUrl . '&success=false');
     $payment = new Payment();
     $payment->setRedirectUrls($redirectUrls);
     $payment->setIntent('sale');
     $payment->setPayer($payer);
     $payment->setTransactions(array($transaction));
     try {
         $payment->create($this->apiContext);
     } catch (Exception $e) {
         throw new Exception($e);
     }
     return $payment;
 }
 /**
  * Creates a PayPal payment
  *
  * @param array        $configuration
  * @param Payer        $payer
  * @param RedirectUrls $redirectUrls
  * @param Transaction  $transaction
  *
  * @return Payment
  */
 public function createPayment(array $configuration, Payer $payer, RedirectUrls $redirectUrls, Transaction $transaction) : Payment
 {
     $apiContext = $this->getApiContext($configuration);
     $payment = new Payment();
     $payment->setIntent("sale");
     $payment->setPayer($payer);
     $payment->setRedirectUrls($redirectUrls);
     $payment->setTransactions([$transaction]);
     return $payment->create($apiContext);
 }
Esempio n. 4
0
 /**
  * @throws \InvalidArgumentException
  *
  * @return Payment
  */
 private function payment() : Payment
 {
     if ($this->payment === null) {
         $this->payment = app(Payment::class);
         $this->payment->setIntent('sale');
         $this->payment->setPayer($this->payer());
         $this->payment->setRedirectUrls($this->redirectUrls());
         $this->payment->setTransactions([$this->transaction()]);
         $this->payment->create($this->apiContext);
     }
     return $this->payment;
 }
Esempio n. 5
0
 function paypal($data)
 {
     try {
         foreach ($data as $k => $v) {
             ${$k} = $v;
         }
         include_once 'config.paypal.php';
         $apiContext = new ApiContext(new OAuthTokenCredential(CLIENT_ID, CLIENT_SECRET));
         list($m, $y) = explode("/", $card_expiry);
         $card = new CreditCard();
         $card->setNumber($card_number);
         $card->setType(strtolower($card_type));
         $card->setExpireMonth($m);
         $card->setExpireYear($y);
         $card->setCvv2($card_cvv);
         $card->setFirstName($first_name);
         $card->setLastName($last_name);
         $fi = new FundingInstrument();
         $fi->setCreditCard($card);
         $payer = new Payer();
         $payer->setPaymentMethod('credit_card');
         $payer->setFundingInstruments(array($fi));
         $amount = new Amount();
         $amount->setCurrency($currency);
         $amount->setTotal($price);
         $transaction = new Transaction();
         $transaction->setAmount($amount);
         $transaction->setDescription('Enter your card details and proceed');
         $payment = new Payment();
         $payment->setIntent('sale');
         $payment->setPayer($payer);
         $payment->setTransactions(array($transaction));
         $res = json_decode($payment->create($apiContext));
         $this->save($data, __FUNCTION__, $res, 1);
         return json_encode(["status" => true, "msg" => sprintf("Your payment has been %s", $res->state)]);
     } catch (Exception $e) {
         if ($e instanceof PPConfigurationException) {
         } elseif ($e instanceof PPConnectionException) {
         } elseif ($e instanceof PayPal\Exception\PayPalConnectionException) {
             $res = json_decode($e->getData(), 1);
             $this->save($data, __FUNCTION__, $res, 0);
             $msg = array_shift(isset($res["details"]) ? $res["details"] : []);
             return json_encode(["status" => false, "msg" => $res["name"] == "UNKNOWN_ERROR" || empty($msg["issue"]) ? "An unknown error has occurred" : sprintf("%s %s", ["cvv2" => "CVV2", "expire_year" => "Card expiration", "credit_card" => "", "type" => "Invalid credit card number or", "number" => "Credit card number", "expire_month" => "Expiration month"][end(explode(".", $msg["field"]))], strtolower($msg["issue"]))]);
         } else {
             throw $e;
         }
     }
 }
Esempio n. 6
0
 public static function createNewPayment()
 {
     $payer = new Payer();
     $payer->setPaymentMethod("credit_card");
     $payer->setFundingInstruments(array(FundingInstrumentTest::createFundingInstrument()));
     $transaction = new Transaction();
     $transaction->setAmount(AmountTest::createAmount());
     $transaction->setDescription("This is the payment description.");
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl("http://localhost/return");
     $redirectUrls->setCancelUrl("http://localhost/cancel");
     $payment = new Payment();
     $payment->setIntent("sale");
     $payment->setRedirectUrls($redirectUrls);
     $payment->setPayer($payer);
     $payment->setTransactions(array($transaction));
     return $payment;
 }
 /**
  * {@inheritdoc}
  */
 public function processPayment(PaymentInterface $payment) : PaymentInterface
 {
     $order = $payment->getOrder();
     $payer = $this->createPayer('paypal');
     $redirectUrls = $this->createRedirectUrls($payment);
     $transaction = $this->createTransaction($order);
     $payPalPayment = new Payment();
     $payPalPayment->setIntent("sale");
     $payPalPayment->setPayer($payer);
     $payPalPayment->setRedirectUrls($redirectUrls);
     $payPalPayment->setTransactions([$transaction]);
     try {
         $payPalPayment->create($apiContext);
     } catch (\Exception $e) {
         echo $e->getMessage();
     }
     $payment->setApprovalUrl($payPalPayment->getApprovalLink());
     $payment->setState($payPalPayment->getState());
     $payment->setToken($payPalPayment->getId());
     $this->paymentManager->updateResource($payment);
     return $payment;
 }
Esempio n. 8
0
 public function process($orderData, $cartProducts = [])
 {
     $this->setApiContext();
     $this->_apiContext->setConfig(['mode' => Configuration::getConfiguration('paypal_payment_mode'), 'service.EndPoint' => Configuration::getConfiguration('paypal_payment_url'), 'http.ConnectionTimeOut' => 30, 'log.LogEnabled' => Configuration::getConfiguration('paypal_payment_log'), 'log.FileName' => storage_path('logs/paypal.log'), 'log.LogLevel' => 'FINE']);
     $payer = new Payer();
     $payer->setPaymentMethod('paypal');
     $itemList = new ItemList();
     $subTotal = 0;
     $taxTotal = 0;
     foreach ($cartProducts as $product) {
         $item = new Item();
         $model = $product['model'];
         $item->setName($model->title)->setCurrency('USD')->setQuantity($product['qty'])->setSku($model->sku)->setPrice($product['price']);
         $itemList->addItem($item);
         $subTotal += $product['price'] * $product['qty'];
         $taxTotal += $product['tax_amount'] * $product['qty'];
     }
     $total = $subTotal + $taxTotal;
     $shippingOption = $orderData['shipping_method'];
     $shipping = Shipping::get($shippingOption);
     $details = new Details();
     $details->setShipping($shipping->getAmount())->setTax($taxTotal)->setSubtotal($subTotal);
     $amount = new Amount();
     $amount->setCurrency('USD')->setTotal($total)->setDetails($details);
     $transaction = new Transaction();
     $transaction->setAmount($amount)->setItemList($itemList)->setDescription('Payment description')->setInvoiceNumber(uniqid());
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl(route('paypal.store'));
     $redirectUrls->setCancelUrl(route('paypal.cancel'));
     $payment = new Payment();
     $payment->setIntent('sale');
     $payment->setPayer($payer);
     $payment->setRedirectUrls($redirectUrls);
     $payment->setTransactions([$transaction]);
     $response = $payment->create($this->_apiContext);
     $redirectUrl = $response->links[1]->href;
     return $redirectUrl;
 }
Esempio n. 9
0
 public static function authorize()
 {
     $addr = new Address();
     $addr->setLine1("3909 Witmer Road");
     $addr->setLine2("Niagara Falls");
     $addr->setCity("Niagara Falls");
     $addr->setState("NY");
     $addr->setPostalCode("14305");
     $addr->setCountryCode("US");
     $addr->setPhone("716-298-1822");
     $card = new CreditCard();
     $card->setType("visa");
     $card->setNumber("4417119669820331");
     $card->setExpireMonth("11");
     $card->setExpireYear("2019");
     $card->setCvv2("012");
     $card->setFirstName("Joe");
     $card->setLastName("Shopper");
     $card->setBillingAddress($addr);
     $fi = new FundingInstrument();
     $fi->setCreditCard($card);
     $payer = new Payer();
     $payer->setPaymentMethod("credit_card");
     $payer->setFundingInstruments(array($fi));
     $amount = new Amount();
     $amount->setCurrency("USD");
     $amount->setTotal("1.00");
     $transaction = new Transaction();
     $transaction->setAmount($amount);
     $transaction->setDescription("This is the payment description.");
     $payment = new Payment();
     $payment->setIntent("authorize");
     $payment->setPayer($payer);
     $payment->setTransactions(array($transaction));
     $paymnt = $payment->create();
     $resArray = $paymnt->toArray();
     return $authId = $resArray['transactions'][0]['related_resources'][0]['authorization']['id'];
 }
 public function callCreate($clientId, $clientSecret, $orderId, $amount, $currency, $description, $returnUrl, $cancelUrl)
 {
     $oauthCredential = new OAuthTokenCredential($clientId, $clientSecret);
     $apiContext = new ApiContext($oauthCredential);
     $apiContext->setConfig(['mode' => $this->mode]);
     $payer = new Payer();
     $payer->setPaymentMethod('paypal');
     $item = new Item();
     $item->setName($description);
     $item->setCurrency($currency);
     $item->setPrice($amount);
     $item->setQuantity(1);
     $itemList = new ItemList();
     $itemList->setItems(array($item));
     $amountObject = new Amount();
     $amountObject->setCurrency($currency);
     $amountObject->setTotal($amount);
     $transaction = new Transaction();
     $transaction->setItemList($itemList);
     $transaction->setAmount($amountObject);
     $transaction->setDescription($description);
     $transaction->setInvoiceNumber($orderId);
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl($returnUrl)->setCancelUrl($cancelUrl);
     $payment = new Payment();
     $payment->setIntent('sale');
     $payment->setPayer($payer);
     $payment->setRedirectUrls($redirectUrls);
     $payment->setTransactions(array($transaction));
     try {
         $payment->create($apiContext);
     } catch (\Exception $e) {
         throw new PaymentException('PayPal Exception: ' . $e->getMessage());
     }
     $approvalUrl = $payment->getApprovalLink();
     return $approvalUrl;
 }
 /**
  * @param $data     array       form post data
  * @return string   HTML to display
  */
 function _prePayment($data)
 {
     $this->_autoload();
     $order = $this->_getOrder($data['order_number']);
     //initialise application
     $app = JFactory::getApplication();
     //get card input
     $data['cardtype'] = $app->input->getString("cardtype");
     $data['cardnum'] = $app->input->getString("cardnum");
     $month = $app->input->getString("month");
     $year = $app->input->getString("year");
     $card_exp = $month . '' . $year;
     $data['cardexp'] = $card_exp;
     $data['cardcvv'] = $app->input->getString("cardcvv");
     $data['cardnum_last4'] = substr($app->input->getString("cardnum"), -4);
     //initialise payment
     $apiContext = new ApiContext(new OAuthTokenCredential($this->api_clientId, $this->api_clientSecret));
     $apiContext->setConfig(array('mode' => $this->api_mode));
     //		echo'<pre>';print_r($apiContext);die;
     $card = new CreditCard();
     $card->setType($data['cardtype']);
     $card->setNumber($data['cardnum']);
     $card->setExpireMonth($month);
     $card->setExpireYear($year);
     $card->setFirstName($data['firstname']);
     $card->setLastName($data['lastname']);
     $card->setCvv2($data['cardcvv']);
     $fi = new FundingInstrument();
     $fi->setCreditCard($card);
     $payer = new Payer();
     $payer->setPaymentMethod("credit_card")->setFundingInstruments(array($fi));
     if (!empty($data['email'])) {
         $payerInfo = new PayerInfo();
         $payerInfo->setFirstName($data['firstname']);
         $payerInfo->setLastName($data['lastname']);
         $payerInfo->setEmail($data['email']);
         $payer->setPayerInfo($payerInfo);
     }
     $amount = new Amount();
     $amount->setCurrency($this->currency);
     $amount->setTotal($data['total']);
     $item1 = new Item();
     $item1->setName($data['order_number'])->setDescription($data['order_number'])->setCurrency($this->currency)->setQuantity(1)->setTax(0)->setPrice($data['total']);
     $itemList = new ItemList();
     $itemList->setItems(array($item1));
     $transaction = new Transaction();
     $transaction->setAmount($amount);
     $transaction->setItemList($itemList);
     $transaction->setDescription($data['order_number']);
     $payment = new Payment();
     $payment->setIntent("sale");
     $payment->setPayer($payer);
     $payment->setTransactions(array($transaction));
     $request = clone $payment;
     try {
         $payment->create($apiContext);
     } catch (PayPal\Exception\PayPalConnectionException $ex) {
         $error = json_decode($ex->getData());
         $error_html = '<h2>' . $error->name . '</h2><br>';
         foreach ($error->details as $r) {
             $error_html .= '- ' . $r->field . ' - ' . $r->issue . '<br>';
         }
         $app->enqueueMessage($error_html, 'error');
         $app->redirect('index.php?option=com_bookpro&view=formpayment&order_id=' . $order->id . '&' . JSession::getFormToken() . '=1');
         return;
     } catch (Exception $ex) {
         die($ex);
     }
     $ack = $payment->getState();
     if ($ack == 'approved' || $ack == 'completed') {
         $order->pay_status = "SUCCESS";
         $order->order_status = "CONFIRMED";
         $order->tx_id = $payment->getId();
         $order->store();
     } else {
         JLog::addLogger(array('text_file' => 'paypal.txt', 'text_file_path' => 'logs', 'text_file_no_php' => 1, 'text_entry_format' => '{DATE} {TIME} {MESSAGE}'), JLog::ALERT);
         JLog::add('Transaction: ' . json_encode($payment) . '\\nOrder: ' . $order->order_number . ' Status: ' . $ack, JLog::ALERT, 'com_bookpro');
         $order->pay_status = "PENDING";
         $order->tx_id = $transaction_id;
         $order->store();
     }
     $app = JFactory::getApplication();
     $app->redirect('index.php?option=com_bookpro&controller=payment&task=postpayment&method=' . $this->_element . '&order_number=' . $order->order_number);
     return;
 }
Esempio n. 12
0
 public function store(Request $request)
 {
     //stores a new order for confirmation
     $result = false;
     $msg = "";
     $info = $request->all();
     //return dd($request->all());
     //return var_dump( $info );
     if (Auth::check()) {
         if (User::profileComplete(Auth::user())) {
             $paypal_conf = config('paypal');
             $this->_api_context = new ApiContext(new OAuthTokenCredential($paypal_conf['client_id'], $paypal_conf['secret']));
             $this->_api_context->setConfig($paypal_conf['settings']);
             $fabric = Fabric::find($info["fabric"]);
             $user = Auth::user();
             $order = new Order();
             if ($fabric->stock >= $info["totalAmount"] && $info["totalAmount"] > 0) {
                 //create new order with from the given data.
                 $order->user_id = $user->id;
                 $order->fabric_id = $fabric->id;
                 $order->fabric_name = $fabric->name;
                 $order->amount = $info["totalAmount"];
                 $weight = $info["totalAmount"] / 5 * (2.5 * 1.2);
                 $order->shipping = $weight;
                 $order->type_sample = $info["type-sample"];
                 $order->carrier = $info["carrier"];
                 $order->sub_total = $fabric->priceYard * $info["totalAmount"];
                 $order->total = $order->sub_total + $order->shipping;
                 $order->status = "not-confirmed";
                 $fabric->stock -= $order->amount;
                 $result = true;
                 $dataMail["subTotal"] = $order->sub_total;
                 $dataMail["shipping"] = $order->shipping;
                 $dataMail["carrier"] = $order->carrier;
                 $dataMail["type-sample"] = $order->type_sample;
                 $dataMail["total"] = $order->total;
                 $dataMail["fabric-name"] = $fabric->name;
                 $dataMail["name"] = $user->name;
                 $dataMail["city"] = $user->city;
                 $dataMail["country"] = $user->country;
                 $dataMail["zp"] = $user->zp_code;
                 $dataMail["address"] = $user->address;
                 $dataMail["email"] = $user->email;
                 $dataMail["totalAmount"] = $order->amount;
                 // paypal logic starts here
                 $payer = new Payer();
                 $payer->setPaymentMethod('paypal');
                 $item = new Item();
                 $item->setName($order->fabric_name . $order->created_at);
                 $item->setCurrency('USD');
                 $item->setQuantity($order->amount);
                 $item->setPrice($fabric->priceYard);
                 $itemCarrier = new Item();
                 $itemCarrier->setName("Shipping Price");
                 $itemCarrier->setCurrency('USD');
                 $itemCarrier->setQuantity(1);
                 $itemCarrier->setPrice($weight);
                 // add item to list
                 $item_list = new ItemList();
                 $item_list->setItems([$itemCarrier, $item]);
                 $amount = new Amount();
                 $amount->setCurrency('USD');
                 $amount->setTotal($order->sub_total + $weight);
                 $transaction = new Transaction();
                 $transaction->setAmount($amount);
                 $transaction->setItemList($item_list);
                 $transaction->setDescription('New Fabric Order');
                 $redirect_urls = new RedirectUrls();
                 $redirect_urls->setReturnUrl(url('successPay/orders'));
                 $redirect_urls->setCancelUrl(url("cancelPay/orders"));
                 $payment = new Payment();
                 $payment->setIntent('Sale');
                 $payment->setPayer($payer);
                 $payment->setRedirectUrls($redirect_urls);
                 $payment->setTransactions(array($transaction));
                 try {
                     PPHttpConfig::$DEFAULT_CURL_OPTS[CURLOPT_SSLVERSION] = 4;
                     $payment->create($this->_api_context);
                 } catch (\PayPal\Exception\PPConnectionException $ex) {
                     if (config('app.debug')) {
                         echo "Exception: " . $ex->getMessage() . PHP_EOL;
                         $err_data = json_decode($ex->getData(), true);
                         echo '<pre>';
                         print_r(json_decode($pce->getData()));
                         exit;
                         exit;
                     } else {
                         die('Some error occur, sorry for inconvenient');
                     }
                 }
                 foreach ($payment->getLinks() as $link) {
                     if ($link->getRel() == 'approval_url') {
                         $redirect_url = $link->getHref();
                         break;
                     }
                 }
                 // add payment ID to session
                 $paypal_data = ['paypal_payment_id' => $payment->getId(), "fabric" => $fabric, "order" => $order, "data_mail" => $dataMail, "paypal_context" => $this->_api_context];
                 Session::put("paypal_data", $paypal_data);
                 $order_data = ["msg" => "Error: could not connect to paypal", "result" => false];
                 if (isset($redirect_url)) {
                     // redirect to paypal
                     return redirect($redirect_url);
                 } else {
                     return redirect('/fabrics')->with('order_data', $order_data);
                 }
             } else {
                 $msg = "Error: The order value exceeds the stock or its 0";
                 $result = false;
             }
         } else {
             $msg = "Error: To use this option you need to fill your profile first";
             $result = false;
         }
     } else {
         $msg = "Error: You need to create an account first";
     }
     $order_data = ["msg" => $msg, "result" => $result];
     return redirect("/fabrics")->with("order_data", $order_data);
 }
Esempio n. 13
0
 public function payDemo()
 {
     $this->authorize();
     $addr = new Address();
     $addr->setLine1('52 N Main ST');
     $addr->setCity('Johnstown');
     $addr->setCountryCode('US');
     $addr->setPostalCode('43210');
     $addr->setState('OH');
     $card = new CreditCard();
     $card->setNumber('4417119669820331');
     $card->setType('visa');
     $card->setExpireMonth('11');
     $card->setExpireYear('2018');
     $card->setCvv2('874');
     $card->setFirstName('Joe');
     $card->setLastName('Shopper');
     $card->setBillingAddress($addr);
     $fi = new FundingInstrument();
     $fi->setCreditCard($card);
     $payer = new Payer();
     $payer->setPaymentMethod('credit_card');
     $payer->setFundingInstruments(array($fi));
     $amountDetails = new \PayPal\Api\Details();
     $amountDetails->setSubtotal('7.41');
     $amountDetails->setTax('0.03');
     $amountDetails->setShipping('0.03');
     $amount = new Amount();
     $amount->setCurrency('USD');
     $amount->setTotal('7.47');
     $amount->setDetails($amountDetails);
     $transaction = new Transaction();
     $transaction->setAmount($amount);
     $transaction->setDescription('This is the payment transaction description.');
     $payment = new Payment();
     $payment->setIntent('sale');
     $payment->setPayer($payer);
     $payment->setTransactions(array($transaction));
     $payment->create($this->_apiContext);
 }
Esempio n. 14
0
 /**
  * Создаем платеж типа paypal
  * в случае успеха возвращает массив с ид-платежа,
  * токеном и редирект-урлом куда нужно направить пользователя для оплаты
  *
  * @param double $pay_sum
  * @param string $paymentInfo
  * @param string $sku - internal UNIT ID
  *
  * @return array | null
  */
 public function payThroughPayPal($pay_sum, $paymentInfo, $sku = null)
 {
     set_time_limit(120);
     $payer = new Payer();
     $payer->setPaymentMethod('paypal');
     $amount = new Amount();
     $amount->setCurrency('USD');
     $amount->setTotal($pay_sum);
     $item1 = new Item();
     $item1->setName($paymentInfo)->setCurrency('USD')->setQuantity(1)->setPrice($pay_sum);
     // Ид товара/услуги на вашей стороне
     if ($sku) {
         $item1->setSku($sku);
     }
     $itemList = new ItemList();
     $itemList->setItems([$item1]);
     $transaction = new Transaction();
     $transaction->setAmount($amount);
     $transaction->setDescription('Payment to DirectLink');
     $transaction->setItemList($itemList);
     $transaction->setNotifyUrl($this->config['url.notify_url']);
     //**
     $redirect_urls = new RedirectUrls();
     $redirect_urls->setReturnUrl($this->config['url.return_url']);
     $redirect_urls->setCancelUrl($this->config['url.cancel_url']);
     $payment = new Payment();
     $payment->setIntent('sale');
     $payment->setPayer($payer);
     $payment->setTransactions([$transaction]);
     $payment->setRedirectUrls($redirect_urls);
     //$payment->setId('123456789'); //**
     $payment->create($this->_apiContext);
     //var_dump($payment); exit;
     $links = $payment->getLinks();
     foreach ($links as $link) {
         if ($link->getMethod() == 'REDIRECT') {
             $redirect_to = $link->getHref();
             $token = time() . "_" . rand(100, 999);
             $tmp = parse_url($redirect_to);
             if (isset($tmp['query'])) {
                 parse_str($tmp['query'], $out);
                 if (isset($out['token'])) {
                     $token = $out['token'];
                 }
             }
             $paymentId = $payment->getId();
             // ++ DEBUG LOG
             $this->logging_queryes('paymentCreate_' . $paymentId . '.txt', $payment->toJSON());
             // -- DEBUG LOG
             return ['paymentId' => $paymentId, 'token' => $token, 'redirect_to' => $redirect_to];
         }
     }
     return null;
 }
 public function createPayment($addressee, $order)
 {
     // Order Totals
     $subTotal = $order->total;
     $shippingCharges = $order->shipping;
     $tax = $order->tax;
     $grandTotal = $order->grandTotal;
     // Get Context
     $context = $this->getApiContext();
     // Payer
     $payer = new Payer();
     $payer->setPaymentMethod('paypal');
     // Cart Items
     $itemList = $this->generateItemsList($order);
     // Shipping Address
     if ($this->properties->isSendAddress()) {
         $shippingAddress = $this->generateShippingAddress($addressee, $cart);
         $itemList->setShippingAddress($shippingAddress);
     }
     // Details
     $details = new Details();
     $details->setSubtotal($subTotal);
     $details->setShipping($shippingCharges);
     $details->setTax($tax);
     // Amount
     $amount = new Amount();
     $amount->setCurrency($this->properties->getCurrency());
     $amount->setTotal($grandTotal);
     $amount->setDetails($details);
     // Transaction
     $transaction = new Transaction();
     $transaction->setAmount($amount);
     if (isset($order->description)) {
         $transaction->setDescription($order->description);
     }
     $transaction->setItemList($itemList);
     // Status URLs
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl($this->successUrl);
     $redirectUrls->setCancelUrl($this->failureUrl);
     // Payment
     $payment = new Payment();
     $payment->setRedirectUrls($redirectUrls);
     $payment->setIntent("sale");
     $payment->setPayer($payer);
     $payment->setTransactions([$transaction]);
     $payment->create($context);
     return $payment;
 }
 public function teszt($amount, $description)
 {
     $apiContext = new \PayPal\Rest\ApiContext(new \PayPal\Auth\OAuthTokenCredential('AfikH2WfU1x0YF1ThuSkBaMKqDh-rxE5NEBpLWOF3UVmii-P97WdgJCUhoH1ff5pMHToHnB-sXoejgGv', 'EM7ObD_onQ1EqaeiVBFvSId9AIQevTlsYcLPi-3SeVivyQ9A361Ov5jx4KlFkamOsh_c6I25VM1Ck4ZX'));
     //SAMPLE 1
     // $card = new CreditCard();
     // $card->setType("visa")
     //     ->setNumber("4148529247832259")
     //     ->setExpireMonth("11")
     //     ->setExpireYear("2019")
     //     ->setCvv2("012")
     //     ->setFirstName("Joe")
     //     ->setLastName("Shopper");
     // // ### FundingInstrument
     // // A resource representing a Payer's funding instrument.
     // // For direct credit card payments, set the CreditCard
     // // field on this object.
     // $fi = new FundingInstrument();
     // $fi->setCreditCard($card);
     // // ### Payer
     // // A resource representing a Payer that funds a payment
     // // For direct credit card payments, set payment method
     // // to 'credit_card' and add an array of funding instruments.
     // $payer = new Payer();
     // $payer->setPaymentMethod("credit_card")
     //     ->setFundingInstruments(array($fi));
     // // ### Itemized information
     // // (Optional) Lets you specify item wise
     // // information
     // $item1 = new Item();
     // $item1->setName('Ground Coffee 40 oz')
     //     ->setDescription('Ground Coffee 40 oz')
     //     ->setCurrency('USD')
     //     ->setQuantity(1)
     //     ->setTax(0.3)
     //     ->setPrice(7.50);
     // $item2 = new Item();
     // $item2->setName('Granola bars')
     //     ->setDescription('Granola Bars with Peanuts')
     //     ->setCurrency('USD')
     //     ->setQuantity(5)
     //     ->setTax(0.2)
     //     ->setPrice(2);
     // $itemList = new ItemList();
     // $itemList->setItems(array($item1, $item2));
     // // ### Additional payment details
     // // Use this optional field to set additional
     // // payment information such as tax, shipping
     // // charges etc.
     // $details = new Details();
     // $details->setShipping(1.2)
     //     ->setTax(1.3)
     //     ->setSubtotal(17.5);
     // // ### Amount
     // // Lets you specify a payment amount.
     // // You can also specify additional details
     // // such as shipping, tax.
     // $amount = new Amount();
     // $amount->setCurrency("USD")
     //     ->setTotal(20)
     //     ->setDetails($details);
     // // ### Transaction
     // // A transaction defines the contract of a
     // // payment - what is the payment for and who
     // // is fulfilling it.
     // $transaction = new Transaction();
     // $transaction->setAmount($amount)
     //     ->setItemList($itemList)
     //     ->setDescription("Payment description")
     //     ->setInvoiceNumber(uniqid());
     // // ### Payment
     // // A Payment Resource; create one using
     // // the above types and intent set to sale 'sale'
     // $payment = new Payment();
     // $payment->setIntent("sale")
     //     ->setPayer($payer)
     //     ->setTransactions(array($transaction));
     // // For Sample Purposes Only.
     // $request = clone $payment;
     // // ### Create Payment
     // // Create a payment by calling the payment->create() method
     // // with a valid ApiContext (See bootstrap.php for more on `ApiContext`)
     // // The return object contains the state.
     // try {
     //     $payment->create($apiContext);
     // } catch (Exception $ex) {
     //    // ResultPrinter::printError('Create Payment Using Credit Card. If 500 Exception, try creating a new Credit Card using <a href="https://ppmts.custhelp.com/app/answers/detail/a_id/750">Step 4, on this link</a>, and using it.', 'Payment', null, $request, $ex);
     //     exit(1);
     // }
     //ResultPrinter::printResult('Create Payment Using Credit Card', 'Payment', $payment->getId(), $request, $payment);
     //return $payment;
     //END SAMPLE 1
     //SAMPLE 2
     // $creditCard = new \PayPal\Api\CreditCard();
     // $creditCard->setType("visa")
     //     ->setNumber("4417119669820331")
     //     ->setExpireMonth("11")
     //     ->setExpireYear("2019")
     //     ->setCvv2("012")
     //     ->setFirstName("Joe")
     //     ->setLastName("Shopper");
     // try {
     //     $creditCard->create($apiContext);
     //     echo '<pre>';
     //     print_r($creditCard);
     // }
     // catch (\PayPal\Exception\PayPalConnectionException $ex) {
     //     echo $ex;
     // }
     //END SAMPLE 2
     //SAMPLE 3
     $payer = new Payer();
     $payer->setPaymentMethod("paypal");
     // ### Itemized information
     // (Optional) Lets you specify item wise
     // information
     $item1 = new Item();
     $item1->setName('Ground Coffee 40 oz')->setCurrency('USD')->setQuantity(1)->setPrice(7.5);
     $item2 = new Item();
     $item2->setName('Granola bars')->setCurrency('USD')->setQuantity(5)->setPrice(2);
     $itemList = new ItemList();
     $itemList->setItems(array($item1, $item2));
     // ### Additional payment details
     // Use this optional field to set additional
     // payment information such as tax, shipping
     // charges etc.
     /* $details = new Details();
     $details->setShipping(1.2)
         ->setTax(1.3)
         ->setSubtotal(17.50); */
     // ### Amount
     // Lets you specify a payment amount.
     // You can also specify additional details
     // such as shipping, tax.
     /* $amount = new Amount();
     $amount->setCurrency("USD")
         ->setTotal(20)
         ->setDetails($details); */
     // ### Transaction
     // A transaction defines the contract of a
     // payment - what is the payment for and who
     // is fulfilling it.
     $transaction = new Transaction();
     $transaction->setAmount($amount)->setItemList($itemList)->setDescription("Payment description");
     // ->setInvoiceNumber('134');
     //>setInvoiceNumber(uniqid());
     // ### Redirect urls
     // Set the urls that the buyer must be redirected to after
     // payment approval/ cancellation.
     //$baseUrl = getBaseUrl();
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl("http://localhost/yii-application/frontend/web/index.php?r=/cart/default/ordered")->setCancelUrl("http://localhost/yii-application/frontend/web/index.php?r=/cart/default/index");
     // ### Payment
     // A Payment Resource; create one using
     // the above types and intent set to 'sale'
     /* $payment = new Payment();
     $payment->setIntent("sale")
         ->setPayer($payer)
         ->setRedirectUrls($redirectUrls)
         ->setTransactions(array($transaction)); */
     $addr = new Address();
     $addr->setLine1('52 N Main ST');
     $addr->setCity('Johnstown');
     $addr->setCountryCode('US');
     $addr->setPostalCode('43210');
     $addr->setState('OH');
     $card = new CreditCard();
     $card->setNumber('5110929378020149');
     $card->setType('MASTERCARD');
     $card->setExpireMonth('08');
     $card->setExpireYear('2020');
     $card->setCvv2('874');
     $card->setFirstName('Nishanth');
     $card->setLastName('Pininti');
     $card->setBillingAddress($addr);
     $fi = new FundingInstrument();
     $fi->setCreditCard($card);
     $payer = new Payer();
     $payer->setPaymentMethod('credit_card');
     $payer->setFundingInstruments(array($fi));
     $amountDetails = new \PayPal\Api\Details();
     $amountDetails->setSubtotal('7.41');
     $amountDetails->setTax('0.03');
     $amountDetails->setShipping('0.03');
     $amount = new Amount();
     $amount->setCurrency('USD');
     $amount->setTotal('7.47');
     $amount->setDetails($amountDetails);
     $transaction = new Transaction();
     $transaction->setAmount($amount);
     $transaction->setDescription('This is the payment transaction description.');
     $payment = new Payment();
     $payment->setIntent('sale');
     $payment->setPayer($payer);
     $payment->setTransactions(array($transaction));
     // For Sample Purposes Only.
     $request = clone $payment;
     // ### Create Payment
     // Create a payment by calling the 'create' method
     // passing it a valid apiContext.
     // (See bootstrap.php for more on `ApiContext`)
     // The return object contains the state and the
     // url to which the buyer must be redirected to
     // for payment approval
     try {
         $payment->create($apiContext);
     } catch (Exception $ex) {
         ResultPrinter::printError("Created Payment Using PayPal. Please visit the URL to Approve.", "Payment", null, $request, $ex);
         exit(1);
     }
     // ### Get redirect url
     // The API response provides the url that you must redirect
     // the buyer to. Retrieve the url from the $payment->getApprovalLink()
     // method
     //$approvalUrl = $payment->getRedirectUrls();
     // ResultPrinter::printResult("Created Payment Using PayPal. Please visit the URL to Approve.", "Payment", "<a href='$approvalUrl' >$approvalUrl</a>", $request, $payment);
     var_dump($payment);
     return $payment;
     //END SAMPLE 3
 }
Esempio n. 17
0
/**
 * Create a payment using the buyer's paypal
 * account as the funding instrument. Your app
 * will have to redirect the buyer to the paypal 
 * website, obtain their consent to the payment
 * and subsequently execute the payment using
 * the execute API call. 
 * 
 * @param string $total	payment amount in DDD.DD format
 * @param string $currency	3 letter ISO currency code such as 'USD'
 * @param string $paymentDesc	A description about the payment
 * @param string $returnUrl	The url to which the buyer must be redirected
 * 				to on successful completion of payment
 * @param string $cancelUrl	The url to which the buyer must be redirected
 * 				to if the payment is cancelled
 * @return \PayPal\Api\Payment
 */
function makePaymentUsingPayPal($sku, $returnUrl, $cancelUrl)
{
    /*
    $payer = new Payer();
    $payer->setPaymentMethod("paypal");
    
    // Specify the payment amount.
    $amount = new Amount();
    $amount->setCurrency($currency);
    $amount->setTotal($total);
    
    // ###Transaction
    // A transaction defines the contract of a
    // payment - what is the payment for and who
    // is fulfilling it. Transaction is created with
    // a `Payee` and `Amount` types
    $transaction = new Transaction();
    $transaction->setAmount($amount);
    $transaction->setDescription($paymentDesc);
    */
    $payer = new Payer();
    $payer->setPaymentMethod("paypal");
    // ### Itemized information
    // (Optional) Lets you specify item wise
    // information
    $item1 = new Item();
    $item1->setName($GLOBALS['PAY_NAME'])->setCurrency(PAYPAL_CURRENCY_EUR)->setQuantity(1)->setPrice($GLOBALS['PAY_PRICE'])->setSku(llenaEspaciosPaypal($sku, 11, '0'));
    $itemList = new ItemList();
    $itemList->setItems(array($item1));
    // ### Additional payment details
    // Use this optional field to set additional
    // payment information such as tax, shipping
    // charges etc.
    $details = new Details();
    $details->setTax($GLOBALS['PAY_TAX'])->setSubtotal($GLOBALS['PAY_TOTAL_AMOUNT']);
    // ### Amount
    // Lets you specify a payment amount.
    // You can also specify additional details
    // such as shipping, tax.
    $amount = new Amount();
    $amount->setCurrency(PAYPAL_CURRENCY_EUR)->setTotal($GLOBALS['PAY_PRICE'])->setDetails($details);
    // ### Transaction
    // A transaction defines the contract of a
    // payment - what is the payment for and who
    // is fulfilling it.
    $transaction = new Transaction();
    $transaction->setAmount($amount)->setItemList($itemList)->setDescription($GLOBALS['PAY_DESCRIPTION']);
    $redirectUrls = new RedirectUrls();
    $redirectUrls->setReturnUrl($returnUrl);
    $redirectUrls->setCancelUrl($cancelUrl);
    $payment = new Payment();
    $payment->setRedirectUrls($redirectUrls);
    $payment->setIntent("sale");
    $payment->setPayer($payer);
    $payment->setTransactions(array($transaction));
    $payment->create(getApiContext());
    return $payment;
}
Esempio n. 18
0
 public function executePayment(PaymentInterface $payment, Request $request)
 {
     $order = $payment->getOrder();
     $paymentMethod = $order->getPaymentMethod();
     $configuration = $paymentMethod->getConfiguration();
     $apiContext = $this->getApiContext($configuration);
     $ccFirstname = $request->request->get('firstname');
     $ccLastname = $request->request->get('lastname');
     $ccNumber = str_replace(' ', '', $request->request->get('number'));
     $ccExpiry = $request->request->get('expiry');
     $ccCvc = $request->request->get('cvc');
     if (strlen($ccExpiry) == 0 || strlen($ccExpiry) < 5) {
         return new JsonResponse(['success' => false, 'message' => 'Upsss! Wygląda na to, że data ważności karty wpisana jest nieprawidłowo. Prosimy wprowadź ją w formacie MM/YY']);
     }
     list($ccExpiryMonth, $ccExpiryYear) = explode('/', $ccExpiry);
     if (substr($ccExpiryMonth, 0, 1) == 0) {
         $ccExpiryMonth = substr($ccExpiryMonth, 1, 1);
     }
     $ccExpiryYear = '20' . $ccExpiryYear;
     $cardType = $this->cardType($ccNumber);
     if (strlen($ccExpiryMonth) == 0 || strlen($ccExpiryYear) < 4) {
         return new JsonResponse(['success' => false, 'message' => 'Upsss! Wygląda na to, że data ważności karty wpisana jest nieprawidłowo. Prosimy wprowadź ją w formacie MM/YY']);
     }
     if ('' == $cardType) {
         return new JsonResponse(['success' => false, 'message' => 'Upsss! Wygląda na to, że wpisany numer karty jest nieprawidłowy. Prosimy wprowadź numer ponownie.']);
     }
     $card = new CreditCard();
     $card->setType($cardType);
     $card->setNumber($ccNumber);
     $card->setExpireMonth($ccExpiryMonth);
     $card->setExpireYear($ccExpiryYear);
     $card->setCvv2($ccCvc);
     $card->setFirstName($ccFirstname);
     $card->setLastName($ccLastname);
     $card->setBillingAddress($this->createAddress($order));
     $fundingInstrument = new FundingInstrument();
     $fundingInstrument->setCreditCard($card);
     $payer = $this->createPayer($configuration['paypal_type']);
     $payer->setFundingInstruments([$fundingInstrument]);
     $transaction = $this->createTransaction($order);
     $payPalPayment = new Payment();
     $payPalPayment->setIntent("sale");
     $payPalPayment->setPayer($payer);
     $payPalPayment->setTransactions([$transaction]);
     try {
         $payPalPayment->create($apiContext);
     } catch (PayPalConnectionException $e) {
         $error_object = json_decode($e->getData());
         $message = 'Upsss! Wystąpił nieoczekiwany błąd w trakcie przetwarzania transakcji. Skontaktuj się z obsługą sklepu.';
         switch ($error_object->name) {
             case 'CREDIT_CARD_CVV_CHECK_FAILED':
             case 'MISSING_CVV2':
             case 'GATEWAY_DECLINE_CVV2':
                 $message = 'Upsss! Wygląda na to, że podany przez Ciebie kod CVV2 lub CVC2 jest nieprawidłowy lub niepełny. Prosimy sprawdź numer i wprowadź go ponownie.';
                 break;
             case 'CREDIT_CARD_REFUSED':
                 $message = 'Upsss! Wygląda na to, że twój bank nie autoryzował transakcji. Prosimy spróbuj zapłacić przy użyciu innej karty.';
                 break;
             case 'EXPIRED_CREDIT_CARD':
                 $message = 'Upsss! Wygląda na to, że upłynął termin ważności twojej karty. Prosimy spróbuj zapłacić przy użyciu innej karty.';
                 break;
             case 'PAYER_EMPTY_BILLING_ADDRESS':
                 $message = 'Upsss! Wygląda na to, że podałeś niepełne dane adresowe. Prosimy sprawdź swoje dane adresowe i spróbuje ponowić płatność.';
                 break;
             case 'INVALID_CC_NUMBER':
                 $message = 'Upsss! Wygląda na to, że wpisany numer karty jest nieprawidłowy. Prosimy wprowadź numer ponownie.';
                 break;
             case 'CC_TYPE_NOT_SUPPORTED':
                 $message = 'Upsss! Nasz system nie obsługuje płatności dokonywanych tego typu kartą. Prosimy spróbuj użyć innej karty lub zmień metodę płatności na Paypal lub przelew bankowy.';
                 break;
             case 'VALIDATION_ERROR':
                 $message = 'Upsss! Podałeś niepoprawne dane karty. Spróbuj ponownie.';
                 break;
         }
         return new JsonResponse(['success' => false, 'message' => $message]);
     }
     $payment->setExternalIdentifier($payPalPayment->getId());
     if ($payment->getState() == 'approved') {
         $payment->setState(PaymentInterface::PAYMENT_STATE_APPROVED);
         return new JsonResponse(['success' => true, 'message' => 'Płatność zakończona sukcesem']);
     }
     return new JsonResponse(['success' => false, 'message' => 'Wystąpił nieoczekiwany błąd. Skontaktuj się z obsługą sklepu']);
 }
Esempio n. 19
0
 /**
  * Create a payment using the buyer's paypal
  * account as the funding instrument. Your app
  * will have to redirect the buyer to the paypal 
  * website, obtain their consent to the payment
  * and subsequently execute the payment using
  * the execute API call. 
  * 
  * @param string $total	payment amount in DDD.DD format
  * @param string $currency	3 letter ISO currency code such as 'USD'
  * @param string $paymentDesc	A description about the payment
  * @param string $returnUrl	The url to which the buyer must be redirected
  * 				to on successful completion of payment
  * @param string $cancelUrl	The url to which the buyer must be redirected
  * 				to if the payment is cancelled
  * @return \PayPal\Api\Payment
  */
 function makePaymentUsingPayPal($total, $currency, $paymentDesc, $returnUrl, $cancelUrl)
 {
     $payer = new Payer();
     $payer->setPaymentMethod("paypal");
     // Specify the payment amount.
     $amount = new Amount();
     $amount->setCurrency($currency);
     $amount->setTotal($total);
     // ###Transaction
     // A transaction defines the contract of a
     // payment - what is the payment for and who
     // is fulfilling it. Transaction is created with
     // a `Payee` and `Amount` types
     $item = new Item();
     $item->setQuantity(1);
     $item->setName($paymentDesc);
     $item->setPrice($total);
     $item->setCurrency("USD");
     $itemList = new ItemList();
     $itemList->setItems(array($item));
     $transaction = new Transaction();
     $transaction->setAmount($amount);
     $transaction->setItemList($itemList);
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl($returnUrl);
     $redirectUrls->setCancelUrl($cancelUrl);
     $payment = new Payment();
     $payment->setRedirectUrls($redirectUrls);
     $payment->setIntent("sale");
     $payment->setPayer($payer);
     $payment->setTransactions(array($transaction));
     $payment->create($this->getApiContext());
     return $payment;
 }
Esempio n. 20
0
 public function pay()
 {
     // BEGINNING OF PAYMENT CHECK
     if (empty($_COOKIE)) {
         echo json_encode(array("error" => true, "description" => "Non hai effettuato l'accesso a reSeed. Effettua l'accesso e riprova.", "errorCode" => "ACCESS_DENIED", "parameters" => array()));
         return;
     }
     if (!isset($_COOKIE['cart'])) {
         echo json_encode(array("error" => true, "description" => "Non hai inserito alcun articolo nel carrello.", "errorCode" => "EMPTY_CART_ERROR", "parameters" => array()));
         return;
     }
     $userID = $_COOKIE['username'];
     if (!$userID) {
         echo json_encode(array("error" => true, "description" => "Non hai effettuato l'accesso a reSeed. Effettua l'accesso e riprova.", "errorCode" => "ACCESS_DENIED", "parameters" => array()));
         return;
     }
     $cart = json_decode($_COOKIE['cart'], true);
     $cartItems = $cart['items'];
     $cartOptions = $cart['options'];
     if (!array_key_exists('paymentMediaChosen', $cartOptions)) {
         echo json_encode(array("error" => true, "description" => "Non hai selezionato un mezzo di pagamento.", "errorCode" => "MISSING_PAYMENT_MEDIA", "parameters" => array()));
         return;
     }
     if ($this->debugMode) {
         print "UTENTE: " . $userID;
     }
     if ($this->debugMode) {
         print "<br/>WHOLE CART:";
         print_r($cart);
     }
     if ($this->debugMode) {
         print "<br/>ITEMS:";
         print_r($cartItems);
     }
     if ($this->debugMode) {
         print "<br/>OPTIONS:";
         print_r($cartOptions);
     }
     // Prendi i corsi a cui è già iscritto l'utente
     $userCourses = array();
     foreach ($this->payment_model->get_courses($userID) as $course) {
         $userCourses[$course['courseID']] = $course;
     }
     if ($this->debugMode) {
         print "<br/>USER'S COURSES";
         print_r($userCourses);
     }
     // Prendi tutti i corsi disponibili
     $allCourses = [];
     foreach ($this->courses_model->get_all() as $course) {
         $allCourses[$course['courseID']] = $course;
     }
     $totalItems = array();
     $total = 0;
     foreach ($cartItems as $item) {
         $courseID = $item['courseID'];
         $courseInfo = $allCourses[$courseID];
         $alreadySubscribed = array_key_exists($courseID, $userCourses);
         // Evita di far pagare corsi che l'utente ha già acquistato
         $wantCourse = !$alreadySubscribed && $item['payCourse'] == "1";
         // Check se l'utente ha acquistato la simulazione
         $wantSimulation = $item['paySimulation'] == "1";
         if (!$alreadySubscribed && !$wantCourse && $wantSimulation) {
             if ($this->debugMode) {
                 print "ERRORE: non puoi comprare solo la simulazione.";
             }
             echo json_encode(array("error" => true, "description" => "Non è possibile acquistare soltanto la simulazione per un corso. Seleziona anche il corso e riprova.", "errorCode" => "INVALID_CHOICE", "parameters" => array("paySimulation")));
             return;
         }
         // Non dare per buone le somme che arrivano dai cookie. Ricalcola.
         if ($wantCourse) {
             $coursePrice = $courseInfo['price'];
             if ($this->debugMode) {
                 print "<br/>Costo di " . $courseID . ": " . $coursePrice;
             }
             $totalItems[] = array('item' => $courseID, 'itemType' => 'course', 'price' => $coursePrice, 'description' => "Il corso di " . $courseInfo['name'] . " a reSeed");
             $total += $coursePrice;
         }
         // Se l'utente ha pagato anche la simulazione, vediamo qual è il suo prezzo
         if ($wantSimulation) {
             $simulationPrice = $courseInfo['simulationPrice'];
             if ($this->debugMode) {
                 print "<br/>Costo della simulazione di " . $courseID . ": " . $simulationPrice;
             }
             if ($simulationPrice) {
                 $totalItems[] = array('item' => $courseID . "-simulation", 'itemType' => 'simulation', 'price' => $simulationPrice, 'description' => "La simulazione del corso di " . $courseInfo['name'] . " a reSeed");
                 $total += $simulationPrice;
             }
         }
     }
     if ($this->debugMode) {
         print "<br/>PREZZO FINALE (PRE-SCONTI): " . $total;
     }
     $seedOnDiscount = 0;
     // Prendi l'eventuale seedon che l'utente ha specificato e controlla che
     // i) ce l'abbia davvero
     // ii) sia ancora valido (non usato && non scaduto)
     if (array_key_exists('seedOnChosen', $cartOptions) && $cartOptions['seedOnChosen'] !== "-1") {
         // Prendi il seedon scelto
         $seedonChosen = $cartOptions['seedOnChosen'];
         if ($this->debugMode) {
             print_r("<br/>L'utente " . $userID . " ha scelto il seedon con ID=" . $cartOptions['seedOnChosen']);
         }
         // Prendi tutti i seedon dell'utente
         $userSeedons = [];
         foreach ($this->seedon_model->get_seedon_not_used($userID) as $seedon) {
             // Considera solo seedon che non sono scaduti
             if ($seedon['endingDate'] > $this->time->get_timestamp()) {
                 $userSeedons[$seedon['seedonID']] = $seedon;
             }
         }
         if ($this->debugMode) {
             print "<br/>Seedon dell'utente: ";
             print_r($userSeedons);
         }
         if ($this->debugMode) {
             print_r(array_key_exists($seedonChosen, $userSeedons));
         }
         if (array_key_exists($seedonChosen, $userSeedons)) {
             $seedonInfo = $userSeedons[$seedonChosen];
             if ($seedonInfo['tag'] === "DISCOUNT") {
                 $seedOnDiscount = $seedonInfo['data'];
             }
         }
     }
     if ($this->debugMode) {
         print "<br/>SCONTO SEEDON FINALE: " . $seedOnDiscount;
     }
     // Considera gli sconti lifetime dell'utente
     $lifetimeDiscount = 0;
     foreach ($this->user_achievements_rewards_model->get_achievements_and_rewards_obtained($userID, "REWARD", "DISCOUNT") as $discount) {
         $lifetimeDiscount += $discount['data'];
     }
     if ($this->debugMode) {
         print "<br/>SCONTO LIFETIME FINALE: " . $lifetimeDiscount;
     }
     $totalDiscount = $seedOnDiscount + $lifetimeDiscount;
     $total = $total - $total * $totalDiscount;
     foreach ($totalItems as $key => $item) {
         // 			print("<br/>Il prezzo prima: " . $item['price']);
         $item['price'] = $item['price'] - $item['price'] * $totalDiscount;
         $totalItems[$key] = $item;
         // 			print("<br/>Il prezzo dopo: " . $item['price']);
     }
     // Considera se l'utente ha scelto le rate mensili
     if (array_key_exists('paymentCycleChosen', $cartOptions)) {
         $paymentCycleChosen = $cartOptions['paymentCycleChosen'];
         if ($paymentCycleChosen === "monthly") {
             if ($this->debugMode) {
                 print "<br/>PAGANDO A RATE IL TOTALE " . $total . " DIVENTA " . $total / 3;
             }
             $total /= 3;
             foreach ($totalItems as $key => $item) {
                 $item['price'] /= 3;
                 $totalItems[$key] = $item;
             }
         }
     }
     if ($this->debugMode) {
         print "<br/>PREZZO FINALE: " . $total;
     }
     // END OF PAYMENT CHECK
     $paymentChoice = $cartOptions['paymentMediaChosen'];
     if ($paymentChoice === "wireTransfer") {
         // Salva sul DB la richiesta di pagamento
         $paymentID = "WT-" . $this->randomString();
         $this->paypal_history_model->add($paymentID, $userID, $_COOKIE['cart'], "", $this->time->get_timestamp(), "created");
         // Aggiungiamo la pre-iscrizione al DB (se necessario)
         foreach ($cartItems as $item) {
             $courseID = $item['courseID'];
             $payment = $this->payment_model->get_payment($userID, $courseID);
             if (empty($payment)) {
                 $this->payment_model->add($userID, $courseID);
             }
         }
         sleep(3);
         echo json_encode(array("error" => false, "url" => "index.php/Paypal/payment_successful?paymentId=" . $paymentID . "&PayerID=" . $userID));
         return;
     } else {
         if ($paymentChoice === "cash") {
             $paymentID = "CASH-" . $this->randomString();
             $this->paypal_history_model->add($paymentID, $userID, $_COOKIE['cart'], "", $this->time->get_timestamp(), "created");
             // Aggiungiamo la pre-iscrizione al DB (se necessario)
             foreach ($cartItems as $item) {
                 $courseID = $item['courseID'];
                 $payment = $this->payment_model->get_payment($userID, $courseID);
                 if (empty($payment)) {
                     $this->payment_model->add($userID, $courseID);
                 }
             }
             sleep(3);
             echo json_encode(array("error" => false, "url" => "index.php/Paypal/payment_successful?paymentId=" . $paymentID . "&PayerID=" . $userID));
             return;
         } else {
             if ($paymentChoice === "creditCard") {
                 $userInfo = $this->userinfo_model->get($userID);
                 $payer = new Payer();
                 $payerInfo = new PayerInfo();
                 if (array_key_exists('name', $userInfo)) {
                     $payerInfo->setFirstName($userInfo['name']);
                 }
                 if (array_key_exists('surname', $userInfo)) {
                     $payerInfo->setLastName($userInfo['surname']);
                 }
                 if (array_key_exists('birthdate', $userInfo)) {
                     $payerInfo->setBirthDate($userInfo['birthdate']);
                 }
                 $payerInfo->setPayerId($userID);
                 $payer->setPayerInfo($payerInfo);
                 $payer->setPaymentMethod('paypal');
                 $amount = new Amount();
                 $amount->setCurrency('EUR');
                 $amount->setTotal($total);
                 $transaction = new Transaction();
                 $transaction->setAmount($amount);
                 $itemList = new ItemList();
                 foreach ($totalItems as $cartItem) {
                     $item = new Item();
                     $item->setName($cartItem['item']);
                     $item->setDescription($cartItem['description']);
                     $item->setQuantity(1);
                     $item->setCurrency("EUR");
                     $item->setPrice($cartItem['price']);
                     $itemList->addItem($item);
                 }
                 $transaction->setItemList($itemList);
                 $payment = new Payment();
                 $payment->setIntent('sale');
                 $payment->setPayer($payer);
                 $payment->setTransactions(array($transaction));
                 // Set redirects URLs
                 $redirectUrls = new RedirectUrls();
                 $baseUrl = "https://www.reseed.it/index.php/";
                 $redirectUrls->setReturnUrl($baseUrl . "Paypal/payment_successful")->setCancelUrl($baseUrl . "Paypal/payment_cancelled");
                 $payment->setRedirectUrls($redirectUrls);
                 try {
                     // Prendiamo i docenti di tutti i corsi
                     $all_teachers = array();
                     foreach ($this->course_teachers_model->get_all_teachers() as $course_teacher) {
                         $all_teachers[$course_teacher['courseID']] = $course_teacher['teacherID'];
                     }
                     // Vediamo quali sono i docenti coinvolti dal pagamento dell'utente
                     $course_teachers = array();
                     foreach ($cartItems as $cartItem) {
                         if ($cartItem['payCourse'] == "1" || $cartItem['paySimulation'] == "1") {
                             $teacher = $all_teachers[$cartItem['courseID']];
                             if (!array_key_exists($teacher, $course_teachers)) {
                                 $course_teachers[] = $teacher;
                             }
                         }
                     }
                     $teacher = null;
                     if (count($course_teachers) == 1) {
                         $teacher = $course_teachers[0];
                     }
                     $apiContext = $this->get_credentials($teacher);
                     // 				print("USING CREDENTIALS: ");
                     // 				print_r($apiContext);
                     $response = $payment->create($apiContext);
                     // Salva sul DB il successo
                     $this->paypal_history_model->add($response->getId(), $userID, json_encode($payment->toJSON()), json_encode($response->toJSON()), $this->time->get_timestamp(), $response->getState());
                 } catch (\PayPal\Exception\PayPalConnectionException $ex) {
                     echo json_encode(array("error" => true, "description" => "Errore durante la connessione a Paypal. Riprova più tardi. Dettagli errore: " . $ex->getData(), "errorCode" => "PAYPAL_ERROR", "parameters" => array("")));
                     return;
                 }
                 // Aggiungiamo la pre-iscrizione al DB (se necessario)
                 foreach ($cartItems as $item) {
                     $courseID = $item['courseID'];
                     $payment = $this->payment_model->get_payment($userID, $courseID);
                     if (empty($payment)) {
                         $this->payment_model->add($userID, $courseID);
                     }
                 }
                 echo json_encode(array("error" => false, "url" => $response->getApprovalLink()));
                 return;
             }
         }
     }
 }
Esempio n. 21
0
 public static function preparePayment($payment, $domain)
 {
     $items = array();
     $currency = null;
     $total = 0;
     foreach ($payment->items as $item) {
         $tmpItem = new PayPalItem();
         $tmpItem->setName($item->description)->setCurrency($item->currency)->setQuantity($item->quantity)->setSku($item->sku)->setPrice($item->price);
         $items[] = $tmpItem;
         //
         $total += (double) $item->price;
         $currency = $item->currency;
     }
     $itemList = new ItemList();
     $itemList->setItems($items);
     $payer = new PayPalPayer();
     switch ($payment->payer->paymentMethod) {
         case Payer::PAYMENT_CREDIT_CARD:
             $payer->setPaymentMethod($payment->payer->paymentMethod);
             $card = new PayPalCreditCard();
             $card->setType($payment->payer->creditCard->type)->setNumber($payment->payer->creditCard->number)->setExpireMonth($payment->payer->creditCard->expireMonth)->setExpireYear($payment->payer->creditCard->expireYear)->setCvv2($payment->payer->creditCard->cvv2)->setFirstName($payment->payer->creditCard->firstName)->setLastName($payment->payer->creditCard->lastName);
             $fi = new FundingInstrument();
             $fi->setCreditCard($card);
             $payer->setFundingInstruments(array($fi));
             break;
         case Payer::PAYMENT_PAYPAL:
             $payer->setPaymentMethod($payment->payer->paymentMethod);
             break;
     }
     $amount = new Amount();
     $amount->setCurrency($currency);
     $amount->setTotal($total);
     $transaction = new Transaction();
     $transaction->setAmount($amount)->setItemList($itemList)->setDescription($payment->description);
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl($payment->returnUrl);
     $redirectUrls->setCancelUrl($payment->cancelUrl);
     $paypalPayment = new PayPalPayment();
     $paypalPayment->setRedirectUrls($redirectUrls);
     $paypalPayment->setIntent($payment->intent);
     $paypalPayment->setPayer($payer);
     $paypalPayment->setTransactions(array($transaction));
     try {
         $paypalPayment->create(static::getApiContext($domain));
         return static::getPayment($paypalPayment->getId(), $domain)->then(function ($payment) use($paypalPayment) {
             $payment->approvalUrl = static::getLink($paypalPayment->getLinks(), "approval_url");
             return $payment;
         });
     } catch (PayPalConnectionException $e) {
         return When::reject($e);
     } catch (PayPalInvalidCredentialException $e) {
         return When::reject($e);
     }
 }
Esempio n. 22
0
 /**
  * Runs a payment with PayPal
  *
  * @link https://devtools-paypal.com/guide/pay_paypal/php?interactive=ON&env=sandbox
  * @return PayPal\Api\Payment 
  */
 public function payPaypal($urls = [], $sum = 0, $message = '')
 {
     $payer = new Payer();
     $payer->setPaymentMethod('paypal');
     $amount = new Amount();
     $amount->setCurrency($this->currency);
     $amount->setTotal($sum);
     $transaction = new Transaction();
     if ($message) {
         $transaction->setDescription($message);
     }
     $transaction->setAmount($amount);
     $redirectUrls = new RedirectUrls();
     $return_url = isset($urls['return_url']) ? $urls['return_url'] : 'https://devtools-paypal.com/guide/pay_paypal/php?success=true';
     $cancel_url = isset($urls['cancel_url']) ? $urls['cancel_url'] : 'https://devtools-paypal.com/guide/pay_paypal/php?success=true';
     $redirectUrls->setReturnUrl($return_url);
     $redirectUrls->setCancelUrl($cancel_url);
     $payment = new Payment();
     $payment->setIntent('sale');
     $payment->setPayer($payer);
     $payment->setRedirectUrls($redirectUrls);
     $payment->setTransactions([$transaction]);
     return $payment->create($this->_apiContext);
     // get approval url from this json
 }
Esempio n. 23
0
 public function doSaleAPI($creditCardId, $total)
 {
     $apiContext = new ApiContext(new OAuthTokenCredential(self::CLIENT_ID, self::SECRET));
     //            $card = new CreditCard();
     //            $card->setType($payment_type);
     //            $card->setNumber($card_number);
     //            $card->setExpire_month($exp_month);
     //            $card->setExpire_year($exp_year);
     //	    $card->setCvv2($csc);
     //            $card->setFirst_name($first_name);
     //            $card->setLast_name($last_name);
     $creditCardToken = new CreditCardToken();
     $creditCardToken->setCreditCardId($creditCardId);
     $fundingInstrument = new FundingInstrument();
     $fundingInstrument->setCreditCardToken($creditCardToken);
     $payer = new Payer();
     $payer->setPayment_method("credit_card");
     $payer->setFunding_instruments(array($fundingInstrument));
     $amount = new Amount();
     $amount->setCurrency("USD");
     $amount->setTotal($total);
     $transaction = new Transaction();
     $transaction->setAmount($amount);
     $transaction->setDescription("creating a direct payment with credit card");
     $payment = new Payment();
     $payment->setIntent("sale");
     $payment->setPayer($payer);
     $payment->setTransactions(array($transaction));
     try {
         $payment->create($apiContext);
         //$card->create($apiContext);
     } catch (\PPConnectionException $ex) {
         echo "Exception:" . $ex->getMessage() . PHP_EOL;
         var_dump($ex->getData());
         exit(1);
     }
     return $payment->getId();
 }
Esempio n. 24
0
 public function createPayment($orderid, $userid)
 {
     if ($orderid > 0) {
         $orderid = (int) $orderid;
         $paypalCredentials = $this->getPaypalCredentials();
         $apiContext = new ApiContext(new OAuthTokenCredential($paypalCredentials["clientid"], $paypalCredentials["secret"]));
         $apiContext->setConfig($this->paypalConfig);
         $payer = new Payer();
         $payer->setPayment_method("paypal");
         $order = new Orders();
         $orderdetail = $order->getOrderDetail($orderid);
         //Setting up items for the paypal order detail
         //On future version this will have multiple packages based on cart content
         //When items were added api were responding abnormal
         /*
         $item = new Item();
         $item->setName($orderdetail["title"]);
         $item->setCurrency($orderdetail["currency"]);
         $item->setQuantity($orderdetail["quantity"]);
         $item->setPrice($orderdetail["package_price"]);
         $item->setSku($orderdetail["package_guid"]);
         $itemList = new ItemList();
         $itemList->setItems(array($item));
         */
         $amount = new Amount();
         $amount->setCurrency($orderdetail["currency"]);
         $amount->setTotal($orderdetail["total"]);
         $orderDescription = "Qty: " . $orderdetail["quantity"] . " for " . $orderdetail["title"] . " - " . $orderdetail["title_summary"];
         $transaction = new Transaction();
         $transaction->setDescription($orderDescription);
         $transaction->setAmount($amount);
         //$transaction->setItemlist($itemList);
         $redirectUrls = new RedirectUrls();
         $humanorderid = $order->getHumanOrderId($orderid);
         $redirectUrls->setReturn_url($paypalCredentials["returnurl"] . "&orderid=" . $humanorderid);
         $redirectUrls->setCancel_url($paypalCredentials["cancelurl"] . "&orderid=" . $humanorderid);
         $payment = new Payment();
         $payment->setIntent("sale");
         $payment->setPayer($payer);
         $payment->setRedirect_urls($redirectUrls);
         $payment->setTransactions(array($transaction));
         try {
             $payment->create($apiContext);
             $this->setPaypalInfoOrder($orderid, $payment->getId(), $payment->getCreateTime(), $payment->getUpdateTime(), $payment->getState(), $userid);
             // Retrieve buyer approval url from the `payment` object.
             foreach ($payment->getLinks() as $link) {
                 if ($link->getRel() == 'approval_url') {
                     $approvalUrl = $link->getHref();
                 }
             }
             $result = array("status" => true, "approval_url" => $approvalUrl);
             return $result;
         } catch (PayPal\Exception\PPConnectionException $ex) {
             //Logging error
             $this->log->addError($ex->getMessage() . LOG_LINESEPARATOR . "TRACE: " . $ex->getTraceAsString() . LOG_LINESEPARATOR);
             $result = array("status" => false, "approval_url" => "");
             return $result;
         }
     } else {
         //Logging error
         $this->log->addWarning("Invalid or null order id." . LOG_LINESEPARATOR);
         $result = array("status" => false, "approval_url" => "");
         return $result;
     }
 }
 public function paypalAction()
 {
     //Zend_Loader::loadFile('paypal_bootstrap.php', APPLICATION_PATH . "/../library/My/", true);
     require_once APPLICATION_PATH . "/../library/My/paypal_bootstrap.php";
     $error = false;
     $approvalLink = null;
     $payer = new Payer();
     $payer->setPaymentMethod("paypal");
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $currentUser = $auth->getIdentity();
         $userMapper = new Application_Model_UserMapper();
         $db_adapter = $userMapper->getDbTable()->getAdapter();
         $db = Zend_Db::factory('Mysqli', $db_adapter->getConfig());
         $results = $userMapper->getShoppingCart($currentUser);
         $user = $userMapper->getDbTable()->find($currentUser->id)->current();
         $currencyMapper = new Application_Model_CurrencyMapper();
         $defaultCurrency = $currencyMapper->getDefaultCurrency();
         $data = array('user_id' => $currentUser->id, 'state' => 'created', 'email' => $user->email);
         $db->insert('orders', $data);
         $lastOrderId = $db->lastInsertId('orders', 'id');
         $items = array();
         $subTotal = 0;
         foreach ($results as $i => $result) {
             $item = new Item();
             $item->setName($result->name)->setCurrency($defaultCurrency->code)->setQuantity($result->quantity)->setSku($i + 1)->setPrice($result->price);
             //->setDescription($result->c_id);
             $db->insert('ordered_products', array('product_id' => $result->id, 'name' => $result->name, 'category_id' => $result->getCategoryId(), 'currency' => $defaultCurrency->code, 'price' => $result->price, 'quantity' => $result->quantity, 'order_id' => $lastOrderId));
             $items[] = $item;
             $subTotal += $result->quantity * (double) number_format($result->price, 2);
         }
         $itemList = new ItemList();
         $itemList->setItems($items);
         $shippingTax = 0;
         //
         $details = new Details();
         $details->setShipping($shippingTax)->setTax(0)->setSubtotal($subTotal);
         $total = $shippingTax + $subTotal;
         $amount = new Amount();
         $amount->setCurrency($defaultCurrency->code)->setTotal($total)->setDetails($details);
         $transaction = new Transaction();
         $transaction->setAmount($amount)->setCustom($lastOrderId)->setItemList($itemList)->setDescription("Payment description")->setInvoiceNumber(uniqid());
         $baseUrl = getBaseUrl();
         $redirectUrls = new RedirectUrls();
         $redirectUrls->setReturnUrl($baseUrl . '/users/exepaypal/?success=true');
         $redirectUrls->setCancelUrl($baseUrl . '/users/exepaypal/?cancel=true');
         $payment = new Payment();
         $payment->setIntent("sale");
         $payment->setPayer($payer);
         $payment->setRedirectUrls($redirectUrls);
         $payment->setTransactions(array($transaction));
         try {
             $result = $payment->create($apiContext);
         } catch (Exception $ex) {
             $error = true;
         }
         $approvalLink = $payment->getApprovalLink();
     } else {
         $error = true;
     }
     $response = array('error' => $error, 'approvalLink' => $approvalLink);
     //Send as JSON
     header("Content-Type: application/json", true);
     //Return JSON
     echo json_encode($response);
     //Stop Execution
     exit;
 }
 function get_approvalurl()
 {
     try {
         // try a payment request
         $PaymentData = AngellEYE_Gateway_Paypal::calculate(null, $this->send_items);
         $OrderItems = array();
         if ($this->send_items) {
             foreach ($PaymentData['order_items'] as $item) {
                 $_item = new Item();
                 $_item->setName($item['name'])->setCurrency(get_woocommerce_currency())->setQuantity($item['qty'])->setPrice($item['amt']);
                 array_push($OrderItems, $_item);
             }
         }
         $redirectUrls = new RedirectUrls();
         $redirectUrls->setReturnUrl(add_query_arg(array('pp_action' => 'executepay'), home_url()));
         $redirectUrls->setCancelUrl($this->cancel_url);
         $payer = new Payer();
         $payer->setPaymentMethod("paypal");
         $details = new Details();
         if (isset($PaymentData['shippingamt'])) {
             $details->setShipping($PaymentData['shippingamt']);
         }
         if (isset($PaymentData['taxamt'])) {
             $details->setTax($PaymentData['taxamt']);
         }
         $details->setSubtotal($PaymentData['itemamt']);
         $amount = new Amount();
         $amount->setCurrency(PP_CURRENCY);
         $amount->setTotal(WC()->cart->total);
         $amount->setDetails($details);
         $items = new ItemList();
         $items->setItems($OrderItems);
         $transaction = new Transaction();
         $transaction->setAmount($amount);
         $transaction->setDescription('');
         $transaction->setItemList($items);
         //$transaction->setInvoiceNumber($this->invoice_prefix.$order_id);
         $payment = new Payment();
         $payment->setRedirectUrls($redirectUrls);
         $payment->setIntent("sale");
         $payment->setPayer($payer);
         $payment->setTransactions(array($transaction));
         $payment->create($this->getAuth());
         $this->add_log(print_r($payment, true));
         //if payment method was PayPal, we need to redirect user to PayPal approval URL
         if ($payment->state == "created" && $payment->payer->payment_method == "paypal") {
             WC()->session->paymentId = $payment->id;
             //set payment id for later use, we need this to execute payment
             return $payment->links[1]->href;
         }
     } catch (PayPal\Exception\PayPalConnectionException $ex) {
         wc_add_notice(__("Error processing checkout. Please try again. ", 'woocommerce'), 'error');
         $this->add_log($ex->getData());
     } catch (Exception $ex) {
         wc_add_notice(__('Error processing checkout. Please try again. ', 'woocommerce'), 'error');
         $this->add_log($ex->getMessage());
     }
 }
Esempio n. 27
0
$amount->setCurrency("USD");
$amount->setTotal("1.00");
// ### Transaction
// A transaction defines the contract of a
// payment - what is the payment for and who
// is fulfilling it. Transaction is created with
// a `Payee` and `Amount` types
$transaction = new Transaction();
$transaction->setAmount($amount);
$transaction->setDescription("This is the payment description.");
// ### Payment
// A Payment Resource; create one using
// the above types and intent as 'sale'
$payment = new Payment();
$payment->setIntent("sale");
$payment->setPayer($payer);
$payment->setTransactions(array($transaction));
// ### Create Payment
// Create a payment by posting to the APIService
// using a valid ApiContext (See bootstrap.php for more on `ApiContext`)
// The return object contains the status;
try {
    $payment->create($apiContext);
} catch (\PPConnectionException $ex) {
    echo "Exception: " . $ex->getMessage() . PHP_EOL;
    var_dump($ex->getData());
    exit(1);
}
?>
<html>
<body>
Esempio n. 28
0
 /**
  * [makePaymentUsingPayPal description]
  * @param  [type] $order     [description]
  * @param  [type] $currency  [description]
  * @param  [type] $returnUrl [description]
  * @param  [type] $cancelUrl [description]
  * @return [type]            [description]
  */
 function makePaymentUsingPayPal($order, $currency, $returnUrl, $cancelUrl)
 {
     $payer = new Payer();
     $payer->setPaymentMethod("paypal");
     //  $payee = new Payee();
     //  $payee->setEmail((string)$order['email_paypal']);
     // Specify the payment amount.
     $item = new Item();
     $item->setQuantity((string) $order['quantity']);
     $item->setName($order['description']);
     $item->setPrice((string) $order['input_price']);
     $item->setCurrency($currency);
     $item->setSku($order['item_number']);
     $array_item[] = $item;
     if (isset($order['price_ship'])) {
         $item_ship = new Item();
         $item_ship->setQuantity('1');
         $item_ship->setName('shipping');
         $item_ship->setPrice((string) $order['price_ship']);
         $item_ship->setCurrency($currency);
         $item_ship->setSku('shipping');
         $array_item[] = $item_ship;
     }
     $item_list = new ItemList();
     $item_list->setItems($array_item);
     $amount = new Amount();
     $amount->setCurrency($currency);
     $amount->setTotal((string) $order['total']);
     //$amount->setTax()
     // ###Transaction
     // A transaction defines the contract of a
     // payment - what is the payment for and who
     // is fulfilling it. Transaction is created with
     // a `Payee` and `Amount` types
     $transaction = new Transaction();
     $transaction->setAmount($amount);
     $transaction->setDescription($order['description']);
     $transaction->setItemList($item_list);
     // $transaction->setPayee($payee);
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl($returnUrl);
     $redirectUrls->setCancelUrl($cancelUrl);
     $payment = new Payment();
     $payment->setRedirectUrls($redirectUrls);
     $payment->setIntent("sale");
     $payment->setPayer($payer);
     $payment->setTransactions(array($transaction));
     $payment->create($this->getApiContext());
     return $payment;
 }
Esempio n. 29
0
 public function setPaypalPayment($intent, $payer, $redirectUrls, $transaction)
 {
     $payment = new Payment();
     $payment->setIntent($intent);
     $payment->setPayer($payer);
     $payment->setRedirectUrls($redirectUrls);
     $payment->setTransactions(array($transaction));
     return $payment;
 }