質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

1364閲覧

【PAY.JP】でのクレジット決済実装につきまして「初回決済、定期課金、顧客登録の同時処理」につきまして-(PHP)

inouesan55

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/08/23 09:13

前提・実現したいこと

●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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/25 09:59

API の挙動に関しては、こちらで質問するより、サポートに問い合わせた方が良いですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問