Solana Payは、開発者が分散型決済をアプリやサービスに組み込むための標準プロトコルおよび参照実装のセットです。 Solanaエコシステム全体で統一された決済アプローチを提供し、ウォレット、アプリ、サービス間の互換性を保証します。
プロトコル概要
Solana Payは2つの主要な決済リクエストタイプを定義しています:
転送リクエスト(非対話型)
転送リクエストは、URLパラメータを使用してシンプルなSOLまたはSPLトークンの転送を記述します。ウォレットは追加のサーバー通信なしで直接トランザクションを構成し署名できます。
solana:recipient?amount=1.5&spl-token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
ユースケース:
- シンプルな支払いと寄付
- 販売時点でのQRコード決済
- メールやメッセージ内の決済リンク
- モバイルアプリのディープリンク
トランザクションリクエスト(対話型)
トランザクションリクエストは、ウォレットがサーバーと通信して任意のSolanaトランザクションを構成することで、複雑なインタラクションを可能にします。これにより、シンプルな転送を超えた高度なユースケースが実現します。
solana:https://merchant.com/api/payment
ユースケース:
- 販売時点でのNFTミント
- 動的な価格設定と割引
- 複数ステップのDeFiトランザクション
- ロイヤルティプログラムの統合
- カスタムビジネスロジック
主な利点
開発者向け
- 標準プロトコル: 1つの実装がすべてのSolanaウォレットで機能
- フレームワーク非依存: 任意のWebフレームワークやモバイルプラットフォームで使用可能
- 型安全性: JavaScript SDKで完全なTypeScriptサポート
- 柔軟性: シンプルな転送から複雑なマルチインストラクショントランザクションまで対応
ユーザー向け
- 高速: トランザクションが1秒未満で確認
- 低コスト: トランザクションあたり平均$0.0005
- セキュア: 仲介者やサードパーティ決済処理業者なし
- ユニバーサル: すべてのSolanaウォレットで動作
マーチャント向け
- 手数料なし: 処理手数料なしの直接決済
- リアルタイム: 即座の決済と確認
- グローバル: 世界中からの支払いを受け付け
- コンポーザブル: DeFiプロトコルやNFTマーケットプレイスとの統合
技術アーキテクチャ
URLスキーム
Solana
Payは、ウェブブラウザとモバイルOSの両方で動作するカスタムURLスキームsolana:を使用します:
- ウェブ: URLはリンクとして使用したり、QRコードにエンコードしたりできます
- モバイル: ウォレットアプリとのディープリンク統合
- デスクトップ: シームレスなウォレット起動のためのプロトコルハンドラ
JavaScript SDK
@solana/pay SDK(@solana/kit上に構築)は以下を提供します:
- クライアントファクトリー: コンポーザブルな決済フロー用の
createMerchantClient、createWalletClient、createSolanaPayClient - URLエンコード/パース: Solana Pay URL用の
encodeURL、parseURL - 転送作成: SOLおよびSPLトークン決済instructions用の
createTransfer - 決済検証: 決済の検出と検証のための
findReference、validateTransfer、watchReference - QRコード: スキャン可能な決済コード生成のための組み込み
createQR - Kitプラグイン: 他の
@solana/kitプラグインとの組み合わせ用のsolanaPayMerchant()、solanaPayWallet()
ウォレット統合
対応ウォレットは以下を実装します:
- URLスキームの処理とパース
- トランザクションの構成と検証
- ユーザー確認フロー
- トランザクションのブロードキャストと監視
決済フローの例
ウェブアプリからモバイルウォレットへ
- ウェブアプリがSolana Pay URLを含むQRコードを生成
- ユーザーがウォレットアプリでQRコードをスキャン
- ウォレットがURLをパースし、決済詳細を表示
- ユーザーがウォレットで決済を確認
- ウォレットがトランザクションに署名し、ブロードキャスト
- ウェブアプリが決済確認を検出
ウェブアプリからブラウザウォレットへ
- ウェブアプリが「Solanaで支払う」ボタンを表示
- ユーザーがボタンをクリックしてウォレットを起動
- ウォレット拡張機能が決済確認を表示
- ユーザーがトランザクションを承認
- トランザクションが署名され送信される
- ウェブアプリが決済確認を受信
モバイルアプリからモバイルウォレットへ
- モバイルアプリが決済ディープリンクを作成
- ディープリンクがウォレットアプリを起動
- ウォレットが決済確認画面を表示
- ユーザーが決済を承認または拒否
- ウォレットが元のアプリに戻る
- アプリが決済結果を受信
セキュリティに関する考慮事項
マーチャント向け
- トランザクションの検証: 常にオンチェーンでトランザクションの詳細を確認する
- リファレンスの使用: 決済を識別するための一意のリファレンスキーを含める
- サーバーサイドでの検証: 金額を計算し、サーバーサイドで決済を検証する
- レート制限: 決済エンドポイントに適切なレート制限を実装する
ウォレット開発者向け
- URLの検証: すべてのURLコンポーネントを検証してサニタイズする
- ユーザー確認: 常にユーザーに明確な決済詳細を表示する
- トランザクション検証: 署名前にトランザクションの内容を確認する
- HTTPSのみ: トランザクションリクエストにはHTTPS URLのみを許可する
統合パターン
Eコマースチェックアウト
- 顧客がカートに商品を追加
- マーチャントが注文詳細を含む決済リクエストを生成
- 顧客がQRコードをスキャンまたは決済ボタンをクリック
- ウォレットが明細と合計金額を表示
- 顧客が決済を確認
- マーチャントがトランザクションを検証して注文を処理
販売時点情報管理(POS)
- レジ係が販売金額を入力
- POSシステムがQRコードを表示
- 顧客がモバイルウォレットでスキャン
- 決済が即座に処理される
- レシートが自動的に印刷される
サブスクリプションサービス
- ユーザーがサービスに登録
- サービスが定期決済スケジュールを作成
- 自動化されたシステムが決済リクエストを生成
- ユーザーがウォレットを通じて決済を承認
- サービスが決済ステータスを追跡
ベストプラクティス
URL生成
- すべてのトランザクションリクエストエンドポイントにHTTPSを使用する
- わかりやすいラベルとメッセージを含める
- 決済追跡用の一意のリファレンスを生成する
- URL作成前にすべてのパラメータを検証する
トランザクション処理
- 必ずサーバーサイドでトランザクションを検証してください
- セキュリティのために適切な確認回数を使用してください
- 適切なエラーハンドリングと再試行を実装してください
- 照合のために支払いイベントをログに記録してください
ユーザーエクスペリエンス
- 明確な支払い確認を提供してください
- トランザクションステータスの更新を表示してください
- ウォレット接続を適切に処理してください
- 複数のウォレットオプションをサポートしてください
次のステップ
Solana Payを統合する準備はできましたか?以下のガイドから始めましょう:
- インストールガイド - SDKとツールをセットアップする
- 転送リクエスト - シンプルな支払いURLを作成する
- トランザクションリクエスト - インタラクティブなフローを構築する
- 統合例 - 実際の実装を確認する
リソース
- 公式仕様 - 完全なプロトコル仕様
- GitHubリポジトリ - ソースコードと例
- ブランドガイドライン - ロゴとブランドアセット
Is this page helpful?