> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload-Modul mit gesichertem Link aufrufen

> Den Zugang zum Upload-Modul über einen mit Hashwert gesicherten Link absichern und den Link auf Wunsch per E-Mail an Dritte versenden lassen.

Ohne diese Erweiterung reicht die Kenntnis einer Auftragsnummer, um an die Uploads einer Bestellung zu kommen. Der gesicherte Link schließt diese Lücke: Er trägt zusätzlich einen Hashwert, den nur der Shop erzeugen kann.

Sobald der gesicherte Link aktiv ist, entfällt die manuelle Eingabe von Auftragsnummer oder Upload-ID vollständig. Der Käufer kommt nur noch über den Link ins Modul.

Das ist der entscheidende Nebeneffekt und der Grund für Schritt 4: Das Eingabeformular im Upload-Template wird überflüssig, und wer es stehen lässt, bietet dem Käufer einen Weg an, der nicht mehr funktioniert.

Die Einrichtung zerfällt in zwei Teile. Die Schritte 1 bis 4 richten den gesicherten Link ein. Die Schritte 5 bis 10 kommen dazu, wenn der Käufer den Link zusätzlich per E-Mail an Dritte weitergeben können soll, beispielsweise an seine Grafikagentur.

## Wo der Link angeboten werden kann

| Ort | |
| - | - |
| Bestelleingangsbestätigungsseite `ws_confirm.htm` | direkt nach der Bestellung |
| Bestätigungs-E-Mail `mail_customer_order.htm` | der dauerhafte Weg zurück |
| Bestellhistorie `ws_order_history.htm` | für angemeldete Käufer |
| Bestelldaten | für Ihre eigene Weiterverarbeitung |

## Teil A: Den gesicherten Link einrichten

### Schritt 1: Freischaltung

Der gesicherte Link muss von der WEBSALE AG technisch freigeschaltet werden. Dabei werden auch das Hash-Verfahren und das gemeinsame Geheimnis hinterlegt.

Diese Einstellungen liegen in der Administrationskonfiguration und damit außerhalb Ihres Zugriffs. Das ist beabsichtigt: Ein Geheimnis, das der Shopbetreiber selbst pflegen könnte, stünde auch in jeder Sicherungskopie seiner Konfiguration.

### Schritt 2: Die Linkart für die Bestelldaten festlegen

Legen Sie fest, welche Art von Link in die Bestellhistorie und in die Bestelldaten geschrieben wird.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Upload>
   OrderDataUploadLink-Type = UploadLink
</Upload>
```

### Schritt 3: Den Link in die Bestätigungs-E-Mail setzen

In `mail_customer_order.htm` setzen Sie einen der beiden Links, je nachdem, welche Kennung im Link stehen soll.

| Tag | Im Link steht |
| - | - |
| `WS-UploadLink` | die gesicherte Upload-ID |
| `WS-OrderUploadLink` | die gesicherte Auftragsnummer |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<a href="~WS-OrderUploadLink~">Zum Datei-Upload</a>
```

Beide Wege sind gleichwertig gesichert. Für die Auftragsnummer spricht, dass der Käufer sie wiedererkennt und sie im Zweifel auch am Telefon nennen kann. Für die Upload-ID spricht, dass sie sonst nirgends auftaucht.

Der Link enthält die Kennung, gegebenenfalls die Positions-ID und den Hashwert als getrennte Parameter. Verändert jemand die Kennung im Link, passt der Hashwert nicht mehr und der Aufruf wird abgewiesen.

