0

私のプロジェクトでは、PayPal サンドボックスを統合しています。標準的な方法で次のコードを使用しました。しかし、PayPalからの通知コール(notify-url)を受信できませんでした。どうしたの?

<form id="form1" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" style="display:none;"  accept-charset="utf-8">
  <input type="hidden" name="business" value="test2_biz@gmail.com" />
  <input type="hidden" name="cmd" value="_cart" />
  <input type="hidden" name="paymentaction" value="sale" />
  <input type="hidden" name="item_name_1" value="lap" />
  <input type="hidden" name="amount_1" value="1" />
  <input type="hidden" name="quantity_1" value="1" />
  <input type="hidden" name="first_name" value="1" /><!--customer first name -->
  <input type="hidden" name="last_name" value="1" /><!--customer last name -->
  <input type="hidden" name="address1" value="1" /><!--customer address 1 name -->
  <input type="hidden" name="address2" value="1" /><!--customer add2 name -->
  <input type="hidden" name="email" value="dfd@rr.ee" /><!--customer email name -->
  <input type="hidden" name="city" value="1" /><!--customer city name -->
  <input type="hidden" name="state" value="1" /><!--customer state name -->
  <input type="hidden" name="country" value="1" /><!--customer country name -->
  <input type="hidden" name="zip" value="1" /><!--customer zip name -->
  <input type="hidden" name="currency_code" value="USD" /><!--currrecy in which payment u need-->
  <input type="hidden" name="upload" value="1" /><!--paypal parameter-->
  <input type="hidden" name="return" value="HOST_NAME/default/index/order-return" />
  <input type="hidden" name="cancel_return" id="cancel_return" value="" />
  <input type="hidden" name="notify_url" id="notify_url" value="HOST_NAME/default/index/notify-url/order/222">
  <input type="submit" value="submit">
  </form>
4

1 に答える 1

0

コメントで書いたように、PayPal が URL への呼び出しを成功と見なすには、メッセージ検証を備えた適切な IPN リスナーが必要です。基本的なリスナーの大まかな例を次に示します。

    <?php

    function validateIpnMessage() {
        $ch = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, "cmd=_notify-validate&".http_build_query($_POST));
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));

        if( !curl_errno($ch)) {
            $res = curl_exec($ch);
            curl_close($ch);
            if ($res === "VERIFIED") {
                return TRUE;
            }
        }

        return FALSE;
    }


    if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST)) {
        if(validateIpnMessage()) {
            // THE MESSAGE IS VALIDATED

            // REST OF YOUR CODE GOES HERE
        }
    }
?>

プロファイルで IPN が有効になっていることを確認しましたか? とにかく、最初に IPN テスト ツール ( PayPal サンドボックスのアカウントの [テスト ツール] で利用可能) を使用して手動でテストし、リスナー URL が機能することを確認することをお勧めします。

于 2013-01-05T19:31:45.963 に答える