Paypal Error: This invoice has already been paid.
It is possible for PayPal to report an order as already being paid if they have received an identical invoice number in the past. There are a two separate options you can use to resolve this issue:
In Your PayPal Account:
Login to your PayPal account by going to www.PayPal.com.
Click "Profile" on the top menu bar.
Under "Selling Preferences", click "Payment Receiving Preferences".
Under "Block Accidental Payments", choose "No, allow multiple payments per invoice ID".
Go to Phpmyadmin and open the k2store_orders table. Edit the last row and set the value for the ID to a higher number.
Payment Status remains INCOMPLETE and No emails sent to administrator and customer
Is your frontend / site set to offline mode in Global configuration? If yes, set it to Live before testing.
Is your frontend is protected via htaccess authorization or some other form of protection method ? If yes, you should make your frontend accessible to the public (LIVE) before testing.
You may ask I am testing Paypal with sandbox and why should I set my site to Live and its not yet ready for the public.
Here are the reasons:
After you make a payment with Paypal, paypal sends an Instant Payment Notification (IPN) to your website.
The plugin catches the IPN, checks the payment status and the changes the Order status from Incomplete to Confirmed.
Then it triggers the email to the administrator and the customer.
If your site is protected and requires some form of authorisation before allowing a visitor to see it, then the IPN will not reach you. Imagine the Paypal is visiting your site to provide some data. And if it cannot access it (Just the frontend), it wont be able to provide the data.
So order status does not change and you are not getting an email. Nor the customer.
Only when your site is public and accessible for everyone (LIVE), Paypal's IPN will reach you.