WWDC Quick Look 💓 By SwiftGGTeam
What's new in Wallet and Apple Pay

What's new in Wallet and Apple Pay

元の動画を見る

ハイライト

Apple は、Apple Pay Later 分割払い、事前承認された支払い、資金移動、注文追跡の改善、Tap to Present ID 機能など、Wallet と Apple Pay にいくつかのアップデートを導入し、開発者により豊富な支払い API と認証 API を提供しています。

主な内容

Apple Pay Later

Apple Pay Later を使用すると、ユーザーは購入を 4 回に分割して支払うことができます。開発者は、Apple Pay Later マーケティング ビューをアプリや Web サイトに統合して、ユーザーに分割払いオプションを提示できます。

import PassKit

// 检查用户是否符合 Apple Pay Later 条件
let isEligible = PKPayLaterUtilities.validate(amount: 100.0, currency: "USD")

// 创建 Apple Pay Later 视图
let payLaterView = PKPayLaterView(amount: 100.0, currency: "USD")
payLaterView.displayStyle = .standard
payLaterView.action = .learnMore

キーポイント:

  • PKPayLaterUtilities.validateユーザーが分割払い条件を満たしているかどうかを確認するために使用されます
  • PKPayLaterView標準、バッジ、チェックアウト、価格の 4 つの表示スタイルが提供されます
  • action属性オプションの learnMore または calculator

事前承認された支払い

事前承認された支払いにより、販売者は特定の条件下でユーザーの口座から引き落としを行うことができます。次の 3 つのタイプがサポートされています。

  • 定期的な支払い: 定期的な支払い
  • 自動リロード: 自動リチャージ
  • 後払い: 後払い
import PassKit

// 创建延期付款请求
let deferredItem = PKDeferredPaymentSummaryItem(label: "Hotel Booking", amount: 200.0)
deferredItem.deferredDate = Date(timeIntervalSinceNow: 86400 * 7) // 7天后扣款

let request = PKDeferredPaymentRequest(deferredPaymentSummaryItem: deferredItem)
request.freeCancellationDate = Date(timeIntervalSinceNow: 86400 * 3) // 3天内免费取消

let paymentRequest = PKPaymentRequest()
paymentRequest.deferredPaymentRequest = request

キーポイント:

  • PKDeferredPaymentSummaryItem後払いの金額と日付を定義する
  • freeCancellationDate無料キャンセル期間を設定する
  • 事前承認された支払いでは、デバイスの代わりに Apple ID にバインドされたマーチャント トークンが使用されます

資金移動

Apple Pay を使用した資金移動により、ユーザーは自分のアカウントから Wallet のカードに資金を移動できます。

import PassKit

// 检查是否支持资金转账
let supportsDisbursements = PKPaymentAuthorizationController.supportsDisbursements(
    networks: [.visa, .masterCard],
    capabilities: .debit
)

// 创建转账请求
let summaryItem = PKPaymentSummaryItem(label: "Withdrawal", amount: 100.0)
let disbursementItem = PKDisbursementSummaryItem(label: "Amount Received", amount: 95.0)

let request = PKDisbursementRequest(
    merchantIdentifier: "merchant.com.example",
    currencyCode: "USD",
    region: "US",
    summaryItems: [summaryItem, disbursementItem]
)

let controller = PKPaymentAuthorizationController(disbursementRequest: request)
controller.delegate = self
controller.present()

キーポイント:

  • PKDisbursementRequest資金移動リクエストの作成に使用されます
  • 最初の集計項目は、ユーザー アカウントから引き落とされる金額を表します
  • 最後の集計項目は、ユーザーが実際に受け取った金額を表す必要があります

注文追跡

ウォレット注文追跡機能が強化され、より多くの注文詳細とシステム統合がサポートされるようになりました。

import FinanceKit

// 检查订单是否存在
let financeStore = FinanceStore.shared
let exists = try await financeStore.containsOrder(withIdentifier: "order-123")

// 保存订单到 Wallet
let orderData = try JSONEncoder().encode(signedOrderPackage)
let result = try await financeStore.saveOrder(orderData)

switch result {
case .added:
    print("Order added to Wallet")
case .cancelled:
    print("User cancelled")
case .newerExists:
    print("Newer order already exists")
}

キーポイント:

  • FinanceStore.shared注文追跡のための中央リソースを提供します
  • containsOrder注文がすでに存在するかどうかを確認する
  • saveOrder注文を保存し、ユーザーの操作結果を返す

Tap to Present ID

「Tap to Present ID」を使用すると、iPhone アプリが NFC および Bluetooth 経由で Wallet 内の ID を認証できるようになります。

import ProximityReader

// 检查设备是否支持
 guard MobileDocumentReader.isSupported else { return }

// 创建读取器
let reader = MobileDocumentReader()
let session = try await reader.prepare()

// 创建年龄验证请求
let request = MobileDriversLicenseDisplayRequest(elements: [.ageAtLeast(21)])
try await session.requestDocument(request)

キーポイント:

  • MobileDocumentReaderモバイル運転免許証の読み取りに使用されます
  • MobileDriversLicenseDisplayRequest表示リクエストの作成 -年齢認証と本人確認をサポート

##詳細

Apple Pay Laterのマーケティングビュー

SwiftUI で PayLaterView を使用する:

import PassKit

struct ContentView: View {
    var body: some View {
        PayLaterView(amount: 299.99, currency: "USD")
            .payLaterViewStyle(.standard)
            .payLaterViewAction(.calculator)
    }
}

データリクエスト

let session: MobileDocumentReaderSession = /* ... */

var request = MobileDriversLicenseDataRequest()
request.retainedElements = [.givenName, .familyName, .dateOfBirth, .portrait]
request.nonRetainedElements = [.address, .documentExpirationDate, .drivingPrivileges]

let response = try await session.requestDocument(request)
self.processResponse(response.documentElements)

重要ポイント

  • やるべきこと: Apple Pay Later マーケティング ビューを e コマース アプリに統合します

  • 価値がある理由: コンバージョン率を向上させ、分割払いオプションについてユーザーを教育します

  • 開始方法: を使用しますPKPayLaterViewまたはPayLaterView、金額と通貨を設定します

  • やるべきこと: 事前承認された支払い機能を実装する

  • 実行する価値がある理由: サブスクリプション、予約、その他のシナリオに適しています

  • 開始方法: 作成するPKDeferredPaymentRequest、支払い日とキャンセルポリシーを設定します

  • やるべきこと: 注文追跡機能を追加する

  • 実行する価値がある理由: ユーザー エクスペリエンスを向上させ、ユーザーがウォレットで注文を追跡できるようにします

  • 開始方法: FinanceKit の使用FinanceStoreAPI の保存順序

関連セッション

コメント

GitHub Issues · utterances