web-dev-qa-db-ja.com

IPNコールバックスクリプトの適切な場所

私はPaypalインスタント支払い通知を受け入れることを含むプラグインに取り組んでいます。 IPNは、支払いが処理されるときに呼び出されるWebフックです。現在私はプラグイン内のIPNを処理するためのスクリプトを持っています。

http://mywordpressinstall.com/wp-content/plugins/paypalplugin/IPNHandler.php

次に、このURLをPaypalの開発者設定領域に貼り付けます。

私はIPNハンドラにもっとカスタマイズしやすい場所を使いたいのですが(もっと分かりやすいURLを使って)。

私は、挿入されたどのページにも「ハンドラー」機能を与えるためにショートコードを使用できると考えていました。これは賢明な考えですか?ハンドラーのURLを短くする方法について何か提案がありますか?

ありがとうございます。

2
LBNerdBard

Initアクションにフックしてからクエリ変数を確認するか、Paypalが提供するクエリ変数を使用するか、独自のカスタムクエリ変数を使用することができます。

MYIPN_LISTENERという独自のカスタムクエリの例を示します。

コード:

function wpse58656_Paypal_ipn_listener() {
    // check for your custom query var
    // If you are paranoid you can also check the value of the var
    if ( ! isset( $_GET['MYIPN_LISTENER'] ) ) {
        // if query var is not present just return
        return;
    }

    // do the processsing here

    // don't forget to exit when you are done
    exit;
}
add_action( 'init', 'wpse58656_Paypal_ipn_listener' );

これで、任意のURLを使用できますが、クエリ変数としてMYIPN_LISTENERを使用する必要があります。例: http://mywordpressinstall.com/?MYIPN_LISTENER=1

5