Untitled

 avatar
unknown
plain_text
a month ago
1.5 kB
2
Indexable
<?php

namespace App\Services;

use Stripe\Checkout\Session;

class StripeClient
{
    public static function build()
    {
        return new self();
    }

    public function createCheckout($description, $amount, $metadata, $email, $orderIdentifier, $productImageUrl): Session
    {
        $client = new \Stripe\StripeClient(config('services.stripe.secret'));

        return $client->checkout->sessions->create([
            'success_url' => route('services.payments.session.completed', $orderIdentifier),
            'cancel_url' => route('services.payments.session.canceled', $orderIdentifier),
            'mode' => 'payment',
            'line_items' => [
                [
                    'price_data' => [
                        'currency' => 'usd',
                        'product_data' => [
                            'name' => $description,
                            'images' => [$productImageUrl]
                        ],
                        'unit_amount' => round($amount * 100),
                    ],
                    'quantity' => 1,
                ]
            ],
            'customer_email' => $email,
            'payment_method_types' => [],
            'metadata' => $metadata
        ]);
    }

    public function isSessionPaid($sessionId): bool
    {
        $client = new \Stripe\StripeClient(config('services.stripe.secret'));

        $session = $client->checkout->sessions->retrieve($sessionId);

        return $session->payment_status == Session::PAYMENT_STATUS_PAID;
    }
}
Leave a Comment