/** * @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; }
/** * @param Transaction $txn */ public function populateTransactionDetails(Transaction $txn) { $txn->testMode = $this->state->testMode; $txn->vatNumberStatus = $this->state->vatNumberStatus; $txn->vatNumberGiven = $this->state->vatNumber; $txn->vatNumberGivenCountryCode = $this->state->vatNumberCountryCode; $txn->transactionAmount = $this->state->total; $txn->transactionCurrency = $this->state->config->currencyCode; $txn->vatAmount = $this->state->vatTotal; $txn->billingAddressCountryCode = $this->state->addressCountryCode; $txn->ipCountryCode = $this->state->ipCountryCode; $txn->billingAddress = $this->state->addressAsString; $txn->transactionDescription = $this->state->config->briefDescription; $txnDetailArr = []; foreach ($this->state->lineItems as $item) { // Coerce LineItem StructClass to array $txnDetailArr[] = (array) $item; } $txn->setTransactionDetail($txnDetailArr); }