3

ここで見つけたペイパル IPN スクリプトを使用しています http://coderzone.org/library/PHP-PayPal-Instant-Payment-Notification-IPN_1099.htm

私はペイパルに情報を送信し、応答を得ることができることを認識しています. $_POST を使用して情報を取得できると記載されています。私の質問は、英国の通貨を指定するにはどうすればよいですか?

また、マイナーな点を明確にしたかった。これが成功したことを確認できる方法であると私は正しいですか。

    if ($_POST['payment_status'] == 'completed')
        // Received Payment!
        // $_POST['custom'] is order id and has been paid for.
    }
4

3 に答える 3

0

申し訳ありませんが、これは少し遅れるかもしれませんが、念のため - 私は現在 "currencyCode" = > "AUD" を使用しており、サンドボックスで動作しています。

PayPalで利用できる通貨コードの完全なリストがあります。

あなたの場合、次のようになると思います。

$p->add_field('currencyCode', 'GBP');

IPN 自体に関するご質問については、正しい方向に進んでいるようです。それは、返されるデータと、個々のトランザクションに関心があるかどうか (アダプティブ ペイメントを使用している場合)、またはエラーなどでそれらすべてを元に戻そうとしているかどうかによって異なります。行うことは、すべての投稿データを単に表示またはログに記録して、それがどのように構築されているかを確認できるようにすることです。

また、PayPal がスクリプトにアクセスできるように設定する必要があります。次に、このスクリプトの完全な URL を「notify_url」パラメーターに渡し、PayPal に送信します。支払いが完了すると、PayPal は一連の情報をスクリプトに送信して、処理できるようにします。

残念ながら、私は PHP のバックグラウンドを持っていないので、必要な正確なコードを提供することはできません。また、本番環境に移行する前に調べておきたいセキュリティ問題がたくさんあることにも注意してください。その validateIPN 関数でこれを行うつもりがあるかどうかはわかりませんが、悪意のあるユーザーではなく PayPal からのものかどうかを確認できるようにする必要があります。1 つの方法は、カスタム属性を使用して値を渡し、PayPal にこれを返してもらうことですが、API 証明書などを使用する方がはるかに優れています。

まだお持ちでない場合は、PayPal が作成したいくつかのサンプル アプリケーションをチェックする価値があるかもしれません。かなりの数の PHP アプリケーションがあるようです。

他に必要なものがあれば教えてください。

于 2012-12-30T07:48:51.900 に答える
-1

PayPal Adaptive Payments を使用する必要があります。IPN は役に立ちません。

PayPal アダプティブ ペイメント

PayPal PHP ライブラリを使用すると、次のようになります。

// Create an instance, you'll make all the necessary requests through this
        // object, if you digged through the code, you'll notice an AdaptivePaymentsProxy class
        // wich has in it all of the classes corresponding to every object mentioned on the
        // documentation of the API
        $ap = new AdaptivePayments();

        // Our request envelope
        $requestEnvelope = new RequestEnvelope();
        $requestEnvelope->detailLevel = 0;
        $requestEnvelope->errorLanguage = 'en_GB';

        // Our base amount, in other words the currency we want to convert to
        // other currency type. It's very straighforward, just have a public
        // prop. to hold de amount and the current code.
        $baseAmountList = new CurrencyList();
        $baseAmountList->currency = array( 'amount' => $this->amount, 'code' => 'GBP' );

        // Our target currency type. Given that I'm from Mexico I would like to
        // see it in mexican pesos. Again, just need to provide the code of the
        // currency. On the docs you'll have access to the complete list of codes
        $convertToCurrencyListUSD = new CurrencyCodeList();
        $convertToCurrencyListUSD->currencyCode = 'USD';

        // Now create a instance of the ConvertCurrencyRequest object, which is
        // the one necessary to handle this request.
        // This object takes as parameters the ones we previously created, which
        // are our base currency, our target currency, and the req. envelop
        $ccReq = new ConvertCurrencyRequest();
        $ccReq->baseAmountList = $baseAmountList;
        $ccReq->convertToCurrencyList = $convertToCurrencyListUSD;
        $ccReq->requestEnvelope = $requestEnvelope;

        // And finally we call the ConvertCurrency method on our AdaptivePayment object,
        // and assign whatever result we get to our variable
        $resultUSD = $ap->ConvertCurrency($ccReq);
        $convertToCurrencyListUSD->currencyCode = 'EUR';
        $resultEUR = $ap->ConvertCurrency($ccReq);

        // Given that our result should be a ConvertCurrencyResponse object, we can
        // look into its properties for further display/processing purposes
        $resultingCurrencyListUSD = $resultUSD->estimatedAmountTable->currencyConversionList;
        $resultingCurrencyListEUR = $resultEUR->estimatedAmountTable->currencyConversionList;
于 2012-11-12T00:31:17.617 に答える