Gesplitste betalingsconcepttest: test- en verificatiegids

Deze gids begeleidt u door het verifiëren dat elke component correct werkt, in de orde zij zouden moeten worden getest. Begin van onderaan (de module van Commerce) en werk omhoog (App Builder).

Stap 1 — De installatie van Commerce Module verifiëren

Na uitvoering bin/magento setup:upgrade en 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

Verwachte uitvoer: vier kolommen, beginnend met split_ zichtbaar in sales_order .

Stap 2 — Configuratie van Commerce Admin verifiëren

In Commerce Admin:

  1. Stores > Configuration > Sales > Payment Methods — confirm Cash On Delivery is ingeschakeld met titel Cash
  2. Stores > Configuration > Customers > Customer Configuration > Store Credit Options — bevestiging ingeschakeld
  3. Bevestig uw testklant opslagkrediet heeft: Customers > All Customers > [klant] > Store Credit

Stap 3 — verifieer de eindpunten van de REST Toegankelijk zijn

Gebruik curl om te bevestigen dat de eindpunten reageren (ze zullen niet-geautoriseerde aanvragen afwijzen, maar een 401 bevestigt dat ze correct zijn gerouteerd):

# 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}'

Stap 4 — De gebruikersinterface voor uitchecken testen

  1. Meld u aan bij de winkel als uw testklant (die opslagkrediet heeft).

  2. Een product aan winkelwagentje toevoegen (totaal minder dan € 100 na verzending + btw)

  3. Doorgaan naar afhandeling

  4. Bij de betalingsstap, uitgezochte Geld (of Geld op Levering)

  5. Controleer of de velden voor gesplitste betalingen worden weergegeven:

    • Je creditsaldo van je winkel wordt weergegeven
    • Veld voor contant bedrag ingevuld met het totaal van de bestelling
    • Het veld ‘Winkelkrediet naar deze bestelling’ toont $0,00 (sinds contant geld = totaal van volledige bestelling)
  6. Verlaag de geldsom (voer bijvoorbeeld $10 in voor een bestelling van $50)

  7. Verifieer het gedeelte van de winkelcreditering aan $40.00 wordt bijgewerkt

  8. Controleer of het bericht wordt weergegeven: "The remaining $40.00 will automatically be applied from your store credit."

bevestiging van de Test:

  • Voer een geldbedrag in dat groter is dan het totaal van de bestelling → foutbericht
  • Voer een kasbedrag in dat meer opslagkrediet vereist dan beschikbaar is → foutbericht
  • Voer cash = 0 → error in (of opslagcredit omvat gehele bestelling)

Stap 5 — Drempelwaarborg voor tests

  1. Voeg producten toe van in totaal meer dan $100 (subtotaal + verzendkosten + btw > $100)
  2. Ga aan controle te werk, uitgezochte Geld
  3. Poging om de bestelling te plaatsen
  4. Controleer of het foutbericht wordt weergegeven: "Payment could not be processed. Please try again or contact support."
  5. Controleren of het winkelwagentje behouden blijft (klant kan het winkelwagentje nog steeds aanpassen en het opnieuw proberen)

Stap 6 — Een gesplitste betalingsopdracht voor tests plaatsen

  1. Een winkelwagentje maken van minder dan $100 (klant aangemeld met winkelkrediet)
  2. Onder rembours selecteren bij afhandeling
  3. Voer een geldbedrag in dat lager is dan het totaalbedrag van de bestelling (bijvoorbeeld $10 van een bestelling van $45)
  4. Bevestig het crediteringsbericht voor de winkel
  5. Klik de Orde van de Plaats

Verifieer na plaatsing van de bestelling in Commerce Admin:

  • Volgorde bevindt zich in pending_payment status

  • Order heeft twee historieopmerkingen:

    1. "Cash payment of $X.XX pending. Awaiting admin confirmation." (vanuit App Builder payment-orchestrator)
    2. "Split payment orchestration completed. Order awaiting cash confirmation." (uit App Builder)
  • De gesplitste betalingsbedragen zijn zichtbaar in het betalingsblok voor bestellingen

als geen commentaren van App Builder verschijnen: controleer de actielogboeken van App Builder met aio app logs. De gebeurtenis is mogelijk niet geactiveerd of er is een fout opgetreden.

Stap 7 — de Test keurt via het Manuscript van de Simulatie goed

Het simulatiescript is de snelste manier om te testen goedkeurt/verval stroom zonder de volledige exploitant 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

Verifieer na acceptatie in de Commerce Admin-ordeweergave:

  • Status van bestelling is processing
  • Opmerking geschiedenis: "Cash payment of $X.XX received."
  • Contante factuur gemaakt (weergegeven op het tabblad Facturen)
  • Verzending gemaakt (zichtbaar op het tabblad Verzending, indien van toepassing)
  • Opmerking geschiedenis: "Split payment: cash portion invoiced #XXXXXXXX."
  • Opmerking geschiedenis: "Split payment: shipment created after cash was accepted (App Builder / API)."

Stap 8 — Test Weigeren via Simulatiescript

Plaats een andere testvolgorde (dezelfde instelling als bij Stap 6), dan:

node commerce-backend-ui-1/scripts/simulate-split-payment.mjs decline <orderId>

