/** * @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; }