Užsidirbkite su Paysera Kuriate bibliotekas?


Sumokėsime nuo 100 iki 200 EUR už tvarkingą ir veikiantį, jūsų sukurtą programinį kodą. Kodas ir jūsų kontaktai bus patalpinami viešai, jeigu norėtumėte bendradarbiauti ir gauti užsakymus dėl tam tikros sistemos versijos palaikymo.

Atsiųsti kodą ar susisiekti galite pagalba@paysera.lt

Makro mokėjimų sistemai integruoti rekomenduojame naudoti mūsų paruoštą atviro kodo programinę biblioteką. Biblioteka atlieka visus reikalingus saugumo, perduodamų ir gaunamų duomenų tikrinimus.

Pastaba: libwebtopay tinka naudoti tiek su mikro, tiek su makro paslaugomis.

libwebtopay galite išbandyti, paleisdami paruoštą demonstracinį scenarijų. Demonstraciją paleisite interneto naršyklės adreso juostoje surinkę:

https://www.jūsųsvetainėsadresas.lt/libwebtopay/demo/

Pastaba: adrese nurodytas kelias iki demokatalogo gali skirtis, priklausomai nuo to, kur išskleidėte archyvo turinį.

Pastaba: kad demonstracija sėkmingai veiktų, nurodykite savo projekto ID iš Paysera svetainės, projectidlaukelyje. Demonstracija neveiks, jei bandysite ją iš savo kompiuterio (localhost).

Labai apibendrinus, Jums užtenka iškviesti du metodus iš kurių vienas paruošia duomenis išsiuntimui, kitas patikrina gautą atsakymą apie įvykdytą mokėjimą.

Žemiau pateiktas pilnai veikiantis pavyzdys. Vietos, kuriose reikia įrašyti Jūsų Paysera prieigos duomenis pažymėtos komentarais.

Žemiau pateiktas veikiantis pavyzdys naudojant WebToPay biblioteką. Vietos, kuriose reikia įrašyti Jūsų Paysera prieigos duomenis, pažymėtos komentarais.

1. Susikurkite katalogą.

Susikurkite katalogą, pavadinkite jį libwebtopay. Jame bus laikomi visi failai, susiję su mokėjimų integracija.

2. Atsisiųskite libwebtopay biblioteką.

Į sukurtą libwebtopay katalogą atsisiųskite WebToPay.php failą.

3. Sukurkite failą, nukreipiantį vartotoją į Paysera svetainę.

Kataloge libwebtopay sukurkite failą redirect.php. Šio failo turinys galėtų būti toks:

<?php

require_once('WebToPay.php');

function getSelfUrl(): string
{
    $url = substr(strtolower($_SERVER['SERVER_PROTOCOL']), 0, strpos($_SERVER['SERVER_PROTOCOL'], '/'));

    if (isset($_SERVER['HTTPS']) === true) {
        $url .= ($_SERVER['HTTPS'] === 'on') ? 's' : '';
    }

    $url .= '://' . $_SERVER['HTTP_HOST'];

    if (isset($_SERVER['SERVER_PORT']) === true && $_SERVER['SERVER_PORT'] !== '80') {
        $url .= ':' . $_SERVER['SERVER_PORT'];
    }

    $url .= dirname($_SERVER['SCRIPT_NAME']);

    return $url;
}

try {
     WebToPay::redirectToPayment([
        'projectid' => {YOUR_PROJECT_ID},
        'sign_password' => {YOUR_PROJECT_PASSWORD},
        'orderid' => 0,
        'amount' => 1000,
        'currency' => 'EUR',
        'country' => 'LT',
        'accepturl' => getSelfUrl() . '/accept.php',
        'cancelurl' => getSelfUrl() . '/cancel.php',
        'callbackurl' => getSelfUrl() . '/callback.php',
        'test' => 0,
    ]);
} catch (Exception $exception) {
    echo get_class($exception) . ':' . $exception->getMessage();
}

4. Sukurkite accept.php

Kataloge libwebtopay sukurkite failą accept.php. Šio failo turinys turėtų būti toks:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    <title></title>
</head>
<body>
    Thank you for buying.
</body>
</html>

5. Sukurkite cancel.php

