メインコンテンツへスキップ

Apple Pay [BETA]

Apple Payを有効化すると、お客様がApple Walletに登録されたクレジットカードまたはデビットカードを使用して購入できるようになります。このガイドでは、決済フローとサービスの実装手順について説明します。

対応地域

地域通貨返金可否最小APIバージョン
シンガポールSGD2017-11-02

有効化方法

Apple Payを有効化するには、support@omise.coにこの機能のリクエストメールを送信してください。

決済フロー

Apple Payはウェブサイトでの決済に対応しています。Apple Payでの決済を選択したお客様は、プラットフォームに埋め込まれたApple Payボタンをタップまたはクリックして取引を開始します。すでにApple Walletにカードを登録しているお客様は、希望するカードをすぐに選択できます。まだ登録していないお客様には、新しいカードを登録するオプションが表示されます。

お客様が希望するカードを選択して決済を確認すると、通常のクレジットカード決済フローと同様にカードに課金されます。Apple Pay取引には、アカウントの現在のカード処理設定が適用される場合があります。

重要

Apple Pay取引は非3Dセキュアでのみ処理されます。

デスクトップブラウザでの使用

Apple Pay決済を開始するには、お客様がウェブサイトのチェックアウト時にApple Payを希望する決済方法として選択します。次に、お客様がApple Walletに登録されている希望のクレジットカードまたはデビットカードを選択します。その後、決済内容を確認して承認します。確認後、Omiseは課金が完了したことを示すWebhookイベント(有効な場合)を送信します。

ガイドライン

ウェブサイトにApple Payを導入する前に、実装がApple Pay on the Webの利用許諾ガイドラインに従っていることを確認してください。

Apple Payデスクトップフロー

実装

Apple Payのマーケティングガイドラインに従って、ウェブサイトにApple Pay決済ボタンを追加してください。お客様がボタンをタップしてカードを選択すると、カード情報を含むApple Payトークンを受け取ります。このタイプのトークンをトークンAPIに送信して、課金APIで使用可能なカードトークンを取得します。

OmiseはApple Payトークンを機密カードデータと同様に扱います。そのため、PCI-DSSライセンスを持っていない場合は、サーバーで使用する前に、これらのトークンをカードトークンに変換する必要があります。詳細はカードの収集をご覧ください。

要約すると、Apple Payで課金を作成するには、以下のAPIリクエストを行います:

  1. ユーザーがApple Payボタンで決済を開始したときに、AppleからApple Payトークンを取得します。
  2. Omise.jsを使用して、Apple PayトークンからカードトークンをOmiseで作成します。
  3. ステップ2で取得したカードトークンを使用して課金を作成します。
  4. 課金完了のWebhookイベントを受信した後、課金を取得してステータスを確認します(オプションですが推奨)。

以下のシーケンス図は、カードトークンを取得する方法を示しています:

Apple Pay環境の設定

ウェブサイトまたはアプリケーションでApple Payをサポートするには、Apple PayのウェブおよびアプリAPIを使用する前に、いくつかのセットアップ手順を完了する必要があります。Omiseは以下のオプションを提供しています。

オプションサポート対象
1. OmiseのApple開発者アカウントを使用ウェブのみ

OmiseのApple開発者アカウントを使用

提供されるOmiseマーチャント識別子を使用して、Apple開発者アカウントを作成することなく、ウェブサイトでApple Payを有効化できます。この方法はウェブ統合のみをサポートしています。

以下の手順に従って、Apple PayマーチャントIDとマーチャントID証明書を取得し、Apple Payウェブ統合のためにドメインを検証します。

Apple PayマーチャントIDとAppleマーチャントID証明書の取得

OmiseダッシュボードからAppleマーチャントIDとAppleマーチャントID証明書を取得できます。

Omise証明書ダッシュボード

証明書の有効期限

