Developers API & Widget
FI

Maksut

Maksujen integraatio ja widget

Maksujen integrointi Wealth Reader :n kanssa tapahtuu kahdessa vaiheessa: muuttumattoman intention valmistelu taustajärjestelmässä ja turvallisen widgetin kokoaminen frontendissä.

API-avain (X-API-Key) ei koskaan saa näkyä HTML:ssä, asiakasohjelman JavaScriptissä, selainlokeissa tai URL-parametreissa.

1. Pankkiyksiköiden hakemisto

Jotta voit selvittää, mitkä pankit ovat saatavilla ja saada niiden logot, nimet ja vaatimukset, tarkistamalla entiteettipäätepisteen suoraan sen taustajärjestelmästä. Jokaisella entiteettillä on kaksi logoa: logo, se, jota Wealth Reader suositeltu näyttämään (oma vektorilogo, kun se on olemassa, palveluntarjoajan logo muuten logo_sourcemukaan), ja logo_fallback, palveluntarjoajan, jotta sen käyttöliittymä voi käyttää sitä, jos ensimmäinen ei lataudu:

curl --request GET 'https://api.wealthreader.com/payments/entities/?country=ES'

Tämä päätepiste on julkinen: älä lähetä X-API-Key. Tämä ei muuta vastausta, se kuluttaa puhelun kiintiöstäsi, ja jos maksut poistetaan tililtäsi, se muuttaisi toimivan kyselyn 503:ksi.

Se tukee myös valinnaisia kyselyparametreja:

  • country: ISO:n kaksikirjaiminen koodi (esim. ES, FR, DE, IT, PT...). Kun koodi on ALL tai tyhjä, sitä ei suodata maittain.
  • search (alias q): tekstihaku nimen tai koodin perusteella (esim. santander, bbva).
  • code- Hae tietyn olennon sen tarkalla koodilla.
  • payment_method: Suodatukset tuetun menetelmän mukaan (esim. sepa_credit_transfer).
  • limit ja offset: tulosten sivutus.

Esimerkki lyhyestä vastauksesta:

{
  "success": true,
  "total": 2,
  "entities": [
    {
      "code": "santander-es",
      "name": "Banco Santander",
      "country": "ES",
      "logo": "https://cdn.wealthreader.com/santander.svg",
      "logo_fallback": "https://assets.exthand.com/bsdk/banks/logos/ES/santander.svg",
      "logo_source": "wealthreader",
      "payment_methods": ["sepa_credit_transfer", "instant_sepa_credit_transfer"],
      "requires_debtor_iban": true
    },
    {
      "code": "bbva-es",
      "name": "BBVA",
      "country": "ES",
      "logo": "https://cdn.wealthreader.com/bbva.svg",
      "logo_fallback": "https://assets.exthand.com/bsdk/banks/logos/PT/bbva.svg",
      "logo_source": "wealthreader",
      "payment_methods": ["sepa_credit_transfer", "instant_sepa_credit_transfer"],
      "requires_debtor_iban": false
    }
  ]
}

Suositeltu tapa näyttää logo ja siirtyä varalogoon automaattisesti:

<img src="https://cdn.wealthreader.com/santander.svg"
     data-fallback="https://assets.exthand.com/bsdk/banks/logos/ES/santander.svg"
     alt="Banco Santander" width="160" height="48"
     onerror="if (this.dataset.fallback && this.src !== this.dataset.fallback) { this.src = this.dataset.fallback; } else { this.hidden = true; }">

/payments/entities/ molemmat kentät ovat aina läsnä ja null, kun logoa ei ole. POST /payments/?action=profile-institutions- ja widget-instituutioilla on samat logo ja logo_fallback kuin valinnaisina kenttinä: ne puuttuvat, kun käytettävissä ei ole logoa. Logot osoittavat vain cdn.wealthreader.com tai assets.exthand.com; jos sivullasi on CSP, lisää molemmat isännät img-src.

Hallinnoidut profiilit (kuten lahjoitusdemo): Jos käytät ennalta määritettyä profiilia, kuten cruz_roja_demo, kysy palvelimen asettamia laitoksia ja ehtoja kutsumalla POST /payments/?action=profile-institutions {"profile": "cruz_roja_demo"}rungolla.

2. Luo maksuaikomus taustajärjestelmään

Kun asiakas päättää maksaa kassalla, kauppiaan palvelin luo yksilöllisen idempotenssiavaimen ja pyytää Wealth Readerin API:a luomaan muuttumattoman maksuaikomuksen.

Vakiomalli kauppiaille (oma edunsaaja)

Kauppias määrittelee perintätilinsä, summan sentteinä (amount_minor), maksuviitteen ja verkkolähteen, johon widget ladataan:

: "${WR_API_KEY:?Defina WR_API_KEY en el entorno seguro de su backend}"
: "${WR_PAYMENT_IDEMPOTENCY_KEY:?Genere una clave UUID v4 o de alta entropía para este intento}"

curl --request POST 'https://api.wealthreader.com/payments/?action=create' \
  --header 'Content-Type: application/json' \
  --header "X-API-Key: ${WR_API_KEY}" \
  --header "Idempotency-Key: ${WR_PAYMENT_IDEMPOTENCY_KEY}" \
  --data '{
    "amount_minor": 1500,
    "currency": "EUR",
    "beneficiary": {
      "name": "Comercio Online S.L.",
      "iban": "ES9121000418450200051332"
    },
    "reference": "Pedido #78901",
    "customer_reference": "pedido-78901",
    "allowed_origin": "https://tienda.example.com",
    "allowed_institution_codes": ["santander-es", "bbva-es", "caixabank-es", "sabadell-es"],
    "locale": "es"
  }'

