CashiPay Laravel パッケージ

Library

概要

CashiPay Laravel は、CashiPay ウォレット決済を Laravel ベースのアプリケーションに統合するための「実運用向け」パッケージです。QR コードと OTP による支払いフローをサポートし、決済完了や失敗などのイベントを Laravel のイベントシステムに流すためのフックを提供します。Webhook 受信時には HMAC-SHA256 による署名検証を行い改ざん検知を実装。PaymentRequest 用の Fluent な DTO ビルダー(内部でバリデーション)、不変(immutable)な PaymentResponse DTO(ステータス判定用の便利メソッド付き)など、使いやすさと安全性を両立させた設計が特徴です。

GitHub

リポジトリの統計情報

  • スター数: 2
  • フォーク数: 1
  • ウォッチャー数: 2
  • コミット数: 2
  • ファイル数: 6
  • メインの言語: PHP

主な特徴

  • QRコード決済と OTP 決済のフローをサポート
  • Webhook の HMAC-SHA256 署名検証によるセキュリティ対策
  • Laravel イベント連携(PaymentCompleted / PaymentFailed / WebhookReceived 等)
  • Fluent な PaymentRequest DTO ビルダーと不変の PaymentResponse DTO

技術的なポイント

CashiPay Laravel が重視するのは「安全性」と「開発者体験(DX)」です。まず Webhook 処理については、受信した通知のペイロードに対して HMAC-SHA256 による署名検証を行い、共有シークレットが一致しない場合は処理を棄却する仕組みを提供します。これにより第三者による偽装リクエストを防げます。Webhook ハンドラはルート経由で受け取り、認証に成功したものだけを内部イベントへと流すため、アプリケーション側はイベントリスナーで決済完了/失敗時のビジネスロジックを分離して実装できます。

次に DTO(データ転送オブジェクト)設計です。PaymentRequest は Fluent ビルダーとして提供され、必須フィールドのバリデーションを組み込みで持つため、リクエスト構築時に不正なデータが混入するリスクを下げます。対して PaymentResponse は不変オブジェクトとして設計され、ステータス判定用の isSuccess() / isPending() / isFailed() といった便利メソッドを備えることで呼び出し側の条件分岐を簡潔にします。

環境への配慮も備わっており、ステージングと本番でエンドポイントや認証情報を切り替える設定(config ファイル)を用意しておくことが想定されます。composer 経由での導入、サービスプロバイダによるルート登録やイベントのバインド、設定の公開(publish)といった Laravel 標準の拡張ポイントを活かし、容易に既存アプリへ統合できる設計です。

拡張性としては、HTTP クライアントの差し替え(テスト用モックを含む)やイベントのカスタムリスナー追加、エラー/例外処理のオーバーライドがしやすい構造が推奨されます。実運用ではログ記録、再試行(リトライ)ポリシー、Webhook の冪等性処理(同一通知を2回受けた際の扱い)を実装するとより安全です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • composer.json: file
  • config: dir
  • routes: dir
  • src: dir

…他 1 ファイル

(src 以下には ServiceProvider、DTO、Webhook ハンドラ、イベントクラスや HTTP クライアントラッパーなどが配置されていることが想定されます。また config 配下で環境ごとのキーやエンドポイントを管理し、routes 配下に Webhook 受信用のルート定義がある構成が一般的です。)

導入と利用の流れ(想定)

  1. composer require でパッケージをインストール
  2. config を publish して環境変数(API キー / シークレット / モード)を設定
  3. Webhook 用ルートをマウント(自動登録される場合は設定のみ)
  4. PaymentRequest ビルダーで支払いリクエストを作成して決済を発行
  5. Webhook 受信時に署名検証がパスしたら Laravel イベントが発火
  6. イベントリスナーで注文更新や通知処理を実装

まとめ

CashiPay を Laravel に安全かつ使いやすく組み込むための実運用志向パッケージです。

リポジトリ情報:

READMEの抜粋:

CashiPay Laravel

A production-ready Laravel package for integrating the CashiPay wallet payment gateway into any Laravel application.

  • QR code and OTP payment flows
  • Webhook handling with HMAC-SHA256 signature verification
  • Laravel event system integration (PaymentCompleted, PaymentFailed, WebhookReceived)
  • Fluent PaymentRequest DTO builder with built-in validation
  • Immutable PaymentResponse DTO with convenience status methods
  • Environment-aware (staging / production) wit…