前提・実現したいこと
●PAY.JPで決済をおこないたく以下で実装をしたいと考えております
※チェックアウト機能とサーバー側はPHPで処理したいと考えております。
●実現したいこと
・申込時に初回手数料として1000円を支払いし、
サブスクリプション(定期支払い)として指定したコースが支払いできるよう状態
※完了時にはPAYJPの管理画面に顧客登録ができていることです。
※補足
不要かも知れませんが念のためページの遷移につきまして記載させていただきます。
①情報入力画面
②確認画面
→こちらでは①で入力した情報の表示と、決済情報(チェックアウト機能)の入力を考えております。
入力後は送信ボタンで完了画面に遷移予定です。
※①で入力した情報はメールでとばしたいだけとなります。
③完了画面
発生している問題・エラーメッセージ
初回決済、定期課金、顧客登録の内、「定期支払い・顧客登録」はできております。 ここに「初回決済」分の処理を追加すると定期支払いができなくいなってしまいます。 PAY.JPのリファレンスに、トークンIDを指定することで、一度限りの支払いが可能です。」とありましたため、 card" => $token, が1度しか使えないからではと思い「Customer」を使い処理を試みましたが何度試しても 「初回決済、定期支払い、顧客登録」の同時処理ができかねております。
該当のソースコード
●PHP <?php require_once 'init.php'; //◆支払い以外のアクセスは弾く if (!isset($_POST['payjp-token'])) { echo "トークンがセットされていない"; exit; } //失敗時のメッセージ $err = '通信失敗'; //送られてきた、顧客のカード情報を使って作成されたトークン $token = $_POST['payjp-token']; //支払い価格 $amount = 1000; //秘密鍵 $secret = 'sk_test_xxx'; //通貨(通常は日本円を表す'jpy'を指定する) $currency = 'jpy'; //管理画面で決めた、今回課金するプランのidを指定します。 $plan_data = "pln_monthly_test"; try { //pay.jpの管理画面に顧客データを作成します。 Payjp\Payjp::setApiKey($secret); $result = Payjp\Customer::create( array( "card" => $token, )); //◆新しい課金の作成 // Payjp\Payjp::setApiKey($secret); // $result = Payjp\Charge::create(array( // "card" => $token, // "amount" => $amount, // "currency" => $currency, // "description" => '初期費用' // )); //作成された顧客idを取得します。 $resultid = $result['id']; //プランとユーザーを紐付けるidを取得 $resultsubid = $resultsub['id']; //ユーザーをプランに加入する処理を実行。 Payjp\Payjp::setApiKey($secret); $resultsub = Payjp\Subscription::create( array( "customer" => $resultid, "plan" => $plan_data )); if (isset($result['error'])) { throw new Exception(); } } catch (Exception $e) { // カードが拒否された場合 $err = $result['error']['message']; echo $err; exit; } ?> ●表示画面(チェックアウト部分) <script type="text/javascript" src="https://checkout.pay.jp/" class="payjp-button" data-key="pk_test_XXX" data-text="カード情報を入力する" data-submit-text="カード情報を入力する" data-partial="true"> </script>
試したこと
新しい課金の作成部分のcardに$resultidを入れたりcustomerに変更したり試しましたが
定期支払いができなくなったり、顧客情報が登録できなくなったりしました。
お忙しいところ大変申し訳ございませんがお知恵を貸してもらえませんでしょうか。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー