Webhook

Notre webhook vous permet d'être notifiés automatiquement d'évènements comme le changement de statut des coupons que vous avez réservés, ou une modification de notre catalogue d'offres.

Il est aussi indispensable pour confirmer de manière programmatique un coupon préalablement réservé.

URL de notification

Pour souscrire aux notifications, vous devez renseigner votre endpoint dans l’onglet Informations > Configuration Plateforme, dans le champ URL de notification (https).

Ci-dessous une copie d'écran :

Votre endpoint doit renvoyer un code HTTP 200 pour confirmer la bonne réception de notre notification. Dans le cas contraire, notre webhook tentera à nouveau d’envoyer la requête à plusieurs reprises (exponential backoff) sur une fenêtre de 5 minutes. En phase de test, si besoin de pointer sur votre machine locale, vous pouvez utiliser un service comme ngrok (https://ngrok.com/ ). 

Évènements

Notification de mise à jour du catalogue

store/update

Cet évènement se déclenche lors d’un changement porté sur une enseigne, par exemple :

  • sur ses conditions : délai de livraison - “shippingTime” ; date de fin de validité - “validtyDate”, description - “mentions” etc.,
  • sur les valeurs proposées : “voucherValueMin", "voucherValueMax, “voucherPossibleDiscreteValues” etc.
  • sur sa disponibilité / indisponibilité.

Ainsi vous pouvez rafraichir votre référentiel du catalogue Jackpot suite à cet évènement en lieu et place du polling sur notre API.

{
  "event": "store/update",
  "id": "22cf5386-57e4-4a52-8507-a3654019f6e2",
  "createdAt": "2021-07-01T13:33:53.848Z",
  "message": {
    "storeId": "9577f1aa-35cb-42fc-89fa-4d917e20d408"
  }
}

Notification de mise à jour catalogue - coupon/[event]

coupon/refunded
coupon/canceled
coupon/reserved
coupon/refund_rejected
coupon/confirmed
coupon/ready

Ces évènements surviennent lors de changements de statut lié au cycle de vie d’un coupon.

Si vous êtes en “confirmation manuelle”, vous pouvez par exemple réagir à l'évènement coupon/reserved et faire appel à la route d’API /v2/vouchers/{voucherId}/confirm pour confirmer programmatiquement un coupon.

Ces notifications sont donc très utiles pour mettre en place un processus interne.

À noter également l'évènement coupon/ready qui fournit l’URL du PDF du coupon. L'URL est valide 1 heure. Si elle est expirée, vous pouvez en obtenir une nouvelle via la route “GET /v2/vouchers/{voucherId}/signedurl”)**

{
  "event": "coupon/ready",
  "id": "09a5cdfc-03db-444e-84e9-1dbd29c34377",
  "createdAt": "2021-07-01T15:05:20.360Z",
  "message": {
    "id": "643ee25e-b705-42e0-b074-28265ba0adc8",
    "state": "READY",
    "value": "80.00",
    "initialAmount": "68.80",
    "reservationDate": "2021-07-01T15:05:15.311Z",
    "validityDate": "2022-03-28",
    "resaExpireDate": "2021-07-16T15:05:15.311Z",
    "couponId": "XSLCNKVBCJ",
    "confirmDate": "2021-07-01T15:05:15.431Z",
    "sendDate": "2021-07-01T15:05:17.265Z",
    "paymentState": "DUE",
    "customTransactionId": null,
    "walletOperationId": "MIITUL",
    "canceledDate": null,
    "backUrl": null,
    "storeName": "Morphée",
    "price": "68.80",
    "email": "sam@wearedevx.com",
    "url": "https://storage.googleapis.com/vouchers-jackpot-staging/643ee25e-b705-42e0-b074-28265ba0adc8.pdf?GoogleAccessId=gcp-storage-staging%40polar-access-225113.iam.gserviceaccount.com&Expires=1625155520&Signature=YxWB55ZfWorrOAvEDV421Hp7%2FtGCQrbfQ2wrDeX%2FgwOsl%2BuX2p53Lb6WrxUswZLaHjZzENMQZHkjrQLq%2FjQ2lBiiXQFhV4t7yX%2BU3cJTNO3FD81q42bfMHUBQUTOlm6rk36uZYKS3KH0zoSSGAcj3IHYjoeCwm7Bv1phORuWbK%2BRkS6bx2wBRS0Ijm0UIWxT%2FfMeNCBNv9w9JCcE%2BRUW7m52hr64PAskifGMdpCgGpeBVThO0hrkdxaJy65FH7Jfrj8kVGUPEGWmsl%2FK6EjnfbWwQiOm9onZSfXBsJ7%2FsCj3AsZ6YoJBe0IiwJC%2BXMcsMeSUTkQX1DK7mX2ERuJqkw%3D%3D",
    "signedUrl": "https://storage.googleapis.com/vouchers-jackpot-staging/643ee25e-b705-42e0-b074-28265ba0adc8.pdf?GoogleAccessId=gcp-storage-staging%40polar-access-225113.iam.gserviceaccount.com&Expires=1625155520&Signature=YxWB55ZfWorrOAvEDV421Hp7%2FtGCQrbfQ2wrDeX%2FgwOsl%2BuX2p53Lb6WrxUswZLaHjZzENMQZHkjrQLq%2FjQ2lBiiXQFhV4t7yX%2BU3cJTNO3FD81q42bfMHUBQUTOlm6rk36uZYKS3KH0zoSSGAcj3IHYjoeCwm7Bv1phORuWbK%2BRkS6bx2wBRS0Ijm0UIWxT%2FfMeNCBNv9w9JCcE%2BRUW7m52hr64PAskifGMdpCgGpeBVThO0hrkdxaJy65FH7Jfrj8kVGUPEGWmsl%2FK6EjnfbWwQiOm9onZSfXBsJ7%2FsCj3AsZ6YoJBe0IiwJC%2BXMcsMeSUTkQX1DK7mX2ERuJqkw%3D%3D"
  }
}