SDK iOS
Instale o SDK iOS da DEUNA e integre os fluxos de pagamento modal, embutido, carteira e próximo passo.
Nesta página
- Instalação
- Inicialização
- Abra o Widget de Pagamento em um modal
- Experiências disponíveis
- Incorpore um widget com SwiftUI
- Armazenamento de Pagamentos e Pagamento com Clique
- Apple Pay nativo
- Continue uma ação pendente
- Abra um cupom
- Dados de dispositivos para prevenção de fraudes
- Referência do ciclo de vida e callbacks
- Exemplos e código-fonte oficiais
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:
https://github.com/deuna-developers/deuna-sdk-iosSelecione o módulo principal DeunaSDK produto. No arquivo de manifesto do pacote, adicione o produto às suas dependências:
.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:
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.
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:
DeunaSDK.initialize(
environment: .sandbox,
publicApiKey: "YOUR_PUBLIC_API_KEY"
)
let deunaSDK = DeunaSDK.sharedAbra o Widget de Pagamento em um modal#
Crie callbacks de tipo e passe o token de pedido retornado pelo seu backend:
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ência | Método | Entrada importante |
|---|---|---|
| Checkout completo | initCheckout(...) | orderToken, CheckoutCallbacks |
| Widget de pagamento | initPaymentWidget(...) | orderToken, PaymentWidgetCallbacks |
| Cofre de Pagamentos | initElements(...) | ElementsCallbacks; types pode ser omitido |
| Clique para pagar | initElements(...) | types: [["name": ElementsWidget.clickToPay]] |
| Próxima Ação | initNextAction(...) | Token para o pedido que requer uma ação adicional |
| Voucher | initVoucher(...) | 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.
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.
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.
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.
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:
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.
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#
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.
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étodo | Utilize-o para |
|---|---|
onSuccess | Atualize a interface após a conclusão da experiência. |
onError | Lide com um tipo de PaymentsError ou ElementsError. |
onClosed | Diferencie o fechamento controlado pelo cliente e pelo SDK. |
onEventDispatch | Monitore os eventos de ciclo de vida suportados para checkout ou Elements. |
onCardBinDetected | Reaja à detecção do BIN do cartão. |
onInstallmentSelected | Reaja à seleção de um plano de parcelamento. |
onPaymentProcessing | Impede 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.