%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/forge/api-takeaseat.eco-n-tech.co.uk/app/Http/Controllers/Booking/Payment/
Upload File :
Create Path :
Current File : //home/forge/api-takeaseat.eco-n-tech.co.uk/app/Http/Controllers/Booking/Payment/CreatePayment.php

<?php

namespace App\Http\Controllers\Booking\Payment;

use App\Models\User;
use App\Helpers\MoneyHelper;
use App\Services\Stripe\SellerService;
use App\Services\Stripe\PaymentMethodService;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class CreatePayment extends Controller
{
    /**
     * Get the payment intent for a new card
     *
     * @param integer $seller_id
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function __invoke($seller_id, Request $request)
    {
        $seller = User::findOrFail($seller_id);

        $user = auth()->user();
        $user->addPaymentMethod($request->get('payment_method'));
        $user->updateDefaultPaymentMethod($request->get('payment_method'));

        $grandTotal = MoneyHelper::reverseStripeFormat($request->get('grand_total'));
        $payment = $user->charge($request->get('grand_total'), $request->get('payment_method'), [
            'off_session' => true,
            'confirm' => true
        ]);
        
        $charges = $payment->asStripePaymentIntent();
        $transfer = null;
        
        foreach($charges['charges']['data'] as $charge) {
            $stripeFees = MoneyHelper::getStripeFees($grandTotal, $charge['payment_method_details']['card']['country']);
            $transfer_amount = MoneyHelper::stripeFormat($grandTotal - $stripeFees);
            $transfer = SellerService::createTransfer($seller, $transfer_amount, $charge['id']);
        }

        PaymentMethodService::removeDuplicatedPaymentMethods($user->stripe_id);

        return response()->json([
            'charges' => $charges['charges']['data'],
            'transfer' => $transfer
        ]);
    }
}

Zerion Mini Shell 1.0