POC de pagamento dividido: guia de teste e verificação
Este guia orienta você na verificação de que cada componente funciona corretamente, na ordem em que devem ser testados. Comece de baixo (módulo Commerce) e trabalhe acima (App Builder).
Etapa 1 — Verificar a instalação do módulo Commerce
Após executar bin/magento setup:upgrade e bin/magento setup:di:compile:
# Confirm module is enabled
bin/magento module:status Client_SplitPayment
# Confirm db_schema columns were added
bin/magento doctrine:schema:validate
# or check directly:
mysql -u <user> -p <dbname> -e "DESCRIBE sales_order;" | grep split
Saída esperada: quatro colunas começando com split_ visíveis em sales_order.
Etapa 2 — Verificar a configuração de administração do Commerce
No Commerce Admin:
- Stores > Configuration > Sales > Payment Methods — confirmar se Cash On Delivery está habilitado com o título
Cash - Stores > Configuration > Customers > Customer Configuration > Store Credit Options — confirmação habilitada
- Confirme se o cliente de teste tem crédito de loja: Customers > All Customers > [cliente] > Store Credit
Etapa 3 — Verificar se os pontos de extremidade REST estão acessíveis
Use curl para confirmar a resposta dos endpoints (eles rejeitarão solicitações não autorizadas, mas um 401 confirma que foram roteados corretamente):
# Should return 401 (not 404) — endpoint exists but requires auth
curl -X POST https://your-store.example.com/rest/V1/split-payment/orders/1/cash-received
# Should return 200 or session-based response — anonymous endpoint
curl -X POST https://your-store.example.com/rest/V1/split-payment/set \
-H "Content-Type: application/json" \
-d '{"storeCreditAmount": 0, "cashAmount": 0}'
Etapa 4 — testar a interface do usuário de check-out
-
Faça logon na loja como cliente de teste (que tem crédito na loja)
-
Adicionar um produto ao carrinho (total abaixo de US$ 100 após o envio + imposto)
-
Prosseguir para o check-out
-
Na etapa de pagamento, selecione Dinheiro (ou Dinheiro na Entrega)
-
Verifique se os campos de pagamento parcelado são exibidos:
- Seu saldo de crédito de loja mostrado
- Campo de valor do pagamento à vista pré-preenchido com o total do pedido
- O campo “Armazenar crédito para este pedido” mostra US$ 0,00 (já que dinheiro = total completo do pedido)
-
Reduzir o valor do caixa (por exemplo, insira $10 para uma ordem de $50)
-
Verifique se a parte de crédito da loja está atualizada para US$ 40,00
-
Verifique se a mensagem é exibida:
"The remaining $40.00 will automatically be applied from your store credit."
Validação de teste:
- Inserir um valor de pagamento à vista maior que o total da ordem → mensagem de erro
- Insira um valor de caixa que exija mais crédito de armazenamento do que o disponível → mensagem de erro
- Inserir caixa = 0 → erro (ou armazenar crédito cobre toda a ordem)
Etapa 5 — Testar proteção de limiar
- Adicionar produtos totalizando mais de US$ 100 (subtotal + envio + imposto > US$ 100)
- Prossiga para o check-out, selecione Caixa
- Tentar colocar o pedido
- Verifique se a mensagem de erro aparece:
"Payment could not be processed. Please try again or contact support." - Verifique se o carrinho está preservado (o cliente ainda pode ajustar o carrinho e tentar novamente)
Etapa 6 — Colocar uma Ordem de Pagamento de Divisão de Teste
- Criar um carrinho abaixo de US$ 100 (conectado ao cliente com crédito da loja)
- Selecionar Caixa no check-out
- Insira um valor de caixa menor que o total da ordem (por exemplo, US$ 10 de uma ordem de US$ 45)
- Confirmar se a mensagem de crédito da loja é exibida
- Clique em Fazer pedido
Após o envio do pedido, verifique no Commerce Admin:
-
A ordem está no status
pending_payment -
O pedido tem dois comentários de histórico:
"Cash payment of $X.XX pending. Awaiting admin confirmation."(do App Builderpayment-orchestrator)"Split payment orchestration completed. Order awaiting cash confirmation."(do App Builder)
-
Os valores do pagamento parcelado estão visíveis no bloco de pagamento da ordem
Se nenhum comentário do App Builder for exibido: Verifique os logs de ação do App Builder com
aio app logs. The event may not have fired or the action may have an error.
Step 7 — Test Accept via Simulation Script
The simulation script is the fastest way to test the accept/decline flow without the full operator UI.
cd commerce-checkout-starter-kit
cp commerce-backend-ui-1/.env.simulation.example commerce-backend-ui-1/.env.simulation
# Edit .env.simulation with your credentials
# List recent orders (find your test order entity_id)
node commerce-backend-ui-1/scripts/simulate-split-payment.mjs list
# Show split payment fields for a specific order
node commerce-backend-ui-1/scripts/simulate-split-payment.mjs show 42
# Accept the cash payment
node commerce-backend-ui-1/scripts/simulate-split-payment.mjs accept 42
After accept, verify in Commerce Admin order view:
- Order status is
processing - History comment:
"Cash payment of $X.XX received." - Cash invoice created (visible in Invoices tab)
- Shipment created (visible in Shipments tab, if applicable)
- History comment:
"Split payment: cash portion invoiced #XXXXXXXX." - History comment:
"Split payment: shipment created after cash was accepted (App Builder / API)."
Step 8 — Test Decline via Simulation Script
Place another test order (same setup as Step 6), then:
node commerce-backend-ui-1/scripts/simulate-split-payment.mjs decline <orderId>
After decline, verify in Commerce Admin:
- Order status is
canceled - History comment:
"Cash payment declined (simulated fraud check)." split_cash_status=declined
Step 9 — Test the Demo Dashboard
After deploying the split-payment-orchestrator, aio app deploy prints the action URLs.
Open the demo-dashboard URL in a browser:
https://[runtime-host]/api/v1/web/split_payment_orchestrator/demo-dashboard
If DEMO_UI_SECRET is set:
https://[runtime-host]/api/v1/web/split_payment_orchestrator/demo-dashboard?secret=<your-secret>
With a pending order:
- The dashboard should show the order in the pending list
- Click Accept → order should move to
processingin Commerce - Place another order; click Decline → order should be
canceledin Commerce
Step 10 — Test App Builder Action Logs
# Follow logs in real-time
aio app logs --tail
# Or view last invocations
aio runtime activation list --limit 10
aio runtime activation logs <activation-id>
For the payment-orchestrator, look for:
[INFO] Split payment orchestration finished { orderId: '42' }
Para payment-accept ou payment-decline:
[INFO] Cash payment accepted on Commerce via REST { orderId: '42' }
Problemas comuns e correções
“A assinatura é inválida” do Commerce OAuth
Causa: Desvio de relógio entre o tempo de execução do App Builder e o Commerce ou um erro de assinatura OAuth.
Correção:
- Confirmar se
COMMERCE_BASE_URLnão tem barra à direita - Confirme se as quatro credenciais do OAuth são para uma integração ativada
- Testar com o script de simulação primeiro — se o script funcionar, mas o App Builder não, é provável que uma variável env não esteja carregada (verifique se há variáveis env ausentes na saída
aio app deploy)
Campos de pagamento dividido não aparecem no check-out
Causa: os caminhos de injeção de LayoutProcessorPlugin não correspondem ao layout de check-out.
Correção:
- Verifique o console do navegador em busca de erros RequireJS ao carregar
Client_SplitPayment/js/view/payment/split-payment - Verificação
bin/magento setup:static-content:deployconcluída com êxito - Liberar cache:
bin/magento cache:flush - Se o tema tiver um check-out personalizado, o caminho
LayoutProcessorPluginpara inserir o componente pode precisar de ajuste
O crédito da loja não está sendo aplicado / “O pagamento não pôde ser processado” na ordem de colocação
Causa: Geralmente, um dos plug-ins de caso de borda não está funcionando corretamente.
Verificar:
SplitPaymentSessionestá retornando os valores corretos? Adicionar log de depuração temporário emPlaceOrderPluginFixSplitPaymentGrandTotalPluginestá em execução e afetando o total da cotação antes queBalanceManagementInterface::apply()seja chamado? O sinalizadorbeginBalanceApply()deve suprimi-lo.- O módulo de saldo do cliente está ativado no Commerce?
A ação do App Builder recebe o evento, mas orderId está ausente
Causa: a lista de campos io_events.xml não inclui entity_id ou a forma de carga do evento foi alterada.
Correção:
- Confirmar se
io_events.xmlincluientity_idna lista de campos - Na ação, registre
JSON.stringify(params)temporariamente para ver a forma de carga completa - Verifique se a função
extractValue()está encontrando o nível de aninhamento correto
Os pedidos não são exibidos no painel de demonstração
Causa: os critérios de pesquisa REST do Commerce orders não retornam pedidos ou o campo split_cash_status não está na resposta REST.
Correção:
- Confirmar se
OrderRepositoryPluginestá carregando atributos de extensão corretamente - Testar diretamente:
GET /rest/V1/orders?searchCriteria[pageSize]=5e verificar seextension_attributes.split_cash_statusaparece na resposta - Verifique se
extension_attributes.xmlestá declarando corretamente o atributosplit_cash_statusemOrderInterface
Lista de verificação de verificação
- [ ]
split_*colunas visíveis na tabelasales_order - [ ] pontos de extremidade REST retornam 401 (não 404) quando chamados sem autenticação
- [ ] A interface do usuário para pagamento dividido é renderizada no check-out quando Dinheiro está selecionado
- [ ] As mensagens de validação funcionam (pagamento a maior, crédito insuficiente)
- [ ] A proteção de limite bloqueia pedidos > US$ 100
- [ ] O pedido feito tem o status
pending_paymente comentários do App Builder - [ ]
simulate-split-payment.mjs listmostra a ordem de teste com valores divididos - [ ]
simulate-split-payment.mjs accept <id>move a ordem paraprocessingcom fatura e remessa - [ ]
simulate-split-payment.mjs decline <id>cancela o pedido - [ O painel de demonstração ] lista pedidos pendentes e aceita/recusa o trabalho da interface do usuário
Related split payment POC resources
- Criar uma POC de pagamento dividido: ferramentas do App Builder e da IA
- Criar uma POC de pagamento dividido: demonstração completa do App Builder
- POC de pagamento dividido: decisões de arquitetura e design
- POC de pagamento dividido: pré-requisitos e configuração de ambiente
- POC de pagamento dividido: referência de variáveis de ambiente
- Split payment POC: Commerce module AI prompt
- POC de pagamento dividido: prompt do App Builder orchestrator AI
- POC de pagamento dividido: prompt da IA de extensão da interface do usuário do Experience Cloud
- POC de pagamento dividido: guia de teste e verificação
- POC de pagamento dividido: próximas etapas após a prova de conceito
- Split payment POC: tutorial quick reference for authors