Referenz: [WS-UploadLink](https://dokumentation.websale.de/v8s/referenz/tags/ws/merkzettel-vergleich-upload-und-externe-dienste.md#die-tags-im-uberblick) · [WS-OrderUploadLink](https://dokumentation.websale.de/v8s/referenz/tags/ws/merkzettel-vergleich-upload-und-externe-dienste.md#das-upload-modul)

### Schritt 4: Das Eingabeformular entfernen

Entfernen Sie im Template des Upload-Moduls `ws_upload.htm` die Klammerung `{UplIdInput}` samt Inhalt.

> [!WARNING]
>
> Dieser Schritt ist nicht kosmetisch. Bei aktiviertem gesichertem Link weist das Modul jeden Aufruf ohne gültigen Hashwert ab. Ein stehengebliebenes Eingabeformular führt den Käufer also in eine Fehlermeldung.

Damit ist der gesicherte Aufruf eingerichtet.

## Teil B: Den Link per E-Mail versenden lassen

Diese Erweiterung erlaubt dem Käufer, den Upload-Link an eine dritte Person zu schicken. Das Formular dafür lässt sich auf der Bestelleingangsbestätigungsseite, im Kundenkonto, über einen Deep-Link und per AJAX einbinden.

### Schritt 5: Das Template zuweisen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Templates>
   ...
   UploadSendLink = ws_upload_send_link.htm
   ...
</Templates>
```

Referenz: [Abschnitt Templates](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md#templates)

### Schritt 6: Das Formular anlegen

Legen Sie das Template unter dem in Schritt 5 angegebenen Namen an.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{ST-SendUploadLink_error(1)}
   <p class="fehlermeldung">Bitte prüfen Sie Ihre Eingaben.</p>
{/ST-SendUploadLink_error(1)}

{ST-SendUploadLink_error(2)}
   <p class="fehlermeldung">Die E-Mail konnte nicht versendet werden.</p>
{/ST-SendUploadLink_error(2)}

{!ST-SendUploadLink_success}
   <h1>Upload-Link senden</h1>

   <form action="~FORM-SendUploadLink~" method="post">

      <label>Auftragsnummer</label>
      <input type="text" name="~SENDUPLOADLINK-OrderNumber_name~"
             value="~SENDUPLOADLINK-OrderNumber~">
      {SENDUPLOADLINK-OrderNumber_error}
         <span class="fehlermeldung">Bitte prüfen Sie die Auftragsnummer.</span>
      {/SENDUPLOADLINK-OrderNumber_error}

      <label>E-Mail-Adresse des Empfängers</label>
      <input type="text" name="~SENDUPLOADLINK-EmailTo_name~"
             value="~SENDUPLOADLINK-EmailTo~">
      {SENDUPLOADLINK-EmailTo_error}
         <span class="fehlermeldung">Bitte prüfen Sie die E-Mail-Adresse.</span>
      {/SENDUPLOADLINK-EmailTo_error}

      <input type="submit" name="~BT-SendUploadLink~" value="absenden">
   </form>
{/!ST-SendUploadLink_success}

{ST-SendUploadLink_success}
   <p>Der Upload-Link wurde versendet an: ~SENDUPLOADLINK-EmailTo~</p>
{/ST-SendUploadLink_success}

<a href="~WS-UserAccountLink~" class="button_back">zurück zum Kundenkonto</a>
```

Die beiden Fehlernummern unterscheiden zwei sehr verschiedene Fälle.

| Nummer | Bedeutung |
| - | - |
| 1 | Eingabefehler: Die Auftragsnummer gehört nicht zu diesem Kundenkonto, oder die E-Mail-Adresse ist ungültig |
| 2 | Der Versand selbst ist fehlgeschlagen |

Bei Nummer 1 kann der Käufer etwas tun, bei Nummer 2 nicht. Formulieren Sie die beiden Texte entsprechend unterschiedlich, und verweisen Sie bei Nummer 2 auf Ihren Support statt den Käufer erneut auf seine Eingaben zu schicken.

Die beiden `_error`-Tags zum Feld funktionieren ausschließlich als Klammerung, nicht als einzelnes Tag.

Referenz: [ST-SendUploadLink\_error](https://dokumentation.websale.de/v8s/referenz/tags/st/seitenzustand-und-navigation.md) · [ST-SendUploadLink\_success](https://dokumentation.websale.de/v8s/referenz/tags/st/seitenzustand-und-navigation.md) · [FORM-SendUploadLink](https://dokumentation.websale.de/v8s/referenz/tags/form-formulare.md#kundenkonto-und-kundendaten) · [SENDUPLOADLINK-OrderNumber](https://dokumentation.websale.de/v8s/referenz/tags/senduploadlink-uploadlink-per-e-mail-verschicken.md#das-formular) · [SENDUPLOADLINK-EmailTo](https://dokumentation.websale.de/v8s/referenz/tags/senduploadlink-uploadlink-per-e-mail-verschicken.md#das-formular) · [BT-SendUploadLink](https://dokumentation.websale.de/v8s/referenz/tags/bt/kundenkonto-und-anmeldung.md#bt-senduploadlink)

### Schritt 7: Die E-Mail konfigurieren

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<SendUploadLinkMail>
   Subject-Txt   = Ihr Upload-Link
   SenderAddress = absender@ihrshop.de
   SenderName    = Ihr Shop
   Template      = mail_send_upload_link.htm
</SendUploadLinkMail>
```

Referenz: [Abschnitt SendUploadLinkMail](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/e-mails.md#senduploadlinkmail)

### Schritt 8: Das E-Mail-Template anlegen

> [!WARNING]
>
> Der Inhalt dieses Templates geht an eine E-Mail-Adresse, die ein Käufer frei eingibt, und an einen Empfänger, der dem Versand nie zugestimmt hat. Nehmen Sie darin nur auf, was der Empfänger für den Upload wirklich braucht. Jede zusätzliche Angabe über den Käufer oder seine Bestellung ist eine Weitergabe an einen Dritten.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{WS-TplComment}
   ACHTUNG: Der Inhalt dieses Templates geht an eine vom Kunden eingegebene
   E-Mail-Adresse. Er ist datenschutzrechtlich relevant.
{/WS-TplComment}

<p>Zugang zum Upload-System</p>

<p>Hallo,</p>

<p>
   ~A-FirstName~ ~A-LastName~ hat bei uns die Bestellung mit der Nummer
   ~SENDUPLOADLINK-OrderNumber~ aufgegeben und bittet Sie, die zugehörigen
   Dateien hochzuladen.
</p>

<p>
   <a href="~SENDUPLOADLINK-UploadLink~">~SENDUPLOADLINK-UploadLink~</a>
</p>
```

`SENDUPLOADLINK-UploadLink` erzeugt den gesicherten Link immer mit der Auftragsnummer, unabhängig davon, was Sie in Schritt 3 gewählt haben.

Referenz: [SENDUPLOADLINK-OrderNumber](https://dokumentation.websale.de/v8s/referenz/tags/senduploadlink-uploadlink-per-e-mail-verschicken.md#das-formular) · [SENDUPLOADLINK-UploadLink](https://dokumentation.websale.de/v8s/referenz/tags/senduploadlink-uploadlink-per-e-mail-verschicken.md#die-tags-im-uberblick)

### Schritt 9: Das Formular auf der Bestätigungsseite anbieten (optional)

Direkt nach der Bestellung ist die Auftragsnummer bekannt und lässt sich fest vorbelegen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{ST-LoggedIn}

   {!ST-SendUploadLink_success}
      <h2>Upload-Link senden</h2>
      <form action="~FORM-SendUploadLink~" method="post">
         <label>Auftragsnummer</label>
         <input type="text" name="~SENDUPLOADLINK-OrderNumber_name~"
                value="~WS-OrderID~" readonly>

         <label>E-Mail-Adresse des Empfängers</label>
         <input type="text" name="~SENDUPLOADLINK-EmailTo_name~" value="">

         <input type="submit" name="~BT-SendUploadLink~" value="absenden">
      </form>
   {/!ST-SendUploadLink_success}

   {ST-SendUploadLink_success}
      <p>Erfolgreich versendet an: ~SENDUPLOADLINK-EmailTo~</p>
   {/ST-SendUploadLink_success}

{/ST-LoggedIn}
```

Die Klammerung `{ST-LoggedIn}` ist hier zwingend, nicht optional. Ohne Anmeldung liefern die `SENDUPLOADLINK-`Tags nichts, und der Käufer sähe ein Formular aus leeren Feldnamen.

Nach erfolgreichem Versand von dieser Seite aus zeigt der Shop die Bestätigungsseite erneut an, diesmal mit der Erfolgsmeldung. Der Käufer bleibt also, wo er ist.

### Schritt 10: Den Aufruf im Kundenkonto anbieten (optional)

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<a href="~WS-SendUploadLink~" class="button">Upload-Link versenden</a>
```

Referenz: [WS-SendUploadLink](https://dokumentation.websale.de/v8s/referenz/tags/ws/merkzettel-vergleich-upload-und-externe-dienste.md#die-tags-im-uberblick)

## Grenzen des Link-Versands

| Regel | |
| - | - |
| Anmeldung | Der Käufer muss angemeldet sein, sonst steht die Funktion nicht zur Verfügung |
| Zugehörigkeit | Die Auftragsnummer muss zu diesem Kundenkonto gehören, der Shop prüft das |
| Empfänger | genau eine Adresse je Aufruf, keine Liste. Mehrfacher Versand zur selben Auftragsnummer ist möglich |
| Freitext | Der Käufer kann der E-Mail nichts hinzufügen |
| Antwortadresse | Die E-Mail-Adresse des Käufers wird als Antwortadresse gesetzt |

Die Beschränkung auf eine Adresse und das Verbot von Freitext sind bewusste Datenschutzmaßnahmen. Sonst wäre die Funktion ein Formular, mit dem sich über Ihren Shop beliebige Nachrichten an beliebige Empfänger verschicken ließen.

Dass der Shop die Zugehörigkeit der Auftragsnummer prüft, ist der Grund, warum die Funktion eine Anmeldung verlangt. Ohne Kundenkonto gäbe es nichts, wogegen geprüft werden könnte.

## Verwandte Themen

* Wegweiser: [Upload-Modul](https://dokumentation.websale.de/v8s/upload-modul/upload-modul.md)
* Wegweiser: [Upload-Modul integrieren](https://dokumentation.websale.de/v8s/upload-modul/upload-modul-integrieren.md)
* Referenz: [Abschnitt SendUploadLinkMail](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/e-mails.md#senduploadlinkmail)


## Related topics

- [Upload-Modul](https://dokumentation.websale.de/v8s/upload-modul/upload-modul.md)
- [Upload-Modul integrieren](https://dokumentation.websale.de/v8s/upload-modul/upload-modul-integrieren.md)
- [Schaltflächen für Kundenkonto und Anmeldung](https://dokumentation.websale.de/v8s/referenz/tags/bt/kundenkonto-und-anmeldung.md)
- [Upload-Produkte anbieten](https://dokumentation.websale.de/v8s/produkte/upload-produkte-anbieten.md)
- [Upload-Modul: Tags](https://dokumentation.websale.de/v8s/referenz/tags/upload-modul-tags.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.