In Shopware 4 PayPal is a default plugin, which can be installed directly in the plugin manager. In Shopware 5 it's downloadable over the plugin manager for free. After installation you can configure the plugin.
To be completely independent for subshops the configuration has different configuration tabs for each of your subshops or language shops. If you leave the entries empty, they will be inherited from the main shop. Yes/No settings can be inherited by "Inherit". Just enter the desired data in the depending shop.
If you don't want to use PayPal in your language shops, enter invalid API data into the language shops configuration to "break" the inheritation.
To use PayPal Plus, the following requirements have to be met:
The PayPal Plus Plugin is downloadable over the german Shopware store, because english is currently not supported.
The configuration can be made over the plugin settings in the plugin manager or in "Configuration > Basic settings > Payment methods > PayPal PLUS":
It's important to configure the webhook for PayPal PLUS to avoid problems with changing payment states e.g. a transaction is reserved first and has to get "done".
To configure this webhook, open developer.paypal.com, in "Dashboard" you'll find "My Apps and Credentials". If you choose your App from the "REST API Apps", you can find the webhooks there. To add a webhook, click "Add webhook".
As webhook a URL must be entered which has the following format:
Configuring the "Event Types" you have to configure "All events" also.
The single payment means (PayPal, debit, credit card, invoice) will be displayed in an iFrame in the checkout and replace the Shopware integrated payment means. Reuirement for this is, that the customer chooses "PayPal" as payment mean.
The iFrame also has the logic, that if the user still has "PayPal" selected, it will show itself also in "step 3" of the checkout.
In the sandbox mode you can test with your test credentials, which can be added at https://developer.paypal.com/. The easiest way to test this is in the ELV mode, for this you need a real bank code and a random 8 character bank account number.
Sandbox transactions will be concluded in a test environment, no real bank account will be used. But note, that the test environment may not as stable as the productive environment.
Transaction refused because of an invalid argument. The transaction id is not valid
The in-payment could not be confirmed by PayPal, the user has made the payment in his PayPal account, but this could not be verified by PayPal. This may be a technical problem, but can also be a real transaction problem e.g. if the customers bank account or credit card is not flushed.
For Shopware this transaction is not made, in this case an invalid transaction ID (Express checkout token) will be assigned, which starts with EC- . You can find it in Customers->Payments->PayPal. Because the payment is not completed, the payment state will be Open, in such cases, you should check the in-payment in your PayPal account.
After finishing the order and getting back to Shopware the customer will see a message, that problem occured with this transaction and PayPal could not assign a valid transaction ID. The user will see the following message: "An error has occurred and the order could not be finished."
If this behavior is not desired and you don't want to get invalid PayPal orders, deactivate the config option "Transfer order number to PayPal", with this configuration, the user gets back into the Shopware checkout process and is requested to choose another payment method.
At invalid transaction IDs we recommend to check the API timeout first, by default this is set to 60 seconds, if you set it much lower, increase the value gradually until 120-160 seconds. Also deactivate Transfer order numbers to PayPal.
The API credentials are incorrect.
Security error. Security header ist not valid
The API key is incorrect.
Payment has already been made for this InvoiceID
The order number range is too small, the order numers are still assigned in PayPal.
The field "Shipping Adress State" is required
States are not configured, the following countries requires states:
How to configure the states you can find in our country settings in the basic configuration.
The config option "Only authorioze payments" is active, but not active for your merchant PayPal account.
The option "Billing aggreement" is active but your merchant Account is not activated for this feature.
Operation timed out after 5000 milliseconds with 0 bytes received
This error happens, when the PHP configuration doesn't have a valid set curlopti_timeout.
You can find a list of all PayPal error codes at the PayPal developers site. These codes were displayed over the PayPal plugin in the backend of Shopware. Please note, that these error codes are PayPal error codes, which are disowned by Showpare.
This message appears always, when the used PayPal PLUS account is not yet enabled for the live environment.
As other plugins too PayPal inherits his settings from the main shop to the language & subshops if no configuration is entered. To disable PayPal in Subshops, just enter invalid API credentials, so that the fallback will be interrupted.