Points de terminaison de l'API Snipcart
L'URL de base pour l'API de la passerelle de paiement personnalisée est https://payment.snipcart.com/api
/validate
/payment-session
/payment
Valider le jeton public
GET
/public/custom-payment-gateway/validate?publicToken=<SOME_TOKEN>
Ceci est important pour éviter les paiements frauduleux
Lorsque nous appelons votre API, nous envoyons toujours un publicToken
. Utilisez ce point de terminaison pour valider que la demande a été faite par notre API.
Ce jeton doit toujours être validé pour éviter les tentatives de fraude.
Requête
publicToken
string
- Obligatoire
La clé publique d'une session de paiement en cours.
curl --request GET \
--url 'https://payment.snipcart.com/api/public/custom-payment-gateway/validate?publicToken=<SOME_TOKEN>' \
Récupérer une session de paiement
GET
/public/custom-payment-gateway/payment-session?publicToken=<SOME_TOKEN>
Récupère la session de paiement à partir du publicToken.
Requête
publicToken
string
- Obligatoire
La clé publique d'une session de paiement en cours.
curl --request GET \
--url 'https://payment.snipcart.com/api/public/custom-payment-gateway/payment-session?publicToken=<SOME_TOKEN>' \
Réponse
id
Guid
L'identifiant de la session de paiement.
invoice
Invoice
La facture de la session
paymentAuthorizationRedirectUrl
string
L'URL à laquelle il faut rediriger une fois le processus de paiement terminé.
{
"invoice": {
"shippingAddress": {
"name": "John Doe",
"streetAndNumber": "123 Street",
"postalCode": "12345",
"country": "US",
"city": "Cuppertino",
"region": null
},
"billingAddress": {
"name": "John Doe",
"streetAndNumber": "123 Street",
"postalCode": "12345",
"country": "US",
"city": "Cuppertino",
"region": null
},
"email": "john.doe@example.com",
"language": "en",
"currency": "usd",
"amount": 409.29,
"targetId": "226086da-57be-4b92-b950-5fd632be7767",
"items": [
{
"name": "Rosy-Fingered Dawn at Louse Point",
"unitPrice": 49.95,
"quantity": 1,
"type": "Physical",
"rateOfTaxIncludedInPrice": 0,
"amount": 49.95
},
...
]
},
"id":"b2eb036a-842ee242-0d2d-4fad-bc9a-de16411fc6d1",
"paymentAuthorizationRedirectUrl":"https://example.com#/checkout",
}
Créer le paiement
POST
/private/custom-payment-gateway/payment
Crée un paiement pour la session de paiement (confirme le paiement)
Requête
En-têtesAuthorization
string
- ObligatoireBearer <YOUR_SECRET_API_KEY>
L'en-tête de demande d'autorisation est utilisé pour valider vos informations d'identification auprès du serveur. Sa valeur doit être un jeton porteur qui contient votre clé API secrète.
Content-Type
string
- Obligatoireapplication/json
Notre API n'accepte que le type de contenu application/json. Vous devez donc toujours spécifier le type de contenu application/json dans chaque requête que vous effectuez.
CorpspaymentSessionId
string
- Obligatoire
L'identifiant de la session de paiement
state
"processing" | "processed" | "invalidated" | "failed"
- Obligatoire
L'état actuel du paiement. Les valeurs possibles sont : processing
, processed
, invalidated
et failed
.
transactionId
string
- Obligatoire
L'identifiant unique de la transaction. La passerelle de paiement fournit souvent cette information.
error
Error
Représente le message d'erreur que vous souhaitez afficher au client dans l'étape de paiement, le cas échéant.
Errorcode
string
- Obligatoire
Ceci est utilisé pour localiser le message dans le panier.
message
string
Ceci est utilisé comme valeur de remplacement lorsque aucune correspondance n'est trouvée pour code
.
instructions
string
Instructions supplémentaires que vous souhaitez afficher à votre client dans l'écran de confirmation de la commande.
links
Links
Linksrefunds
string
Ceci sera appelé lorsqu'un remboursement sera effectué via le tableau de bord du commerçant.
curl --request POST \
--url https://payment.snipcart.com/api/private/custom-payment-gateway/payment \
--header 'Authorization: Bearer <YOUR_SECRET_API_KEY>' \
--header 'content-type: application/json' \
--data '{
"paymentSessionId": "5e921d3b-8756-4fd0-87e9-c72f946535ed",
"state": "failed",
"error": {
"code": "card_declined",
"message": "Your card was declined"
}
}'
Webhooks
Ce sont les points de terminaison de l'API que vous devrez créer pour intégrer votre propre passerelle de paiement. Notre API les appellera avec un publicToken
dans le corps de la requête.
N'oubliez pas de valider la requête en utilisant le point de terminaison /validate
.payment-methods
refund
Méthodes de paiement
Le premier point de terminaison important que votre API doit avoir est celui qui retourne les méthodes de paiement disponibles. Lorsqu'un client procède au paiement, nous appelons le point de terminaison de votre API pour lui montrer les méthodes de paiement disponibles.
Nous allons envoyer une requête POST
à l'URL de la méthode de paiement
spécifiée dans le tableau de bord du commerçant.
Nous nous attendons à recevoir un array de PaymentMethod
.
Requête
Méthode POST
Corpsinvoice
Invoice
La facture de la commande en cours
publicToken
string
Utilisé pour valider que la demande a été faite par Snipcart.
mode
"test" | "live"
Le mode de commande.
{
"invoice": {
"shippingAddress": {
"name": "John Doe",
"streetAndNumber": "123 Street",
"postalCode": "12345",
"country": "US",
"city": "Cuppertino",
"region": null
},
"billingAddress": {
"name": "John Doe",
"streetAndNumber": "123 Street",
"postalCode": "12345",
"country": "US",
"city": "Cuppertino",
"region": null
},
"email": "john.doe@example.com",
"language": "en",
"currency": "usd",
"amount": 409.29,
"targetId": "226086da-57be-4b92-b950-5fd632be7767",
"items": [
{
"name": "Rosy-Fingered Dawn at Louse Point",
"unitPrice": 49.95,
"quantity": 1,
"type": "Physical",
"rateOfTaxIncludedInPrice": 0,
"amount": 49.95
},
...
]
},
"publicToken": "<JWT_TOKEN>",
"mode": "test"
}
Réponse
CorpsPaymentMethods[]
- Obligatoire
Les méthodes de paiement disponibles pour la commande en cours.
PaymentMethodid
string
- Obligatoire
Il s'agit de l'identifiant de la méthode de paiement.
name
string
- Obligatoire
Le nom de la méthode de paiement (il sera affiché pendant la phase de paiement).
checkoutUrl
string
- Obligatoire
L'URL de votre page de paiement.
iconUrl
string
Si vous souhaitez afficher une icône au lieu d'un nom pendant la phase de paiement, vous pouvez la définir ici.
Notez que seul le nom ou l'icône sera affiché, pas les deux.
[
{
"id": "snipcart_custom_gatway_1",
"name": "Custom gateway 1",
"checkoutUrl": "https://snipcart.com/checkout_gateway_1",
},
{
"id": "snipcart_custom_gatway_2",
"name": "Custom gateway 2",
"checkoutUrl": "https://snipcart.com/checkout_gateway_2",
"iconUrl": "https://snipcart.com/checkout_gateway_2/icon.png"
}
]
Remboursement
Il s'agit du point de terminaison de remboursement que vous pouvez fournir lors de la confirmation du paiement avec notre API. Lors du remboursement d'un client à partir du tableau de bord du commerçant, ce point de terminaison sera appelé.
Requête
Méthode POST
CorpspaymentId
string
Le paiement que nous voulons rembourser.
amount
number
Le montant à rembourser.
{
"paymentId": "d3031d89-e428-4cb8-bf0e-74b883466736",
"amount": 20.75
}
Réponse
refundId
Guid
L'identifiant du remboursement.
{
"body": {
"refundId": "940bb5bc-13f7-4d02-987f-fad12ab98ebb"
}
}
Types
Invoice
shippingAddress
Address
L'adresse de livraison de la commande.
billingAddress
Address
L'adresse de facturation de la commande.
email
string
L'adresse courriel du client.
language
string
La langue du panier.
currency
string
La devise de la commande.
amount
number
Le total de la commande.
targetId
Guid
L'identifiant du panier.
items
Item[]
Les articles de la commande.
{
"shippingAddress": {
...
},
"billingAddress": {
...
},
"email": "john.doe@example.com",
"language": "en",
"currency": "usd",
"amount": 409.29,
"targetId": "226086da-57be-4b92-b950-5fd632be7767",
"items": [
...
]
}
Address
name
string
Nom complet du destinataire (prénom et nom de famille)
streetAndNumber
string
Rue et numéro de rue civique.
postalCode
string
country
string
city
string
{
"name": "John Doe",
"streetAndNumber": "123 Street",
"postalCode": "12345",
"country": "US",
"city": "Cuppertino",
"region": null
}
Item
name
string
unitPrice
number
Le prix de l'article.
quantity
number
type
"Physical" | "Digital" | "Tax" | "Shipping" | "Discount"
Représente le type d'article.
rateOfTaxIncludedInPrice
number
amount
number
La quantity
* unitPrice
{
"name": "Rosy-Fingered Dawn at Louse Point",
"unitPrice": 49.95,
"quantity": 1,
"type": "Physical",
"rateOfTaxIncludedInPrice": 0,
"amount": 49.95
}