Controleer na afwijzen in Commerce Admin:

  • Status van bestelling is canceled
  • Opmerking geschiedenis: "Cash payment declined (simulated fraud check)."
  • split_cash_status = declined

Stap 9 — Test het demo-dashboard

Nadat split-payment-orchestrator is geïmplementeerd, drukt aio app deploy de actie-URL’s af.

Open de URL van demo-dashboard in een browser:

https://[runtime-host]/api/v1/web/split_payment_orchestrator/demo-dashboard

Als DEMO_UI_SECRET is ingesteld:

https://[runtime-host]/api/v1/web/split_payment_orchestrator/demo-dashboard?secret=<your-secret>

Met een lopende bestelling:

  1. Het dashboard moet de volgorde in de hangende lijst weergeven
  2. Klik Accepteren → orde zou zich aan processing in Commerce moeten bewegen
  3. Plaats een andere orde; klik Weigeren → orde zou canceled in Commerce moeten zijn

Stap 10 — App Builder-actielogboeken testen

# 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>

Voor payment-orchestrator zoekt u naar:

[INFO] Split payment orchestration finished { orderId: '42' }

Voor payment-accept of payment-decline :

[INFO] Cash payment accepted on Commerce via REST { orderId: '42' }

Veelvoorkomende problemen en oplossingen

“De handtekening is ongeldig” in Commerce OAuth

Oorzaak: de schuine streep van het Klokje tussen runtime van App Builder en Commerce, of een OAuth het ondertekenen insect.

Repareren:

  • Bevestigen COMMERCE_BASE_URL heeft geen slash aan het einde
  • Bevestig de vier geloofsbrieven OAuth voor een geactiveerde integratie zijn
  • Test eerst met het simulatiescript — als het manuscript werkt maar App Builder niet, is het waarschijnlijk een env variabele niet geladen (controleer aio app deploy output voor ontbrekende env vars)

Betalingsvelden splitsen die niet worden weergegeven bij de afhandeling

Oorzaak: LayoutProcessorPlugin injectiepaden passen uw controlelay-out niet aan.

Repareren:

  • Controleer de browserconsole op het laden van RequireJS-fouten Client_SplitPayment/js/view/payment/split-payment
  • Controle bin/magento setup:static-content:deploy voltooid
  • Uitlijncache: bin/magento cache:flush
  • Als uw thema een aangepaste kassa heeft, moet het LayoutProcessorPlugin -pad om de component te injecteren mogelijk worden aangepast

Winkelkrediet niet aangevraagd / “Betaling kan niet worden verwerkt” op bestelling

Oorzaak: gewoonlijk één van de steekmodules van het randgeval werkt correct niet.

Controle:

  1. Geeft SplitPaymentSession de juiste hoeveelheden? Aanmelden voor tijdelijke foutopsporing toevoegen PlaceOrderPlugin
  2. Wordt FixSplitPaymentGrandTotalPlugin uitgevoerd en heeft dit invloed op het totaal van aanhalingstekens voordat BalanceManagementInterface::apply() wordt aangeroepen? De markering beginBalanceApply() moet deze onderdrukken.
  3. Is de module voor klantenbalans ingeschakeld in Commerce?

App Builder-actie ontvangt gebeurtenis maar orderId ontbreekt

Oorzaak: de io_events.xml gebiedslijst omvat niet entity_id, of de veranderde vorm van de gebeurtenislading.

Repareren:

  • io_events.xml include entity_id in de veldlijst bevestigen
  • In de actie, registreer tijdelijk JSON.stringify(params) om de volledige ladingsvorm te zien
  • Controleer of de functie extractValue() het juiste nestniveau vindt

Bestellingen worden niet weergegeven in het dashboard voor demo

Oorzaak: Commerce REST orders onderzoekscriteria die geen orden terugkeren, of split_cash_status gebied niet in de REST reactie.

Repareren:

  • Bevestigen dat OrderRepositoryPlugin extensiekenmerken correct laadt
  • Direct testen: GET /rest/V1/orders?searchCriteria[pageSize]=5 en controleren of extension_attributes.split_cash_status wordt weergegeven in het antwoord
  • Controleer of extension_attributes.xml het kenmerk split_cash_status on OrderInterface correct declareert

Controleoverzicht

  • [ ] split_* kolommen zichtbaar in sales_order tabel
  • [ ] REST-eindpunten retourneren 401 (niet 404) bij aanroep zonder geluid
  • [ ] De gebruikersinterface voor gesplitste betalingen wordt weergegeven bij afhandeling wanneer Contant is geselecteerd
  • [ ] Validatieberichten werken (te veel betaald, onvoldoende creditering)
  • [ ] Bestellingen Drempelwaardeblokken > $100
  • [ ] Geplaatste volgorde heeft pending_payment status en App Builder-opmerkingen
  • [ ] simulate-split-payment.mjs list toont de testvolgorde met gesplitste hoeveelheden
  • [ ] simulate-split-payment.mjs accept <id> verplaatst de bestelling naar processing met factuur en verzending
  • [ ] simulate-split-payment.mjs decline <id> annuleert de volgorde
  • [ ] Het demo-dashboard geeft een lijst met in behandeling zijnde bestellingen weer en accepteert/weigert werk vanuit de gebruikersinterface

Gerelateerde gesplitste betalingen POC-middelen

recommendation-more-help
commerce-learn-help-home