piecemotooccasion
v1.0.0
Published
Client de l'API vendeur PieceMotoOccasion : catalogue, stock, commandes, expedition, webhook signe.
Maintainers
Readme
piecemotooccasion
Client de l'API vendeur PieceMotoOccasion, la marketplace française de la pièce moto d'occasion. Catalogue, stock, commandes, expédition, et vérification des webhooks signés.
Aucune dépendance. Node 18 ou plus.
npm install piecemotooccasionDémarrer
Le jeton se génère dans l'espace vendeur, page « Ma boutique en ligne ».
import { Pmo } from "piecemotooccasion";
const pmo = new Pmo(process.env.PMO_JETON);
const compte = await pmo.moi();
console.log(compte.vendeur, compte.commission);
const { produits, erreurs } = await pmo.envoyer([{
reference: "CAR-548",
titre: "Carter embrayage XJ 600 Diversion",
prix_ttc: 29.9,
categorie: "Carter",
marque: "Yamaha",
modele: "XJ 600 Diversion",
stock: 1,
images: ["https://ma-casse.fr/photos/car-548.jpg"],
}]);Les envois se découpent seuls en lots de 200, la limite de l'API.
Méthodes
| Méthode | Rôle |
|---|---|
| moi() | compte, statut, commission, boutique reliée |
| produits() | vos pièces chez PieceMotoOccasion |
| envoyer(fiches) | création ou mise à jour par référence |
| stock(reference, quantite) | met à jour le stock |
| retirer(reference) | retire de la vente, sans effacer |
| commandes(depuis) | commandes payées, date au format AAAA-MM-JJ |
| expedier(id, transporteur, suivi) | déclare l'expédition |
| signatureValide(corps, entete) | vérifie un webhook de commande |
Webhook des commandes
Vérifiez la signature sur le corps brut : re-sérialiser le JSON change les octets, donc la signature.
import express from "express";
import { Pmo } from "piecemotooccasion";
const pmo = new Pmo(process.env.PMO_JETON);
const app = express();
app.post("/pmo/commande", express.raw({ type: "application/json" }), (req, res) => {
if (!pmo.signatureValide(req.body, req.get("x-pmo-signature"))) {
return res.status(403).json({ erreur: "signature invalide" });
}
const { evenement, commande } = JSON.parse(req.body);
if (evenement === "commande.payee") {
console.log("commande", commande.id, commande.total_ttc);
}
res.json({ ok: true });
});Erreurs
Toute réponse en échec lève une ErreurApi portant le message de l'API et son
code HTTP.
import { ErreurApi } from "piecemotooccasion";
try {
await pmo.moi();
} catch (erreur) {
if (erreur instanceof ErreurApi && erreur.statut === 429) {
// 600 requêtes par jeton et par dix minutes
}
}Documentation
- API : https://piecemotooccasion.eu/extensions/api
- Extensions PrestaShop, WooCommerce, Shopify, Drupal, Magento, Odoo, Dolibarr : https://piecemotooccasion.eu/extensions/
- Code et exemples : https://github.com/tony-dev-web/pmo-marketplace-api
Tests
npm testLicence MIT.
