Cost+Docs

C# / .NET

Opinber C#/.NET SDK fyrir Cost+ greiðslugáttina

Opinber C#/.NET SDK fyrir Cost+ greiðslugáttina. Einfaldar HPP (Hosted Payment Page) áframsendingarflæði, HMAC farmundirritun og vefhook-staðfestingu.

Eiginleikar

  • Núll ósjálfstæði — notar aðeins innbyggða System.Text.Json og System.Security.Cryptography
  • Miðar á .NET 8.0 með C# 12 eiginleikum (skrár, nafnasvæði með skráarsniði, mynstursamsvörun)
  • Núllhæfar tilvísunargerðir virkar í gegn
  • HMAC-SHA256 undirskriftargerð og sannprófun á stöðugum tíma
  • Sjálfvirk snake_case/PascalCase kortlagning á milli API og SDK
  • Webhook þáttun + API byggt á pöntunarstaðfestingu
  • Alveg ósamstillt API yfirborð

Kröfur

Uppsetning

dotnet add package NoPayn

Eða sem staðbundin verkefnaviðmiðun:

dotnet add reference path/to/src/NoPayn/NoPayn.csproj

Fljótleg byrjun

1. Frumstilla viðskiptavininn

using NoPayn;
using NoPayn.Models;

var nopayn = new NoPaynClient(new NoPaynConfig(
    ApiKey: "your-api-key",
    MerchantId: "your-project"
));

2. Búðu til greiðslu og sendu til HPP

