質問編集履歴
1
pay.phpのコードを記載しました。
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)付近を
|