Zum Hauptinhalt springen

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.
POST /v2/public-api/prescriptions/{shop_identifier}
shop_identifier
string
erforderlich
Eindeutiger Bezeichner für den Shop
Erforderliche Berechtigung: create_prescription_checkout

Anfragekörper

{
  "reserved_draft_order_id": "123",
  "prescriptions": [
    {
      "id": "my-prescription-001",
      "pdf_base64": "JVBERi0xLjQK..."
    }
  ],
  "lines": [
    {
      "sku_uid": "sku-456",
      "quantity": 1,
      "prescription_id": "my-prescription-001"
    }
  ],
  "patient_data": {
    "first_name": "Max",
    "last_name": "Mustermann",
    "date_of_birth": 631152000,
    "gender": "male"
  },
  "buyerIdentity": {
    "email": "max.mustermann@example.com",
    "phone": "+4917612345678",
    "countryCode": "DE",
    "customerAccessToken": "shopify-customer-access-token"
  },
  "checkout_type": "draft_order",
  "prepaid": false,
  "external_order_id": "order-123",
  "delivery": {
    "delivery_type": "pickup",
    "delivery_price": 499
  },
  "transaction": {
    "transaction_id": "txn-123",
    "transaction_amount": 4299
  },
  "billing_address": {
    "first_name": "Max",
    "last_name": "Mustermann",
    "address1": "Hauptstraße 42",
    "city": "Berlin",
    "province": "",
    "country_code": "DE",
    "zip": "10115"
  },
  "shipping_address": {
    "first_name": "Max",
    "last_name": "Mustermann",
    "address1": "Hauptstraße 42",
    "city": "Berlin",
    "province": "",
    "country_code": "DE",
    "zip": "10115"
  }
}
FeldTypErforderlichBeschreibung
reserved_draft_order_idstringNeinShopify Legacy-DraftOrder-ID aus dem Produkte-Reservierungsendpoint. Wenn gesetzt, aktualisiert RxScale diesen Bestellentwurf, statt einen neuen Checkout zu erstellen
prescriptionsarrayNeinListe der Rezeptobjekte mit id und pdf_base64
prescriptions[].idstringJaIhre interne ID für dieses Rezept (wird zur Verknüpfung mit Positionen verwendet)
prescriptions[].pdf_base64stringJaBase64-kodiertes PDF des signierten Rezepts
linesarrayNeinPositionen für den Checkout
lines[].sku_uidstringJaSKU-UID aus dem Produktkatalog
lines[].quantityintegerJaZu bestellende Menge
lines[].prescription_idstringNeinVerknüpft die Position mit einem Rezept über dessen id
patient_dataobjectJaDemografische Patientendaten
patient_data.first_namestringJaVorname des Patienten
patient_data.last_namestringJaNachname des Patienten
patient_data.date_of_birthintegerJaGeburtsdatum als Unix-Zeitstempel
patient_data.genderstringJaGeschlecht des Patienten (male, female, divers)
buyerIdentityobjectBedingtShopify-Cart-Buyer-Identity. Erforderlich, wenn checkout_type draft_order_without_checkout_request ist; wird für checkout_link-Carts und Checkout-Anfragen für Bestellentwürfe verwendet
buyerIdentity.emailstringNeinE-Mail-Adresse des Käufers
buyerIdentity.phonestringNeinTelefonnummer des Käufers
buyerIdentity.countryCodestringNeinShopify-Ländercode des Käufers
buyerIdentity.customerAccessTokenstringNeinShopify-Storefront-Customer-Access-Token. Wenn er mit checkout_type: "checkout_link" gesendet wird, verknüpft Shopify den Cart mit dem Kundenkonto
checkout_typestringNeinCheckout-Typ: checkout_link, draft_order (Standard) oder draft_order_without_checkout_request
prepaidbooleanNeinGibt an, ob die Bestellung bereits extern bezahlt wurde. Standardwert ist false; der Wert wird als Shopify-Bestellattribut prepaid=true oder prepaid=false angehängt. Das Feld ändert das Verhalten von checkout_type nicht
external_order_idstringNeinIhre externe Bestell-ID. Wenn gesetzt, hängt RxScale sie als Shopify-Bestellattribut external_order_id an
deliveryobjectNeinLieferdaten, die als Attribute an die Shopify-Bestellung angehängt werden
delivery.delivery_typestringNeinLieferart. Der Store-Betreiber ordnet diesen Wert seinen eigenen Versandmethoden zu
delivery.delivery_priceintegerNeinLieferpreis, der als Attribut an die Shopify-Bestellung angehängt wird
transactionobjectNeinTransaktionsdaten, die als Attribute an die Shopify-Bestellung angehängt werden
transaction.transaction_idstringNeinTransaktions-ID, die als Attribut an die Shopify-Bestellung angehängt wird
transaction.transaction_amountintegerNeinTransaktionsbetrag, der als Attribut an die Shopify-Bestellung angehängt wird
billing_addressobjectNeinRechnungsadresse, die an den Shopify-Bestellentwurf angehängt wird. Wird ignoriert, wenn checkout_type checkout_link ist
billing_address.first_namestringNeinVorname des Empfängers
billing_address.last_namestringNeinNachname des Empfängers
billing_address.address1stringNeinEinzeilige Straßenadresse inklusive Hausnummer
billing_address.citystringNeinStadt
billing_address.provincestringNeinBundesland, Provinz oder Region. Gesetzt für Länder wie IE; wird als leerer String für Länder wie DE gesendet
billing_address.country_codestringNeinISO-Ländercode
billing_address.zipstringNeinPostleitzahl
shipping_addressobjectNeinLieferadresse, die an den Shopify-Bestellentwurf angehängt wird. Wird ignoriert, wenn checkout_type checkout_link ist
shipping_address.first_namestringNeinVorname des Empfängers
shipping_address.last_namestringNeinNachname des Empfängers
shipping_address.address1stringNeinEinzeilige Straßenadresse inklusive Hausnummer
shipping_address.citystringNeinStadt
shipping_address.provincestringNeinBundesland, Provinz oder Region. Gesetzt für Länder wie IE; wird als leerer String für Länder wie DE gesendet
shipping_address.country_codestringNeinISO-Ländercode
shipping_address.zipstringNeinPostleitzahl
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.

