Delad betalnings-POC: testnings- och verifieringshandbok
Den här guiden hjälper dig att verifiera att alla komponenter fungerar som de ska, i den ordning de ska testas. Börja längst ned (Commerce-modulen) och arbeta upp (App Builder).
Steg 1 - Verifiera installation av Commerce-modul
Efter att bin/magento setup:upgrade och bin/magento setup:di:compile har körts:
# 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
Förväntade utdata: fyra kolumner som börjar med split_ synliga i sales_order.
Steg 2 - Verifiera konfigurationen för Commerce Admin
I Commerce Admin:
- Stores > Configuration > Sales > Payment Methods — confirm Cash On Delivery is enabled with title
Cash - Stores > Configuration > Customers > Customer Configuration > Store Credit Options - bekräfta aktiverad
- Bekräfta att din testkund har butikskredit: Customers > All Customers > [kund] > Store Credit
Steg 3 - Verifiera att REST-slutpunkter är tillgängliga
Använd krullning för att bekräfta att slutpunkterna svarar (de avvisar obehöriga begäranden, men en 401-bekräftelse bekräftar att de dirigeras korrekt):
# 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}'
Steg 4 - Testa gränssnittet för utcheckning
-
Logga in på butiken som din testkund (som har butikskrediter)
-
Lägg en produkt i varukorgen (totalt under 100 USD efter frakt + moms)
-
Gå till kassan
-
Välj Kontant (eller Kontant vid leverans) i betalningssteget
-
Kontrollera att de delade betalningsfälten visas:
- Ditt kreditsaldo för butik visas
- Fältet Kontantbelopp förifyllt med ordersumman
- Fältet"Butikskredit mot den här ordern" visar $0,00 (eftersom kontanter = total order)
-
Minska kontantbeloppet (ange t.ex. $10 för en $50-order)
-
Verifiera att butikens kreditdel uppdateras till 40,00 USD
-
Bekräfta att meddelandet visas:
"The remaining $40.00 will automatically be applied from your store credit."
Testvalidering:
- Ange ett kontantbelopp som är större än ordersumman → felmeddelande
- Ange ett kontantbelopp som kräver mer butikskrediter än tillgängligt → felmeddelande
- Ange kontanter = 0 → fel (eller butikskrediter täcker hela ordern)
Steg 5 - Test Threshold Guard
- Lägg till produkter som totalt överstiger 100 USD (delsumma + frakt + moms > 100 USD)
- Gå till kassan och välj Kontant
- Försök att placera ordern
- Kontrollera att felmeddelandet visas:
"Payment could not be processed. Please try again or contact support." - Kontrollera att vagnen är intakt (kunden kan fortfarande justera vagnen och försöka igen)
Steg 6 - Testa delad betalningsorder
- Bygg en kundvagn under 100 USD (inloggad kund med butikskredit)
- Välj kassa vid utcheckning
- Ange ett kontantbelopp som är mindre än ordersumman (t.ex. $10 av en $45-order)
- Bekräfta att butikskreditmeddelandet visas
- Klicka på Montera beställning
Efter beställningens placering kan du verifiera detta i Commerce Admin:
-
Ordern har statusen
pending_payment -
Ordern har två historikkommentarer:
"Cash payment of $X.XX pending. Awaiting admin confirmation."(från App Builderpayment-orchestrator)"Split payment orchestration completed. Order awaiting cash confirmation."(från App Builder)
-
Delade betalningsbelopp visas i betalningsblocket för order
Om inga App Builder-kommentarer visas: Kontrollera App Builder åtgärdsloggar med
aio app logs. Händelsen kanske inte har utlösts eller så kan åtgärden ha ett fel.
Steg 7 - Testa acceptera via simuleringsskript
Simuleringsskriptet är det snabbaste sättet att testa flödet för acceptera/avvisa utan användargränssnittet för den fullständiga operatorn.
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
När du har godkänt, verifiera i ordervyn i Commerce Admin:
- Orderstatus är
processing - Historikkommentar:
"Cash payment of $X.XX received." - En kassafaktura har skapats (visas på fliken Fakturor)
- Leveransen har skapats (visas på fliken Utleveranser, om tillämpligt)
- Historikkommentar:
"Split payment: cash portion invoiced #XXXXXXXX." - Historikkommentar:
"Split payment: shipment created after cash was accepted (App Builder / API)."
Steg 8 - Testa avböjning via simuleringsskript
Placera ytterligare en testorder (samma inställning som steg 6) och sedan:
node commerce-backend-ui-1/scripts/simulate-split-payment.mjs decline <orderId>
Bekräfta i Commerce Admin när du avböjt:
- Orderstatus är
canceled - Historikkommentar:
"Cash payment declined (simulated fraud check)." split_cash_status=declined
Steg 9 - Testa demokontrollpanelen
Efter distributionen av split-payment-orchestrator skriver aio app deploy ut URL:er för åtgärden.
Öppna URL:en demo-dashboard i en webbläsare:
https://[runtime-host]/api/v1/web/split_payment_orchestrator/demo-dashboard
Om DEMO_UI_SECRET har angetts:
https://[runtime-host]/api/v1/web/split_payment_orchestrator/demo-dashboard?secret=<your-secret>
Med väntande order:
- Kontrollpanelen bör visa ordningen i listan över väntande
- Klicka på Acceptera → beställningen ska flyttas till
processingi Commerce - Placera en annan ordning. Klicka på Avböj → beställningen ska vara
canceledi Commerce
Steg 10 - Testa App Builder åtgärdsloggar
# 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>
För payment-orchestrator söker du efter:
[INFO] Split payment orchestration finished { orderId: '42' }
För payment-accept eller payment-decline:
[INFO] Cash payment accepted on Commerce via REST { orderId: '42' }
Vanliga problem och korrigeringar
“Signaturen är ogiltig” från Commerce OAuth
Orsak: Skeva klockan mellan App Builder-miljön och Commerce, eller ett OAuth-signeringsfel.
Korrigera:
- Bekräfta
COMMERCE_BASE_URLhar inget avslutande snedstreck - Bekräfta att de fyra OAuth-autentiseringsuppgifterna är för en aktiverad-integrering
- Testa med simuleringsskriptet först - om skriptet fungerar men inte App Builder, är det troligtvis en env-variabel som inte har lästs in (kontrollera
aio app deployutdata för saknade env-varianter)
Delade betalningsfält visas inte i utcheckning
Orsak: Injektionssökvägarna för LayoutProcessorPlugin matchar inte din utcheckningslayout.
Korrigera:
- Kontrollera webbläsarkonsolen för att se om det finns fel i RequireJS vid inläsning av
Client_SplitPayment/js/view/payment/split-payment - Kontrollen
bin/magento setup:static-content:deployhar slutförts - Töm cacheminne:
bin/magento cache:flush - Om temat har en anpassad utcheckning kan sökvägen
LayoutProcessorPluginsom ska injiceras i komponenten behöva justeras
Butikskrediten har inte tillämpats / “Betalningen kunde inte behandlas” på plats
Orsak: En av plugin-programmen för versaler fungerar vanligtvis inte korrekt.
Kontrollera:
- Returnerar
SplitPaymentSessionrätt belopp? Lägg till temporär felsökningsloggning iPlaceOrderPlugin - Körs
FixSplitPaymentGrandTotalPluginoch påverkar offertsumman innanBalanceManagementInterface::apply()anropas? FlagganbeginBalanceApply()ska inaktivera den. - Är kundbalansmodulen aktiverad i Commerce?
App Builder-åtgärden tar emot händelse men orderId saknas
Orsak: Fältlistan io_events.xml innehåller inte entity_id eller så har händelsens nyttolastform ändrats.
Korrigera:
- Bekräfta att
io_events.xmlinkluderarentity_idi fältlistan - Logga
JSON.stringify(params)tillfälligt i åtgärden för att se hela nyttolastformen - Kontrollera att
extractValue()-funktionen hittar rätt kapslingsnivå
Beställningar visas inte på demokontrollpanelen
Orsak: Commerce REST orders sökvillkor returnerar inte order, eller split_cash_status fält finns inte i REST-svaret.
Korrigera:
- Bekräfta att
OrderRepositoryPluginläser in tilläggsattribut korrekt - Testa direkt:
GET /rest/V1/orders?searchCriteria[pageSize]=5och kontrollera omextension_attributes.split_cash_statusvisas i svaret - Kontrollera att
extension_attributes.xmldeklarerar attributetsplit_cash_statuspåOrderInterfacekorrekt
Checklista för verifiering
- [ ]
split_*kolumner synliga isales_order-tabellen - [ ] REST-slutpunkter returnerar 401 (inte 404) när de anropas utan auth
- [ ] Gränssnittet för delad betalning återges vid utcheckning när Kontant har valts
- [ ] Valideringsmeddelanden fungerar (överbetalning, otillräcklig kredit)
- [ ] Tröskelskydd blockerar order > $100
- [ ] Placerad order har status
pending_paymentoch App Builder-kommentarer - [ ]
simulate-split-payment.mjs listvisar testordningen med delade belopp - [ ]
simulate-split-payment.mjs accept <id>flyttar order tillprocessingmed faktura och leverans - [ ]
simulate-split-payment.mjs decline <id>avbryter ordningen - [ ] Demonstrationspanelen visar väntande order och arbete för att acceptera/avböja från gränssnittet
Relaterade POC-resurser för delad betalning
- Skapa en delad betalnings-POC: App Builder- och AI-verktyg
- Skapa en delad betalning POC: App Builder fulldemo
- Delad betalnings-POC: arkitektur och designbeslut
- Delad betalnings-POC: förutsättningar och miljöinställningar
- Delad betalnings-POC: miljövariabelreferens
- Delad betalnings-POC: Commerce module AI prompt
- Delad betalning POC: App Builder orchestrator AI prompt
- Delad betalning POC: Experience Cloud UI-tillägg - AI-fråga
- Delad betalnings-POC: testnings- och verifieringshandbok
- Dela betalnings-POC: nästa steg efter konceptbeviset
- Dela betalnings-POC: självstudiekurs, snabbreferens för författare