Leanpay API

Leanpay API omogućava trgovcima da lako integriraju novu opciju plaćanja s ratama.

Veza s Leanpay API-jem

Povezivanje s Leanpay API-om zahtijeva dodavanje Leanpay-a kao načina plaćanja na blagajni ili stranici plaćanja vaše web trgovine. Kada vaš kupac odabere Leanpay, trebali biste osigurati da budu preusmjereni na stranicu Leanpay Checkout. Primjer HTML obrasca prikazan je u odjeljku Checkout Page. Prije preusmjeravanja morat ćete dostaviti podatke o uplati, kao što su vaš ID dobavljača, iznos koji treba platiti i nekoliko drugih polja.

Leanpay API okruženja

Demo Production
https://lapp.leanpay.hr/ https://app.leanpay.hr/

Tijeka plaćanja

Kad je kupac spreman platiti robu ili usluge na vašoj web stranici, on odabire mogućnost plaćanja Leanpay na vašoj web trgovini.

Token zatražite prosljeđivanjem podataka o plaćanju (npr. ID dobavljača, ID transakcije dobavljača, iznos) Leanpay Checkoutu.

Leanpay vraća generirani token.

  • Kupca preusmjeravate na Leanpay Checkout i uključujete token u poslani obrazac. Leanpay prikazuje relevantnu stranicu transakcije.
  • Kupac unosi svoje podatke o plaćanju (rok, poček) i potvrđuje transakciju.
  • Leanpay platforma odobrava ili odbija transakciju.
  • Na Leanpay Checkoutu prikazujemo stranicu za potvrdu koja sadrži rezultat plaćanja.
  • Leanpay vam pruža asinkronu obavijest na vaš URL statusa koja potvrđuje detalje i status transakcije.
  • Kupac se zatim automatski vraća na odgovarajuću stranicu na vašem web mjestu.

Kako stvoriti korisnički račun Vendora

Pogledatje Registrirajte se v Leanpay-Office DEMO okolje

Koraci integracije

Leanpay platforma koristi REST API stil. Integracija s Leanpay platformom sadrži samo dva HTTP zahtjeva:

  1. Request token for checkout page

  1. Redirect customer to checkout page

Prvi HTTP zahtjev mora se izvršiti između trgovčevog servera i Leanpay platforme.

Nakon što je dobijen token, tada web aplikacija trgovca preusmjerava korisnika na stranicu za plaćanje Leanpay s tokenom koji je priložen kao parametar HTML obrasca.

CHECKOUT PAGE - POST /vendor/checkout

Nakon primanja tokena, trgovac preusmjerava kupca na stranicu za plaćanje Leanpay-a. Preusmjeravanje treba izvršiti slanjem u HTML obrazac.

API vodič se nalazu u submenu API - Standard - Customer Check-out

Status Response

Kada je postupak plaćanja završen, Leanpay šalje detalje transakcije statusUrl-u koji ste naveli tijekom postupka registracije računa dobavljača ili na vašem računu dobavljača. To se radi sa standardnim HTTP POST zahtjevom. Leanpay poslužitelj nastavlja objavljivati ​​status sve dok s vašeg poslužitelja ne dobije odgovor HTTP OK (200) ili broj postova premaši 10. Vaša platforma treba izložiti REST web uslugu za primanje odgovora na status transakcije Leanpay platforme. Web stranica REST za odgovor na status opisana je u nastavku.

|Status|Description|Min Status Delivery Time|Max Status Delivery Time|AVG Status Delivery Time| |---|---|---|---|---|---|---| |SUCCESS|Successfull transaction|0.01 hours|96 hours|3 hours| |CANCELED|Customer canceled the transaction by closing application window|0.01 hours|2 hours|0.5 hours| |EXPIRED|Customer didn't finish application in 2 hours after starting application or was redirected to /vendor/checkout|2 hours|2 hours|2 hours| |FAILED|Customers application was rejected or failed|0.01 hours|96 hours|1 hours|

PREPORUKE KOD IMPLEMENTACIJE

Za bilo koji drugi status osim primljenog "USPJEŠNO", klijentu možete ponuditi drugi način plaćanja ili otkazati narudžbu kako biste oslobodili zalihu narudžbe.

VAŽNO

Ako niste naveli svoj URL statusa, ovu operaciju neće provesti platforma Leanpay.

Ovaj parametar možete postaviti na Vendor application, section Company > Development > Status URL

Specifikacija usluge REST odgovora na status

POST https://yourdomain.com/some/arbitrary/url/
Accept: application/json
Content-Type: applic

Zahtjev - šalje platforma Leanpay

API secret for calculating MD5 is "secret"

{
	"leanPayTransactionId":"2449",
	"vendorTransactionId":"test-ignore-1607591207867",
	"amount":300.00,
	"status":"SUCCESS",
	"md5Signature":"f6913090a21fdd20cdfafaacd2ca0179"
}

{
	"leanPayTransactionId":null,
	"vendorTransactionId":"test-ignore-1607955546145",
	"amount":150.00,
	"status":"CANCELED",
	"md5Signature":"50d4eb9fd0caec6f85b4f59733ea4cc5"
}