マーチャントID証明書は、マーチャントIDに関連付けられたTLS(Transport Layer Security)証明書で、Apple Payサーバーとのセッションを認証するために使用されます。サービスの中断を防ぐため、現在の証明書の有効期限が切れる前に、ウェブサイトの詳細を使用して新しい証明書をダウンロードしてください。

Omiseでウェブドメインを検証

Apple Payボタンを表示するマーチャントドメインをOmiseに登録します。support@omise.coにメールを送信してドメイン関連付けファイルを受け取り、このファイルをウェブサイトのhttps://[DOMAIN_NAME]/.well-known/apple-developer-merchantid-domain-associationにホストしてください。その後、Omiseがドメインの検証を進めます。

ドメイン検証

Apple Payのドメイン検証については、Apple Pay - サーバーの設定を参照してください。ドメインは、プロキシやリダイレクトなしでAppleサーバーから直接アクセス可能である必要があります。すべてのトップレベルドメイン(例:omise.co)とサブドメイン(例:shop.omise.co)を個別に登録して検証してください。

SSL証明書を有効期限前に更新した場合、Appleはドメイン検証を自動的に維持します。ただし、証明書の有効期限が切れた場合は、Omiseでドメインを再検証する必要があります。

Apple Payトークンの取得

設定が完了したら、ウェブサイトにApple Payボタンを追加して、Apple Payトークンを受け取ることができます。

Apple Pay開発者ドキュメントに従って、Apple Payボタンをレンダリングし、Apple APIと統合して、Apple Payトークンを受け取ってください:

決済リクエストでは、以下のフィールドがこれらのガイドラインに従っていることを確認してください:

  • フィールドsupportedNetworksは、Capability APIからサポートされているカードブランドを反映する必要があります。
  • フィールドmerchantIdentifierは、Apple PayマーチャントIDです。

その後、Apple Payからトークンを受け取ります。Apple Payトークンは5分以内に使用する必要があります。

{
"data": "...",
"signature": "...",
"header": {
"publicKeyHash": "...",
"ephemeralPublicKey": "...",
"transactionId": "..."
},
"version": "EC_v1"
}

カードトークンの作成

Apple Payトークンを受け取ったら、以下のトークン化パラメータを使用してカードトークンを作成します。

名前タイプ説明
methodstring必須applepay文字列に設定します。
datastring必須)Apple Payトークン。
merchant_idstring必須)AppleマーチャントID。
brandstring必須)選択されたカードブランド。(ウェブ
billing_namestringオプション、推奨)カード所有者名。
billing_citystringオプション、推奨)請求先住所の市区町村。
billing_countrystringオプション、推奨)請求先住所の国を2文字のISO 3166コードで指定。
billing_postal_codestringオプション、推奨)請求先住所の郵便番号。
billing_statestringオプション、推奨)請求先住所の都道府県。
billing_street1stringオプション、推奨)請求先住所の番地1。
billing_street2stringオプション)請求先住所の番地2。
billing_phone_numberstringオプション)請求先住所の電話番号。
請求先情報

デフォルトでは、カード所有者の名前と請求先住所はカードトークンに添付されず、名前はApple Payとして表示されます。この動作を変更するには、Appleへの決済リクエスト時に請求先連絡先フィールド(ウェブ)を指定してください。

カードトークンは10分以内に課金の作成に使用できます。

Omise.jsの場合、createToken関数の最初の引数としてトークン入力タイプをtokenizationに設定し、2番目の引数としてトークン化パラメータを送信します。

Omise.setPublicKey("your_omise_public_key");

