Pular para o conteúdo principal
Nesta página

Utilize o SDK iOS da DEUNA para exibir a experiência completa de Checkout, Widget de Pagamento, Cofre de Pagamentos, Click to Pay, próxima etapa, voucher e Apple Pay nativo. O pacote principal suporta iOS 13 e versões mais recentes; o SwiftUI integrado oferece uma experiência unificada. DeunaWidget Requer iOS 14 ou posterior.

Instalação#

Gerenciador de pacotes Swift

No Xcode, selecione Arquivo → Adicionar dependências de pacote, insira o URL do repositório e especifique a versão da release:

Plain text
https://github.com/deuna-developers/deuna-sdk-ios

Selecione o módulo principal DeunaSDK produto. No arquivo de manifesto do pacote, adicione o produto às suas dependências:

Package.swiftSwift
.product(name: "DeunaSDK", package: "deuna-sdk-ios")

CocoaPods

Adicione a sub-especificação principal e fixe a versão do SDK de acordo com a sua política de lançamento:

PodfileRuby
pod 'DeunaSDK/Core', '~> 2.12'

Os frameworks de provedores de prevenção de fraude são opcionais. Adicione apenas os produtos ou subespecificações atribuídas à sua conta, como: DeunaSDK/Cybersource, DeunaSDK/Kount, DeunaSDK/Sift, DeunaSDK/Riskified, DeunaSDK/Signifyd, DeunaSDK/Accertify, ou DeunaSDK/MercadoPago.

Inicialização#

Crie uma instância do SDK com a chave de API pública para o ambiente selecionado e mantenha-a para a tela ou coordenador responsável.

Swift
import DeunaSDK

let deunaSDK = DeunaSDK(
  environment: .sandbox,
  publicApiKey: "YOUR_PUBLIC_API_KEY"
)

Para uma instância em toda a aplicação, inicialize e, em seguida, leia o SDK compartilhado:

Swift
DeunaSDK.initialize(
  environment: .sandbox,
  publicApiKey: "YOUR_PUBLIC_API_KEY"
)

let deunaSDK = DeunaSDK.shared

Abra o Widget de Pagamento em um modal#

Crie callbacks de tipo e passe o token de pedido retornado pelo seu backend:

Swift
let callbacks = PaymentWidgetCallbacks(
  onSuccess: { order in
    deunaSDK.close()
    showConfirmation(order)
  },
  onError: { error in
    showRetry(error)
  },
  onClosed: { action in
    showCart(action)
  },
  onPaymentProcessing: {
    disablePayButton()
  },
  onEventDispatch: { event, payload in
    analytics.track(event, payload)
  }
)

deunaSDK.initPaymentWidget(
  orderToken: orderToken,
  callbacks: callbacks,
  language: "en"
)

Ligar close() para desativar o widget ativo. Chame dispose() quando o fluxo proprietário termina para liberar seu controlador e WebView.

Experiências disponíveis#

ExperiênciaMétodoEntrada importante
Checkout completoinitCheckout(...)orderToken, CheckoutCallbacks
Widget de pagamentoinitPaymentWidget(...)orderToken, PaymentWidgetCallbacks
Cofre de PagamentosinitElements(...)ElementsCallbacks; types pode ser omitido
Clique para pagarinitElements(...)types: [["name": ElementsWidget.clickToPay]]
Próxima AçãoinitNextAction(...)Token para o pedido que requer uma ação adicional
VoucherinitVoucher(...)Token para o pedido de voucher

O método iOS é chamado initVoucher, não initVoucherWidget.

Incorpore um widget com SwiftUI#

Em iOS 14 ou posterior, crie uma configuração tipada e renderize DeunaWidget. O SDK seleciona o controlador incorporado correto com base no tipo de configuração.

Swift
struct PaymentScreen: View {
  let deunaSDK: DeunaSDK
  let orderToken: String
  let callbacks: PaymentWidgetCallbacks

  var body: some View {
    let configuration = PaymentWidgetConfiguration(
      orderToken: orderToken,
      callbacks: callbacks
    )

    DeunaWidget(
      deunaSDK: deunaSDK,
      configuration: configuration
    )
  }
}

Uso CheckoutWidgetConfiguration, ElementsWidgetConfiguration, NextActionWidgetConfiguration, ou VoucherWidgetConfiguration para outras experiências.

Para um widget dentro de ScrollView, passe AutoResizeConfig(initialHeight: 150) para a configuração e lide com onScrollNeeded para que o campo de entrada permaneça visível acima do teclado.

