Paypal SDK von USD auf EUR umstellen funktioniert nicht?
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?
2 Antworten
2 gravierende Fehler;
Du hast dein src Pfad als USD eingebunden, wie soll denn dann EUR funktionieren ^^ ?
script.src = `https://www.paypal.com/sdk/js?client-id=${clientId}¤cy=USD`;
zu
script.src = `https://www.paypal.com/sdk/js?client-id=${clientId}¤cy=EUR`;
hier auch in EUR ändern;
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: 'EUR',
value: '100.00',
},
},
],
intent: 'CAPTURE'
});
}}
und die Meldung anpassen;
<p>Ihre Zahlung von 100€ wurde erfolgreich abgeschlossen. Vielen Dank!</p>
Sorry, , ich hatte nur den Pastebin-Link geöffnet und mich daran orientiert. Hast du schon Debugging gemacht? Wenn ja, was gibt er aus ?
gehe jeden Schritt mit dem debugger durch und schau dir genau an was er wo macht
Achso, das kann ich versuchen.
Es kann ja nicht sein das niemand mit Next.js irgendwas mit Paypal Bezahlfunktion macht.
Den ausschnitt hatte ich selber irgendwo aus Github.
Das grösste JavaScript Framework und keine Paypal Dokumentationen dazu.
Stripe habe ich schon integriert da ging das leichter.
Stell bitte sicher, dass du das SDK nur 1x lädst.
Dieser Fehler kann auftreten wenn es mehrfach geladen wird.Eventuell ist es schon vor deiner Anfrage an einer anderen Stelle/Plugin geladen. Das würde erklären warum es mit USD funktioniert und auch die Fehlermeldung ergibt dann total Sinn.
Mach eventuell mal eine Textsuche über deine Dateien in der Sandbox & um sicherzugehen das hier nicht schon das SDK mit USD gestartet wurde.
Du hast mir leider nur wiedergegeben was ich schon in der Frage beschrieben habe und genauso gemacht habe und genau dann kommt die Fehlermeldung obwohl EUR ein gültiger currency_code ist
Ohne EUR funktioniert alles wie gezeigt mit USD