generateButton() devolve um objeto Button. Renderiza-o com .render() e controla-o com os métodos abaixo.
Referência baseada na implementação JavaScript atual (Button.js), a fonte autoritativa.
const button = facipay.generateButton({ /* ... */ });
button.render('#facipay-button-container');

Ciclo de vida

render(container)
void
Renderiza o botão. container pode ser um seletor ('#facipay-button-container') ou um elemento DOM. Lança Error('Container not found') se o elemento não existir. Aguarda a validação da chave antes de mostrar o botão.
update(newOptions)
void
Funde novas opções nas atuais (Object.assign) e re-renderiza o botão.
destroy()
void
Remove o botão e limpa o container.
enable()
void
Ativa o botão.
disable()
void
Desativa o botão.

Referências de pagamento

Usadas para mostrar o valor no botão e suportar vários itens. Ver Referências múltiplas.
addPaymentReference(ref)
void
Adiciona uma referência de pagamento e recalcula o total.
addAllPaymentReferences(refs)
void
Substitui o conjunto de referências por uma lista (ignora entradas sem referenceNumber) e recalcula o total.
removePaymentReferenceNumber(referenceNumber)
void
Remove a referência com o referenceNumber indicado e recalcula o total.
updateQuantity(referenceNumber, quantity)
void
Atualiza a quantidade de uma referência existente (valida contra referenceTotalQuantity) e recalcula o total.
getTotalAmount()
number
Soma referenceAmount × referenceQuantity de todas as referências.
Cada referência tem o shape:
{
  referenceNumber: string;        // id único
  referenceAmount: number;        // preço unitário (AOA, inteiro)
  referenceQuantity: number;      // quantidade
  referenceTotalQuantity: number; // stock disponível (limite do updateQuantity)
}
button.addAllPaymentReferences(cart.items.map((item) => ({
  referenceNumber: String(item.id),
  referenceAmount: item.price,
  referenceQuantity: item.quantity,
  referenceTotalQuantity: item.stock_quantity,
})));

Cliente

addCustomerInfo(info)
void
Define os dados do cliente ({ name, phone }), tipicamente dentro de onClick.
facipay.button.addCustomerInfo({ name: 'Pascoal Luís', phone: '947554613' });

Objetos actions

A SDK passa um objeto actions diferente conforme o callback:
Callbackactions disponível
onInit(actions)enable(), disable()
onClick(data, actions)enable(), disable(), reject()
onApprove(data, actions) / onPending(data, actions)onPopupWindowClosed(cb)
actions.enable() / actions.disable()
function
Ativam/desativam o botão (em onInit e onClick).
actions.reject()
function
Interrompe a sequência do botão neste clique (em onClick) — o popup não abre.
actions.onPopupWindowClosed(cb)
function
Regista uma função a correr quando o popup fecha (em onApprove/onPending).

Próximo passo: Eventos

Comunicação por postMessage entre o popup e a tua página.