2017-12-12 30 views
0

私はストライプ「チェックアウト」を使用して支払いを受け取ります。私はこれを他のサイトでもうまく使いましたが、この特定のユースケースは私の通常のフローとは少し異なり、問題を引き起こしています。私の顧客は、預金または全額支払いを選択することがあります。私は、この場合、2つのボタンを提示する。ストライプ支払い、チェックアウトから支払い額を受け取ることができません

<form name="myform" action="paymentpage.php"> 
... other form stuff 
    <!-- Deposit payment button Stripe --> 
    <script 
     src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
     data-key="abcd" 
     data-amount="10000" 
     data-name="My company name" 
     data-description="Deposit payment" 
     data-image="https://stripe.com/img/documentation/checkout/marketplace.png" 
     data-locale="auto" 
     data-zip-code="true" 
     data-currency="eur" 
     data-label="Pay Deposit"> 
    </script> 
    <!-- Full payment button Stripe --> 
    <script 
     src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
     data-key="avcd" 
     data-amount="{{ $stripeCostValue }}" 
     data-name="My company name" 
     data-description="Full payment" 
     data-image="https://stripe.com/img/documentation/checkout/marketplace.png" 
     data-locale="auto" 
     data-zip-code="true" 
     data-currency="eur" 
     data-label="Pay in full"> 
    </script> 

お客様がビットを済ませた後に請求するには、cURLを使用します。

curl https://api.stripe.com/v1/charges \ 
    -u sk_liveabcd1234: \ 
    -d amount=1000 \ 
    -d currency=eur \ 
    -d description="Deposit payment" \ 
    -d source=tok_89797oioououo 

ポストされたデータを受信Laravelコントローラがデフォルトで含まれ、次のストライプのフィールドがあります。

"stripeToken" => "tok_89797oioououo" 
"stripeTokenType" => "card" 
"stripeEmail" => "[email protected]" 

をしかし、私は、彼らは預金、全額支払い、または、彼らが支払った金額を支払ったかどうかはわかりません。彼らが押されたボタンを知っているか、ストライプの支払いからさらに多くのデータを得る方法があるのでしょうか?私はそれを理解することはできません。顧客がプッシュする支払いボタンがわからないため、金額や支払いタイプを隠しフィールドとして含めることはできません。

ありがとうございます。

答えて

1

問題は、両方のボタンを同じフォームに置くことです。このため、あなたはクリックされたものが分かりません。

最も簡単な解決策は、2つの別個のボタンとフォームを単純に設けることです。こうすることで、各フォームで、フォームと一緒に送信された値がクリックされたときにどのボタンがクリックされたかを知ることができる隠しフィールドを置くことができます。

もう1つの解決策は、Custom Checkoutを使用することです。これにより、フォームに2つのボタンが別々に表示され、JSでは、クリック時にCheckoutを開くハンドラを追加します。これにより、クリックされたボタンを簡単に追跡し、トークンが作成された後にこの情報をサーバーに送信することもできます。

+0

"最も簡単な解決策は、単に2つのボタンとフォームを別々にすることです。"私はそれがむしろハック・アイと思われ、それほどエレガントではないようにする必要がないことを望んでいました。だから、Stripeは非公開のトランザクションデータをトークン、トークンタイプ、電子メールアドレスとともに送信することはできないようです。私はなぜそれが私がそれを扱わなければならないのか分からないが、私はそれのために他に何もないと思う。 koopajahに答える時間をとっていただきありがとうございます。 – Wittner

+0

@Wittnerのデータプロパティー – Wittner

+0

にアクセスすることはいいですが、私たちはこれをサポートしています。あなたのフォームに入力フィールドを置くことができ、それはトークンと一緒に提出され、それだけで動作します。ここでの問題は、1つのフォームに2つのボタンがあるため、どのボタンがクリックされたかを知る方法がないことです。私の答えはあなたに利用可能な2つのオプションを詳細にカバーしています。 – koopajah

関連する問題