Huomautus: allowed_institution_codes on valinnainen. Jos se jätetään pois, käyttäjä voi valita kaikista luettelon entiteetteistä.

Malli hallinnoitulla profiililla (lahjoitusdemonstraatio)

Jos integroit hallitun profiilin cruz_roja_demo:

curl --request POST 'https://api.wealthreader.com/payments/?action=create' \
  --header 'Content-Type: application/json' \
  --header "X-API-Key: ${WR_API_KEY}" \
  --header "Idempotency-Key: ${WR_PAYMENT_IDEMPOTENCY_KEY}" \
  --data '{
    "profile": "cruz_roja_demo",
    "institution_code": "santander-es",
    "amount_minor": 100,
    "customer_reference": "donativo-demo-0042",
    "allowed_origin": "https://tienda.example.com",
    "locale": "es",
    "expected_mode": "live"
  }'

Vastaus API

API vastaa vahvistamalla muuttumattoman aikomuksen ja toimittamalla tiedot widgetin alustamista varten:

{
  "success": true,
  "payment": {
    "id": "11111111-1111-4111-8111-111111111111",
    "amount_minor": 1500,
    "currency": "EUR",
    "state": "ready",
    "interaction_status": "not_started",
    "payment_status": "not_initiated",
    "payment_attestation": {
      "mode": "live",
      "provider_binding": "PROVIDER_BINDING"
    },
    "widget": {
      "url": "https://widget.wealthreader.com/payments/",
      "token": "SHORT_LIVED_WIDGET_TOKEN",
      "expires_at": "2026-09-04T15:30:00+00:00"
    }
  }
}

Taustajärjestelmäsi saa toimittaa käyttäjän selaimelle vain payment.id ja payment.widget.token.

3. Kiinnitä widget etuosaan

Widgetin liittämiseen verkkokäyttöliittymään on kaksi tapaa: käyttää virallista deklaratiivista skriptiä tai ohjelmallista JavaScript- API .

Vaihtoehto A: Deklaratiivisen skriptin (load-payments.js) kautta

Upota widgetin säiliö ja latausskripti kassasivullesi:

<div id="wr-payment-container"></div>

<script>
  document.querySelector('#wr-payment-container').addEventListener(
    'wealthreader:payment',
    (event) => {
      console.log('Evento de pago recibido:', event.detail.type, event.detail);

      if (event.detail.type === 'payment_status') {
        console.log('Estado actual:', event.detail.status);
      }

      if (event.detail.type === 'flow_closed') {
        // La interacción del usuario ha finalizado.
        // Consulte el estado financiero definitivo desde su backend.
      }
    }
  );
</script>

<script
  src="https://widget.wealthreader.com/js/load-payments.js"
  data-target="#wr-payment-container"
  data-payment-intent-id="11111111-1111-4111-8111-111111111111"
  data-widget-token="SHORT_LIVED_WIDGET_TOKEN"
  data-locale="es">
</script>

Vaihtoehto B: JavaScriptin kautta API (WealthReaderPayments.mount)

Jos käytät kehyksiä kuten React, Vue, Angular tai SPA-flow:

import { useEffect, useRef } from 'react';

// Cargue previamente https://widget.wealthreader.com/js/load-payments.js
const target = document.getElementById('wr-payment-container');

// Los eventos llegan como CustomEvent del DOM sobre el propio contenedor.
target.addEventListener('wealthreader:payment', (event) => {
  const detail = event.detail;
  if (detail.type === 'payment_status') {
    console.log('Estado del pago:', detail.status);
  }
  if (detail.type === 'flow_closed') {
    // Notificar al backend para comprobar la liquidación
  }
});

window.WealthReaderPayments.mount({
  target: target,
  paymentIntentId: '11111111-1111-4111-8111-111111111111',
  widgetToken: 'SHORT_LIVED_WIDGET_TOKEN',
  locale: 'es'
});

mount() ei tue mitään callback– sen avaimet ovat target, paymentIntentId, widgetToken, locale, widgetOrigin ja apiOrigin. Kaikki muut hylätään hiljaisesti, joten konfiguraatiossa onEvent ei epäonnistu eikä sitä koskaan suoriteta. Kuuntele aina kontin wealthreader:payment tapahtumaa.

Widget saa konfiguraation suoraan Wealth Reader palvelimilta, ja token on käytettävissä vain kerran. Jos pankki vaatii debit-tilin tunnistamisen ennen uudelleenohjausta, widget pyytää debit- IBAN suoraan maksajalta ilman, että kauppiaan tarvitsee käsitellä sitä.

Widgetin päätapahtumat

type Merkitys
ready Widget on alustettu ja muuttumaton tieto on saatavilla.
authorization_started Käyttäjä on aloittanut pankkivaltuutuksen (ohjattu SCA tai pankkisovellukseen).
processing Pankin tunnistautuminen on päättynyt ja järjestelmä käsittelee toimintaa.
payment_status Ilmoita maksutilan muutoksesta (pending, settled, rejectedjne.).
height_changed Dynaaminen iframe-korkeuden säätö vierityspalkkien välttämiseksi.
flow_closed Käyttäjä on sulkenut widgetin tai tekninen vuorovaikutus on päättynyt.

Muista, että tapahtuma flow_closed vahvistaa vain ikkunan sulkeutumisen, se ei ole maksun vahvistus. Taustajärjestelmäsi on aina tarkistettava tila soittamalla palvelimelta palvelimelle.

Seuraava askel

Arvostelu Aikomukset ja idempotentti.

Päivitetty viimeksi