Passa al contenuto principale
0 di 4 completati
In questa pagina

Questo Quickstart utilizza il punto finale di acquisto di back-end del commerciante. Prima di iniziare, completa Impostazione account, scegli la tua integrazione, e confermare che il vostro commerciante di sandbox ha:

  • Una chiave API privata memorizzata sul server.
  • Almeno una connessione di pagamento attiva e una strategia di routing.
  • Un token di ordine e un gettone di pagamento-metodo creato dalla vostra integrazione client selezionata.
  • Un endpoint HTTPS pubblico che può ricevere i webhooks DEUNA.
01

Preparare la richiesta del server#

Caricare la chiave privata sandbox dalla memoria segreta del server. Tenere il token di ordine e il gettone di pagamento-metodo prodotto dallo stesso flusso di sandbox disponibile per l'organismo di richiesta.

.Shell
DEUNA_PRIVATE_API_KEY=YOUR_SANDBOX_PRIVATE_API_KEY
02

Elaborare il pagamento dell'ordine#

Invia l'ordine e il metodo di pagamento tokenized al punto finale di acquisto verificato commerciante. Riutilizzare lo stesso X-Idempotency-Key e richiedere corpo se un timeout di rete rende il risultato incerto.

curl --request POST \
  --url https://api.sandbox.deuna.io/v2/merchants/orders/purchase \
  --header "X-Api-Key: ${DEUNA_PRIVATE_API_KEY}" \
  --header "X-Idempotency-Key: order_1042-attempt_1" \
  --header "Content-Type: application/json" \
  --data '{
    "order_token": "YOUR_SANDBOX_ORDER_TOKEN",
    "payer_info": {
      "email": "buyer@example.com",
      "external_user_id": "customer_1042"
    },
    "payment_source": {
      "method_type": "credit_card",
      "payment_method": "YOUR_PAYMENT_METHOD_TOKEN"
    }
  }'

L'esatto payment_source e qualsiasi specific_fields dipende dal metodo di pagamento selezionato e dal fornitore. Vedi Elaborare il pagamento di un ordine per il contratto di richiesta completo.

03

Maneggiare il risultato immediato#

Leggi order.payment.data.status e qualsiasi azione successiva richiesta dall'ordine restituito. Un HTTP 2xx significa DEUNA ha accettato o elaborato la richiesta; non prova di per sé che i soldi si sono mossi.

  • Continuare la realizzazione solo per lo stato di successo confermato documentato in Flusso e stati di pagamento.
  • Presentare qualsiasi azione del cliente, come l'autenticazione 3DS, prima di riprovare.
  • Per risultati in sospeso o incerti, recuperare l'ordine originale invece di creare un tentativo duplicato.
  • Utilizzare una nuova chiave di idempotency solo per un tentativo di pagamento materialmente nuovo.
04

Confermare lo stato finale#

Utilizzare la risposta sincrona per aggiornare l'esperienza del cliente, ma prendere decisioni di adempimento da ultimo stato verificato. Configurare un webhook mercantile, verificare la sua firma, deduplicare l'evento, e poi riconciliare l'ordine.

server.jsJavaScript
app.post('/webhooks/deuna', express.raw({type: 'application/json'}), async (request, response) => {
  const event = verifyDeunaSignature(request.body, request.headers);
  await storeEventOnce(event.id);
  await reconcileOrder(event.data.order_token);
  response.sendStatus(200);
});

Prossimo passo#