Working on bank transfers for stripe

This commit is contained in:
David Bomba 2023-02-27 10:35:55 +11:00
parent 5a61eeb02d
commit d51221c10e
5 changed files with 165 additions and 31 deletions

View File

@ -126,17 +126,13 @@ class BankTransfer
/* Create a pending payment */ /* Create a pending payment */
if($pi->status == 'requires_action' && $pi->next_action->type == 'display_bank_transfer_instructions') { if($pi->status == 'requires_action' && $pi->next_action->type == 'display_bank_transfer_instructions') {
nlog($pi);
$data = [ match($pi->next_action->display_bank_transfer_instructions->currency){
'amount' => Number::formatMoney($this->stripe->convertFromStripeAmount($pi->next_action->display_bank_transfer_instructions->amount_remaining, $this->stripe->client->currency()->precision, $this->stripe->client->currency()), $this->stripe->client), 'mxn' => $data = $this->formatDataforMx($pi),
'account_holder_name' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->sort_code->account_holder_name, 'gbp' => $data = $this->formatDataforUk($pi),
'account_number' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->sort_code->account_number, 'eur' => $data = $this->formatDataforEur($pi),
'sort_code' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->sort_code->sort_code, 'jpy' => $data = $this->formatDataforJp($pi),
'reference' => $pi->next_action->display_bank_transfer_instructions->reference, };
'description' => $pi->description,
'gateway' => $this->stripe->company_gateway,
];
return render('gateways.stripe.bank_transfer.bank_details', $data); return render('gateways.stripe.bank_transfer.bank_details', $data);
@ -170,6 +166,86 @@ class BankTransfer
} }
private function formatDataForUk(PaymentIntent $pi): array
{
return [
'amount' => Number::formatMoney($this->stripe->convertFromStripeAmount($pi->next_action->display_bank_transfer_instructions->amount_remaining, $this->stripe->client->currency()->precision, $this->stripe->client->currency()), $this->stripe->client),
'account_holder_name' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->sort_code->account_holder_name,
'account_number' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->sort_code->account_number,
'sort_code' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->sort_code->sort_code,
'reference' => $pi->next_action->display_bank_transfer_instructions->reference,
'description' => $pi->description,
'gateway' => $this->stripe->company_gateway,
'currency' => $pi->next_action->display_bank_transfer_instructions->currency,
];
}
private function formatDataforMx(PaymentIntent $pi): array
{
return [
'amount' => Number::formatMoney($this->stripe->convertFromStripeAmount($pi->next_action->display_bank_transfer_instructions->amount_remaining, $this->stripe->client->currency()->precision, $this->stripe->client->currency()), $this->stripe->client),
'account_holder_name' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->spei->bank_name,
'account_number' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->spei->bank_code,
'sort_code' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->spei->clabe,
'reference' => $pi->next_action->display_bank_transfer_instructions->reference,
'description' => $pi->description,
'gateway' => $this->stripe->company_gateway,
'currency' => $pi->next_action->display_bank_transfer_instructions->currency,
];
}
private function formatDataforEur(PaymentIntent $pi): array
{
return [
'amount' => Number::formatMoney($this->stripe->convertFromStripeAmount($pi->next_action->display_bank_transfer_instructions->amount_remaining, $this->stripe->client->currency()->precision, $this->stripe->client->currency()), $this->stripe->client),
'account_holder_name' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->sort_code->account_holder_name,
'account_number' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->sort_code->account_number,
'sort_code' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->sort_code->sort_code,
'reference' => $pi->next_action->display_bank_transfer_instructions->reference,
'description' => $pi->description,
'gateway' => $this->stripe->company_gateway,
];
}
/**
*
* @param PaymentIntent $pi
* @return array
*/
private function formatDataforJp(PaymentIntent $pi): array
{
return [
'amount' => Number::formatMoney($this->stripe->convertFromStripeAmount($pi->next_action->display_bank_transfer_instructions->amount_remaining, $this->stripe->client->currency()->precision, $this->stripe->client->currency()), $this->stripe->client),
'account_holder_name' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->zengin->account_holder_name,
'account_number' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->zengin->account_number,
'account_type' =>$pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->zengin->account_type,
'bank_code' =>$pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->zengin->bank_code,
'bank_name' =>$pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->zengin->bank_name,
'branch_code' =>$pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->zengin->branch_code,
'branch_name' =>$pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->zengin->branch_name,
'sort_code' => $pi->next_action->display_bank_transfer_instructions->financial_addresses[0]->zengin->sort_code,
'reference' => $pi->next_action->display_bank_transfer_instructions->reference,
'description' => $pi->description,
'gateway' => $this->stripe->company_gateway,
];
}
public function processSuccesfulRedirect($payment_intent) public function processSuccesfulRedirect($payment_intent)
{ {
$this->stripe->init(); $this->stripe->init();

View File

@ -5002,6 +5002,7 @@ $LANG = array(
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client', 'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
'click_to_variables' => 'Client here to see all variables.', 'click_to_variables' => 'Client here to see all variables.',
'ship_to' => 'Ship to', 'ship_to' => 'Ship to',
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.'
); );

View File

@ -2,14 +2,15 @@
@section('gateway_content') @section('gateway_content')
<div class="container mx-auto"> <div class="container mx-auto">
<div class="px-4 py-5 bg-white sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
<div class="px-4 py-5 bg-white sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"> @if($currency == 'gbp')
<dt class="text-sm font-medium leading-5 text-gray-500"> <dt class="text-sm font-medium leading-5 text-gray-500">
{{ ctrans('texts.account_name') }} {{ ctrans('texts.sort') }}
</dt> </dt>
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2"> <dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
{{ $account_holder_name }} {{ $sort_code }}
</dd> </dd>
<dt class="text-sm font-medium leading-5 text-gray-500"> <dt class="text-sm font-medium leading-5 text-gray-500">
@ -20,12 +21,13 @@
</dd> </dd>
<dt class="text-sm font-medium leading-5 text-gray-500"> <dt class="text-sm font-medium leading-5 text-gray-500">
{{ ctrans('texts.sort') }} {{ ctrans('texts.account_name') }}
</dt> </dt>
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2"> <dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
{{ $sort_code }} {{ $account_holder_name }}
</dd> </dd>
<dt class="text-sm font-medium leading-5 text-gray-500"> <dt class="text-sm font-medium leading-5 text-gray-500">
{{ ctrans('texts.reference') }} {{ ctrans('texts.reference') }}
</dt> </dt>
@ -41,6 +43,59 @@
{{ $amount }} {{ $amount }}
</dd> </dd>
<dt class="text-sm font-medium leading-5 text-gray-500">
</dt>
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
{{ ctrans('texts.stripe_direct_debit_details') }}
</dd>
@elseif($currency == 'mxn')
<dt class="text-sm font-medium leading-5 text-gray-500">
Clabe
</dt>
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
{{ $sort_code }}
</dd>
<dt class="text-sm font-medium leading-5 text-gray-500">
{{ ctrans('texts.account_number') }}
</dt>
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
{{ $account_number }}
</dd>
<dt class="text-sm font-medium leading-5 text-gray-500">
{{ ctrans('texts.account_name') }}
</dt>
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
{{ $account_holder_name }}
</dd>
<dt class="text-sm font-medium leading-5 text-gray-500">
{{ ctrans('texts.reference') }}
</dt>
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
{{ $reference }}
</dd>
<dt class="text-sm font-medium leading-5 text-gray-500">
{{ ctrans('texts.balance_due') }}
</dt>
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
{{ $amount }}
</dd>
<dt class="text-sm font-medium leading-5 text-gray-500">
</dt>
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
{{ ctrans('texts.stripe_direct_debit_details') }}
</dd>
@endif
</div> </div>
</div> </div>
@endsection @endsection

View File

@ -17,7 +17,7 @@
<form action="{{ route('client.payments.response') }}" method="post" id="payment-form"> <form action="{{ route('client.payments.response') }}" method="post" id="payment-form">
@csrf @csrf
<div id="payment-element"> <div id="payment-element" style="padding:40px;">
<!-- Elements will create form elements here --> <!-- Elements will create form elements here -->
</div> </div>
@ -46,16 +46,19 @@
<script> <script>
const options = { const options = {
clientSecret: '{{ $client_secret }}', clientSecret: '{{ $client_secret }}',
style: { appearance : {
base: { theme: 'stripe',
padding: '10px 12px', variables: {
color: '#32325d', colorPrimary: '#0570de',
fontSize: '16px', colorBackground: '#ffffff',
'::placeholder': { colorText: '#30313d',
color: '#aab7c4' colorDanger: '#df1b41',
}, fontFamily: 'Ideal Sans, system-ui, sans-serif',
}, spacingUnit: '2px',
}, borderRadius: '4px',
// See all possible variables below
}
}
}; };

View File

@ -8,7 +8,6 @@
$token_billing_string = 'false'; $token_billing_string = 'false';
} }
@endphp @endphp
@section('gateway_head') @section('gateway_head')