質問編集履歴

1

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

2020/04/27 07:56

投稿

naofu_web
naofu_web

スコア5

test CHANGED
File without changes
test CHANGED
@@ -222,6 +222,134 @@
222
222
 
223
223
 
224
224
 
225
+ ``` php
226
+
227
+ require_once "db.php";
228
+
229
+
230
+
231
+ //公開鍵を設定するファイルを読み込みます。
232
+
233
+ require_once 'secret.php';
234
+
235
+
236
+
237
+ //アップロードしたpay.jpのライブラリから必要なファイルを読み込みます。
238
+
239
+ require_once 'payjp-php-master/init.php';
240
+
241
+
242
+
243
+ //JavaScriptからポストされたトークンを受け取ります。
244
+
245
+ $card_token = htmlspecialchars($_POST['card_token'], ENT_QUOTES);
246
+
247
+
248
+
249
+ //管理画面で決めた、今回課金するプランのidを指定します。
250
+
251
+ $plan_data = "plan001";
252
+
253
+
254
+
255
+ //ユーザーのメールアドレスを取得します。
256
+
257
+ //今回はユーザーのメールアドレスをセッションで保持、セッションから取得。
258
+
259
+ $mail = $_SESSION['mail'];
260
+
261
+
262
+
263
+ try {
264
+
265
+
266
+
267
+ //pay.jpの管理画面に顧客データを作成します。
268
+
269
+ Payjp\Payjp::setApiKey($secret);
270
+
271
+ $result = Payjp\Customer::create(
272
+
273
+ array(
274
+
275
+ "email" => $mail,
276
+
277
+ "card" => $card_token,
278
+
279
+ )
280
+
281
+ );
282
+
283
+
284
+
285
+ //作成された顧客idを取得します。
286
+
287
+ $resultid = $result['id'];
288
+
289
+
290
+
291
+ //ユーザーをプランに加入する処理を実行。
292
+
293
+ Payjp\Payjp::setApiKey($secret);
294
+
295
+ $resultsub = Payjp\Subscription::create(
296
+
297
+ array(
298
+
299
+ "customer" => $resultid,
300
+
301
+ "plan" => $plan_data
302
+
303
+ )
304
+
305
+ );
306
+
307
+
308
+
309
+ //プランとユーザーを紐付けるidを取得
310
+
311
+ $resultsubid = $resultsub['id'];
312
+
313
+
314
+
315
+ //データベースにあるユーザーデータに、決済関連のidをまとめて保存
316
+
317
+ $userplandata = mysqli_select_db($mysqli,'userdata');
318
+
319
+ //今回はplanrank=プランのランク(s0001) planid=プラン決済id payid=顧客id registrationtime=決済時間を登録しています。
320
+
321
+ //データベースにも予めカラムを作っておいてください。
322
+
323
+ $userplandata = mysqli_query($mysqli,"UPDATE userdata SET planrank='$plan_data',planid='$resultsubid',payid='$resultid',registrationtime='$today' where mail = '$mail'");
324
+
325
+
326
+
327
+ } catch (Exception $e) {
328
+
329
+
330
+
331
+ //もしエラーがあった場合はエラーメッセージを返します。
332
+
333
+ $miss = $getmessage = $e->getMessage();
334
+
335
+
336
+
337
+ };
338
+
339
+
340
+
341
+ //最後にjsonでエラーがあった場合のエラーメッセージを返します。
342
+
343
+ header('Content-type: application/json');
344
+
345
+ echo json_encode( $miss );
346
+
347
+
348
+
349
+ ```
350
+
351
+
352
+
225
353
  ### 試したこと
226
354
 
227
355