Kehittäjät
Rajapinta, jonka voit lukea alusta loppuun.
Sopimus edellä laadittu OpenAPI, idempotentit kirjoitukset, allekirjoitetut webhookit ja säilyttävä käsittely Bitcartin kautta. Kaikki alla olevat esimerkit käyttävät paikkamerkkiavaimia — live-avaimet luodaan hallintapaneelissa hyväksynnän jälkeen, ja ne näytetään vain kerran.
Pikaopas
Luo ensimmäinen maksuaikomuksesi.
Jokainen esimerkki luo saman maksuaikomuksen ja ohjaa isännöityyn kassaan. Ne toimivat, kun oikeat maksut on otettu käyttöön organisaatiollesi.
curl -X POST https://api.feitpay.com/v1/payment-intents \
-H "Authorization: Bearer gp_live_YOUR_KEY" \
-H "Idempotency-Key: order-123" \
-H "Content-Type: application/json" \
-d '{
"store_id": "store_YOUR_STORE_ID",
"amount": "59.90",
"currency": "EUR",
"allowed_methods": ["crypto"],
"merchant_order_id": "order-123",
"return_url": "https://merchant.example/thank-you"
}'import { Gryphem } from '@gryphem-pay/sdk';
const gp = new Gryphem({ apiKey: process.env.GRYPHEM_API_KEY!, baseUrl: 'https://api.feitpay.com' }); // gp_live_…
const intent = await gp.paymentIntents.create(
{
store_id: 'store_YOUR_STORE_ID',
amount: '59.90',
currency: 'EUR',
merchant_order_id: 'order-123',
},
{ idempotencyKey: 'order-123' },
);
redirect(intent.checkout_url);client, err := gryphempay.New(os.Getenv("GRYPHEM_API_KEY"), gryphempay.WithBaseURL("https://api.feitpay.com"))
if err != nil {
return err
}
intent, err := client.PaymentIntents.Create(ctx, &gryphempay.PaymentIntentCreateParams{
StoreID: "store_YOUR_STORE_ID",
Amount: "59.90",
Currency: "EUR",
MerchantOrderID: "order-123",
IdempotencyKey: "order-123",
})
if err != nil {
return err
}
http.Redirect(w, r, *intent.CheckoutURL, http.StatusSeeOther)from gryphem_pay import Gryphem
gp = Gryphem(api_key=os.environ["GRYPHEM_API_KEY"], base_url="https://api.feitpay.com") # gp_live_…
intent = gp.payment_intents.create(
store_id="store_YOUR_STORE_ID",
amount="59.90",
currency="EUR",
merchant_order_id="order-123",
idempotency_key="order-123",
)
return redirect(intent["checkout_url"])SDK:iden saatavuus ja versiot on lueteltu SDK-dokumentaatiossa. Go-moduulin polku on paikkamerkki, kunnes SDK julkaistaan.
Webhookit
Tarkista, poista kaksoiskappaleet ja toimi vasta sitten.
Allekirjoitukset ovat HMAC-SHA256-tiivisteitä aikaleiman ja raakarungon yli. Tapahtumatunnisteet pysyvät samoina uudelleenyrityksissä.
import { verifyWebhook, WebhookVerificationError } from '@gryphem-pay/webhooks';
app.post('/webhooks/gryphem', express.raw({ type: 'application/json' }), async (req, res) => {
try {
const event = await verifyWebhook({
payload: req.body, // raw Buffer — never re-serialised JSON
header: req.get('Gryphem-Signature') ?? '',
secrets: [process.env.GRYPHEM_WEBHOOK_SECRET!], // add the previous secret during rotation
});
if (await seen(event.event_id)) return res.sendStatus(200); // idempotent
if (event.event_type === 'payment.confirmed') await markOrderPaid(event.object.id);
res.sendStatus(200);
} catch (err) {
if (err instanceof WebhookVerificationError) return res.sendStatus(400);
throw err;
}
});Käytännöt
Ennustettava suunnittelultaan.
- Idempotenssi
- Lähetä Idempotency-Key jokaisessa luontipyynnössä. Toistot palauttavat alkuperäisen vastauksen; uudelleen käytetty avain eri rungolla hylätään.
- Tyypitetyt virheet
- Virheissä on type, code, message, param ja request_id. Yritä uudelleen vain virheissä rate_limit_error ja api_error, ja kasvata viivettä yritysten välillä.
- Kursoripohjainen sivutus
- Listat hyväksyvät parametrit limit ja starting_after ja palauttavat kentät has_more ja next_cursor — vakaasti myös samanaikaisten kirjoitusten aikana.
- Rahamäärät merkkijonoina
- Summat ovat desimaalimerkkijonoja; kryptosummat tulevat myös kokonaislukuina perusyksiköissä. Älä koskaan jäsennä niitä liukuluvuiksi.
- Pyyntötunnisteet
- Jokaisessa vastauksessa on Request-Id-otsake. Mainitse se tukipyynnöissä; se johtaa pyynnön lokiin hallintapaneelissa.
- Versiointi
- Rajapinta on versioitu polun /v1 alle. Webhookien sisällössä on api_version, jotta vastaanottajat voivat siirtyä uuteen versioon hallitusti.
Tuotantoon
Valmiina ennen ensimmäistä maksua.
Luo tili ja lähetä yrityksesi tunnistamistiedot jo nyt. Varmista ennen ensimmäistä oikeaa maksua, että integraatiosi käsittelee jokaisen tilan: underpaid, overpaid, expired ja manual review ohjautuvat ihmiselle, ja toimitat tilauksen vain, kun maksu sen sallii.