var result = await nopayn.GeneratePaymentUrlAsync(new CreateOrderParams
{
    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

3. Meðhöndlaðu vefkrókinn

app.MapPost("/webhook", async (HttpContext ctx) =>
{
    using var reader = new StreamReader(ctx.Request.Body);
    var rawBody = await reader.ReadToEndAsync();
    var verified = await nopayn.VerifyWebhookAsync(rawBody);

    Console.WriteLine(verified.Order.Status); // "completed", "cancelled", etc.
    Console.WriteLine(verified.IsFinal);      // true when the order won't change

    if (verified.Order.Status == "completed")
    {
        // Fulfil the order
    }

    return Results.Ok();
});

API Tilvísun

new NoPaynClient(config, httpClient?)

ParameterTegundÁskiliðSjálfgefið
ApiKeystring
MerchantIdstring
BaseUrlstringNeihttps://api.nopayn.co.uk

Hægt er að senda valfrjálsan HttpClient sem aðra breytu byggingaraðila fyrir sérsniðna HTTP meðhöndlun eða prófun.

client.CreateOrderAsync(params): Task<Order>

Býr til pöntun í gegnum POST /v1/orders/.

ParameterTegundÁskiliðLýsing
AmountintUpphæð í ISO 4217 minnieiningu gjaldmiðilsins (til dæmis sent fyrir EUR)
CurrencystringISO 4217 kóði (EUR, GBP, USD, NOK, SEK)
MerchantOrderIdstring?NeiInnri pöntunartilvísun þín
Descriptionstring?NeiLýsing á pöntun
ReturnUrlstring?NeiTilvísun eftir vel heppnaða greiðslu
FailureUrlstring?NeiTilvísun við hætt við/rennur út/villu
WebhookUrlstring?NeiÓsamstilltur tilkynningar um stöðubreytingar
Localestring?NeiHPP tungumál (en-GB, de-DE, nl-NL, osfrv.)
PaymentMethodsIReadOnlyList<string>?NeiSía HPP aðferðir
ExpirationPeriodstring?NeiISO 8601 tímalengd (PT30M)

Greiðsluaðferðir í boði: credit-card, apple-pay, google-pay, vipps-mobilepay

client.GetOrderAsync(orderId): Task<Order>

Sækir pöntunarupplýsingar í gegnum GET /v1/orders/{id}/.

client.CreateRefundAsync(orderId, amount, description?): Task<Refund>

Gefur út fulla eða hluta endurgreiðslu í gegnum POST /v1/orders/{id}/refunds/.

client.GeneratePaymentUrlAsync(params): Task<PaymentUrlResult>

Þægindaaðferð sem býr til pöntun og skilar:

public record PaymentUrlResult(
    string OrderId,        // NoPayn order UUID
    string OrderUrl,       // HPP URL
    string? PaymentUrl,    // Direct payment URL (first transaction)
    string Signature,      // HMAC-SHA256 of amount:currency:orderId
    Order Order            // Full order object
);

client.GenerateSignature(amount, currency, orderId): string

Býr til HMAC-SHA256 hex undirskrift.

client.VerifySignature(amount, currency, orderId, signature): bool

Stöðug staðfesting á HMAC-SHA256 undirskrift.

client.VerifyWebhookAsync(rawBody): Task<VerifiedWebhook>

Þýðir meginmál vefkróksins og hringir síðan í GET /v1/orders/{id}/ til að staðfesta raunverulega stöðu.

Sjálfstæð HMAC tól

using NoPayn;

var sig = NoPaynSignature.Generate("your-api-key", 1295, "EUR", "order-uuid");
var ok  = NoPaynSignature.Verify("your-api-key", 1295, "EUR", "order-uuid", sig);

Villumeðferð

using NoPayn.Exceptions;

try
{
    await nopayn.CreateOrderAsync(new CreateOrderParams { Amount = 100, Currency = "EUR" });
}
catch (ApiException ex)
{
    Console.Error.WriteLine(ex.StatusCode);  // 401, 400, etc.
    Console.Error.WriteLine(ex.ErrorBody);   // Raw API error response
}
catch (NoPaynException ex)
{
    Console.Error.WriteLine(ex.Message);     // Network or parsing error
}
UndantekningLýsing
NoPaynExceptionGrunnundantekning (net, þáttun)
ApiExceptionHTTP villa frá API
WebhookExceptionÓgilt vefhook farmur

Pöntunarstöður

StaðaÚrslitaleikur?Lýsing
newNeiPöntun búin til
processingNeiGreiðsla í gangi
completedGreiðsla tókst - afhenda vörurnar
cancelledGreiðsla felld niður af viðskiptavinum
expiredGreiðslutengillinn rann út á tíma
errorTæknileg bilun

Bestu starfsvenjur Webhook

  1. Staðfestu alltaf í gegnum API — hleðslutækið inniheldur aðeins pöntunarauðkenni, aldrei stöðuna. VerifyWebhookAsync() á SDK gerir þetta sjálfkrafa.
  2. ** Skilaðu HTTP 200** til að staðfesta móttöku. Allir aðrir kóðar kalla fram allt að 10 endurtilraunir (2 mínútna millibili).
  3. Taka í notkun varakönnun — fyrir pantanir eldri en 10 mínútur sem hafa ekki náð endanlega stöðu skaltu skoða GetOrderAsync() sem öryggisnet.
  4. Vertu sjálfráða — þú gætir fengið sama vefhook margoft.

Prófakort

Notaðu þessi kort í Cost+ prófunarham (sandkassavefsíða):

KortNúmerSkýringar
Visa (árangur)4111 1111 1111 1111Hvaða CVV sem er
Mastercard (árangur)5544 3300 0003 7Hvaða CVV sem er
Visa (hafnað)4111 1111 1111 1105Heiðra ekki
Visa (ófullnægjandi fjármunir)4111 1111 1111 1151Ófullnægjandi fjármunir

Notaðu hvaða fyrningardagsetningu sem er í framtíðinni og hvaða þriggja stafa CVC sem er.

Demo app

ASP.NET Core kynningarforrit sem byggir á Docker er innifalið í GitHub geymslunni til að prófa allt greiðsluflæðið.

Stuðningur

Þarftu aðstoð? Hafðu samband við þjónustudeild okkar á support@costplus.io.

On this page