public static function createPayerInfo() { $payerInfo = new PayerInfo(); $payerInfo->setEmail(self::$email); $payerInfo->setFirstName(self::$firstName); $payerInfo->setLastName(self::$lastName); $payerInfo->setPhone(self::$phone); $payerInfo->setPayerId(self::$payerId); $payerInfo->setShippingAddress(AddressTest::createAddress()); return $payerInfo; }
public function postPayment() { $name = 'Transaction'; $mmnumber = Input::get('number'); $amounttosend = Input::get('amount'); $currency = Input::get('currency'); $type = Input::get('target'); //destination/receipient's payment Provider $cno = Input::get('cardnumber'); $charges = new PlatformCharges($amounttosend, $currency, $type); $desc = $charges->getReceiverType($type); Session::set('destProvider', $type); Session::set('destination', $mmnumber); if ($type == 'pp') { return Redirect::route('dashboard')->with('alertError', 'You need to select different payment provider for sender and receiver'); } $payer = new Payer(); $payer->setPaymentMethod('paypal'); // Valid Values: ["credit_card", "bank", "paypal", "pay_upon_invoice", "carrier"] //TODO:: try to deduce the receiver type (email or number) and set the payerinfo data correctly for consistency $payerInfo = new PayerInfo(); $payerInfo->setFirstName($mmnumber); //used to represent the receiver name/number/email $payerInfo->setLastName('Paypal to ' . $desc); //used to pass the transaction type in the request $payer->setPayerInfo($payerInfo); $item_1 = new Item(); $item_1->setName('Money Transfer')->setDescription("Send money to a {$desc} User")->setCurrency('USD')->setQuantity(1)->setPrice($charges->getDueAmount('pp', $type)); // unit price) // add item to list $item_list = new ItemList(); $item_list->setItems(array($item_1)); $amount = new Amount(); $amount->setCurrency('USD')->setTotal($charges->getDueAmount('pp', $type)); $transaction = new Transaction(); $transaction->setAmount($amount)->setItemList($item_list)->setDescription('Send money To a Mobile Money User'); $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); 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); } return "Error!!!!"; } catch (\PayPal\Exception\PPConnectionException $ex) { if (\Config::get('app.debug')) { echo "Exception: " . $ex->getMessage() . PHP_EOL; $err_data = json_decode($ex->getData(), true); return Redirect::route('dashboard')->with('alertError', 'Connection error. $err_data'); exit; } else { return Redirect::route('dashboard')->with('alertError', 'Connection error occured. Please try again later. ' . $ex->getMessage()); // die('Some error occurred, sorry for the inconvenience. Our team has been notified to correct this error.'); } } catch (Exception $ex) { return Redirect::route('dashboard')->with('alertError', 'Error! ' . $ex->getMessage()); } }
/** * @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; }
public function createBillingAgreement($planId, $shippingAddress, $billingAddress, $productName, $cartSummary, $cardDetails, $apiContext) { $billingPlanDefaultValues = $this->getBillingPlanDefaultValues(); $billingAgreement = new Agreement(); $billingAgreement->setName('Billing Agreement For ' . $productName); $billingAgreement->setDescription($cartSummary->paymentPlanTitle); $startDate = new Zend_Date(); $startDate->addDay($billingPlanDefaultValues->startDateInterval); $billingAgreement->setStartDate($startDate->get(Zend_Date::ISO_8601)); $payerInfo = new PayerInfo(); $payerInfo->setFirstName($billingAddress->firstname); $payerInfo->setLastName($billingAddress->lastname); $payerInfo->setEmail($billingAddress->emailAddress); /* Fields not supported yet */ //$payerInfo->setEmail($cart->address->billing['billing_email']); //$payerInfo->setPhone($cart->address->billing['billing_contactNo']); /* Get a MALFORMED_REQUEST error when using this field */ //$payerInfo->setCountryCode($cart->address->billing['billing_countryCode']); $cardName = $cardDetails->cardName; $cardNumber = $cardDetails->cardNumber; $cardType = strtolower($cardDetails->cardType); $cardExpiryMonth = $cardDetails->cardExpiryMonth; $cardExpiryYear = $cardDetails->cardExpiryYear; $cardSecurityCode = $cardDetails->cardSecurityCode; $nameParser = new Om_Model_Name(); $name = $nameParser->parse_name($cardName); $card = new CreditCard(); $card->setType($cardType); $card->setNumber($cardNumber); $card->setExpireMonth($cardExpiryMonth); $card->setExpireYear($cardExpiryYear); $card->setCvv2($cardSecurityCode); $card->setFirstName($name['fname']); $card->setLastName($name['lname']); $fundingInstrument = new FundingInstrument(); $fundingInstrument->setCreditCard($card); $payer = new Payer(); $payer->setPaymentMethod("credit_card"); $payer->setFundingInstruments(array($fundingInstrument)); $payer->setPayerInfo($payerInfo); $billingAgreement->setPayer($payer); $shippingAddressPayPal = new Address(); $shippingAddressPayPal->setLine1($shippingAddress->addressLine1); $shippingAddressPayPal->setLine2($shippingAddress->addressLine2 . ' ' . $shippingAddress->addressLine3); $shippingAddressPayPal->setCity($shippingAddress->city); $shippingAddressPayPal->setCountryCode($shippingAddress->getCountry()->code); $shippingAddressPayPal->setPostalCode($shippingAddress->postcode); $shippingAddressPayPal->setState($shippingAddress->county); $shippingAddressPayPal->setPhone($shippingAddress->contactNumber); $billingAgreement->setShippingAddress($shippingAddressPayPal); $plan = new Plan(); $plan->setId($planId); $billingAgreement->setPlan($plan); return $billingAgreement->create($apiContext); }
public function payWithPaypal() { //purchase parameters $mmnumber = Input::get('number'); $apikey = Input::get('apikey'); $amounttosend = Input::get('amount'); $currency = Input::get('currency'); $item = Input::get('item_name'); $cancel_url = Input::get('cancel_url'); $confirm_url = Input::get('confirm_url'); // $cno = Input::get('cardnumber'); $developers = Developer::where('dev_key', '=', $apikey)->where('dev_status', '=', 1)->limit(1)->get(); if ($developers != null) { foreach ($developers as $developer) { $mmnumber = $developer->dev_email . ' | ' . $developer->dev_number . ' | ' . $developer->dev_username; $type = $developer->dev_paymentprovider; // echo $mmnumber; // echo '<BR/>'.$type; } } else { Redirect::away($cancel_url); } $charges = new PlatformCharges($amounttosend, $currency, $type); // $desc = $charges->getReceiverType($type); Session::set('destProvider', $type); Session::set('destination', $mmnumber); $payer = new Payer(); $payer->setPaymentMethod('paypal'); // Valid Values: ["credit_card", "bank", "paypal", "pay_upon_invoice", "carrier"] //TODO:: try to deduce the receiver type (email or number) and set the payerinfo data correctly for consistency $payerInfo = new PayerInfo(); $payerInfo->setFirstName($mmnumber); //used to represent the receiver name/number/email $payerInfo->setLastName('Item: '); //used to pass the transaction type in the request $payer->setPayerInfo($payerInfo); $item_1 = new Item(); $item_1->setName('Item purchase')->setDescription("Purchase made for {$item}")->setCurrency('USD')->setQuantity(1)->setPrice($charges->getDueAmount('pp', $type)); // unit price // add item to list $item_list = new ItemList(); $item_list->setItems(array($item_1)); $amount = new Amount(); $amount->setCurrency('USD')->setTotal($charges->getDueAmount('pp', $type)); $transaction = new Transaction(); $transaction->setAmount($amount)->setItemList($item_list)->setDescription('Payment for $item'); $redirect_urls = new RedirectUrls(); $redirect_urls->setReturnUrl(URL::route('api/merchantapi/paypalconfirm'))->setCancelUrl(URL::route('api/merchantapi/paypalcancel')); $payment = new Payment(); $payment->setIntent('sale')->setPayer($payer)->setRedirectUrls($redirect_urls)->setTransactions(array($transaction)); try { $payment->create($this->_api_context); foreach ($payment->getLinks() as $link) { if ($link->getRel() == 'approval_url') { $redirect_url = $link->getHref(); break; } } // var_dump($payment->getLinks()); // var_dump($redirect_url); // add payment ID to session Session::put('paypal_payment_id', $payment->getId()); header('Location: ' . $redirect_url); exit; // return isset($redirect_url)?Redirect::away($redirect_url): "Error!!Paypal Checkout error"; } catch (\PayPal\Exception\PPConnectionException $ex) { if (\Config::get('app.debug')) { echo "Exception: " . $ex->getMessage() . PHP_EOL; $err_data = json_decode($ex->getData(), true); return Redirect::route($cancel_url)->with('alertError', 'Connection error. $err_data'); exit; } else { return Redirect::route($cancel_url)->with('alertError', 'Connection error occured. Please try again later. ' . $ex->getMessage()); // die('Some error occurred, sorry for the inconvenience. Our team has been notified to correct this error.'); } } catch (Exception $ex) { return Redirect::route($cancel_url)->with('alertError', 'Error! ' . $ex->getMessage()); } }
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; } } } }
/** * Build PayerInfo for Payer * * @param $quote * @return PayerInfo */ protected function buildPayerInfo($quote) { $payerInfo = new PayerInfo(); $address = $quote->getBillingAddress(); if ($address->getFirstname()) { $payerInfo->setFirstName($address->getFirstname()); } if ($address->getMiddlename()) { $payerInfo->setMiddleName($address->getMiddlename()); } if ($address->getLastname()) { $payerInfo->setLastName($address->getLastname()); } $billingAddress = $this->buildBillingAddress($quote); if ($billingAddress) { $payerInfo->setBillingAddress($billingAddress); } return $payerInfo; }