tokenParameters = {
method: 'applepay',
data: '{"data":"Ls06CdzKeOXc1AtBgszMr8JF+DbIOj4LyQcQbVnC+RjihUa+SPwRcIVLzUwaFpHlM4atA3Ls2BXA2mg97WIECfnssAYRGWRcjyKtUqEfNR+tT7ztRCYVGIL4hdNMqTNBk+xYPb6ztGIKzN5xPetcausII8oNnyRjC2vmLIlMojOFQUWdqJURrkyPkwpC7adx6EAXy4prId/ZhXBE10d0JZ0wInM1/Tg08rMsLQOob9qP+QrFmJ3Pc0QFDLT/kxuOz7xRYmv07tAd5QkTEQ4VvjxzPc80YcEYBti236m5NZ8x3iN+AD7ZmZ8vke/aGltywKaMrkVpVlmYdKd+eca6FjKMOvn80uXtRrnmO3Wu44b5OIQf/LODUFl4s0nWiho2xC8ZU9i3hSKUdQS9cJxjJJhAJhX3axM641Epf7F7jQ==","signature":"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","header":{"publicKeyHash":"vRQNoc2OWcP7vDrLcGZ8QMnUH784bNV+1mmh65Z/kx4=","ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7uNpkxQ6EFIKMQc/8o68mtrXACyiDGUPVYZUD7ZmtVTCoao41U0w12DdXnDb5HidaYbJzJtoFIr+3q6d4k/h3g==","transactionId":"ac06f094edb34a6fc568ed5847acca0076103f5fe49f5624f941dd420b574268"},"version":"EC_v1"}',
merchant_id: 'merchant.omise.sg.prod',
brand: 'Visa'
};

Omise.createToken('tokenization', tokenParameters, function(statusCode, response) {
console.log(response)
});

id属性はトークン識別子です(toknで始まります)。

課金の作成

受け取ったカードトークンでカードに課金するには、クレジットカード決済を参照してください。特定のトークン化方式(applepay)から生成されたカードトークンと通常のカードトークンには、いくつかの違いがあります:

  1. これらのカードトークンには、どのトークン化方式がカードに適用されたかを示すtokenization_methodフィールドがあります。
  2. これらのカードトークンは顧客APIで使用できません。

追加オプション

ビルド済み決済フォームを使用する場合、Apple Pay APIをより細かく制御するための追加設定オプションを設定できます。関連するパラメータは以下の通りです。

データ属性パラメータ説明
data-applepay-validation-urlapplepayValidationUrlサーバーを検証し、Apple Pay用のマーチャントセッションオブジェクトを取得するためのURL(本番トラフィックを受け入れる場合は必須)。
data-applepay-merchant-idapplepayMerchantIdApple PayのマーチャントID(本番トラフィックを受け入れる場合は必須)。
data-applepay-request-billing-addressapplepayRequestBillingAddressカード所有者の名前と請求先住所をカードトークンに添付するには、trueに設定します。これを指定すると、米国、英国、カナダのカード所有者の承認率が向上します。

サポートされているパラメータの完全なリストはこちらで確認できます。

マーチャント検証

チェックアウト時、ビルド済み決済フォームはdata-applepay-validation-url属性で指定された検証エンドポイントに自動的にPOSTリクエストを送信します。このリクエストには、onvalidatemerchantイベント中にAppleから提供されるvalidationURLが含まれます。

サーバーは、Appleマーチャント識別証明書を使用してAppleにマーチャントセッションオブジェクトをリクエストし、そのオブジェクトでレスポンスを返すことで、このリクエストを処理する必要があります。ビルド済みフォームは、completeMerchantValidation()メソッドを介してApple Payセッションを完了するために、このセッションオブジェクトを必要とします。

これを正しく実装するには、AppleのApple Pay決済セッションのリクエストガイドに従ってください。追加のコンテキストについては、マーチャント検証の提供を参照してください。

テスト

完全なユーザージャーニーを完了するには、Apple Walletをサポートするアカウントと課金可能なカードが必要です。テストモードでは、Appleサンドボックステスターアカウントを使用し、Appleが提供するテストカードのいずれかを添付することをお勧めします。

Omiseテストキーを使用してトークンと課金を作成し、成功した課金をシミュレートできます。カード番号はシステム内で常に4111 1111 1111 1111になります。OmiseテストキーでもApple Pay環境の設定プロセスが必要であることに注意してください。

関連リソース