| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | 
							- <?php
 
- namespace App\Shop\PaymentMethods\Stripe;
 
- use App\Shop\Checkout\CheckoutRepository;
 
- use App\Shop\Couriers\Courier;
 
- use App\Shop\Couriers\Repositories\CourierRepository;
 
- use App\Shop\Customers\Customer;
 
- use App\Shop\Customers\Repositories\CustomerRepository;
 
- use App\Shop\PaymentMethods\Stripe\Exceptions\StripeChargingErrorException;
 
- use Gloudemans\Shoppingcart\Facades\Cart;
 
- use Ramsey\Uuid\Uuid;
 
- use Stripe\Charge;
 
- class StripeRepository
 
- {
 
-     /**
 
-      * @var Customer
 
-      */
 
-     private $customer;
 
-     /**
 
-      * StripeRepository constructor.
 
-      * @param Customer $customer
 
-      */
 
-     public function __construct(Customer $customer)
 
-     {
 
-         $this->customer = $customer;
 
-     }
 
-     /**
 
-      * @param array $data Cart data
 
-      * @param $total float Total items in the cart
 
-      * @param $tax float The tax applied to the cart
 
-      * @return Charge Stripe charge object
 
-      * @throws StripeChargingErrorException
 
-      */
 
-     public function execute(array $data, $total, $tax) : Charge
 
-     {
 
-         try {
 
-             $shipping = 0;
 
-             $totalComputed = $total + $shipping;
 
-             $customerRepo = new CustomerRepository($this->customer);
 
-             $options['source'] = $data['stripeToken'];
 
-             $options['currency'] = config('cart.currency');
 
-             if ($charge = $customerRepo->charge($totalComputed, $options)) {
 
-                 $checkoutRepo = new CheckoutRepository;
 
-                 $checkoutRepo->buildCheckoutItems([
 
-                     'reference' => Uuid::uuid4()->toString(),
 
-                     'courier_id' => 1,
 
-                     'customer_id' => $this->customer->id,
 
-                     'address_id' => $data['billing_address'],
 
-                     'order_status_id' => 1,
 
-                     'payment' => strtolower(config('stripe.name')),
 
-                     'discounts' => 0,
 
-                     'total_products' => $total,
 
-                     'total' => $totalComputed,
 
-                     'total_paid' => $totalComputed,
 
-                     'tax' => $tax
 
-                 ]);
 
-                 Cart::destroy();
 
-             }
 
-             return $charge;
 
-         } catch (\Exception $e) {
 
-             throw new StripeChargingErrorException($e);
 
-         }
 
-     }
 
- }
 
 
  |