SocialHub.AI
リソース · 開発者センター

ウォレット (Apple および Google)

ブランドのメンバーシップ カードを Apple Wallet または Google Wallet に直接発行します。サーバー側で署名され、アプリは必要ありません。 Apple カードは、メンバーのポイントやティアが変更されると自動的に更新されます。

両方のプラットフォームの発行と完全な Apple PassKit アップデート Web サービスは、現在コードで公開されています。 SocialHub チームで構成されたウォレット認証情報 (Apple パス タイプ ID + 署名証明書、Google 発行者 + サービス アカウント) が必要です。

得られるもの

サーバーサイド発行ライブ

署名された .pkpass はサーバー側で生成され、メンバーにストリーミングされます。アプリにネイティブのパス署名コードはなく、カードのデザインを変更するアプリのリリースもありません。

カードの自動更新ライブ

ポイントまたはティアの変更 → サイレント APN アップデートがプッシュされる → デバイスがパスを再取得します。メンバーシップ カードはアプリ コードなしで有効な状態を維持します。

クリーンなライフサイクルライブ

削除されたメンバーのパス シリアルは 410 Gone を返すため、Wallet は古いカードを正常に削除します。 cron は署名証明書の有効期限を監視します。

Apple + Googleライブ

現在、両方のプラットフォームが 1 つのエンドポイントから発行します。Apple は署名された .pkpass を返します。 Google は保存リンクを返します。 (サイレント自動更新は Apple PassKit、Google カードは開くと更新されます。)

カードを発行する ライブ

サインインしているメンバー WebView 内からこれを呼び出します。セッション フローについては、メンバー ポータルの埋め込み ガイドを参照してください。

// The signed-in member's app requests their card. teamId + memberId come from the
// consumer SESSION (never the body) — the body only selects the platform.
POST https://flash.socialhub.ai/api/consumer/wallet/issue
Content-Type: application/json
{ "platform": "apple" }          // "apple" | "google"

// Apple → 200  Content-Type: application/vnd.apple.pkpass
//              Content-Disposition: attachment; filename="loyalty-<serial>.pkpass"
//              (the response body IS the signed .pkpass — hand it to "Add to Apple Wallet")
// Google → 200 { "saveUrl": "https://pay.google.com/gp/v/save/…" }
//              (redirect the member to saveUrl → "Save to Google Wallet")
//
// Wallet not configured for that platform → DomainError WALLET_NOT_CONFIGURED.

アップデートは自動的に行われます ライブ

// You do NOT write update code. SocialHub hosts the standard Apple PassKit update
// web service, so the card stays current on its own:
//
//   1. The pass registers the device when added to Wallet
//        POST /api/wallet/apple/v1/devices/{deviceId}/registrations/{passTypeId}/{serial}
//   2. A points / tier change enqueues a silent APNs push to the device
//   3. The device re-fetches the latest pass
//        GET  /api/wallet/apple/v1/passes/{passTypeId}/{serial}
//
// These endpoints are called by Apple's device, not by your app — listed here for
// transparency. A removed / unenrolled member's serial returns 410 Gone (not 500),
// so Wallet cleanly drops a stale card.

ライブに行く前に

Apple パス タイプ ID

Apple 開発者アカウントにパス タイプ ID を登録し ([識別子] → [パス タイプ ID])、SocialHub チームと共有します。

パス署名証明書

そのパス タイプ ID のパス署名証明書を生成します。各 .pkpass はサーバー側で署名されます。 cron は期限切れを監視するので、何も言わずに期限切れになることはありません。

APN 認証キー (.p8)

SocialHub が Apple カードを最新の状態に保つサイレント アップデート通知をプッシュできるように、APN 認証キー (キー ID + チーム ID) を提供します。

Google Wallet 発行者

Google カードの場合は、Google Wallet 発行者 ID とサービス アカウント キーを入力します。 SocialHub は署名済みの保存リンクをサーバー側で作成します。

注: パス タイプ ID とパス署名証明書を作成するには、有料の Apple 開発者プログラムの Apple 開発者アカウントが必要です。

受け入れチェックリスト

POST /wallet/issue (プラットフォーム: apple) から発行された実際の .pkpass はデバイスにインストールされ、メンバーの現在のポイント/ティアが表示されます。

リクエスト元のプラットフォーム: Google は、カードを Google Wallet に追加する saveUrl を返します。

メンバーのポイントを変更すると、インストールされている Apple カードが数秒以内に更新されます。アプリの操作は必要ありません。

認証情報が構成されていないプラットフォームに対して発行すると、破損したファイルではなく、WALLET_NOT_CONFIGURED が返されます。

削除されたメンバーのAppleパスシリアルは410 Goneを返し、Walletはカードを破棄します。500エラーは発生しません。

ウォレット カードを設定しますか?

Apple パス タイプ ID、署名証明書、APN キー、または Google Wallet 発行者の設定については、エンジニアにご相談ください。

エンジニアリングに相談する