1

顧客が自分の情報 (名前、住所など) を入力し、paypal 経由でクレジット カードを使用して支払いできるようにするサイトをセットアップしました。それはうまくいきます。Paypal の即時支払い通知を設定し、顧客が自分のページにリダイレクトされるように Paypal を介して設定しました。データが渡されず、SQL データベースに保存されないことを除いて、すべて正常に動作します。データベースにデータを挿入するコードが正しく機能することはわかっています。問題は、PayPal ページが間にあるため、データがそのページに渡されないことです。

ここに私が持っているphpがあります

if (isset($_POST['child_name'])
    && isset($_POST['age'])
    && isset($_POST['hometown'])
    && isset($_POST['boy_girl'])
    && isset($_POST['email'])
    && isset($_POST['first_name'])
    && isset($_POST['last_name'])
    && isset($_POST['address1'])
    && isset($_POST['address2'])
    && isset($_POST['city'])
    && isset($_POST['state'])
    && isset($_POST['zip'])
    && isset($_POST['country']))  {
        $child_name = $_POST['child_name'];
        $age = $_POST['age'];
        $hometown = $_POST['hometown'];
        $boy_girl = $_POST['boy_girl'];
        $email = $_POST['email'];
        $first_name = $_POST['first_name'];
        $last_name = $_POST['last_name'];
        $address1 = $_POST['address1'];
        $address2 = $_POST['address2'];
        $city = $_POST['city'];
        $state = $_POST['state'];
        $zip = $_POST['zip'];
        $country = $_POST['country'];
}

そして、ここにHTMLがあります

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="NT2YC6LP7SWBE">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<input type="hidden" name="child_name" id="child_name" value ="<? echo $child_name; ?>" maxlength="20"/>
<input type="hidden" name="age" id="age" value ="<? echo $age; ?>" maxlength="4"/>
<input type="hidden" name="hometown" id="hometown" value ="<? echo $hometown; ?>" maxlength="32"/>
<input type="hidden" name="boy_girl" id="boy_girl" value ="<? echo $boy_girl; ?>" maxlength="4"/>
<input type="hidden" name="first_name" id="first_name" value ="<? echo $first_name; ?>" maxlength="32"/>
<input type="hidden" name="last_name" id="last_name" value ="<? echo $last_name; ?>" maxlength="32"/>
<input type="hidden" name="email" id="email" value ="<? echo $email; ?>" maxlength="64"/>
<input type="hidden" name="address1" id="address1" value ="<? echo $address1; ?>" maxlength="64"/>
<input type="hidden" name="address2" id="address2" value ="<? echo $address2; ?>" maxlength="32"/>
<input type="hidden" name="city" id="city" value ="<? echo $city; ?>" maxlength="32"/>
<input type="hidden" name="state" id="state" value ="<? echo $state; ?>" maxlength="20"/>
<input type="hidden" name="zip" id="zip" value ="<? echo $zip; ?>" maxlength="10"/>
<input type="hidden" name="country" id="country" value ="<? echo $country; ?>" maxlength="32"/>
<input type="hidden" name="payment_type" id="payment_type" value ="paypal" maxlength="6"/>
<input type="hidden" name="paid" id="paid" value ="yes" maxlength="3"/>
<input type="hidden" name="mailed" id="mailed" value ="no" maxlength="3"/>
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

Paypal から提供されたフォームを使用して、非表示の入力を追加しました。これは別のページで完全に機能しますが、それはアクション属性がデータを挿入するページに直接つながるためです。ここで、アクションはそれらをペイパルのサイトに送信し、データは決して私のものにはなりません。これを調整するにはどうすればよいですか?

4

2 に答える 2

1

流れだから仕方ない。2 つのソリューション:

  • 区切り文字を使用して、Paypal のcustomフィールド (255 文字)にすべての情報を保存してみてください

  • 一意のキーを使用してカスタム情報を DB に保存し、一意のキーをcustomフィールドに保存して、後で IPN 応答で取得できるようにします。

IPN 応答を取得するまでは、DB 関連の操作を行ってはなりません。これが IPN のポイントです。ここで説明しているのは、常に発生するとは限らない支払いプロセスの後に顧客がページに戻ることに依存する PDT です。

于 2012-10-25T21:05:48.230 に答える
0

kalpaitch が提案したように、データをセッションに保存し、訪問者がペイパル ページから戻ったときにデータを引き戻す必要があります。

于 2012-10-25T21:05:07.583 に答える