API連携

2020年11月 - 2021年2月

ギフト券発券APIを叩き、サービス内でギフト発券を可能に

ギフトオンデマンドのAPIを活用してギフト券を人を介さずにユーザーに渡せるシステムを構築。友達紹介やポイント懸賞での手作業によるギフト券配布を自動化した。

プロジェクト概要

チーム構成:1名
役割:設計・開発・運用
期間:2020年11月 - 2021年2月

技術スタック

PHP7.3JavaScriptSQLHTMLCSSMySQLLinux/UNIX自社FW外部API連携SES

プロジェクト背景

従来、友達紹介やポイント懸賞でのギフト券配布は手作業で行われており、Amazon券を発行→ダウンロード→CSVに貼り付け→メール配信という流れだった。この手作業はセキュリティ的にも運用的にも適切ではなく、誤操作で不要なギフト券を発券してしまう可能性や、悪意を持った運用者がギフトコードを利用する可能性があった。

課題・チャレンジ

  • ギフトオンデマンドのAPIとの連携による複雑な処理フロー
  • ECナビ内のデータと外部システムのデータに差異が出る可能性
  • 外部APIの状態によって処理を変える必要がある
  • 想定外の例外時の検知と対応
  • セキュリティを考慮したギフト券発券システムの設計

解決策・アプローチ

  • 前処理・本処理・後処理に分けた段階的なAPI連携設計
  • tradeIdを発行し、レスポンスがどんな場合でも必ずDBに保存する仕組み
  • ギフト券の状態によって叩くAPIを変更する動的処理
  • エラーの種類によってギフト券の状態を変更する例外処理
  • Datadogによる監視システムの構築

技術詳細

アーキテクチャ

前処理・本処理・後処理に分けた段階的なAPI連携設計。外部APIの状態によって処理を動的に変更する仕組み。

データベース設計

ギフト付与履歴、ギフト金種、ギフト券種の3つのテーブルを設計。tradeIdによる追跡可能な発券システム。

主要なAPI・機能

  • ギフトオンデマンド API
  • SES(メール配信)
  • ギフト券発券・照会API

成果・学び

成果

  • ギフト券の発行からユーザへの付与まで完全自動化
  • 手作業によるセキュリティリスクを解消
  • 運用効率の大幅な向上
  • 想定外の例外時も検知可能な監視システムを構築
  • 発券履歴をRedashで確認可能な状態を実現
  • 新しいギフト提携先との連携コストを低減

学び

  • 外部API連携の設計パターン
  • 段階的な処理設計の重要性
  • 例外処理と監視システムの構築
  • セキュリティを考慮したシステム設計
  • データ整合性の管理手法
  • 運用効率化のための自動化設計