Stripe に 0.00 の金額を表示します。
<p>私は、ユーザーが 1 回の支払いでさまざまな有料プランに加入できる Stripe を使用しています。支払いは正常に行われますが、主な問題は、3D セキュア支払いプロセス中 (当社はヨーロッパで事業を行っており、3D セキュア支払いチェックは必須です)、ユーザーに表示される金額が 0,00 であることです。これは間違っているだけでなく、さらに重要なのは、支払いをしようとしている人を混乱させることです。</p>
<pre class="brush:php;toolbar:false;">パブリック関数の購入(リクエスト $request, プラン $plan)
{
$user = $request->user();
$paymentMethod = $request->input('payment_method');
$encryptedSystemId = $request->input('system_id');
$encryptedBoxId = $request->input('box_id');
// 暗号化された ID を復号化します
$systemId = Crypt::decrypt($encryptedSystemId);
$boxId = Crypt::decrypt($encryptedBoxId);
// ID とユーザー権限を検証します
$system = システム::findOrFail($systemId);
$box = Box::findOrFail($boxId);
$total = $plan->price;
試す {
$user->createOrGetStripeCustomer();
$user->updateDefaultPaymentMethod($paymentMethod);
$user->charge($total * 100, $paymentMethod, [
'メタデータ' =>
['システムID' => $システムID、
'box_id' => $boxId、
'テナント ID '=> $ユーザー->テナント->ID、
]
]); // * Stripe はセントを扱うため 100
} catch (例外 $例外) {
return back()->with('error', '支払い処理エラー: ' . $Exception->getMessage());
}
<スクリプト src="https://js.ストライプ.com/v3/"></script>
<スクリプト>
let Stripe = Stripe("{{ env('STRIPE_KEY') }}")
let 要素 = ストライプ.elements()
スタイル = { にします
ベース: {
色: '#32325d'、
fontFamily: '"Helvetica Neue"、Helvetica、サンセリフ',
fontSmoothing: 'アンチエイリアス',
フォントサイズ: '16px',
'::プレースホルダー': {
色: '#aab7c4'
}
}、
無効: {
色: '#fa755a'、
アイコンの色: '#fa755a'
}
}
let カード = elements.create('カード', {
スタイル: スタイル
})
Card.mount('#カード要素')
PaymentMethod = null にします
$('.card-form').on('submit', function(e) {
$('#pay-btn').attr('無効', true)
if (支払い方法) {
trueを返す
}
ストライプ.confirmCardSetup(
"{{ $intent->client_secret }}", {
支払方法: {
カード: カード、
支払明細: {
名前: $('.card_holder_name').val()
}
}
}
).then(関数(結果) {
if (結果.エラー) {
トースター.エラー(
'__("レンタル。入力したデータにエラーが含まれています。レビュー
それを試して、もう一度試してください")')
$('#pay-btn').removeAttr('無効')
}それ以外 {
PaymentMethod = result.setupIntent.payment_method
$('.支払い方法').val(支払い方法)
$('.card-form').submit()
$('span.icon').removeAttr('hidden');
$('#pay-btn').attr('無効', true)
}
})
falseを返す
})
<div class="tab-content mt-4 " id="card-tab" style="display:none">
<フォームメソッド="POST" アクション="{{ ルート('レンタル.購入', $プラン) }}"
class="カードフォーム mt-3 mb-3">
@csrf
<input type="hidden" name="支払い方法" class="支払い方法">
<input type="hidden" name="system_id" value="{{ encrypt($system->id) }}">
<input type="hidden" name="box_id" value="{{ encrypt($box->id) }}">
<div class="mb-4">
<input class="StripeElement form-input px-4 py-3rounded-lg w-full"
name="カード所有者名" プレースホルダー="{{ __('レンタル.カード所有者
名前') }}">
</div>
<div>
<div id="カード要素"></div>
</div>
<div id="card-errors" role="alert"></div>
<div class="mt-3 text-center">
<button type="submit" class="bg-red-500 text-white font-bold py-2 px-4rounded" id="pay-btn">{{ __('rental.Pay') } } {{ $plan->価格 }} &ユーロ; <span class="icon" hidden><i class="fas fa-sync fa-spin"></i></span></button>
</div>
</フォーム>
</div>
そしてこれは私がデバッグするとき
#_originalValues: 配列:39 [▼
"id" => 「pi_3NZqdIC6ZwDjQHNX1R7KJLoO」
「オブジェクト」=> 「支払いの意図」
「金額」=> 100
"amount_capturable" => 0
"金額の詳細" =>配列:1 [▼
「ヒント」=> []
]
"受け取った金額" => 100</pre>
<p><br /></p>