{
	"leanPayTransactionId":null,
	"vendorTransactionId":"test-ignore-1608101524391",
	"amount":150.00,"status":"EXPIRED",
	"md5Signature":"4f2962a260e13001546793a03c9acbc3"
}

{
	"leanPayTransactionId":null,
	"vendorTransactionId":"test-ignore-1606670599934",
	"amount":150.00,"status":"FAILED",
	"md5Signature":"d5747f5097928dd7ec5606175e53b8b7"
}

Odgovor - šalje vaša platforma

Vaša web REST usluga trebala bi odgovoriti samo HTTP statusom 200 bez "body".

Provjera valjanosti statusnog odgovora

Preporučujemo da provjerite detalje transakcije u odgovoru na status. To se može učiniti na sljedeći način:

  1. Napravite transakciju na čekanju "pending transaction" ili narudžbu za fiksni iznos na svojoj web stranici.
  2. Preusmjerite kupca na Leanpay Checkout, gdje dovršavaju transakciju.
  3. Leanpay će poslati potvrdu transakcije na vaš url statusa. To će uključivati ​​parametar "iznos".
  4. Vaša web stranica trebala bi potvrditi primljene parametre izračunavanjem md5 potpisa (vidi odjeljak Potpis MD5). Ako je uspješna, trebala bi usporediti vrijednost u potvrdnom postu (parametar iznosa) s onom iz transakcije ili narudžbe na vašem web mjestu na čekanju. Također možete usporediti druge parametre poput "vendorTransactionId".
  5. Nakon što potvrdite podatke o transakciji, možete je obraditi, na primjer, slanjem naručene robe.

MD5 potpis

Tekstualno polje nazvano md5Signature uključeno je u JSON koji je poslan vašem poslužitelju statusUrl. Vrijednost ovog polja je 128-bitni sažetak poruke, izražen kao niz od trideset i dvije heksadecimalne znamenke u LOWERCASE. Md5Signature izrađuje se izvođenjem MD5 izračuna na nizu izgrađenom spajanjem polja vraćenih na vašu stranicu statusUrl.

Ovo uključuje:

  • leanPayTransactionId
  • vendorTransactionId
  • the MD5 value of the ASCII equivalent of the secret word assigned to your Leanpay account
  • amount
  • status

Svrha polja ‘md5Signature’ je osigurati integritet podataka poslanih natrag na vaš server. Uvijek biste trebali usporediti vrijednost polja "md5Signature" koju su objavili Leanpayovi poslužitelji s onom koju ste izračunali. Da biste izračunali vrijednost potpisa md5, morate uzeti vrijednosti gore navedenih polja istim redoslijedom kako su vam vraćena, spojiti ih i izvršiti MD5 izračun na ovom nizu.

Uzorak u JAVA-i kako izračunati MD5 potpis

package com.leanpay.core.test.example;
 
import org.springframework.util.DigestUtils;
 
import java.math.BigDecimal;
import java.security.NoSuchAlgorithmException;
import java.text.DecimalFormat;
 
public class Md5SignatureExample {
 
    public static void main(String[] args) throws NoSuchAlgorithmException {
 
        String leanPayTransactionId = "123456789";
        String vendorTransactionId = "987654321";
        String secret = "secret";
        BigDecimal amount = BigDecimal.valueOf(100);
        String status = "SUCCESS";
 
        String hash = generateSignature(leanPayTransactionId, vendorTransactionId, secret, amount, status);
 
        // 403d15c591f9b6db781936b003acb25e
        System.out.println(hash);
    }
 
    private static String generateSignature(String leanPayTransactionId, String vendorTransactionId, String secret,
            BigDecimal amount, String status) throws NoSuchAlgorithmException {
 
        StringBuilder sb = new StringBuilder();
 
        // LeanPay transaction ID.
        sb.append(leanPayTransactionId);
 
        // Vendor transaction ID.
        sb.append(vendorTransactionId);
 
        // 123456789987654321
        System.out.println(sb.toString());
 
        // Vendor API secret word - MD5 value.
        String secretMd5 = DigestUtils.md5DigestAsHex(secret.getBytes());
        sb.append(secretMd5);
 
        // 1234567899876543215ebe2294ecd0e0f08eab7690d2a6ee69
        System.out.println(sb.toString());
 
        // Amount.
        sb.append(formatTwoDecimals(amount));
 
        // 1234567899876543215ebe2294ecd0e0f08eab7690d2a6ee69100.00
        System.out.println(sb.toString());
 
        // Status.
        sb.append(status);
 
        // 1234567899876543215ebe2294ecd0e0f08eab7690d2a6ee69100.00SUCCESS
        System.out.println(sb.toString());
 
        return DigestUtils.md5DigestAsHex(sb.toString().getBytes());
    }
 
    private static String formatTwoDecimals(BigDecimal number) {
 
        return new DecimalFormat("0.00").format(number);
    }
}

NAPOMENE

Iznos stavite na dva decimalna formata.

Ako smo vam poslali "status" koji NIJE "USPJEŠNO", tada biste trebali koristiti vrijednost "null" za polje "leanPayTransactionId" tijekom izračuna MD5 potpisa.



Potrebujete pomoč pri implementaciji ali imate vprašanje?