Kataloge libwebtopay sukurkite failą cancel.php. Šio failo turinys turėtų būti toks:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    <title></title>
</head>
<body>
    Payment canceled.
</body>
</html>

6. Įvykdytų mokėjimų apdorojimas

Kataloge libwebtopay sukurkite failą callback.php. Šio failo turinys turėtų būti toks:

<?php

require_once('WebToPay.php');

function isPaymentValid(array $order, array $response): bool
{
    if (array_key_exists('payamount', $response) === false) {
        if ($order['amount'] !== $response['amount'] || $order['currency'] !== $response['currency']) {
            throw new Exception('Wrong payment amount');
        }
    } else {
        if ($order['amount'] !== $response['payamount'] || $order['currency'] !== $response['paycurrency']) {
            throw new Exception('Wrong payment amount');
        }
    }

    return true;
}

try {
    $response = WebToPay::validateAndParseData(
        $_REQUEST,
        {YOUR_PROJECT_ID},
        {YOUR_PROJECT_PASSWORD}
    );

    if ($response['status'] === '1' || $response['status'] === '3') {
        //@ToDo: Validate payment amount and currency, example provided in isPaymentValid method.
        //@ToDo: Validate order status by $response['orderid']. If it is not already approved, approve it.

        echo 'OK';
    } else {
        throw new Exception('Payment was not successful');
    }
} catch (Exception $exception) {
    echo get_class($exception) . ':' . $exception->getMessage();
}
Informacija Callback skriptas sėkmės atveju turi grąžinti atsakymą, prasidedantį arba lygų "OK".

Pastaba! GET metodu visi Paysera parametrai turi prefiksą WebToPay::PREFIX, metodas WebToPay::checkResponse() grąžina Paysera siųstus duomenis, be prefiksų. Kad būtų aiškiau, štai iliustracija, kaip tai atrodo:

>>> $response = WebToPay::checkResponse(['foo' => 'bar', 'wp_projectid' => '123'], [...]);
>>> print_r($response);
['projectid' => '123']

Užklausos parametrai

Parametras
Ilgis
Būtinas
Aprašymas
projectid
11
Taip
Unikalus projekto numeris. Tik patvirtinti projektai, gali priimti įmokas.
orderid
40
Taip
Užsakymo numeris iš jūsų sistemos.
accepturl
255
Taip
Pilnas interneto adresas (URL), į kurį klientas nukreipiamas sėkmingai atlikus mokėjimą.
Norėdamas patvirtinti užsakymą, pardavėjas neturėtų pasikliauti „accepturl“. Vietoj to, pardavėjas užsakymą turėtų patvirtinti per „callbackurl“.
cancelurl
255
Taip
Pilnas interneto adresas (URL), į kurį klientas nukreipiamas nuspaudus grįžimo į parduotuvę nuorodą.
callbackurl
255
Taip
Pilnas adresas (URL), kuriuo pardavėjui pateikiama informacija apie atliktą mokėjimą.

Skriptas turi grąžinti tekstą "OK". Tik tuomet mūsų sistema užfiksuos, kad apie apmokėjimą sėkmingai informavome.

Jeigu atsakymo "OK" nėra, tai pranešimą siunčiame 4 kartus (kai tik gauname, po valandos, po trijų ir po paros).
version
9
Taip
Paysera mokėjimų sistemos specifikacijos (API) versijos numeris.
lang
3
Ne
Galima nurodyti naudotojo kalbą (ISO 639-2/B: LIT, RUS, ENG ir pan.). Jeigu tokios kalbos Paysera nepalaiko bus parinkta kalba pagal lankytojo IP adresą arba anglų kalba pagal nutylėjimą.
amount
11
Ne
Suma centais, kurią klientas turi apmokėti.
currency
3
Ne
Mokėjimo valiuta (pvz. USD, EUR ir pan.), kuria pageidaujate, kad klientas mokėtų. Jeigu nurodyta valiuta per pasirinktą mokėjimo būdą negali būti priimta, sistema automatiškai pagal dienos kursą konvertuos į palaikomą valiutą. Atsakyme į Jūsų svetainę bus paduoti payamount ir paycurrency.
payment
20
Ne
Mokėjimo būdas. Jei nurodytas, mokėjimas bus atliekamas konkrečiai per tą mokėjimo būdą. Jei nenurodytas, vartotojui bus pateikiama galimų mokėjimo būdų lentelė. Mokėjimo būdus galite gauti ir realiu laiku, naudojantis WebToPay biblioteka.
country
2
Ne
Mokėtojo šalis (LT, EE, LV, GB, PL, DE). Nurodžius šalį mokėtojui iš karto pateikiami mokėjimo būdai, kurie galimi toje šalyje. Jeigu šalis nenurodoma, sistema pagal mokėtojo IP adresą nustato jo šalį. Mokėtojui paliekama galimybė pasikeisti šalį.
paytext
255*
Ne
Mokėjimo paskirtis, kuri matosi darant pavedimą. Nenurodžius naudojamas tekstas pagal nutylėjimą:
Apmokėjimas už prekes ir paslaugas (už nr. [order_nr]) ([site_name]).

