Implement Apple Pay and order tracking
こんにちは。私の名前はケイティです。
Apple Payと注文追跡の実装に関するこのセッションへようこそ。
今日の議題を見てみましょう。まず、Apple Payを使い始めるために必要な基本を説明します。
次に、支払いリクエストを作成し、支払いシートの変更に対応する方法を紹介します。
ユーザーが注文を追跡できるように、支払いフローの最後に注文の詳細を追加することもできます。注文の詳細により、Walletは注文したパッケージを取得できます。
構築方法を紹介します。最後に、注文を更新する方法を紹介します。では、始めましょう。Apple Payは、簡単で安全でプライベートな支払い方法です。
ウェブサイトやアプリの開発者であれば、Apple Payを使ってコンバージョンとユーザーエクスペリエンスを向上させることができます。
始めるために作成する2つの必須項目があります。
1つ目は、支払いを受け入れることができるマーチャントとしてあなたを一意に識別する識別子です。
1つを作成するには、Apple Developerポータルの識別子セクションに進んでください。
従来のフォーマットは、「マーチャント」という言葉で始まる逆DNSです。
スパイシーな新しいマーチャント識別子を使用して、支払い処理証明書を作成します。
非常に簡潔に言えば、Apple Payは登録されたマーチャント識別子と公開証明書で各ペイロードを暗号化します。
このペイロードは、あなたの側で復号化して処理することができます。
その後、支払いが成功したか失敗したかを返すことができます。支払いの処理の詳細については、支払いサービスプロバイダーに相談してください。
アプリとウェブサイト間でApple Payを設定するには、さまざまな手順があります。
アプリで使用するためにApple Payを設定するには、Xcodeの[署名と機能]タブに移動し、Apple Pay機能の下にマーチャント識別子を追加するだけです。
ウェブサイトを構築していて、そこでApple Payを設定したい場合は、いくつかの追加の手順が必要です。Apple Payトランザクションを処理するドメインを登録する必要があります。
これは、Apple Developerポータルの識別子セクションで行うことができます。
そこにいる間に、以前に作成したマーチャント識別子にリンクされたApple PayマーチャントID証明書を作成できます。
この証明書は、Apple Payサーバーにセッションを認証するために使用されます。
アプリやウェブを統合する場合でも、電子商取引プラットフォームや決済サービスプロバイダーと連携している場合は、これらの手順の一部を簡素化する可能性があるため、特定の指示を確認してください。
では、Apple Payを実際に実装する方法を見てみましょう。
Apple Pay関連のコンテンツを表示する前に、ユーザーが現在の設定で支払いを行うことができるかどうかを確認する必要があります。
機能は、3Dセキュアカードやクレジットカードやデビットカードなど、シートが現在受け入れることができる支払いの種類を示します。
後で、支払い要求を設定するときに受け入れる機能を指定します。
現在利用できない場合、ユーザーはさらにカードを追加できることを覚えておいてください。
ユーザーが支払いができることがわかったので、Apple Payボタンを表示する時が来ました。ユーザーが実行する必要があるアクションに合わせて、最適なアクション呼び出しとボタンタイプを選択してください。
Apple Payボタンを目立つように、折り目の上、そして最初の支払いオプションとして表示します。
Apple Payボタンは完全にローカライズされており、ユーザーの設定にも適応できます。
UIKitでアプリにApple Payボタンを表示するには、まずPKPaymentButtonを作成し、ボタンの種類とスタイルを指定します。
タイプは、支払いの種類を説明しています。例えば、Apple Payで寄付するか、Apple Payで続行します。スタイルは、明るいか暗いかなど、ボタンの外観を制御します。
ボタンの自動スタイルを使用して、ユーザーの設定に基づいて動的に変更します。ウェブでは、JavaScriptのApple Payボタンを使用してください。
1つを追加するには、まず、コンテンツ配信ネットワークのWebページにボタンスクリプトをロードします。
JavaScript Apple Payボタンでは、タイプ、スタイル、ローカリゼーションを指定することもできます。
CSSを使用して、ボタンの寸法をさらにカスタマイズすることもできます。
支払いシートが何を期待するかを知るために、支払い要求を作成する必要があります。
アプリでは、PKPaymentRequestを作成することでそれを行うことができます。
ニーズに応じてリクエストで設定できるフィールドはたくさんありますが、必須項目には、以前に作成したマーチャント識別子、受け入れることができる支払いの種類、支払いの国と通貨コードが含まれます。
支払いを受け入れるネットワークを指定します。
これは、Apple Payとコバッチカードの優先ネットワークを選択するように、好みの順に行う必要があります。
最後に、要約項目はこの取引の一部として含まれています。
要約項目を詳しく見てみましょう。これを行うには、あなたがオンラインペット用品ショップを運営し、顧客にApple Payで注文をチェックアウトする機能を提供したいと想像できます。
これらの要約項目は、顧客が選択した項目の総費用から割引を差し引いた金額で構成されています。彼らは顧客にコストを分解するのに役立つはずです。
最後の要約項目は常に合計であり、この合計のラベルは支払いを受け取る会社でなければなりません。ここの配列には少なくとも1つの項目が設定されている必要があります。
これで、支払いシートを表示する準備が整いました。まず、PKPayment AuthorizationViewControllerを作成し、先ほど設定したリクエストを送信します。
あなたは、返されたviewControllerの提示を担当しています。
さて、私たちが設定しているこのデリゲートを見てみましょう。
PKPaymentAuthorization ViewControllerDelegateは、ユーザーが新しい電子メールアドレスを選択したときやトランザクションを承認するときなど、シートが変更をあなたに伝える方法です。適切な変更に対応する必要があります。
ただし、支払いシートを却下する責任は常にあり、これを処理するためにpaymentAuthorizationViewControll erDidFinishを実装する必要があります。
問題を解決するのに役立つ有用な説明を添えて、常にできるだけ早くユーザーにエラーを返すようにしてください。
たとえば、ユーザーの新しい配送先住所に問題がある場合は、PKPaymentRequest ShippingContactUpdateの一部としてエラーを返す必要があります。
didAuthorizePaymentは、ユーザーが詳細に満足し、Face ID、Touch ID、またはパスコードを使用して取引を進めるときに呼び出されます。
自分で送信されたPKPaymentを処理するか、支払い処理業者に渡す必要があります。
適切な結果でハンドラーを呼び出す必要があります。iOS 16では、SwiftUIでApple Payボタンを簡単に作成する機能を導入しました。
Apple Payで支払うボタンを作成するときに支払い要求を渡すだけで、ユーザーがボタンを操作すると支払いシートが自動的に表示されます。
ボタンのタイプ、およびオプションでスタイルも設定できます。
支払い承認の変更は、前のスライドで見た代理人に似ています。ユーザーの更新に対応する方法を見てみましょう。
ユーザーが支払いを承認したばかりで、支払い承認フェーズの変更により、アプリにこのアプリが通知され、支払い情報をサーバーに送信し、支払いを処理するように求められます。
サーバーの結果が成功を示しているかどうかを確認し、サーバーから返されたエラーを処理し、適切なエラーで結果ハンドラを呼び出すようにします。
サーバーの結果が成功を示している場合は、適切な承認結果で支払いを完了します。
返送する結果には、支払いを処理しようとしたときに起こったことが含まれている必要があります。
たとえば、住所が無効な場合などです。
ほとんどの場合、支払いは成功または失敗します。
支払いが失敗した場合は、重要度順に1つ以上のエラーを返すこともできます。
それはユーザーに表示され、再度取引を試みることができます。
この承認結果には、オプションで注文の詳細を含めることができ、まもなく検討します。
それでは、ウェブ上でこれを行う方法を見てみましょう。
W3C支払い要求APIは、ウェブ上で支払いを処理できるオープンスタンダードです。
PaymentRequestオブジェクトを作成し、Apple Payが利用可能であることを指定できる方法、合計や配送方法などのトランザクションに関する情報を含む詳細、およびユーザーに提供したい情報を指定するオプションを入力することができます。
サーバーでマーチャント検証を完了する必要があるため、新しいマーチャントセッションを作成し、完全な機能に渡します。
ネイティブと同様に、ユーザーが支払いシートで行うインタラクションに応答することができ、ユーザーが認証したときに支払い応答を処理する必要があります。
皆さんがApple Payと統合したので、私たちは実際に注文を作り始めることができます。
iOS 16では、注文追跡を導入しました。
顧客は、ウォレットアプリ内から注文の詳細と追跡情報を確認できるようになりました。
彼らは、いつ注文を受け取ることができるか、注文が配達されたかどうか、問題があったかどうか、または通知を受け取ったかどうかを即座に知ることができます。
ペットショップのビジネスをApple Payとうまく統合したので、注文追跡を追加することもできます。やり方を見てみましょう。
注文を始めるのは、Apple Payの設定に似ていることに気付くでしょう。
開発者ポータルの識別子セクションに戻り、注文タイプ識別子を作成します。
これにより、組織は注文情報を提供するエンティティとして識別されます。マーチャント識別子と同様に、今回は「順序」という単語の前に、同様の逆DNSスタイルの命名スキームを使用することをお勧めします。
次に、開発者ポータルの証明書セクションから注文タイプID証明書を作成します。
証明書を使用して、注文パッケージを作成し、注文を更新し、通知を送信します。
それを設定したので、Apple Payの購入フロー内からWalletに注文を追加できます。
これを行うには、以前から認識すべき簡単な支払い処理フローを振り返ってみましょう。
私たちはあなたのサーバーが処理のために支払い情報を送信していることをすでに知っています。
支払いが正常に処理された場合、サーバーは注文を作成する必要があります。
返送した結果の注文追跡をサポートするには、作成した注文に関する詳細も含める必要があります。
これらの注文の詳細により、デバイスはサーバーから非同期に注文を要求できます。
その後、サーバーは注文パッケージをデバイスに回し、ウォレットに表示されます。
とりあえず、PKPaymentの承認結果の一部として返品する必要がある注文の詳細を詳しく見てみましょう。
注文の詳細は4つのフィールドで構成されています。
注文タイプ識別子は、単に以前に作成したものです。
注文を識別する方法を生成する必要がありますが、注文タイプ識別子の範囲内で一意である必要があります。
ウェブサービスのURLを含めてください。
最後に、サーバーは安全な認証トークンを生成する必要があります。
これは、ユーザーのデバイスとサーバーの間で共有された秘密です。
デバイスは、注文パッケージをリクエストするときに、このトークンを使用して自分自身を認証します。
この例は当初、先ほど見た通常の支払い承認フローと非常によく似ています。注文の詳細を追加しましょう。
まず、serverResultから取得し、PKPaymentOrderDetailsオブジェクトを作成し、注文タイプID、注文ID、WebサービスURL、および認証トークンを設定します。
これをPKPaymentの承認結果に割り当てます。ウェブ上では、W3C支払いリクエストAPIを使用して注文の詳細を追加するのも簡単です。
以前と同様に、サーバーの結果から注文の詳細を抽出します。
これらの注文の詳細と、支払いを完了したデータを返します。
注文の詳細がデバイスに返送された後、それらの詳細はユーザーの各デバイス間で同期されます。
各デバイスは、サーバーから注文パッケージを要求し、注文の詳細を提供します。
注文の詳細と一緒に送信したトークンと照合して、認証トークンを確認します。
認証トークンが一致すれば、注文パッケージをデバイスに返送します。
これで、注文はそのデバイスのウォレットに表示する準備が整いました。
デバイスが要求するとすぐに利用可能になるように、できるだけ早く注文を修復する必要があります。
サーバーが注文を返さなかった場合、デバイスは指数関数的なバックオフで複数の再試行を試みます。
私たちは今、この注文パッケージが何度も参照されているのを見てきましたが、それは正確に何で構成されていますか?
注文は注文パッケージとして配布されます。
注文をユーザーに表示し、それがあなたからであることを証明するために必要なすべてが含まれています。
注文パッケージには、注文、ロゴなどの画像、注文の各アイテムのインライン画像を説明するJSON辞書が含まれています。
画像の作成に関するガイダンスについては、ヒューマンインターフェースガイドラインと紹介ソースを参照してください。
また、文字列ファイルなどのローカライズされたリソースも含めます。
合計注文サイズに目を光らせ、関連するもののみを含めてください。
このコンテンツはすべて、「マニフェスト」と呼ばれる別のJSON辞書に記載されています。
あなたはそれを目次のように考えることができます。注文パッケージ内のすべてのファイルへの参照が含まれています。
エントリのキーは相対ファイルパスであり、値はファイルのSHA256チェックサムであり、解析で使用されるものとは異なるチェックサムです。
今、私たちがする必要があるのは、その真正性を証明するためにパッケージに署名することです。
署名は、注文パッケージが信頼できるソースであるあなたから発信されたことを確認します。
これは、パースと同じ、マニフェストの切り離された暗号メッセージ署名です。注文タイプID証明書とApple Worldwide Developer Relations Intermediate証明書に関連付けられた秘密鍵でマニフェストに署名し、証明書の更新されたバージョンを使用することを確認してください。
注文の作成を完了するには、パッケージを圧縮し、ファイル拡張子を注文に変更するだけです。
さあ、注文を更新する時が来ました。
注文情報は時間の経過とともに変化することがよくあります。
たとえば、顧客が以前に作成したペットグッズの注文が進行中です。
自動更新をサポートすることで、この更新を迅速かつ安全に顧客に配信できます。
あなたの顧客は今、ウォレットにペット用品の注文を持っており、注文は更新のサポートを示しているので、デバイスはあなたのウェブサービスに登録されます。
後で、顧客の注文が配達されるようになったので、サーバーは登録情報を使用して登録されたすべてのデバイスに通知します。
お客様のデバイスがプッシュ通知を受信すると、サーバーから注文を求められます。
その後、サーバーは更新された注文パッケージをデバイスに返します。基本的な注文フローの仕組みがわかったので、注文の更新をサポートするために必要な正確な手順を分解しましょう。
まず、注文の更新をサポートしていることを示します。注文が更新をサポートしていることをWalletに伝えるのはとても簡単です。
注文パッケージに2つの情報を含めるだけです。
order.jsonに、ご希望のwebServiceURLを追加します。
これは、注文の詳細で提供したものと同じです。また、注文の更新を要求するときに、ウォレットがその真正性を証明するために使用するauthenticationTokenフィールドを追加します。
デバイスが登録から自分自身を追加または削除するように要求するときは、管理する必要があります。
サーバーは、登録情報の追加または削除を処理できる必要があります。
注文の更新に登録したデバイスを見つけることができる必要があります。
これにより、注文を更新するときにサーバーがこれらのデバイスに通知できるようになります。
サーバーは、どの更新された注文がそのデバイスに関連するかをサーバーが把握できるように、デバイスが登録した注文を見つけることができる必要があります。
この情報を構造化するにはさまざまな方法があります。
1つの方法は、デバイス用と注文用の2つのエンティティと、登録用の多対多の関係を持つリレーショナルデータベースを使用することです。
注文が更新されると、サーバーは登録されたデバイスに通知する必要があります。
したがって、サーバーは保存された登録情報に基づいて関連するデバイスを入手し、プッシュトークンを使用して各デバイスにプッシュ通知を送信する必要があります。
注文タイプIDはプッシュトピックとして倍増し、ペイロードは空である必要があります。
注文タイプID証明書を使用して、APNsと通信できます。
通知について注意すべきもう1つのことは、注文パッケージに列挙プロパティの変更通知を設定して、注文通知の配信方法をカスタマイズできることです。
利用可能なオプションは有効になっており、常に注文更新通知を送信し、デフォルト値です。
ウォレットに通知を複製したくない場合は、ユーザーが注文パッケージにリストされているアプリがインストールされている場合、通知を送信しないdisableIfAppInstalledを設定します。
登録されたデバイスは、それぞれサーバーが提供する新しい注文パッケージを要求します。
デバイスがプッシュ通知を受信すると、プッシュ通知が空であるため、どの注文が変更されたかはまだわかりません。
サーバーと一緒に、デバイスは最後にリクエストしてからどの注文が変更されたかを把握します。
サーバーに保存された登録情報を使用して、関連する注文を検索し、IDを返します。
更新時間を追跡し、応答に変更タグを含めて、将来のリクエストによって返される注文IDの数を制限します。
たとえば、タイムスタンプを使用できます。
値はデバイスに対して不透明です。
デバイスは、次回変更を要求するときに変更タグを提供します。
最後に、デバイスは、サーバーが示した注文ごとに最新のパッケージを要求します。
今日は多くのことを取り上げました。
可能な限り最高の顧客体験を提供するために、これらの慣行に従ってください。
Apple Payを実装するときは、製品またはカートのページにApple Payボタンを表示して、エクスプレスチェックアウトを提供します。
ユーザーは、支払いシートで配送オプションと住所を直接選択し、何も入力せずにチェックアウトできます。
注文追跡を実装するときは、顧客の好みに関する知識を使用して、関連するローカリゼーションのみを提供します。
さらに、注文パッケージのサイズを小さく保つために、含める資産の数に注意してください。
注文を更新するときは、更新を登録したデバイスに速やかに通知してください。
ウォレット内の注文は、注文の実際の状態と一致する必要があります。
注文追跡とApple Payボタンの表示については、ヒューマンインターフェースガイドラインも必ず確認してください。
今日は、建物を通じてApple Payの実装を開始し、注文を更新することを取り上げました。
この講演は、Apple Payと注文追跡の実装を紹介することを目的としていますが、セッションノートにリンクされているドキュメントをチェックして詳細を掘り下げる必要があります。
さらに、最新のWWDCビデオもチェックできます。今日はお時間をいただきありがとうございました。
そして、残りの一日を楽しんでください。
Apple Payと注文管理を実装する
コメント