2016-12-01 30 views
0

私は2つのストライプサブスクリプション(基本と高度)の選択を処理するために1つのページに2つのフォームを持っており、私はJavaScriptを使用して、基本計画については1つのページに2つのフォーム - 入力タイプの転送

<form id="payment_form_basic" action="" method="POST"> 
<input type="hidden" name="subscription_purchase_non_trial" value="subscription_purchase_non_trial_basic" /> 
<button id="pricing__action_grey">Choose Plan</button> 
</form> 

<script src="https://checkout.stripe.com/checkout.js"></script> 

<script> 
// ****************************************** 
// ****** Basic Plan Form Processor ********* 
// ****************************************** 

var handler = StripeCheckout.configure({ 
key: '<?php echo $stripe['publishable_key']; ?>', 
image: 'https://example.com/example.png', 
locale: 'auto', 
allowRememberMe: 'false', 
token: function(token) { 
$('#payment_form_basic').append($('<input type="hidden" name="stripeToken" />').val(token.id)); 
$('#payment_form_basic').append($('<input type="hidden" name="stripeEmail" />').val(token.email)); 
$("#payment_form_basic").submit(); 
} 
}); 

document.getElementById('pricing__action_grey').addEventListener('click', function(e) { 
// Open Checkout with further options: 
handler.open({ 
name: 'Basic', 
description: 'example description', 
zipCode: true, 
amount: 10 
}); 
e.preventDefault(); 
}); 

// Close Checkout on page navigation: 
window.addEventListener('popstate', function() { 
handler.close(); 
}); 
</script> 

と高度な計画のための

<form id="payment_form_advanced" action="" method="POST"> 
<input type="hidden" name="subscription_purchase_non_trial" value="subscription_purchase_non_trial_advanced" /> 
<input type="hidden" name="subscription_type" value="advanced" /> 
<button id="pricing__action">Choose Plan</button> 
</form> 

<script> 
// ****************************************** 
// ****** Advanced Plan Form Processor ****** 
// ****************************************** 

var handler = StripeCheckout.configure({ 
key: '<?php echo $stripe['publishable_key']; ?>', 
image: 'https://example.com/example.png', 
locale: 'auto', 
allowRememberMe: 'false', 
token: function(token) { 
$('#payment_form_advanced').append($('<input type="hidden" name="stripeToken" />').val(token.id)); 
$('#payment_form_advanced').append($('<input type="hidden" name="stripeEmail" />').val(token.email)); 
//$('#payment_form_advanced').append($('<input type="hidden" name="subscription_type" value="advanced" />')); 
$("#payment_form_advanced").submit(); 

} 
}); 

document.getElementById('pricing__action').addEventListener('click', function(e) { 
// Open Checkout with further options: 
handler.open({ 
name: 'Advanced', 
description: 'example descript', 
zipCode: true, 
amount: 12 
}); 
e.preventDefault(); 
}); 

// Close Checkout on page navigation: 
window.addEventListener('popstate', function() { 
handler.close(); 
}); 
</script> 

私はスイッチなどの高度な形でSUBSCRIPTION_TYPEフィールドを使用しようとしているときに、ページの投稿基本的なプラン価格を処理するか、アドバンスドプランを処理するかを判断するために、それ自体に適用されますが、フォームは基本フォームが提出されるときに「アドバンス」サブスクリプションタイプを投稿しますが、受け取った投稿変数を印刷するとどうなるかはわかりません。誰がなぜこれが起こっているのか知っていますか?

+0

あなたのjsコードを表示 –

+0

はい、そうです。特にあなた自身で提出する場合。代わりに、各「サブスクリプション」の名前を変更します。たぶん "subscription_basic"と "subscription_advanced" –

+0

実際には、一方は他方を上書きしてはいけません。私はあなたのコードを実行し、それが必要なように動作します。私は$をgetElementByIdに置き換えますので、vanilla jsを使用してください。ただし、diffを作成するべきではありません。私はFirefoxを使用しています。 'vardump()' '$ _POST'を実行して投稿を投稿して更新してください。 – mseifert

答えて

0

私は、(各シナリオで)オンクリック機能ですべてのスクリプトをラップする必要があるようです。詳細設定ではストライプの基本設定を上書きしませんでした。うまくいけば、これは堅牢なアプローチです。

関連する問題