Quando o carrinho tem vários itens e queres mostrar o valor no botão (config.showAmount: true), adicionas uma referência de pagamento por item.

Adicionar todas de uma vez

const button = facipay.generateButton({
  createOrder: async () => referenceNumber,
  options: {
    config: { showAmount: true },
  },
});

button.render('#facipay-button-container');

button.addAllPaymentReferences(cart.items.map((item) => ({
  referenceNumber: String(item.id),
  referenceDescription: item.name,
  referenceAmount: item.price,          // AOA, inteiro
  referenceQuantity: item.quantity,
  referenceTotalQuantity: item.stock_quantity,
})));

Adicionar uma a uma

button.addPaymentReference({
  referenceNumber: '123456789',
  referenceDescription: 'T-Shirt Wow Media',
  referenceAmount: 5000,
  referenceQuantity: 1,
  referenceTotalQuantity: 20,
});

Atualizar quantidade

Quando o cliente muda a quantidade no carrinho, mantém o botão sincronizado:
async function onQuantityChange(item, newQuantity) {
  await updateCartOnServer(item.id, newQuantity);
  facipay.button.updateQuantity(String(item.id), newQuantity);
}

Via atributos HTML

Para um único item, podes declarar a referência no próprio container:
<div id="facipay-button-container"
     data-single-reference-number="123456789"
     data-single-reference-amount="5000"
     data-show-amount="true">
</div>
referenceAmount é inteiro em AOA, sem decimais. O total mostrado no botão é a soma de referenceAmount × referenceQuantity de todas as referências.

Próxima receita: Tratamento de erros

Erros, estados de loading e popups bloqueados.