Ive been trying to return the transaction fee from stripe using thephpleague/omnipay-stripe
.
Im not looking to return or set an application fee, but the actual fee that Stripe take off the for each transaction.
Heres my code so far:
if ($request->input('stripeToken')) {
$gateway = Omnipay::create('Stripe\PaymentIntents');
$gateway->initialize([
'apiKey' => env('STRIPE_SECRET'),
]);
$token = $request->input('stripeToken');
$paymentMethodId = $request->get('paymentMethodId');
$response = $gateway->purchase([
'amount' => session('cost'),
'currency' => env('STRIPE_CURRENCY'),
'description' => session('payment_title'),
'paymentMethod' => $paymentMethodId,
'token' => $token,
'name' => \Auth::user()->name,
'returnUrl' => route('customer.charge.stripe.return_url'),
'confirm' => true,
])->send();
if ($response->isSuccessful()) {
$arr_payment_data = $response->getData();
$data = [
'type' => session('payment_type'),
'cost' => session('cost'),
'duration' => session('duration'),
'description' => session('payment_title'),
'transaction_id' => $arr_payment_data['id'],
'status' => $arr_payment_data['status'],
'fee' => // Whatever I need to call to get fee,
'payment_details' => $arr_payment_data
];
Payments::add_payment_to_db($data);
$request->session()->forget(['cost', 'payment_title', 'duration']);
return redirect()->route('customer.dashboard')->with([
'status' => __('customer.payments.success'),
'alert' => 'success',
]);
} elseif($response->isRedirect()) {
$response->redirect();
} else {
// payment failed: display message to customer
return redirect()->back()->with([
'status' => $response->getMessage(),
'alert' => 'danger',
]);
}
I've tried a few things but im not sure how to get the fee correctly.
Any help or ideas on how to get the fee would be grateful.
Many thanks