質問するログイン新規登録

質問編集履歴

1

pay.phpのコードを記載しました。

2020/04/27 07:56

投稿

naofu_web
naofu_web

スコア5

title CHANGED
File without changes
body CHANGED
@@ -110,6 +110,70 @@
110
110
 
111
111
  ```
112
112
 
113
+ ``` php
114
+ require_once "db.php";
115
+
116
+ //公開鍵を設定するファイルを読み込みます。
117
+ require_once 'secret.php';
118
+
119
+ //アップロードしたpay.jpのライブラリから必要なファイルを読み込みます。
120
+ require_once 'payjp-php-master/init.php';
121
+
122
+ //JavaScriptからポストされたトークンを受け取ります。
123
+ $card_token = htmlspecialchars($_POST['card_token'], ENT_QUOTES);
124
+
125
+ //管理画面で決めた、今回課金するプランのidを指定します。
126
+ $plan_data = "plan001";
127
+
128
+ //ユーザーのメールアドレスを取得します。
129
+ //今回はユーザーのメールアドレスをセッションで保持、セッションから取得。
130
+ $mail = $_SESSION['mail'];
131
+
132
+ try {
133
+
134
+ //pay.jpの管理画面に顧客データを作成します。
135
+ Payjp\Payjp::setApiKey($secret);
136
+ $result = Payjp\Customer::create(
137
+ array(
138
+ "email" => $mail,
139
+ "card" => $card_token,
140
+ )
141
+ );
142
+
143
+ //作成された顧客idを取得します。
144
+ $resultid = $result['id'];
145
+
146
+ //ユーザーをプランに加入する処理を実行。
147
+ Payjp\Payjp::setApiKey($secret);
148
+ $resultsub = Payjp\Subscription::create(
149
+ array(
150
+ "customer" => $resultid,
151
+ "plan" => $plan_data
152
+ )
153
+ );
154
+
155
+ //プランとユーザーを紐付けるidを取得
156
+ $resultsubid = $resultsub['id'];
157
+
158
+ //データベースにあるユーザーデータに、決済関連のidをまとめて保存
159
+ $userplandata = mysqli_select_db($mysqli,'userdata');
160
+ //今回はplanrank=プランのランク(s0001) planid=プラン決済id payid=顧客id registrationtime=決済時間を登録しています。
161
+ //データベースにも予めカラムを作っておいてください。
162
+ $userplandata = mysqli_query($mysqli,"UPDATE userdata SET planrank='$plan_data',planid='$resultsubid',payid='$resultid',registrationtime='$today' where mail = '$mail'");
163
+
164
+ } catch (Exception $e) {
165
+
166
+ //もしエラーがあった場合はエラーメッセージを返します。
167
+ $miss = $getmessage = $e->getMessage();
168
+
169
+ };
170
+
171
+ //最後にjsonでエラーがあった場合のエラーメッセージを返します。
172
+ header('Content-type: application/json');
173
+ echo json_encode( $miss );
174
+
175
+ ```
176
+
113
177
  ### 試したこと
114
178
 
115
179
  ajaxのerror:functionのalert(errorThrown)付近を