FleetCart/Modules/Payment/Gateways/Razorpay.php
2023-06-11 13:14:03 +01:00

56 lines
1.5 KiB
PHP

<?php
namespace Modules\Payment\Gateways;
use Razorpay\Api\Api;
use Illuminate\Http\Request;
use Modules\Order\Entities\Order;
use Modules\Payment\GatewayInterface;
use Razorpay\Api\Order as RazorpayOrder;
use Modules\Payment\Responses\RazorpayResponse;
class Razorpay implements GatewayInterface
{
public $label;
public $description;
public function __construct()
{
$this->label = setting('razorpay_label');
$this->description = setting('razorpay_description');
}
public function client()
{
return new Api(setting('razorpay_key_id'), setting('razorpay_key_secret'));
}
public function purchase(Order $order, Request $request)
{
$razorpayOrder = $this->client()->order->create([
'receipt' => $order->id,
'amount' => $order->total->convertToCurrentCurrency()->subunit(),
'currency' => currency(),
'payment_capture' => true,
]);
return new RazorpayResponse($razorpayOrder);
}
public function complete(Order $order)
{
$attributes = [
'razorpay_payment_id' => request('razorpay_payment_id'),
'razorpay_order_id' => request('razorpay_order_id'),
'razorpay_signature' => request('razorpay_signature'),
];
$this->client()->utility->verifyPaymentSignature($attributes);
$razorpayOrder = new RazorpayOrder;
$razorpayOrder->fill($attributes);
return new RazorpayResponse($razorpayOrder);
}
}