list($firstName, $lastName) = App\StringUtil::parseFullName($inputs['full-name']); $amount = doubleval($inputs['amount']); $currency = $inputs['currency']; $cardType = App\Payment\PaymentUtil::getCardType($inputs['credit-card-number']); if ($cardType == App\Payment\PaymentUtil::AMEX && $currency !== 'USD') { $app->flash('errors', array('Error, American Express card should be used only for USD. ' . $currency . ' was used instead.')); $app->redirect($app->urlFor('home')); } $dbFilePath = __DIR__ . '/db'; $sqliteHelper = new App\SQLiteHelper($dbFilePath); switch ($currency) { case 'USD': case 'EUR': case 'AUD': $orderInfo = array(Paypal\PaypalAdapter::ORDER_FIRST_NAME => $firstName, Paypal\PaypalAdapter::ORDER_LAST_NAME => $lastName, Paypal\PaypalAdapter::ORDER_AMOUNT => $amount, Paypal\PaypalAdapter::ORDER_CURRENCY => $currency); list($cardFirstName, $cardLastName) = App\StringUtil::parseFullName($inputs['card-holder-name']); $creditCardNumber = $inputs['credit-card-number']; $expirationMonth = intval($inputs['expiration-date-month']); $expirationYear = intval($inputs['expiration-date-year']); $ccv = $inputs['ccv']; $creditInfo = array(Paypal\PaypalAdapter::CREDIT_CARD_NUMBER => $creditCardNumber, Paypal\PaypalAdapter::CARD_FIRST_NAME => $cardFirstName, Paypal\PaypalAdapter::CARD_LAST_NAME => $cardLastName, Paypal\PaypalAdapter::CARD_EXP_MONTH => $expirationMonth, Paypal\PaypalAdapter::CARD_EXP_YEAR => $expirationYear, Paypal\PaypalAdapter::CARD_CVV => $ccv); $paypalAdapter = new Paypal\PaypalAdapter(new Paypal\Paypal()); $result = $paypalAdapter->pay(array($creditInfo, $orderInfo)); // Save both success and failed results $response = print_r($result, true); $fullName = $firstName . ' ' . $lastName; $sqliteHelper->insert($fullName, $amount, $currency, $response); if ($result) { $amount = $result->getTransactions()[0]->getAmount()->total; $app->flash('success', "Successfully, {$cardFirstName} {$cardLastName} paid {$amount} {$currency} for {$firstName} {$lastName}."); $app->redirect($app->urlFor('home'));
public function test_parse_fullname_without_space() { list($firstName, $lastName) = App\StringUtil::parseFullName($this->firstNameFig . $this->lastNameFig); $this->assertEquals($this->firstNameFig . $this->lastNameFig, $firstName); $this->assertEquals('', $lastName); }