Skip to main content

Rezepte & Behandlungen

Erstellen Sie Checkout-Sitzungen für Rezepte oder Behandlungen. Diese Endpoints übernehmen die Rezeptvalidierung, die Checkout-Erstellung und geben eine Checkout-URL oder einen Bestellentwurf zurück, über den der Patient seinen Kauf abschließen kann.

Rezept-Checkout erstellen

Laden Sie ein oder mehrere signierte Rezepte (als Base64-kodierte PDFs) zusammen mit Positionen und Patientendaten hoch, um einen Checkout zu erstellen.
string
erforderlich
Eindeutiger Bezeichner für den Shop
Erforderliche Berechtigung: create_prescription_checkout

Anfragekörper

buyerIdentity.customerAccessToken gilt nur, wenn checkout_type auf checkout_link gesetzt ist, da Shopify dieses Feld für Storefront-Carts verwendet. Es verknüpft kein Kundenkonto mit Shopify-Bestellentwürfen.
Senden Sie buyerIdentity, wenn Sie checkout_type: "draft_order_without_checkout_request" verwenden. RxScale lehnt die Anfrage ohne dieses Feld ab, weil keine Shopify-Checkout-Anfrage gesendet wird, über die Kundendaten später erfasst werden könnten.

Zuordnung der Versandmethode

delivery.delivery_type ist Ihr eigener Bezeichner für eine Versandmethode. Ein RxScale-Administrator kann jeden Ihrer delivery_type-Werte einer der Shopify-Versandmethoden des Stores zuordnen. Wenn Sie delivery senden, sucht RxScale nach einer Zuordnung für den exakt gesendeten Wert — der Abgleich unterscheidet Groß-/Kleinschreibung und Leerzeichen, sodass "Express" und "express" als unterschiedliche Werte gelten —, und eines von drei Ergebnissen tritt ein:
  1. Es wird eine zugeordnete Shopify-Versandmethode gefunden, und delivery.delivery_price fehlt oder entspricht dem eigenen Preis dieser Methode. Die Versandposition übernimmt Namen und Preis dieser Methode. In Ihrem Shopify-Adminbereich erscheint sie dabei als benutzerdefinierte Versandposition — nicht als der eigene, aktive Tarif des Stores —, auch wenn Name und Preis exakt mit der zugeordneten Methode übereinstimmen.
  2. delivery.delivery_price weicht vom Preis der zugeordneten Methode ab, Shopify bietet aktuell keinen aktiven Tarif unter dem Namen der zugeordneten Methode an, oder es existiert keine Zuordnung für Ihren delivery_type. Es wird eine Versandposition mit dem von Ihnen gesendeten delivery_price erstellt. Ihr Name ist der Name der zugeordneten Shopify-Versandmethode, sobald eine Zuordnung existiert — auch dann, wenn lediglich der Preis abweicht — und nur ohne Zuordnung der von Ihnen gesendete delivery_type.
  3. Es existiert keine Zuordnung für Ihren delivery_type — oder es existiert eine, aber Shopify bietet aktuell keinen aktiven Tarif unter dem Namen dieser Methode an (zum Beispiel weil sie in Shopify umbenannt oder deaktiviert wurde) —, und es wurde kein delivery.delivery_price angegeben. Der Bestellung wird keine Versandposition hinzugefügt.
delivery.delivery_type und delivery.delivery_price werden weiterhin wie bisher als Shopify-Bestellattribute angehängt — unabhängig davon, welches der drei oben genannten Ergebnisse eintritt. Dies ist eine additive Änderung: Bestehende Integrationen, die diese Attribute auslesen, funktionieren unverändert weiter.
Die Zuordnung der Versandmethode gilt nur, wenn checkout_type draft_order oder draft_order_without_checkout_request ist. Bei checkout_type: "checkout_link" gibt RxScale einen Shopify-Storefront-Cart zurück, der keine Versandposition besitzt — der Kunde wählt seine Versandoption im eigenen Checkout-Prozess von Shopify.
Beispiel: ein zugeordneter Liefertyp ohne Preisüberschreibung
Hat Ihr Store "express" einer Shopify-Versandmethode zugeordnet, übernimmt die Versandposition der entstehenden Bestellung Namen und Preis dieser Methode (im Shopify-Adminbereich sichtbar als benutzerdefinierte Versandposition, nicht als aktiver Tarif des Stores). Die Checkout-Antwort ist unabhängig davon, welches Ergebnis eintritt, unverändert — die aufgelöste Versandposition ist auf dem Shopify-Bestellentwurf bzw. der Bestellung selbst sichtbar, nicht in dieser Antwort:

