public static function createAddress() { $addr = new ShippingAddress(); $addr->setLine1(self::$line1); $addr->setLine2(self::$line2); $addr->setCity(self::$city); $addr->setState(self::$state); $addr->setPostalCode(self::$postalCode); $addr->setCountryCode(self::$countryCode); $addr->setPhone(self::$phone); $addr->setRecipientName(self::$recipientName); return $addr; }
private function createPayment($details) { $payment = new Payment(); $payer = new Payer(); $payer->payment_method = "paypal"; $amount = new Amount(); $amount->currency = $details['PAYMENTREQUEST_CURRENCYCODE']; $amount->total = $details['PAYMENTREQUEST_AMT']; $transaction = new Transaction(); $transaction->amount = $amount; $transaction->description = $details['PAYMENTREQUEST_DESCRIPTION']; $itemList = new ItemList(); foreach ($details['PAYMENTREQUEST_ITEMS'] as $itemInfo) { $item = new Item(); $item->setQuantity($itemInfo['quantity']); $item->setName($itemInfo['name']); $item->setDescription($itemInfo['description']); $item->setPrice($itemInfo['price']); $item->setCategory($itemInfo['category']); $item->setCurrency($itemInfo['currency']); $item->setTax($itemInfo['tax']); $item->setSku($itemInfo['sku']); $itemList->addItem($item); } $addressInfo = $details['PAYMENTREQUEST_SHIPPING_ADDRESS']; $shippingAddress = new ShippingAddress(); $shippingAddress->setRecipientName($addressInfo['recipient_name']); $shippingAddress->setLine1($addressInfo['line1']); $shippingAddress->setPostalCode($addressInfo['postal_code']); $shippingAddress->setCity($addressInfo['city']); $shippingAddress->setCountryCode($addressInfo['country_code']); $itemList->setShippingAddress($shippingAddress); $transaction->setItemList($itemList); $redirectUrls = new RedirectUrls(); $redirectUrls->return_url = $details['RETURN_URL']; $redirectUrls->cancel_url = $details['CANCEL_URL']; $payment->intent = "sale"; $payment->payer = $payer; $payment->redirect_urls = $redirectUrls; $payment->transactions = [$transaction]; if (false == isset($details['response']) && false == isset($details['response']['state']) && isset($payment->payer->payment_method) && 'paypal' == $payment->payer->payment_method) { $paymentResponse = $payment->create($this->api); $details->replace(['response' => $paymentResponse->toArray()]); foreach ($paymentResponse->links as $link) { if ($link->rel == 'approval_url') { $details->replace(['approval_url' => $link->href]); } } } }
public function postPayment(Request $request) { $payer = new Payer(); $payer->setPaymentMethod('paypal'); $item_listArr = []; $totalAmount = 0; if ($request->session()->has('member')) { $memberID = $request->session()->get('member'); $memberInfo = DB::select("select * from members where email = '{$memberID}'")[0]; $shoppingCart = DB::select("select * from shopping_cart where member_id = '{$memberID}'")[0]->shopping_cart; $shoppingCart = json_decode($shoppingCart, true); if (sizeof($shoppingCart) == 0) { return Redirect::to('/shoppingCart'); } $shoppingCartItemsFinal = DB::table('products')->whereIn('product_id', array_keys($shoppingCart))->get(); foreach ($shoppingCartItemsFinal as $key => $value) { $value->num = $shoppingCart[$value->product_id]; $priceList = json_decode($value->price, true); $eachPrice = $value->single_price; krsort($priceList); foreach ($priceList as $packageNum => $price) { if ($value->num >= $packageNum) { $eachPrice = $price; break; } } $value->eachPrice = $eachPrice; $item = new Item(); $item->setName($value->name)->setCurrency('AUD')->setQuantity($value->num * 1)->setPrice($eachPrice); // unit price array_push($item_listArr, $item); $totalAmount += $eachPrice * $value->num; } } else { $shoppingCart = json_decode($request->cookie('shoppingCart'), true); if (sizeof($shoppingCart) == 0) { return Redirect::to('/shoppingCart'); } $shoppingCartItemsFinal = DB::table('products')->whereIn('product_id', array_keys($shoppingCart))->get(); foreach ($shoppingCartItemsFinal as $key => $value) { $value->num = $shoppingCart[$value->product_id]; $priceList = json_decode($value->price, true); $eachPrice = $value->single_price; krsort($priceList); foreach ($priceList as $packageNum => $price) { if ($value->num >= $packageNum) { $eachPrice = $price; break; } } $value->eachPrice = $eachPrice; $item = new Item(); $item->setName($value->name)->setCurrency('AUD')->setQuantity($value->num * 1)->setPrice($eachPrice); // unit price array_push($item_listArr, $item); $totalAmount += $eachPrice * $value->num; } } $item_list = new ItemList(); $item_list->setItems($item_listArr); $shipping_address = new ShippingAddress(); $payerInfo = Session::get('payment_shopping_payer_info'); $shipping_address->setCountryCode('AU'); $shipping_address->setCity($payerInfo['suburb']); $shipping_address->setPostalCode($payerInfo['postcode']); $shipping_address->setLine1($payerInfo['address']); $shipping_address->setState($payerInfo['state']); $shipping_address->setRecipientName($payerInfo['name']); $item_list->setShippingAddress($shipping_address); $amount = new Amount(); $amount->setCurrency('AUD')->setTotal($totalAmount); $transaction = new Transaction(); $transaction->setAmount($amount)->setItemList($item_list)->setDescription('Your transaction description'); $redirect_urls = new RedirectUrls(); $redirect_urls->setReturnUrl(URL::route('payment.status'))->setCancelUrl(URL::route('payment.status')); $payment = new Payment(); $payment->setIntent('Sale')->setPayer($payer)->setRedirectUrls($redirect_urls)->setTransactions(array($transaction)); try { $payment->create($this->_api_context); } catch (\PayPal\Exception\PPConnectionException $ex) { if (\Config::get('app.debug')) { echo "Exception: " . $ex->getMessage() . PHP_EOL; $err_data = json_decode($ex->getData(), true); 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 Session::put('paypal_payment_id', $payment->getId()); if (isset($redirect_url)) { // redirect to paypal return Redirect::away($redirect_url); } else { return Redirect::to('/check-out'); // return Redirect::route('original.route')->with('error', 'Unknown error occurred'); } }
/** * @return Transaction */ private function buildTransaction() { $clientInfo = ClientHelper::getClientInfo(); $priceIncludesTax = $clientInfo->business_settings->tax->price_includes_tax; $paypalItems = []; $subTotal = 0; foreach ($this->order->getItems() as $item) { /* @var $item OrderItem */ // don't add shipping row if ($item->isShipping()) { continue; } $subTotal += $item->getPrice(); $newItem = new Item(); $newItem->setName($item->getProductName())->setCurrency($clientInfo->currency->currency_iso)->setQuantity($item->getQuantity())->setSku($item->getProductSku())->setPrice($item->getPrice() / 100); $paypalItems[] = $newItem; } $shippingBeforeTax = $this->order->getShipping() / 100; $tax = $this->order->getTax() / 100; $subTotal = $subTotal / 100; $total = $this->order->getTotalPrice() / 100; $orderShippingAddress = $this->order->getShippingAddress()->getArray(); $shippingAddress = new ShippingAddress(); $shippingAddress->setCity($orderShippingAddress['city']); $shippingAddress->setCountryCode(CountryHelper::getCountryCode($orderShippingAddress['countryId'])); $shippingAddress->setPostalCode($orderShippingAddress['postcode']); $shippingAddress->setLine1($orderShippingAddress['address1']); $shippingAddress->setState($orderShippingAddress['state']); $shippingAddress->setRecipientName($this->order->getCustomer()->fullName()); $itemList = new ItemList(); if (!$priceIncludesTax) { $itemList->setItems($paypalItems); } $itemList->setShippingAddress($shippingAddress); $details = new Details(); $details->setShipping($shippingBeforeTax)->setTax($tax)->setSubtotal($subTotal); $amount = new Amount(); $amount->setCurrency($clientInfo->currency->currency_iso)->setTotal($total)->setDetails($details); $transaction = new Transaction(); $transaction->setAmount($amount)->setItemList($itemList)->setDescription("Order from " . $clientInfo->name)->setInvoiceNumber($this->order->getId()); return $transaction; }
function generateShippingAddress($addressee, $address) { $address = new ShippingAddress(); $address->setRecipientName($addressee); $address->setLine1($address->line1); $address->setLine2($address->line2); $address->setCity($address->city); $address->setState($address->province->name); $address->setCountryCode($address->country->name); $address->setPostalCode($address->zip); return $address; }