function __invoke(DelayedOrRepeatTransaction $delayedTxn, Basket $basket)
 {
     $delayedSuccessOutput = (array) $delayedTxn;
     #unset( $delayedSuccessOutput[ 'validationError' ] );
     // This *is* set on the delayed TXN because it's the time the customer was created
     $delayedSuccessOutput['time'] = null;
     ksort($delayedSuccessOutput);
     if ($delayedTxn->providerClass == "\\PatternSeek\\ECommerce\\Stripe") {
         $creds = ["apiPrivKey" => "dummy_api_key"];
         $finalTxn = $delayedTxn->charge($creds);
         $finalTxnOutput = (array) $finalTxn;
         unset($finalTxnOutput['validationError']);
         $finalTxnOutput['time'] = null;
         ksort($finalTxnOutput);
     } else {
         throw new \Exception("Txn provider should be Stripe");
     }
     $out = ['delayedTxn' => $delayedSuccessOutput, 'actualTxn' => $finalTxnOutput];
     krsort($out);
     return new Response("text/plain", var_export($out, true));
 }
Example #2
0
 /**
  * @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;
 }
Example #3
0
 /**
  * @param DelayedOrRepeatTransaction $txn
  * @return Response
  */
 public function delayedTransactionSuccess(DelayedOrRepeatTransaction $txn)
 {
     $this->state->complete = true;
     $txn->time = time();
     try {
         $txn->validate();
     } catch (\Exception $e) {
         $txn->validationError = $e->getMessage();
     }
     $this->state->successMessage = $this->state->delayedTransactionSuccessCallback->__invoke($txn, $this)->content;
     // Render full component, including parent of basket, if any.
     $root = $this->getRootComponent();
     $root->updateState();
     return $root->render();
 }