Checkout-Typen

Das Feld checkout_type steuert, wie die Bestellung in Shopify erstellt wird:
Wenn reserved_draft_order_id gesetzt ist, wird checkout_type ignoriert. RxScale speichert die signierten Rezepte und ergänzt _prescription_uid-Metadaten an den passenden reservierten Draft-Order-Positionen (nicht an Bestell-Attributen auf Order-Ebene). Die Zuordnung erfolgt über die Shopify-Variante aus sku_uid; doppelte sku_uid-Werte werden abgelehnt, weil sie nicht eindeutig sind. Schlüssel mit führendem _ sind private Shopify-Properties und in der Shopify-Admin-UI oft ausgeblendet — prüfen Sie sie bei Bedarf über die Admin-GraphQL-API. Wenn buyerIdentity.email und/oder buyerIdentity.phone gesetzt (und nicht leer) sind, überschreiben sie die Käuferkontaktdaten des reservierten Bestellentwurfs; leere Werte werden ignoriert, sodass vorhandene Kontaktdaten nie gelöscht werden. Die billing_address und shipping_address aus der Anfrage werden an den Bestellentwurf übergeben; der Name des Patienten aus patient_data wird in jede Adresse eingesetzt, sofern dort kein Name angegeben ist (Shopify-Bestellentwürfe haben kein separates Kundennamensfeld). Der reservierte Bestellentwurf muss zum Telemedizin-Anbieter gehören, der mit dem API-Schlüssel verknüpft ist.

Beispielanfrage

Antwort

Die Antwort ordnet Ihre Rezept-IDs den RxScale-Rezept-UIDs zu. Verwenden Sie diese UIDs, um den Bestellstatus über den Bestellungen-Endpoint abzufragen. Wenn reserved_draft_order_id verwendet wird, erstellt RxScale keinen neuen Checkout und keinen neuen Bestellentwurf. Der vorhandene reservierte Bestellentwurf wird aktualisiert und kann nach der Zahlung den normalen Shopify-Bestell- und Fulfillment-Prozess durchlaufen.

Fehlerantworten

Doppelte prescriptions[].id:
Doppelte external_order_id (auch wenn prescriptions[].id neu ist):
code entspricht der Management-API-Antwort bei doppelter Bestellannahme, sodass Retries dieselbe Behandlung nutzen können. Verwenden Sie prescription_uid mit dem Bestellungen-Endpoint, solange order_uid noch null ist (typisch direkt nach der Übermittlung, bevor Shopify die Bestellung anlegt).
Eine prescriptions[].id oder external_order_id wird erst blockiert, wenn sie erfolgreich akzeptiert wurde. Ist eine frühere Anfrage fehlgeschlagen (zum Beispiel mit einem 4xx/5xx-Status vor Abschluss), wird ein erneutes Senden desselben Werts nicht blockiert und normal verarbeitet. Dadurch kann die Rezeptübermittlung nach einer fehlgeschlagenen oder unklaren Anfrage gefahrlos wiederholt werden — eine erneute Übermittlung einer bereits akzeptierten ID liefert 409 statt stillschweigend eine doppelte Bestellung zu erzeugen, und kann daher als idempotenter No-op statt als alarmierender Fehler behandelt werden.
Diese Prüfungen gelten für alle Rezeptübermittlungswege, die diesen Endpoint gemeinsam nutzen, einschließlich anbieterspezifischer Integrationen (zum Beispiel medcanonestop, dransay) und Aktualisierungen reservierter Bestellentwürfe (reserved_draft_order_id).

Behandlungs-Checkout erstellen

Erstellen Sie einen Checkout für behandlungsbasierte Bestellungen (kein Rezept erforderlich).
string
erforderlich
Eindeutiger Bezeichner für den Shop
Erforderliche Berechtigung: create_treatment_checkout

Anfragekörper

buyerIdentity.customerAccessToken gilt nur, wenn checkout_type auf checkout_link gesetzt ist, da Shopify dieses Feld für Storefront-Carts verwendet. Es verknüpft kein Kundenkonto mit Shopify-Bestellentwürfen.
Senden Sie buyerIdentity, wenn Sie checkout_type: "draft_order_without_checkout_request" verwenden. RxScale lehnt die Anfrage ohne dieses Feld ab, weil keine Shopify-Checkout-Anfrage gesendet wird, über die Kundendaten später erfasst werden könnten.
Siehe Checkout-Typen oben für Details zu den einzelnen Optionen.

Beispielanfrage

Antwort