Swift
DeunaWidget(deunaSDK: deunaSDK, configuration: configuration)
  .onScrollNeeded { points in
    scrollBy(points)
  }

Se sua aplicação possui o botão de pagamento, defina: hidePayButton: true na configuração e na chamada. deunaSDK.submit { result in ... } a partir da ação do botão.

Armazenamento de Pagamentos e Pagamento com Clique#

O Armazenamento de Pagamentos é a experiência padrão do Elements. Forneça um usuário autenticado userToken ou UserInfo para o cliente.

Swift
let elementsCallbacks = ElementsCallbacks(
  onSuccess: { credential in useSavedCredential(credential) },
  onError: { error in showRetry(error) },
  onClosed: { action in showPaymentMethods(action) },
  onEventDispatch: { event, payload in
    analytics.track(event, payload)
  }
)

deunaSDK.initElements(
  callbacks: elementsCallbacks,
  userInfo: DeunaSDK.UserInfo(email: "ada@example.com"),
  types: [["name": ElementsWidget.vault]],
  orderToken: orderToken
)

Uso ElementsWidget.clickToPay em vez de ElementsWidget.vault para o Click to Pay.

Apple Pay nativo#

Verifique tanto a configuração do comerciante quanto a capacidade do dispositivo antes de exibir o botão do Apple Pay. O SDK armazena o resultado.

Swift
let userInfo = DeunaSDK.UserInfo(email: "ada@example.com")
let params = GetWalletsAvailableParams(
  orderToken: orderToken,
  userInfo: userInfo
)

deunaSDK.getWalletsAvailable(params: params) { wallets, error in
  if let error {
    showWalletError(error)
    return
  }

  applePayButton.isHidden = !wallets.contains(.applePay)
}

Após a verificação de disponibilidade, inicie o Apple Pay a partir da ação do botão selecionando o aplicativo de carteira em initElements:

Swift
deunaSDK.initElements(
  callbacks: elementsCallbacks,
  userInfo: userInfo,
  types: [["name": WalletProvider.applePay.processorName.uppercased()]],
  orderToken: orderToken
)

A aplicação deve incluir a permissão do Apple Pay e um perfil de provisionamento contendo o identificador do comerciante. Consulte Apple Pague para a configuração completa.

Continue uma ação pendente#

Utilize o mesmo token de pedido quando a DEUNA informar que o pagamento requer um desafio ou redirecionamento 3DS suportado.

Swift
deunaSDK.initNextAction(
  orderToken: orderToken,
  callbacks: nextActionCallbacks
)

O SDK apresenta as URLs externas suportadas e retorna o controle para o widget. Utilize o estado de callback para a interface e um webhook verificado para a conclusão.

Abra um cupom#

Swift
deunaSDK.initVoucher(
  orderToken: orderToken,
  callbacks: voucherCallbacks
)

As chamadas de retorno (callbacks) para vouchers seguem o mesmo ciclo de sucesso, erro, fechamento e envio de eventos como as outras experiências de pagamento.

Dados de dispositivos para prevenção de fraudes#

O produto principal não depende de provedores de prevenção de fraude. Vincule apenas os produtos ou subespecificações de provedores que você utiliza, e então chame generateFraudId com a configuração atribuída à sua conta.

Swift
deunaSDK.generateFraudId(params: [
  "CYBERSOURCE": [
    "orgId": "YOUR_ORG_ID",
    "merchantId": "YOUR_MERCHANT_ID",
  ],
]) { fraudId in
  guard let fraudId else { return }
  sendFraudIdToBackend(fraudId)
}

Se o framework de provedor solicitado não estiver vinculado, o SDK pula esse provedor. Consulte Integrar impressão digital do dispositivo para a configuração específica do provedor.

Referência do ciclo de vida e callbacks#

Callback ou métodoUtilize-o para
onSuccessAtualize a interface após a conclusão da experiência.
onErrorLide com um tipo de PaymentsError ou ElementsError.
onClosedDiferencie o fechamento controlado pelo cliente e pelo SDK.
onEventDispatchMonitore os eventos de ciclo de vida suportados para checkout ou Elements.
onCardBinDetectedReaja à detecção do BIN do cartão.
onInstallmentSelectedReaja à seleção de um plano de parcelamento.
onPaymentProcessingImpede ações de pagamento duplicadas.
close()Feche a apresentação ativa, mantendo o controlador do SDK.
dispose()Libere o controlador e a WebView quando o fluxo terminar.

Exemplos e código-fonte oficiais#

Consulte WalletsScreen.swift para o Apple Pay nativo e EmbeddedScreen.swift para o ciclo de vida do SwiftUI.