1

商品に対して選択されたさまざまなオプションの価格を合計するHTMLフォームを作成してから、PayPalの[今すぐ購入]機能にPOSTしようとしています。

PayPalの今すぐ購入フォームの例を次に示します。投稿する前に、各バリエーションを最終的な量まで追加できるようにする機能を追加しようとしています。PayPalがこれを最初から許可しない理由は私を超えています。しかし、暴言を吐く時間はありません。

これは、価格設定付きの「今すぐ購入」フォームのペイパルの例です。問題は、最終価格しか選択できないことです。マトリックススタイルの価格設定はできません。

例:アイテム価格:$ 50

バリエーション1:
---オプションA:+ $ 25
---オプションB:+ $ 50

バリエーション2:
---オプションA:+ $ 10
---オプションB:+ $ 15

したがって、1Aと2Bを選択した場合、フォームは$ 50 + $ 25 + $ 15 =$90を投稿します

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 

<!-- Identify your business so that you can collect the payments. --> 
<input type="hidden" name="business" value="herschelgomez@xyzzyu.com"> 

<!-- Specify a Buy Now button. --> 
<input type="hidden" name="cmd" value="_xclick"> 

<!-- Specify details about the item that buyers will purchase. --> 
<input type="hidden" name="item_name" value="Hot Sauce"> 
<input type="hidden" name="currency_code" value="USD"> 

<!-- Provide a dropdown menu option field. --> 
<input type="hidden" name="on0" value="Type">Type of sauce <br /> 
    <select name="os0">  
        <option value="Select a type">-- Select a type --</option> 
        <option value="Red">Red sauce</option> 
        <option value="Green">Green sauce</option> 
    </select> <br /> 

<!-- Provide a dropdown menu option field with prices. --> 
<input type="hidden" name="on1" value="Size">Size <br /> 
    <select name="os1"> 
        <option value="06oz">6 oz. bottle - $5.95 USD</option> 
        <option value="12oz">12 oz. bottle - $9.95 USD</option> 
         <option value="36oz">3 12 oz. bottles - $19.95 USD</option> 
    </select> <br /> 

<!-- Specify the price that PayPal uses for each option. -->  
<input type="hidden" name="option_index" value="1"> 
<input type="hidden" name="option_select0" value="06oz"> 
<input type="hidden" name="option_amount0" value="5.95"> 
<input type="hidden" name="option_select1" value="12oz"> 
<input type="hidden" name="option_amount1" value="9.95"> 
<input type="hidden" name="option_select2" value="36oz"> 
<input type="hidden" name="option_amount2" value="19.95"> 

<!-- Display the payment button. --> 
<input type="image" name="submit" border="0" 
    src="https://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif" 
    alt="PayPal - The safer, easier way to pay online"> 
<img alt="" border="0" width="1" height="1" 
    src="https://www.paypal.com/en_US/i/scr/pixel.gif" > 
</form>
4

2 に答える 2

1

ページの先頭またはフォームの前に次のスクリプトを追加します。

<script>
            selects = array(0,0);
            function recordSelect(i){
                ++selects[i];
    if (selects[i] > 1) selects[i] = 1;
                if (selects[0] == 1 && selects[1] == 1 ) document.getElementById('#YourformId').submit();
            }
        </script>

このソリューションは、フォームにid属性値を設定していることを前提としています。次に、フォーム内のすべての選択で、次のようにrecordSelect()を使用してonChangeイベントを追加します。

<select name="os0" onchange="recordSelect(0)">  
    <option value="Select a type">-- Select a type --</option> 
    <option value="Red">Red sauce</option> 
    <option value="Green">Green sauce</option> 
</select> 

<select name="os1" onchange="recordSelect(1)">  
        <option value="Select a type">-- Select a type --</option> 
        <option value="another">something</option> 
        <option value="another2">item</option> 
    </select> 

recordSelectの渡された引数に注意してください

于 2012-07-29T21:17:45.233 に答える
0

ウェブページでの価格の計算は完全に安全ではないので、あなたの質問が理論的であることを願っています。wgetコマンドを知っている人なら誰でも、商品を任意の価格で、さらには無料で注文する投稿を偽装することができます。

これがはるかに良い方法です。

  1. ショッピングカートをサーバーに置いておきます。カートをWebページに表示するときはいつでも、カートを識別し、ユーザーが1回投稿できるようにする1回限りのチケットを発行します。チケットからすべての規則性を必ず削除してください。タイムスタンプやシリアル番号などは表示されません。結果に添付する前に、チケットを暗号化またはハッシュするのがおそらく最善です。また、チケットが限られた時間(たとえば、5分)有効であることを確認してください。これにより、盗まれたチケットの保存期間が短くなります。

  2. サーバー上ですべての価格計算を実行して、ユーザーがサーバーをだまして不正な割引を提供しないようにします。

この手法やその他の手法は、RepresentationalStateTransferまたはReSTと呼ばれます。ここに素晴らしい説明があります:http://en.wikipedia.org/wiki/REST

ベンチャーの成功をお祈りします。

于 2012-07-29T21:52:26.987 に答える