8 - Multiseller
Configure o SDK Tap to Pay iOS para operar com múltiplos sellers em runtime, sem necessidade de reconfigurar o setConfig a cada troca.
Configure o SDK Tap to Pay iOS para operar com um seller fixo (single-seller) ou alternar entre sellers em runtime (multiseller).
Disponível a partir da versão 3.4.9 do SDK iOS.
O seller é fixo nas credenciais do setConfig. Ideal quando o app opera com um único vendedor.
O seller é informado em cada initialize e pode ser alterado em runtime sem novo setConfig.
Para o fluxo geral de configuração e inicialização, veja Configuração e Inicialização.
setConfig e credenciais
TapOnPhoneCredentials aceita o parâmetro seller como opcional (padrão nil):
public init(
marketplace: String,
seller: String? = nil,
accessKey: String
)| Modo | Valor de seller no setConfig | Comportamento |
|---|---|---|
| Multiseller | nil, omitido, string vazia ou só espaços | O SDK trata como ausência de seller na configuração. O seller efetivo é definido no initialize. |
| Single-seller | ID do seller recebido no onboarding | O seller é fixo para toda a sessão. |
initialize(sellerId:)
O método initialize aceita um sellerId opcional que define o seller da sessão:
public static func initialize(
sellerId: String? = nil,
onSuccess: @escaping () -> Void,
onError: @escaping (ErrorResponse) -> Void,
onEvent: @escaping (ApplicationEvent) -> Void
)Regras por modo
Multiseller
sellerIdé obrigatório (valor não vazio após trim)- Sem ele, o SDK retorna o erro
sellerNotProvidedOnInit(6108) - Cada chamada a
initializecom outrosellerIdválido atualiza a sessão para aquele seller (token/sessão são renovados internamente)
Single-seller
sellerIdpode ser omitido ounil— o SDK usa o seller dosetConfig- Passar o mesmo seller do
setConfigé válido (redundante) - Passar um seller diferente retorna o erro
sellerNotAllowedOnInitialize(6109)
Tabela de combinações
| Modo | seller no setConfig | sellerId no initialize | Resultado |
|---|---|---|---|
| Multiseller | nil ou string vazia | omitido, nil ou string vazia | ❌ Erro sellerNotProvidedOnInit (6108) — seller obrigatório no initialize |
| Multiseller | nil ou vazio | preenchido | ✅ Válido — seller da sessão é o informado no initialize. Novas chamadas com outro ID atualizam o seller |
| Single-seller | preenchido | omitido, nil ou vazio | ✅ Válido — seller da sessão é o do setConfig |
| Single-seller | preenchido | igual ao seller do setConfig | ✅ Válido (redundante; se o dispositivo já estiver pronto para o mesmo seller, o SDK pode encerrar cedo) |
| Single-seller | preenchido | diferente do seller do setConfig | ❌ Erro sellerNotAllowedOnInitialize (6109) — altere o seller com novo setConfig |
Códigos de erro
| Código | Nome | Descrição |
|---|---|---|
| 6108 | sellerNotProvidedOnInit | Multiseller ativo, mas sellerId não foi informado no initialize. Passe um seller válido. |
| 6109 | sellerNotAllowedOnInitialize | Single-seller ativo e o sellerId informado é diferente do configurado no setConfig. Use o mesmo seller ou reconfigure com setConfig. |
Exemplo completo (multiseller)
// 1. Credenciais sem seller (ativa o modo multiseller)
let credentials = TapOnPhoneCredentials(
marketplace: "{MARKETPLACE-ID}",
seller: nil,
accessKey: "{ACCESS-KEY}"
)
// 2. Configuração do SDK
TapOnPhone.setConfig(
configParameters: ConfigParameters(
credentials: credentials,
environment: .sandbox
)
)
// 3. Inicialização com o seller desejado
TapOnPhone.initialize(
sellerId: "{SELLER-ID}",
onSuccess: {
print("Sessão iniciada para o seller informado")
},
onError: { error in
print("Erro: \(error)")
},
onEvent: { event in
print("Evento: \(event)")
}
)Com
environment: .sandbox, o iPhone precisa estar com a conta sandbox da Apple como conta base do iCloud — criação e configuração.
Trocar de seller em runtime
Para alternar entre sellers sem reconfigurar o SDK, chame initialize novamente com o novo sellerId:
// Trocar para outro seller
TapOnPhone.initialize(
sellerId: "{OUTRO-SELLER-ID}",
onSuccess: {
print("Sessão atualizada para o novo seller")
},
onError: { error in
print("Erro ao trocar seller: \(error)")
},
onEvent: { event in
print("Evento: \(event)")
}
)O SDK renova automaticamente o token e a sessão para o novo seller.
Updated about 24 hours ago