Jeigu nurodote mokėjimo paskirtį, būtina įtraukti šiuos kintamuosius, kurie galutiniame paskirties tekste bus pakeisti į atitinkamas reikšmes:

[order_nr] - užsakymo numeris.
[site_name] arba [owner_name] - svetainės adresas arba įmonės pavadinimas.
p_firstname
255
Ne
Pirkėjo vardas. Pageidautina daugumoje mokėjimo būdų. Privaloma mokėjimą atliekant tam tikrais mokėjimo būdais.
p_lastname
255
Ne
Pirkėjo pavardė. Pageidautina daugumoje mokėjimo būdų. Privaloma mokėjimą atliekant tam tikrais mokėjimo būdais.
p_email
255
Ne
Pirkėjo el. paštas privalomas. Jeigu adresas nebus gautas, kliento bus prašoma jį įvesti. Šiuo adresu Paysera sistema informuos mokėtoją apie apmokėjimo būklę.
p_street
255
Ne
Pirkėjo adresas, kuriuo bus siunčiamos prekės (pvz: Pilaitės pr. 16). Pageidautina. Privaloma mokėjimą atliekant tam tikrais mokėjimo būdais.
p_city
255
Ne
Pirkėjo miestas, į kurį bus siunčiamos prekės. (pvz: Vilnius). Pageidautina. Privaloma mokėjimą atliekant tam tikrais mokėjimo būdais.
p_state
255
Ne
Pirkėjo valstijos kodas (privalomas tik perkant JAV valstijoje). Pageidautina. Privaloma mokėjimą atliekant tam tikrais mokėjimo būdais.
p_zip
20
Ne
Pirkėjo pašto kodas. Lietuvos pašto kodus galite rasti čia . Privaloma mokėjimą atliekant tam tikrais mokėjimo būdais.
p_countrycode
20
Ne
Pirkėjo šalies kodas. Šalies sutrumpintus kodus galite rasti čia . Privaloma mokėjimą atliekant tam tikrais mokėjimo būdais.
test
1
Ne
Parametras, kuriam esant galima testuoti sujungimą, tokiu būdu apmokėjimas nevykdomas ir rezultatas grąžinamas iš karto, tartum būtų sumokėta. Norint testuoti, būtina aktyvuoti testavimo režimą prie konkretaus projekto, kai prisijungiate: "Projektai ir veiklos" -> "Mano projektai" -> "Projekto nustatymai" -> "Įmokų surinkimo paslaugos nustatymai" (prie konkretaus projekto) -> "Leisti testinius mokėjimus" (pažymėkite).
sign
255
Taip
Parametras, kuriuo siunčiamas duomenų parašas. Tai reikalinga tam, kad patikrinti ar tikrai duomenys siunčiami iš Jūsų svetainės. Jei naudojate ne PHP programavimo kalbą, generuojant 'sign' parametrą atkreipkite dėmesį į tai, kad pavyzdyje naudojamos PHP funkcijos strlen() ir strtolower() nesupranta UTF-8, todėl operacijos atliekamos su baitais, o ne UTF-8 simboliais: strlen('ąbčd') == 6 ir strtolower('ĄBČD') == 'ĄbČd'.

* Galutinis ilgis gali skirtis priklausomai nuo mokėjimo būdo specifikacijos

** Pirkėjo sutikimo tekstas:

Callback

Daugiau informacijos apie 'callback' žiūrėkite skyrių - Callback .