Checkout-Typen

Das Feld checkout_type steuert, wie die Bestellung in Shopify erstellt wird:
WertBeschreibung
draft_orderErstellt einen Shopify-Bestellentwurf und sendet eine Checkout-Anfrage an den Kunden (Standard)
checkout_linkGibt einen Shopify-Checkout-Link zurück, über den der Kunde die Zahlung direkt abschließen kann
draft_order_without_checkout_requestErstellt einen Shopify-Bestellentwurf, ohne eine Checkout-Anfrage an den Kunden zu senden. Erfordert buyerIdentity, weil Kundendaten nicht über eine Shopify-Checkout-Anfrage erfasst werden
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. Die Zuordnung erfolgt über die Shopify-Variante aus sku_uid; doppelte sku_uid-Werte werden abgelehnt, weil sie nicht eindeutig sind. Der reservierte Bestellentwurf muss zum Telemedizin-Anbieter gehören, der mit dem API-Schlüssel verknüpft ist.

Beispielanfrage

curl -X POST "https://api.rxscale.com/v2/public-api/prescriptions/my-shop" \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "reserved_draft_order_id": "123",
    "prescriptions": [
      {
        "id": "rx-001",
        "pdf_base64": "JVBERi0xLjQK..."
      }
    ],
    "lines": [
      {
        "sku_uid": "sku-456",
        "quantity": 1,
        "prescription_id": "rx-001"
      }
    ],
    "patient_data": {
      "first_name": "Max",
      "last_name": "Mustermann",
      "date_of_birth": 631152000,
      "gender": "male"
    },
    "buyerIdentity": {
      "email": "max.mustermann@example.com",
      "phone": "+4917612345678",
      "countryCode": "DE",
      "customerAccessToken": "shopify-customer-access-token"
    },
    "prepaid": false,
    "external_order_id": "order-123",
    "delivery": {
      "delivery_type": "pickup",
      "delivery_price": 499
    },
    "transaction": {
      "transaction_id": "txn-123",
      "transaction_amount": 4299
    },
    "billing_address": {
      "first_name": "Max",
      "last_name": "Mustermann",
      "address1": "Hauptstraße 42",
      "city": "Berlin",
      "province": "",
      "country_code": "DE",
      "zip": "10115"
    },
    "shipping_address": {
      "first_name": "Max",
      "last_name": "Mustermann",
      "address1": "Hauptstraße 42",
      "city": "Berlin",
      "province": "",
      "country_code": "DE",
      "zip": "10115"
    }
  }'

Antwort

{
  "status": "success",
  "prescriptions": [
    {
      "id": "rx-001",
      "prescription_uid": "px-abc123"
    }
  ]
}
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.

Behandlungs-Checkout erstellen

Erstellen Sie einen Checkout für behandlungsbasierte Bestellungen (kein Rezept erforderlich).
POST /v2/public-api/treatments/{shop_identifier}
shop_identifier
string
erforderlich
Eindeutiger Bezeichner für den Shop
Erforderliche Berechtigung: create_treatment_checkout

Anfragekörper

{
  "lines": [
    {
      "sku_uid": "sku-789",
      "quantity": 1,
      "anamnesis_id": "anam-001"
    }
  ],
  "buyerIdentity": {
    "email": "max.mustermann@example.com",
    "phone": "+4917612345678",
    "countryCode": "DE",
    "customerAccessToken": "shopify-customer-access-token"
  },
  "checkout_type": "draft_order"
}
FeldTypErforderlichBeschreibung
linesarrayJaPositionen für den Checkout
lines[].sku_uidstringJaSKU-UID aus dem Produktkatalog
lines[].quantityintegerJaZu bestellende Menge
lines[].anamnesis_idstringNeinAnamnese-ID zur Verknüpfung mit einem Patientenfragebogen
buyerIdentityobjectBedingtShopify-Cart-Buyer-Identity. Erforderlich, wenn checkout_type draft_order_without_checkout_request ist; wird für checkout_link-Carts und Checkout-Anfragen für Bestellentwürfe verwendet
buyerIdentity.emailstringNeinE-Mail-Adresse des Käufers
buyerIdentity.phonestringNeinTelefonnummer des Käufers
buyerIdentity.countryCodestringNeinShopify-Ländercode des Käufers
buyerIdentity.customerAccessTokenstringNeinShopify-Storefront-Customer-Access-Token. Wenn er mit checkout_type: "checkout_link" gesendet wird, verknüpft Shopify den Cart mit dem Kundenkonto
checkout_typestringNeinCheckout-Typ: checkout_link, draft_order (Standard) oder draft_order_without_checkout_request
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

curl -X POST "https://api.rxscale.com/v2/public-api/treatments/my-shop" \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "lines": [
      {
        "sku_uid": "sku-789",
        "quantity": 1
      }
    ],
    "buyerIdentity": {
      "email": "max.mustermann@example.com",
      "phone": "+4917612345678",
      "countryCode": "DE",
      "customerAccessToken": "shopify-customer-access-token"
    }
  }'

Antwort

{
  "status": "success",
  "checkout_url": "https://shop.example.com/checkout/abc123"
}