Shipping address.
public setShippingAddress ( |
||
$shipping_address |
public static function createItemList() { $item = ItemTest::createItem(); $itemList = new ItemList(); $itemList->setItems(array($item)); $itemList->setShippingAddress(ShippingAddressTest::createAddress()); return $itemList; }
public static function createItemList() { /** @var Item $item */ $item = ItemTest::createItem(); $itemList = new ItemList(); $itemList->setItems(array($item)); $itemList->setShippingAddress(ShippingAddressTest::getObject()); return $itemList; }
function payment_redirect($cart = false, $approval = false, $order_exists = false) { global $order, $xtPrice; // auth $apiContext = $this->apiContext(); // set payment $payer = new Payer(); $payer->setPaymentMethod('paypal'); if ($this->code == 'paypalinstallment') { $payer->setExternalSelectedFundingInstrumentType('CREDIT'); } // set payer_info $payer_info = new PayerInfo(); // set items $item = array(); // set details $this->details = new Details(); // set amount $this->amount = new Amount(); // set ItemList $itemList = new ItemList(); // set redirect $redirectUrls = new RedirectUrls(); // set address $shipping_address = new ShippingAddress(); if ($cart === true) { $products = $_SESSION['cart']->get_products(); for ($i = 0, $n = sizeof($products); $i < $n; $i++) { $item[$i] = new Item(); $item[$i]->setName($this->encode_utf8($products[$i]['name']))->setCurrency($_SESSION['currency'])->setQuantity($products[$i]['quantity'])->setPrice($products[$i]['price'])->setSku($products[$i]['model'] != '' ? $products[$i]['model'] : $products[$i]['id']); $this->details->setSubtotal($this->details->getSubtotal() + $products[$i]['final_price']); } $total = $price = $_SESSION['cart']->show_total(); if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == 1 && $_SESSION['customers_status']['customers_status_ot_discount'] != '0.00') { if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) { $price = $total - $_SESSION['cart']->show_tax(false); } $this->details->setShippingDiscount($this->details->getShippingDiscount() + $xtPrice->xtcGetDC($price, $_SESSION['customers_status']['customers_status_ot_discount']) * -1); } $this->amount->setTotal($total + $this->details->getShippingDiscount()); if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1 && MODULE_SMALL_BUSINESS != 'true') { foreach ($_SESSION['cart']->tax as $tax) { $this->details->setTax($this->details->getTax() + $tax['value']); } $total = $this->calc_total(); $amount_total = $this->amount->getTotal(); if ((string) $amount_total != (string) $total) { $this->details->setTax($this->details->getTax() + ($amount_total - $total)); } } $shipping_cost = $this->get_config('MODULE_PAYMENT_' . strtoupper($this->code) . '_SHIPPING_COST'); if ((int) $shipping_cost > 0) { $i = count($item); $item[$i] = new Item(); $item[$i]->setName($this->encode_utf8(PAYPAL_EXP_VORL))->setCurrency($_SESSION['currency'])->setQuantity(1)->setPrice($shipping_cost); $this->amount->setTotal($this->amount->getTotal() + $shipping_cost); $this->details->setSubtotal($this->amount->getTotal()); } // set amount $this->amount->setCurrency($_SESSION['currency'])->setDetails($this->details); // set redirect $redirectUrls->setReturnUrl($this->link_encoding(xtc_href_link('callback/paypal/paypalcart.php', '', 'SSL')))->setCancelUrl($this->link_encoding(xtc_href_link(FILENAME_SHOPPING_CART, 'payment_error=' . $this->code, 'SSL'))); } else { $shipping_address->setRecipientName($this->encode_utf8($order->delivery['firstname'] . ' ' . $order->delivery['lastname']))->setLine1($this->encode_utf8($order->delivery['street_address']))->setCity($this->encode_utf8($order->delivery['city']))->setCountryCode($this->encode_utf8($order_exists === false ? $order->delivery['country']['iso_code_2'] : $order->delivery['country_iso_2']))->setPostalCode($this->encode_utf8($order->delivery['postcode']))->setState($this->encode_utf8($order->delivery['state'] != '' ? xtc_get_zone_code($order->delivery['country_id'], $order->delivery['zone_id'], $order->delivery['state']) : '')); if ($order->delivery['suburb'] != '') { $shipping_address->setLine2($this->encode_utf8($order->delivery['suburb'])); } $subtotal = 0; for ($i = 0, $n = sizeof($order->products); $i < $n; $i++) { $item[$i] = new Item(); $item[$i]->setName($this->encode_utf8($order->products[$i]['name']))->setCurrency($order->info['currency'])->setQuantity($order->products[$i]['qty'])->setPrice($order->products[$i]['price'])->setSku($order->products[$i]['model'] != '' ? $order->products[$i]['model'] : $order->products[$i]['id']); $subtotal += $order->products[$i]['price'] * $order->products[$i]['qty']; } // set totals if ($order_exists === false) { if (!class_exists('order_total')) { require_once DIR_WS_CLASSES . 'order_total.php'; } $order_total_modules = new order_total(); $order_totals = $order_total_modules->process(); $this->get_totals($order_totals, true, $subtotal); } else { $this->get_totals($order->totals); } // set amount $this->amount->setCurrency($order->info['currency'])->setDetails($this->details); // set redirect if ($order_exists === false) { $redirectUrls->setReturnUrl($this->link_encoding(xtc_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')))->setCancelUrl($this->link_encoding(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code, 'SSL'))); } else { $redirectUrls->setReturnUrl($this->link_encoding(xtc_href_link('callback/paypal/' . $this->code . '.php', 'oID=' . $order->info['order_id'] . '&key=' . md5($order->customer['email_address']), 'SSL')))->setCancelUrl($this->link_encoding(xtc_href_link('callback/paypal/' . $this->code . '.php', 'payment_error=' . $this->code . '&oID=' . $order->info['order_id'] . '&key=' . md5($order->customer['email_address']), 'SSL'))); } if ($this->code == 'paypalinstallment') { $redirectUrls->setReturnUrl($this->link_encoding(xtc_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'conditions=true', 'SSL'))); } } // set ItemList if ($this->get_config('PAYPAL_ADD_CART_DETAILS') == '0' || $this->check_discount() === true) { $item = array(); $item[0] = new Item(); $item[0]->setName($this->encode_utf8(MODULE_PAYMENT_PAYPAL_TEXT_ORDER))->setCurrency($_SESSION['currency'])->setQuantity(1)->setPrice($this->details->getSubtotal()); if ($cart === true) { $shipping_cost = $this->get_config('MODULE_PAYMENT_' . strtoupper($this->code) . '_SHIPPING_COST'); if ((int) $shipping_cost > 0) { $item[1] = new Item(); $item[1]->setName($this->encode_utf8(PAYPAL_EXP_VORL))->setCurrency($_SESSION['currency'])->setQuantity(1)->setPrice($shipping_cost); $this->amount->setTotal($this->amount->getTotal() + $shipping_cost); $this->details->setSubtotal($this->amount->getTotal()); } } } $itemList->setItems($item); // profile $address_override = false; $profile_id = $this->get_config('PAYPAL_' . strtoupper($this->code . '_' . $_SESSION['language_code']) . '_PROFILE'); if ($profile_id == '') { $profile_id = $this->get_config('PAYPAL_STANDARD_PROFILE'); } if ($profile_id != '') { if ($this->get_config(strtoupper($profile_id) . '_TIME') < time() - 3600 * 24) { $profile = $this->get_profile($profile_id); $sql_data_array = array(array('config_key' => strtoupper($profile_id) . '_TIME', 'config_value' => time()), array('config_key' => strtoupper($profile_id) . '_ADDRESS', 'config_value' => $profile[0]['input_fields']['address_override'])); $this->save_config($sql_data_array); $address_override = $profile[0]['input_fields']['address_override'] == '0' ? true : false; } else { $address_override = $this->get_config(strtoupper($profile_id) . '_ADDRESS') == '0' ? true : false; } } if ($cart === false && $approval === false && $address_override === false || $order_exists === true || $this->code == 'paypalinstallment') { $itemList->setShippingAddress($shipping_address); } if ($this->code == 'paypalinstallment') { // set payment address $payment_address = new Address(); $payment_address->setLine1($this->encode_utf8($order->billing['street_address']))->setCity($this->encode_utf8($order->billing['city']))->setState($this->encode_utf8($order->billing['state'] != '' ? xtc_get_zone_code($order->billing['country_id'], $order->billing['zone_id'], $order->billing['state']) : ''))->setPostalCode($this->encode_utf8($order->billing['postcode']))->setCountryCode($this->encode_utf8($order->billing['country']['iso_code_2'])); if ($order->billing['suburb'] != '') { $payment_address->setLine2($this->encode_utf8($order->billing['suburb'])); } $payer_info->setBillingAddress($payment_address)->setShippingAddress($shipping_address)->setEmail($this->encode_utf8($order->customer['email_address']))->setFirstName($this->encode_utf8($order->delivery['firstname']))->setLastName($this->encode_utf8($order->delivery['lastname'])); $payer->setPayerInfo($payer_info); } // set transaction $transaction = new Transaction(); $transaction->setAmount($this->amount)->setItemList($itemList)->setDescription($this->encode_utf8(STORE_NAME))->setInvoiceNumber(uniqid()); // set payment $payment = new Payment(); $payment->setIntent($this->transaction_type)->setPayer($payer)->setRedirectUrls($redirectUrls)->setTransactions(array($transaction))->setCreateTime(time()); if (isset($profile_id) && $profile_id != '') { $payment->setExperienceProfileId($profile_id); } try { $payment->create($apiContext); $_SESSION['paypal']['paymentId'] = $payment->getId(); $approval_link = $payment->getApprovalLink(); if ($approval === false) { xtc_redirect($approval_link); } else { return $approval_link; } } catch (Exception $ex) { $this->LoggingManager->log(print_r($ex, true), 'DEBUG'); unset($_SESSION['paypal']); if ($cart === true) { xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART, 'payment_error=' . $this->code, 'SSL')); } elseif ($this->code != 'paypalplus') { xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code, 'SSL')); } } }
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]); } } } }
/** * @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; }
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'); } }