# 3D Callback

<table><thead><tr><th>Key</th><th>Description</th></tr></thead><tbody><tr><td><pre><code>date
</code></pre></td><td>Payment Date</td></tr><tr><td><pre><code>status
</code></pre></td><td>The payment status is returned as either <strong>Success</strong> or <strong>Unsuccessful</strong>.</td></tr><tr><td><pre><code>errorCode
</code></pre></td><td><p>0: Successful<br>1: Unsuccessful</p><p></p><p>This error code is a Paywall-specific error code.</p></td></tr><tr><td><pre><code>errorMessage
</code></pre></td><td><p><strong>Base64 Encoded message related to the error</strong></p><p><br>This error message is a Paywall-specific error message.</p></td></tr><tr><td><pre><code>paymentCode
</code></pre></td><td>It is the unique tracking code of the payment in Paywall.</td></tr><tr><td><pre><code>uniqueCode
</code></pre></td><td>It is the tracking number you provided at the time of creating the payment.</td></tr><tr><td><pre><code>amount
</code></pre></td><td>The amount of the payment</td></tr><tr><td><pre><code>installment
</code></pre></td><td>The installment amount of the payment</td></tr><tr><td><pre><code>paymentId
</code></pre></td><td>It is the ID (identifier) of the payment in Paywall.</td></tr><tr><td><pre><code>providerErrorCode
</code></pre></td><td>The error code returned by the provider that processed the payment</td></tr><tr><td><pre><code>providerErrorMessage
</code></pre></td><td>The error message returned by the provider that processed the payment</td></tr><tr><td><pre><code>providerBankErrorCode
</code></pre></td><td>If the payment is processed through a payment institution, this is the error code returned by the bank to which the payment was forwarded by the institution.</td></tr><tr><td><pre><code>providerBankErrorMessage
</code></pre></td><td>If the payment is processed through a payment institution, this is the error message returned by the bank to which the payment was forwarded by the institution.</td></tr><tr><td><pre><code>cardSaved
</code></pre></td><td>If a card save request is included in the payment order, the system attempts to save the card after the payment is successfully completed. If the card saving process is also successful, the <code>cardSaved</code> object returns true; otherwise, it returns false.</td></tr><tr><td><pre><code>cardSavedUniqueCode
</code></pre></td><td>If the above parameter returns <strong>true</strong>, the corresponding object returns the identifier of the saved card on the Paywall side. This identifier can be used when submitting a new payment order.</td></tr><tr><td><pre><code>hash
</code></pre></td><td><p>It is the Hash value used to verify that the payment originated from Paywall, generated using the payment details and the key you created in your Paywall panel.</p><p></p><p><strong>Note:</strong> This parameter is not sent unless the <strong>3D Hash Key</strong> is activated under the <em>Developer > Custom Keys</em> section in the Paywall panel.</p><p></p><p>The key mentioned above may vary depending on the value of the <code>HashKeyType</code> parameter. A dynamic structure should be implemented.</p></td></tr><tr><td><pre><code>hashFormat
</code></pre></td><td>The format type used to generate the hash value.<br><br>See: <a href="broken-reference">Hash Formats</a></td></tr><tr><td><pre><code>hashKeyType
</code></pre></td><td>The type of key used in generating the hash value.<br><br>See: <a href="broken-reference">Key Types</a></td></tr></tbody></table>

{% tabs %}
{% tab title="HTML" %}
{% code lineNumbers="true" %}

```html

<!doctype html>
<html lang="en">
    <body>
        <form id="paywall-callback-form" action="{sizinadresiniz}" method="post">
            <input type="hidden" name="date" value="{paymentDate}">
            <input type="hidden" name="status" value="{status}">
            <input type="hidden" name="errorCode" value="{errorCode}">
            <input type="hidden" name="errorMessage" value="{errorMessage}">
            <input type="hidden" name="errorMessage" value="{providerErrorMessage}">
            <input type="hidden" name="paymentCode" value="{uniqueCode}">
            <input type="hidden" name="uniqueCode" value="{merchantUniqueCode}">
            <input type="hidden" name="amount" value="{amount}">
            <input type="hidden" name="installment" value="{installment}">
            <input type="hidden" name="paymentId" value="{paymentId}">
            <input type="hidden" name="providerErrorCode" value="{providerErrorCode}">
            <input type="hidden" name="providerErrorMessage" value="{providerErrorMessage}">
            <input type="hidden" name="providerBankErrorCode" value="{providerBankErrorCode}">
            <input type="hidden" name="providerBankErrorMessage" value="{providerBankErrorMessage}">
            <input type="hidden" name="cardSaved" value="{cardSavedResult}">
            <input type="hidden" name="cardSavedUniqueCode" value="{cardSavedUniqueCodeResult}">
            <input type="hidden" name="trackingCode" value="{trackingCode}">
            <input type="hidden" name="paymentGatewayId" value="{paymentGatewayId}">
            <input type="hidden" name="paymentGatewayName" value="{paymentGatewayName}">
            <input type="hidden" name="paymentGatewayProviderName" value="{paymentGatewayProviderName}">
            <input type="hidden" name="hash" value="{hash}">
        </form>
    </body>
</html>
```

{% endcode %}
{% endtab %}
{% endtabs %}
