Ihre erste Bestellung in 5 Minuten
Diese Anleitung fuehrt Sie vom Einstieg bis zur bestaetigten Arzneimittelbestellung mit dem MSV3 Smart Gateway.
Voraussetzungen
- Ein MSV3-Gateway-API-Schluessel (
pk_live_...fuer Produktion,pk_test_...fuer Sandbox) - MSV3-Zugangsdaten Ihres Grosshaendlers (Benutzername + Passwort)
- Node.js 18+, Python 3.10+, Java 17+ oder curl
Schritt 1 - SDK installieren
TypeScript / Node.js
npm install @msv3/sdk Python
pip install msv3 Java (Maven)
<dependency>
<groupId>dev.msv3</groupId>
<artifactId>msv3-sdk</artifactId>
<version>1.0.0</version>
</dependency> curl
Keine Installation erforderlich. Umgebungsvariablen setzen:
export MSV3_API_KEY="pk_live_abc123"
export MSV3_USER="Now00079800"
export MSV3_PASS="ihr-passwort"
export MSV3_BASE="https://api.msv3gateway.example.com" Schritt 2 - Verbindung testen
Ueberpruefen Sie, ob Ihre Zugangsdaten den Grosshaendler erreichen.
import { Msv3Client } from '@msv3/sdk';
const client = new Msv3Client({ apiKey: 'pk_live_abc123' });
const creds = {
wholesaler: 'noweda',
username: 'Now00079800',
password: 'ihr-passwort',
};
const result = await client.connection.test(creds);
console.log(`Verbunden mit ${result.wholesaler} in ${result.latency_ms}ms`); Erwartete Antwort:
{
"connected": true,
"wholesaler": "noweda",
"latency_ms": 142
} Schritt 3 - Verfuegbarkeit pruefen
Echtzeit-Verfuegbarkeit fuer bis zu 50 PZNs gleichzeitig abfragen.
const availability = await client.availability.check(creds, {
items: [
{ pzn: '761271', quantity: 5 },
{ pzn: '10203595', quantity: 1 },
],
});
for (const item of availability.items) {
const status = item.available ? 'verfuegbar' : 'nicht verfuegbar';
console.log(`PZN ${item.pzn}: ${status}`);
} Erwartete Antwort:
{
"wholesaler": "noweda",
"response_type": "standard",
"items": [
{
"pzn": "761271",
"quantity_requested": 5,
"available": true,
"deliveries": [
{
"type": "normal",
"quantity": 5,
"tour": "00345H",
"estimated_at": "2026-04-28T10:00:00"
}
]
}
]
} Schritt 4 - Bestellung aufgeben
Bestellung mit backorder (Nachlieferung) fuer einen Artikel aufgeben.
const order = await client.orders.create(creds, {
items: [
{
pzn: '761271',
quantity: 3,
delivery_preference: 'backorder',
},
{
pzn: '10203595',
quantity: 1,
delivery_preference: 'normal',
},
],
});
console.log(`Bestellstatus: ${order.status}`);
console.log(`Anforderungs-ID: ${order.request_id}`);
for (const item of order.items) {
console.log(
`PZN ${item.pzn}: ${item.quantity_confirmed}/${item.quantity_ordered} bestaetigt`
);
} Erwartete Antwort:
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "confirmed",
"wholesaler": "noweda",
"dry_run": false,
"items": [
{
"pzn": "761271",
"quantity_ordered": 3,
"quantity_confirmed": 3,
"delivery_preference": "backorder",
"deliveries": [
{
"type": "normal",
"quantity": 3,
"tour": "00345H",
"estimated_at": "2026-04-28T10:00:00"
}
]
}
]
} Nachtbetrieb: Befindet sich das Grosshaendlersystem ausserhalb der Geschaeftszeiten, lautet der Status
queued_night_modeund dasitems-Array ist leer. Die Bestellung wird automatisch zum naechsten Bestellfenster uebermittelt.
Liefervorgaben
| Wert | MSV3-Bezeichnung | Bedeutung |
|---|---|---|
normal | Normal | Sofort liefern, was verfuegbar ist |
backorder | MaxNachlieferung | Fehlmengen nachliefern |
grouped | MaxVerbund | Sammellieferung mit anderen Positionen |
disposition | MaxDispo | Disposition durch den Grosshaendler |
Probelauf (Dry Run):
?dry_run=trueanhaengen oder{ dryRun: true }(TS) /dry_run=True(Python) /create(creds, request, true)(Java) uebergeben, um die Bestellung zu validieren ohne sie tatsaechlich aufzugeben.
Schritt 5 - Bestellstatus pruefen
Verwenden Sie die request_id aus der Bestellantwort, um den aktuellen Status abzurufen.
const status = await client.orders.status(creds, order.request_id);
console.log(`Bestellung ${status.order_id}: ${status.status}`);
if (status.status === 'available') {
for (const item of status.items) {
console.log(` PZN ${item.pzn}: ${item.quantity_ordered} Stueck bestellt`);
}
} Statuswerte
available- Bestelldetails vorhandenexpired- Antwort des Grosshaendlers nicht mehr gespeichertunknown- Grosshaendler kennt diese Bestell-ID nicht
Naechste Schritte
- API-Referenz - vollstaendige Endpunkt-Dokumentation
- TypeScript SDK - Fehlerbehandlung, Webhook-Verifizierung, alle Ressourcen
- Python SDK - dasselbe fuer Python
- Java SDK - Builder-Pattern, typsichere Modelle, Exception-Hierarchie
- Grosshaendler-Leitfaden - Faehigkeiten je Grosshaendler, Besonderheiten
- Fehler-Referenz - alle Fehlertypen mit Loesungen