Simple PayPal Payment を管理画面で使う

はじめに

前年末に、PayPal 決済のプラグイン Simple PayPal Payment を公開しました。そのプラグインの管理画面での使い方を記します。ユーザーを複数登録するサイトなどで、ユーザーの管理画面内で課金させて何らかの制限を解除するという仕組みです。フィルターフックを提供しているのでそれを利用します。


https://ja.wordpress.org/plugins/simple-paypal-payment/

使い方

PHP コード内でショートコードを、do_shortcode で呼び出し購入ボタンを作成します。フィルターフックでフィルターを呼び関数内で、オプションテーブル内に課金済みを示す testpaid を作成します。値は bool 値です。この値で課金を判定する仕組みです。

ショートコード属性の email にメールアドレスを指定すると値を受け渡せるので、関数内でメールを送信できます。

サンプルコード

/* 購入ボタン */
$user = wp_get_current_user();
$email = $user->user_email;
echo do_shortcode('[simplepaypalpayment size="medium" amount=1000 currency="JPY" email="'.$email.'" payname="testpay"]');

/* フィルターフック & 関数 */
function paypal_charge( $data, $payment_data, $email, $amount, $currency, $payname ) {
    if ( 'testpay' === $payname ) {
        /* 課金直後の処理:メールを送信します。 */
        $subject = 'ご購入ありがとうございます。';
        $message = $amount . $currency. 'お支払いいただきました。制限が解除されました。';
        wp_mail( $email, $subject, $message );
      /* オプションテーブルに書きこみます。 */
      update_option( 'test_paid', TRUE ); */
      /* 未課金に戻したい場合は、test_paid をオプションテーブルから削除する処理を別に書いてください。
    }
}
add_filter( 'simple_paypal_payment_charge', 'paypal_charge', 10, 6 );

Comments

“Simple PayPal Payment を管理画面で使う” への4件のフィードバック

  1. wordpress orgでも質問させてもらったのですが、「public function paypal_charge( $data, $payment_data, $email, $amount, $currency, $payname ) {…」をコピペして使用したのですが、重大エラーの表示が出てしまいました。
    他方で、public部分を除去して使用(つまり、「function …」で使用)すると、フックにひっかからないようで、困っています。
    詳細な使用方法をご教示いただくことは可能でしょうか?
    よろしくお願い致します。

    1. Katsushi Kawamoriのアバター
      Katsushi Kawamori

      “public function” では無く、”function” で使用してください。
      “public function” はクラス内で使用する場合です。
      子テーマの、function.php に書くなら、”function” で使用します。

    2. Katsushi Kawamoriのアバター
      Katsushi Kawamori

      今、久しぶりに試したところ、問題無くフックしました。
      function 内で、どのような処理をしていますか?

  2. 早速のご回答をありがとうございます。
    classについてはおいおい勉強させていただきます。

    function.phpで、publicなしの「function」のみで使用したのですが、それでも動かないのです。
    libフォルダのどうやらなんですが、simplepaypalpayment_charge_callbackが機能していないようなんですね。

    サイト内で別のajax動かしてるんですが、それと競合してるのか?など疑ってるんですが、原因が分かりましたらまた連絡させていただきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください