/** * @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()); }
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); }
/** * @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; }
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; } } }
/** * @see http://paypal.github.io/PayPal-PHP-SDK/sample/doc/payments/CreatePaymentUsingPayPal.html * * @return Payment */ public function getPayment() { $payer = $this->getPayer(); if (!$payer || !$payer instanceof Payer) { throw new InvalidArgumentException("Method getPayer has to return instance of Payer. Instead " . gettype($payer) . " given."); } if (!$payer->getPaymentMethod()) { $payer->setPaymentMethod('paypal'); } $payment = new Payment(); $payment->setIntent("sale")->setPayer($payer); $transactions = $this->getTransactions(); $this->checkTransactions($transactions); $payment->setTransactions($transactions); return $payment; }
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; }
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 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; }
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; }
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); }
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; } }
/** * @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; }
/** * Создаем платеж типа 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 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); }
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 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); } }
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; } } } }
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(); }
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 }
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']); }
/** * 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; }
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; }
/** * 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; }
/** * 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 }
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()); } }
$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> <div>
/** * [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; }
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; }