Ich habe beide Stellen im Code geändert:
script.src = `https://www.paypal.com/sdk/js?client-id=${clientId}¤cy=EUR`;
und
currency_code: 'EUR',
Bekomme jedoch den folgenden Fehler https://pastebin.com/6eNUSdX9
Wichtigster Ausschnitt:
Error: Unexpected currency: EUR passed to order.create. Please ensure you are passing /sdk/js?currency=EUR in the paypal script tag.
Der Fehler tritt auf, wenn ich USD auf EUR ändere. Hier ist meine
/app/paypal/page.tsx
https://pastebin.com/9GM500eR die ganze datei
Wichtigster Ausschnitt: der mit USD funktioniert:
<PayPalScriptProvider options={{ clientId }}>
<div className="flex justify-center">
<PayPalButtons
style={{
layout: 'vertical',
color: 'blue',
shape: 'rect',
label: 'paypal',
}}
createOrder={(data, actions) => {
if (!actions || !actions.order) {
console.error('Fehler: actions.order ist nicht definiert');
return Promise.reject('Fehler bei der Erstellung der Bestellung');
}
return actions.order.create({
purchase_units: [
{
amount: {
currency_code: 'USD',
value: '100.00',
},
},
],
intent: 'CAPTURE'
});
}}
onApprove={(data, actions) => {
if (!actions || !actions.order) {
console.error('Fehler: actions.order ist nicht definiert');
return Promise.reject('Fehler bei der Genehmigung der Bestellung');
}
return actions.order.capture().then((details) => {
console.log('Zahlung erfolgreich abgeschlossen:', details);
setPaymentSuccess(true); // Zeigt die Erfolgsmeldung an
setErrorMessage(''); // Setzt die Fehlermeldung zurück
return Promise.resolve();
});
}}
onError={(err) => {
console.error('Fehler bei der PayPal-Zahlung:', err);
setErrorMessage('Es gab ein Problem bei Ihrer Zahlung. Bitte versuchen Sie es erneut.'); // Zeigt die Fehlermeldung an
setPaymentSuccess(false); // Setzt den Zahlungserfolgsstatus zurück
}}
/>
</div>
</PayPalScriptProvider>
Meine
env Datei ist folgendermaßen konfiguriert:
makefile
Code kopieren
NEXT_PUBLIC_PAYPAL_CLIENT_ID = "12345"
PAYPAL_CLIENT_ID = "12345"
PAYPAL_CLIENT_SECRET = "ABCDEF"
PAYPAL_WEBHOOK_SECRET="XYZ123"
Ich habe den currency_code von 'USD' auf 'EUR' geändert und auch die URL des PayPal-Skripts angepasst:
script.src = `https://www.paypal.com/sdk/js?client-id=${clientId}¤cy=EUR`;
Trotzdem bekomme ich den Fehler, dass EUR nicht als Währung erkannt wird.
Ich habe die Dokumentation auf PayPal Developer überprüft, und laut dieser ist
EUR
der richtige Währungscode.
- Ich benutze Next.js 15 und habe auf React 18 downgraden müssen, da React 19 nicht mit
@paypal/react-paypal-js
- kompatibel ist aber spielt eigentlich keiner olle und sowohl im sandbox oder live modus dasselbe das man nach dem klick auf dem button mit EUR einen fehler bekommt.
Kann mir jemand helfen, was hier das Problem ist?