| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン |
| pointback仕様 [2026/01/20 19:22] – root | pointback仕様 [2026/01/29 19:09] (現在) – root |
|---|
| {{pasted:20260120-102223.png}} | {{pasted:20260121-023047.png}} |
| MMP → Temporary Tables (一時保存) | MMP →① Temporary Table(一時保存) |
| MMPから届く大量のポストバックデータを、まずはそのままの形で保存します。 | MMPから届く大量のポストバックのパラメータを、まずはそのままの形で保存します。 |
| 理由: 直接本番テーブルに書き込むと負荷が高まるため、一旦バッファとして受け止めます。 | 理由: 直接本番テーブルに書き込むと負荷が高まるため、一旦バッファとして受け止めます。 |
| | |
| Batch Processing (バッチ処理) | Batch Processing (バッチ処理) |
| 一定間隔(1分ごと)で実行されます。 | 一定間隔(1分ごと)で実行されます。 |
| 処理内容: 重複排除、不正チェック、メディアごとのフォーマット変換などを行い、確定データとして Pointback Tables へ格納します。 | 処理内容: 重複排除、不正チェックなどを行い、確定データとして ②Pointback Table へ格納します。 |
| Pointback Tables → Media (外部通知) | エラーがあった場合は③Erorr Tableへ格納します。 |
| 整形されたデータを元に、各メディア(adleapやpointincomeなど)のAPIへ通知を送ります。 | |
| | Pointback Table → Media (外部通知) |
| | 整形されたデータを元に、、各メディア(adleapやpointincomeなど)ごとの受け取るためのフォーマットに変換後、 |
| | 各メディアのAPIへ通知を送ります。 |
| これにより、ユーザーにポイントが付与される仕組みです。 | これにより、ユーザーにポイントが付与される仕組みです。 |
| |
| ---- | ---- |
| |
| ①Temporary Tables | ①Temporary Table |
| <php> | <php> |
| $dsn = 'mysql:host=localhost;dbname=rocketa-api;charset=utf8mb4'; | $dsn = 'mysql:host=api.rocket-a.com;dbname=rocketa-api;charset=utf8mb4'; |
| $user = 'root'; | $user = 'root'; |
| $pass = 'buSDonry4%h6rm-0fy'; | $pass = 'buSDonry4%h6rm-0fy'; |
| echo '<th>Client ID</th>'; | echo '<th>Client ID</th>'; |
| echo '<th>UID</th>'; | echo '<th>UID</th>'; |
| echo '<th>Product</th>'; | |
| echo '<th>Amount</th>'; | echo '<th>Amount</th>'; |
| echo '<th>Sales Count</th>'; | echo '<th>Sales Count</th>'; |
| echo '<td>' . htmlspecialchars($row['client_id'], ENT_QUOTES, 'UTF-8') . '</td>'; | echo '<td>' . htmlspecialchars($row['client_id'], ENT_QUOTES, 'UTF-8') . '</td>'; |
| echo '<td>' . htmlspecialchars($row['uid'], ENT_QUOTES, 'UTF-8') . '</td>'; | echo '<td>' . htmlspecialchars($row['uid'], ENT_QUOTES, 'UTF-8') . '</td>'; |
| echo '<td>' . htmlspecialchars($row['product_code'], ENT_QUOTES, 'UTF-8') . '</td>'; | |
| echo '<td>' . htmlspecialchars($row['amount'], ENT_QUOTES, 'UTF-8') . '</td>'; | echo '<td>' . htmlspecialchars($row['amount'], ENT_QUOTES, 'UTF-8') . '</td>'; |
| echo '<td>' . htmlspecialchars($row['sales_count'], ENT_QUOTES, 'UTF-8') . '</td>'; | echo '<td>' . htmlspecialchars($row['sales_count'], ENT_QUOTES, 'UTF-8') . '</td>'; |
| |
| ---- | ---- |
| ②Pointback Tables | ②Pointback Table |
| https://admin.rocket-a.com/admin/general/achieve/list | https://admin.rocket-a.com/admin/general/achieve/list |
| で検索可能 | で検索可能 |
| <php> | <php> |
| $dsn = 'mysql:host=localhost;dbname=rocketa-la;charset=utf8mb4'; | $dsn = 'mysql:host=api.rocket-a.com;dbname=rocketa-la;charset=utf8mb4'; |
| $user = 'root'; | $user = 'root'; |
| $pass = 'buSDonry4%h6rm-0fy'; | $pass = 'buSDonry4%h6rm-0fy'; |
| Fixed At 承認・否認確定日 | Fixed At 承認・否認確定日 |
| |
| | |
| | ③Error Table |
| | https://admin.rocket-a.com/admin/general/achieve/error_list# |
| | <php> |
| | $dsn = 'mysql:host=api.rocket-a.com;dbname=rocketa-la;charset=utf8mb4'; |
| | $user = 'root'; |
| | $pass = 'buSDonry4%h6rm-0fy'; |
| | |
| | $pdo = new PDO( |
| | $dsn, |
| | $user, |
| | $pass, |
| | [ |
| | PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, |
| | PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, |
| | ] |
| | ); |
| | |
| | $sql = "SELECT * FROM result_datas ORDER BY id DESC LIMIT 3"; |
| | $stmt = $pdo->prepare($sql); |
| | $stmt->execute(); |
| | |
| | $rows = $stmt->fetchAll(); |
| | |
| | echo '<table border="1" cellpadding="6" cellspacing="0">'; |
| | echo '<thead>'; |
| | echo '<tr>'; |
| | echo '<th>ID</th>'; |
| | echo '<th>Result ID</th>'; |
| | echo '<th>Error</th>'; |
| | echo '<th>IP</th>'; |
| | echo '<th>SID</th>'; |
| | echo '<th>Ad ID</th>'; |
| | echo '<th>Client ID</th>'; |
| | echo '<th>UID</th>'; |
| | echo '<th>Product</th>'; |
| | echo '<th>Amount</th>'; |
| | echo '<th>Sales</th>'; |
| | echo '<th>Stage</th>'; |
| | echo '<th>Sender</th>'; |
| | echo '<th>Media ID</th>'; |
| | echo '<th>Banner ID</th>'; |
| | echo '<th>Created</th>'; |
| | echo '</tr>'; |
| | echo '</thead>'; |
| | |
| | echo '<tbody>'; |
| | |
| | foreach ($rows as $row) { |
| | |
| | echo '<tr>'; |
| | echo '<td>' . (int)$row['id'] . '</td>'; |
| | echo '<td>' . (int)$row['result_records_id'] . '</td>'; |
| | echo '<td>' . (int)$row['error'] . '</td>'; |
| | echo '<td>' . htmlspecialchars($row['ip'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>'; |
| | echo '<td>' . htmlspecialchars($row['sid'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>'; |
| | echo '<td>' . (int)($row['ad_id'] ?? 0) . '</td>'; |
| | echo '<td>' . (int)($row['client_id'] ?? 0) . '</td>'; |
| | echo '<td>' . htmlspecialchars($row['uid'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>'; |
| | echo '<td>' . htmlspecialchars($row['product_code'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>'; |
| | echo '<td>' . (int)($row['amount'] ?? 0) . '</td>'; |
| | echo '<td>' . (int)($row['sales_count'] ?? 0) . '</td>'; |
| | echo '<td>' . (int)($row['stage'] ?? 0) . '</td>'; |
| | echo '<td>' . (int)$row['sender'] . '</td>'; |
| | echo '<td>' . (int)($row['media_id'] ?? 0) . '</td>'; |
| | echo '<td>' . (int)($row['banner_id'] ?? 0) . '</td>'; |
| | echo '<td>' . htmlspecialchars($row['created_at'], ENT_QUOTES, 'UTF-8') . '</td>'; |
| | echo '</tr>'; |
| | } |
| | |
| | echo '</tbody>'; |
| | echo '</table>'; |
| | </php> |
| | Result ID Temporary TableのID |
| | Error エラーのIDを格納↓ |
| | Error種別 |
| | * 1:パラメーターエラー |
| | * 2:sid不一致 |
| | * 3:広告不一致 |
| | * 4:クライアントチェックエラー |
| | * 5:送信元チェックエラー |
| | * 6:パートナーチェックエラー |
| | * 7:未連携パートナー |
| | * 8:リピートチェックエラー |
| | * 9:報酬額設定ミス |
| | * 10:通信エラー |
| | * 11:退会識別パラメータ重複エラー |
| | * 12:App通信 イベント不一致 |
| | * 13:IPアドレス重複リピートチェックエラー |
| | * 14:成果重複エラー |
| | * 15:ステータス停止エラー |
| | * 16:期間外承認エラー |