Cost+Docs

PHP

Ametlik PHP SDK Cost+ makselüüsi jaoks

Ametlik PHP SDK Cost+ makselüüsi jaoks. Lihtsustab HPP (hostitud makselehe) ümbersuunamise voogu, HMAC andmete allkirjastamist ja veebihaagi kontrollimist.

Funktsioonid

  • Null välist sõltuvust — kasutab ainult sisseehitatud PHP laiendusi (curl, json, hash)
  • PHP 8.1+ readonly omadustega, nimega argumentidega ja rangete tüüpidega
  • HMAC-SHA256 allkirja genereerimine ja konstantse aja kontrollimine hash_equals kaudu
  • Automaatne snake_case/camelCase vastendamine API ja SDK vahel
  • Veebihaagi parsimine + API-põhine tellimuse kontrollimine
  • Testitud PHP 8.1, 8.2 ja 8.3 peal

Nõuded

  • PHP 8.1 või uuem
  • Laiendused: curl, json (mõlemad kaasas standard PHP-ga)
  • Cost+ kaupmehe konto — dashboard.costplus.io

Paigaldamine

composer require nopayn/sdk

Kiirstart

1. Kliendi initsialiseerimine

use NoPayn\NoPaynClient;

$nopayn = new NoPaynClient([
    'apiKey'     => 'your-api-key',
    'merchantId' => 'your-project',
]);

2. Makse loomine ja HPP-le suunamine

$result = $nopayn->generatePaymentUrl([
    'amount'           => 1295,            // €12.95 in cents
    'currency'         => 'EUR',
    'merchantOrderId'  => 'ORDER-001',
    'description'      => 'Premium Widget',
    'returnUrl'        => 'https://shop.example.com/success',
    'failureUrl'       => 'https://shop.example.com/failure',
    'webhookUrl'       => 'https://shop.example.com/webhook',
    'locale'           => 'en-GB',
    'expirationPeriod' => 'PT30M',
]);

// Redirect the customer
// $result['orderUrl']   → HPP (customer picks payment method)
// $result['paymentUrl'] → direct link to the first transaction's payment method
// $result['signature']  → HMAC-SHA256 for verification
// $result['orderId']    → NoPayn order UUID
header('Location: ' . ($result['paymentUrl'] ?? $result['orderUrl']));

3. Veebihaagi käsitlemine

$rawBody  = file_get_contents('php://input');
$verified = $nopayn->verifyWebhook($rawBody);

echo $verified['order']['status']; // 'completed', 'cancelled', etc.
echo $verified['isFinal'];        // true when the order won't change

if ($verified['order']['status'] === 'completed') {
    // Fulfil the order
}

http_response_code(200);

API viide

new NoPaynClient(array $config)

ParameeterTüüpKohustuslikVaikeväärtus
apiKeystringJah
merchantIdstringJah
baseUrlstringEihttps://api.nopayn.co.uk

$client->createOrder(array $params): array

Loob tellimuse päringuga POST /v1/orders/.

ParameeterTüüpKohustuslikKirjeldus
amountintJahSumma väikseimas valuutaühikus (sendid)
currencystringJahISO 4217 kood (EUR, GBP, USD, NOK, SEK)
merchantOrderIdstringEiTeie sisemine tellimuse viide
descriptionstringEiTellimuse kirjeldus
returnUrlstringEiÜmbersuunamine pärast edukat makset
failureUrlstringEiÜmbersuunamine tühistamise/aegumise/vea korral
webhookUrlstringEiAsünkroonsed olekumuutuse teavitused
localestringEiHPP keel (en-GB, de-DE, nl-NL jne)
paymentMethodsstring[]EiHPP meetodite filtreerimine
expirationPeriodstringEiISO 8601 kestvus (PT30M)

Saadaolevad makseviisid: credit-card, apple-pay, google-pay, vipps-mobilepay

$client->getOrder(string $orderId): array

Pärib tellimuse üksikasjad päringuga GET /v1/orders/{id}/.

$client->createRefund(string $orderId, int $amount, ?string $description = null): array

Teeb täieliku või osalise tagasimakse päringuga POST /v1/orders/{id}/refunds/.

$client->generatePaymentUrl(array $params): array

Abimeetod, mis loob tellimuse ja tagastab:

[
    'orderId'    => string,   // NoPayn order UUID
    'orderUrl'   => string,   // HPP URL
    'paymentUrl' => ?string,  // Direct payment URL (first transaction)
    'signature'  => string,   // HMAC-SHA256 of amount:currency:orderId
    'order'      => array,    // Full order object
]

$client->generateSignature(int $amount, string $currency, string $orderId): string

Genereerib HMAC-SHA256 hex allkirja.

$client->verifySignature(int $amount, string $currency, string $orderId, string $signature): bool

Konstantse aja HMAC-SHA256 allkirja kontrollimine.

$client->verifyWebhook(string $rawBody): array

Parsib veebihaagi keha, seejärel kutsub GET /v1/orders/{id}/, et kontrollida tegelikku olekut.

Eraldiseisvad HMAC utiliidid

use NoPayn\Signature;

$sig = Signature::generate('your-api-key', 1295, 'EUR', 'order-uuid');
$ok  = Signature::verify('your-api-key', 1295, 'EUR', 'order-uuid', $sig);

Veakäsitlus

use NoPayn\Exceptions\ApiException;
use NoPayn\Exceptions\NoPaynException;
use NoPayn\Exceptions\WebhookException;

try {
    $nopayn->createOrder(['amount' => 100, 'currency' => 'EUR']);
} catch (ApiException $e) {
    echo $e->getStatusCode(); // 401, 400, etc.
    print_r($e->getErrorBody()); // Raw API error response
} catch (NoPaynException $e) {
    echo $e->getMessage(); // Network or parsing error
}

Tellimuse olekud

OlekLõplik?Kirjeldus
newEiTellimus loodud
processingEiMakse pooleli
completedJahMakse edukas — tarnige kaup
cancelledJahMakse tühistatud kliendi poolt
expiredJahMakselink aegunud
errorJahTehniline tõrge

Veebihaagi parimad tavad

  1. Kontrollige alati API kaudu — veebihaagi andmed sisaldavad ainult tellimuse ID-d, mitte kunagi olekut. SDK verifyWebhook() teeb seda automaatselt.
  2. Tagastage HTTP 200 kättesaamise kinnitamiseks. Iga muu kood käivitab kuni 10 korduskatset (2 minuti vahega).
  3. Rakendage varuküsitleja — tellimuste jaoks, mis on vanemad kui 10 minutit ja pole jõudnud lõppolekusse, küsitlege getOrder() turvavõrguna.
  4. Olge idempotentne — võite sama veebihaagi saada mitu korda.

Testkaardid

Kasutage neid kaarte Cost+ testrežiimis (liivakasti veebileht):

KaartNumberMärkused
Visa (edukas)4111 1111 1111 1111Suvaline CVV
Mastercard (edukas)5544 3300 0003 7Suvaline CVV
Visa (keeldutud)4111 1111 1111 1105Do Not Honor
Visa (ebapiisav saldo)4111 1111 1111 1151Insufficient Funds

Kasutage suvalist tulevast aegumiskuupäeva ja suvalist 3-kohalist CVC-d.

Demorakendus

Dockeri-põhine demorakendus on kaasas GitHub hoidlas täieliku maksevoo testimiseks.

Tugi

Vajate abi? Võtke ühendust meie tugimeeskonnaga aadressil support@costplus.io.

On this page