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.

Single-seller

O seller é fixo nas credenciais do setConfig. Ideal quando o app opera com um único vendedor.

Multiseller

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
)
ModoValor de seller no setConfigComportamento
Multisellernil, omitido, string vazia ou só espaçosO SDK trata como ausência de seller na configuração. O seller efetivo é definido no initialize.
Single-sellerID do seller recebido no onboardingO 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 initialize com outro sellerId válido atualiza a sessão para aquele seller (token/sessão são renovados internamente)

Single-seller

  • sellerId pode ser omitido ou nil — o SDK usa o seller do setConfig
  • Passar o mesmo seller do setConfig é válido (redundante)
  • Passar um seller diferente retorna o erro sellerNotAllowedOnInitialize (6109)

Tabela de combinações

Modoseller no setConfigsellerId no initializeResultado
Multisellernil ou string vaziaomitido, nil ou string vazia❌ Erro sellerNotProvidedOnInit (6108) — seller obrigatório no initialize
Multisellernil ou vaziopreenchido✅ Válido — seller da sessão é o informado no initialize. Novas chamadas com outro ID atualizam o seller
Single-sellerpreenchidoomitido, nil ou vazio✅ Válido — seller da sessão é o do setConfig
Single-sellerpreenchidoigual ao seller do setConfig✅ Válido (redundante; se o dispositivo já estiver pronto para o mesmo seller, o SDK pode encerrar cedo)
Single-sellerpreenchidodiferente do seller do setConfig❌ Erro sellerNotAllowedOnInitialize (6109) — altere o seller com novo setConfig

Códigos de erro

CódigoNomeDescrição
6108sellerNotProvidedOnInitMultiseller ativo, mas sellerId não foi informado no initialize. Passe um seller válido.
6109sellerNotAllowedOnInitializeSingle-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.