как вызвать кошелек Apple из приложения iOS с помощью Swift

Я хочу отображать страницу добавления карт Apple Wallet всякий раз, когда пользователь нажимает кнопку добавления карт в кошелек в моем приложении ios. как вызвать Apple Wallet из приложения ios. Я включил возможности кошелька в своем приложении iOS, а также сгенерировал права кошелька для своего приложения. Как использовать PKAddPaymentPassViewControler с помощью swift. пожалуйста, дайте некоторое представление об этом


person vijju    schedule 27.06.2018    source источник


Ответы (1)


ПРИМЕЧАНИЕ. Только для эмитентов карт. Если вы хотите перенаправить пользователя для добавления способа оплаты, используйте openPaymentSetup метод. См. мой ответ здесь для более подробной информации.

Для эмитентов карт вам необходимо специальное разрешение, выданное Apple.

Ваше приложение должно включать это право, прежде чем вы сможете использовать этот класс. Дополнительную информацию о запросе этого права см. в разделе «Эмитенты карт» на странице developer.apple.com/apple-pay/.

Из этого ответа:

PKAddPaymentPassViewController требуется ключ разрешения com.apple.developer.payment-pass-provisioning для вашего приложения. Плохая новость заключается в том, что никто не может отправлять приложения с этим правом, поскольку для этого требуется специальное разрешение от Apple, которое, как я полагаю, зарезервировано для эмитентов карт, таких как банки и тому подобное. Если вы считаете, что соответствуете требованиям, вам необходимо связаться с Apple напрямую по адресу [email protected].

Вам необходимо реализовать методы делегата и инициализировать его конфигурацией.

import UIKit
import PassKit

class ViewController: UIViewController, PKAddPaymentPassViewControllerDelegate {

  override func viewDidLoad() {
    super.viewDidLoad()
    if (!PKAddPaymentPassViewController.canAddPaymentPass()){
      // use other payment method / alert user
    }
    let config = PKAddPaymentPassRequestConfiguration.init(encryptionScheme: PKEncryptionScheme.ECC_V2)
    let addPaymentPassVC = PKAddPaymentPassViewController.init(requestConfiguration: config!, delegate: self)
    self.present(addPaymentPassVC!, animated: true, completion: nil)
  }

  func addPaymentPassViewController(_ controller: PKAddPaymentPassViewController, generateRequestWithCertificateChain certificates: [Data], nonce: Data, nonceSignature: Data, completionHandler handler: @escaping (PKAddPaymentPassRequest) -> Void) {

  }

  func addPaymentPassViewController(_ controller: PKAddPaymentPassViewController, didFinishAdding pass: PKPaymentPass?, error: Error?) {
    // pass added
  }

}
person Scott Condron    schedule 05.07.2018
comment
Привет. У меня есть сомнения, если я хочу хранить данные карты пользователя в кошельке Apple, могу ли я получить разрешение от Apple или это нормально с добавлением прав в моем приложении. Когда пользователь нажимает кнопку добавления карт в моем приложении, он открывает приложение кошелька или настраивает страницу самостоятельно. Спасибо - person vijju; 16.07.2018
comment
Если я правильно вас понял, для добавления карт в Apple Pay нужны специальные разрешения. См. эту тему: forums.developer.apple.com/thread/13576 Вы бы не при самостоятельном создании страницы карта будет добавлена ​​из приложения Wallet или из области, управляемой Apple. - person Scott Condron; 16.07.2018
comment
Моя проблема в том, что когда пользователь нажимает кнопку добавления карт, он перенаправляется на Apple Wallet, чтобы добавить данные карты? Является ли это возможным? - person vijju; 17.07.2018
comment
привет. Я получил ошибку в self.present(addPaymentPassVC!, анимированный: true, завершение: nil), то есть Thread 1: Неустранимая ошибка: Неожиданно найден nil при разворачивании необязательного значения. addPaymentPassVC сохраняет нулевое значение. - person vijju; 06.08.2018
comment
initWithRequestConfiguration вернет nil, если у вас нет специального разрешения от Apple. - person Scott Condron; 06.08.2018
comment
См.: developer.apple.com/documentation/passkit/apple_pay/. - person Scott Condron; 06.08.2018
comment
У меня уже есть сертификат Apple Pay, потому что я использовал Apple Pay в качестве способов оплаты, а для обработки я использовал полосу, поэтому во время создания сертификата обработки платежей я загружаю .certSigningRequest из полосы и отправляю его в него. так это нормально? - person vijju; 06.08.2018
comment
Я снова создал сертификат обработки платежей Apple Pay, но он показывает нулевое значение. - person vijju; 07.08.2018
comment
Я добавил редактирование с более подробной информацией о необходимом ключе прав. Он зарезервирован для эмитентов карт. Если вы просто хотите создать платеж, - person Scott Condron; 07.08.2018
comment
Также см. здесь: stackoverflow.com/questions/50436058/. Вы можете протестировать push-подготовку к рабочей среде только с помощью testflight или appstore. Вы можете запросить среду для песочницы на своем устройстве у Apple. Они могут включить QA env на вашем устройстве, установив профиль. Затем вы также можете протестировать push-подготовку в QA env. - person Scott Condron; 07.08.2018
comment
Я добавил редактирование, которое ссылается на комментарий для людей, которые не являются эмитентами карт, но хотят предложить пользователю добавить карту. - person Scott Condron; 07.08.2018
comment
Мы не выдаем карты ни одному пользователю. Просто мы хотим предоставить пользователю доступ для хранения данных карты в Apple Wallet, когда пользователь нажимает кнопку добавления карты в кошелек. В этом случае мы можем использовать этот класс или мы можем получить разрешение от Apple - person vijju; 08.08.2018
comment
Вы можете использовать PKPaymentButton, просто включив Apple Pay для своего идентификатора приложения в Xcode. В моем ответе есть фрагмент кода, на который я ссылаюсь. Пожалуйста, отметьте этот ответ как правильный сейчас. - person Scott Condron; 08.08.2018