Fix: Fixing Stripe Payment Driver, Applying Payment Mehtod (COD) fee correctly

This commit is contained in:
2026-09-10 00:14:42 +03:00
parent 3e45b84636
commit 13d5833d18
7 changed files with 131 additions and 67 deletions
+14 -10
View File
@@ -95,17 +95,21 @@ class StripePaymentDriver implements
private function createAndConfirm(string $type, Price $amount, array $data, array $context, string $captureMethod): PaymentResult
{
$params = [
'amount' => StripeManager::toStripeAmount($amount->value, $amount->currency),
'currency' => $amount->currency->code,
'capture_method' => $captureMethod,
'confirm' => true,
];
if (isset($data['payment_method'])) {
$params['payment_method'] = $data['payment_method'];
} else {
$params['automatic_payment_methods'] = ['enabled' => true];
}
try {
$paymentIntent = Stripe::getClient()->paymentIntents->create([
'amount' => StripeManager::toStripeAmount($amount->value, $amount->currency),
'currency' => $amount->currency->code,
'capture_method' => $captureMethod,
'confirm' => true,
'payment_method' => $data['payment_method'] ?? null,
'automatic_payment_methods' => isset($data['payment_method'])
? null
: ['enabled' => true],
]);
$paymentIntent = Stripe::getClient()->paymentIntents->create($params);
} catch (ApiErrorException $e) {
return $this->declined($type, $amount, $e, $context, authorizing: $captureMethod === 'manual');
}