Stripe에 0.00 양을 표시합니다.
P粉237125700
P粉237125700 2023-07-31 14:36:38
0
1
599
<p>저는 사용자가 한 번의 결제로 다양한 유료 요금제를 구독하는 Stripe를 사용하고 있습니다. 결제는 성공적으로 이루어졌는데, 가장 큰 문제는 3D Secure 결제 과정(유럽에서 운영하고 있으며 3D Secure 결제 확인은 필수) 중에 사용자에게 표시되는 금액이 0,00이라는 것입니다. 이는 잘못된 것일 뿐만 아니라, 더 중요한 것은 결제하려는 사람이 혼란스러워진다는 것입니다.</p> <pre class="brush:php;toolbar:false;">공개 기능 구매(요청 $request, 계획 $plan) { $user = $request->user(); $결제방법 = $request->input('결제_방법'); $encryptedSystemId = $request->input('system_id'); $encryptedBoxId = $request->input('box_id'); // 암호화된 ID를 복호화합니다. $systemId = 암호화::decrypt($encryptedSystemId); $boxId = 암호화::decrypt($encryptedBoxId); // ID와 사용자 인증을 확인합니다. $system = 시스템::findOrFail($systemId); $box = Box::findOrFail($boxId); $total = $계획->가격; 노력하다 { $user->createOrGetStripeCustomer(); $user->updateDefaultPaymentMethod($결제 방법); $user->charge($total * 100, $지불 방법, [ '메타데이터' => ['시스템_ID' => $시스템ID, '박스_ID' => $상자ID, 'tenant_id'=> $user->테넌트->id, ] ]); // * Stripe은 센트를 다루기 때문에 100입니다. } 잡기(예외 $예외) { return back()->with('error', '결제 처리 중 오류 발생: ' . $Exception->getMessage()); } <script src="https://js.stripe.com/v3/"></script> <스크립트> let 스트라이프 = 스트라이프("{{ env('STRIPE_KEY') }}") 요소 = 스트라이프.요소() 스타일 = { 기본: { 색상: '#32325d', 글꼴 패밀리: '"Helvetica Neue", Helvetica, sans-serif', 글꼴 스무딩: '안티앨리어싱됨', 글꼴 크기: '16px', '::자리 표시자': { 색상: '#aab7c4' } }, 유효하지 않은: { 색상: '#fa755a', 아이콘색상: '#fa755a' } } 카드 = elements.create('카드', { 스타일: 스타일 }) 카드.마운트('#카드-요소') 결제 방법 = null로 설정 $('.card-form').on('제출', function(e) { $('#pay-btn').attr('비활성화', true) if (결제 방법) { true를 반환 } 스트라이프.확인카드 설정( "{{ $intent->client_secret }}", { 결제 방법: { 카드: 카드, 결제 세부 정보: { 이름: $('.card_holder_name').val() } } } ).then(함수(결과) { if (결과.오류) { toastr.error( '__("대여.입력한 데이터에 오류가 있습니다! 검토 그것을 다시 시도하세요")') $('#pay-btn').removeAttr('비활성화됨') }또 다른 { 지불 방식 = result.setupIntent.지불_방법 $('.지불 방법').val(지불 방법) $('.card-form').제출() $('span.icon').removeAttr('숨김'); $('#pay-btn').attr('비활성화', true) } }) 거짓을 반환하다 }) <div class="tab-content mt-4 " id="card-tab" style="display:none"> <form method="POST" action="{{ 경로('rentals.purchase', $plan) }}" class="card-form mt-3 mb-3"> @csrf <input type="hidden" name="결제_방법" 클래스="결제 방법"> <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-3 rounded-lg w-full" name="card_holder_name" placeholder="{{ __('rental.Cardholder" 이름') }}"> </div> <div> <div id="card-element"></div> </div> <div id="card-errors" role="alert"></div> <div class="mt-3 text-center"> <button type="submit" class="bg-red-500 text-whitefont-bold py-2 px-4 rounded" id="pay-btn">{{ __('rental.Pay') } } {{ $plan->price }} &euro; <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 "amount_details" => 배열:1 [▼ "팁" => [] ] "수취금액" => 100</pre> <p><br /></p>
P粉237125700
P粉237125700

모든 응답(1)
P粉403549616

제공한 코드에 따라 SetupIntents를 사용하여 결제 방법 세부정보를 수집하고 있습니다. SetupIntents는 나중에 사용할 결제 방법 세부 정보를 수집하는 데 사용됩니다(https://stripe.com/docs/paids/save-and-reuse). 결제 방법을 수집할 때 카드에 금액이 청구되지 않으므로 3DS가 필요한 경우 금액은 0.00이 될 것으로 예상합니다.

구독 기능을 사용하시는 경우, https://stripe.com/docs/billing/subscriptions/build-subscriptions?ui=elements 가이드에 따라 결제 시 결제 수단을 수집하고 저장하셔야 합니다.

일시성 결제를 사용하는 경우, 결제와 동시에 결제 수단 정보를 수집하고 저장할 수 있습니다: https://stripe.com/docs/paids/save-during-pay.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