/** * @param array $credentials * @param DelayedOrRepeatTransaction $delayedTxn * @return \PatternSeek\ComponentView\Response * @throws \Exception */ public static function chargeDelayedOrRepeatPaymentTransaction($credentials, DelayedOrRepeatTransaction $delayedTxn) { $stripe = new StripeFacade(); $stripe->setApiKey($credentials['apiPrivKey']); $charge = $stripe->chargeCreate(["amount" => $delayedTxn->transactionAmount * 100, "currency" => $delayedTxn->transactionCurrency, "description" => $delayedTxn->transactionDescription, "customer" => $delayedTxn->storedToken]); /** @var Transaction $finalTxn */ $finalTxn = Transaction::fromArray($delayedTxn->toArray(), true); $finalTxn->chargeID = $charge->id; $finalTxn->time = time(); try { $finalTxn->validate(); } catch (\Exception $e) { $finalTxn->validationError = $e->getMessage(); } return $finalTxn; }
function testUnserializeAndStripeFailures() { $billingAddress = $this->getUSAddress(); $lineItem = $this->getElectronicServiceLineItem(); $successOutput = []; /** @var Basket $view */ $view = $this->prepareBasket($lineItem, $successOutput, $billingAddress); $state = $view->getStateForTesting(); $serialised = serialize($view); /** @var Basket $unserialised */ $unserialised = unserialize($serialised); $unserialised->updateView(['transactionSuccessCallback' => $this->successCallback]); $state = $view->getStateForTesting(); $this->assertTrue($state->readyForPaymentInfo()); // Check stripe method fails StripeFacade::$testMode = true; /** @var Basket $uns */ $unserialised = unserialize($serialised); $this->failOn3DifferentCountries($unserialised); /** @var Basket $uns */ $unserialised = unserialize($serialised); $this->failOnOnlyIPandCardMatch($unserialised); /** @var Basket $uns */ $unserialised = unserialize($serialised); $this->succeedOnSameAddressAndCardCountries($unserialised, $successOutput); /** @var Basket $uns */ $unserialised = unserialize($serialised); $this->succeedOnAllCountriesMatch($unserialised, $successOutput); }