When you set up Paypal standard module, you will see a selection about Paypal’s Transaction Method.
What is the different between Authorization vs. Sale
Authorization = Money is “held” for you from the customer but you must manually accept it from within your paypal account
Sale = Money is debited from the customers account instantly and put into your account immediately on confirmation.
Paypal Standard: When the transaction method is Authorize, the customer sees Payment Made, and an email “Receipt for Your Payment” from Paypal with verbiage like “You sent a payment of $32.48 USD to xyz@company.com. It may take a few moments for this transaction to appear in your account.” and inside PayPal, the customer has the option to Cancel the payment (b/c I tested this using the customer as a Paypal account holder and not a guest/credit card entry). The Customer also gets a confirmation email from OpenCart. Now, at the same time, the store owner gets an email from PayPal with a link saying “Simply click the link below and complete PayPal’s easy registration form to claim your money”. Inside OpenCart the Order shows as “Pending”.
When you set the method to Sale instead of Authorize – you will get the EXACT SAME PROCESS *IF* your email inside the Extensions->Payments->Paypal Standard DOES NOT MATCH A VALID PAYPAL ACCOUNT. I think from PayPal’s standpoint, this is a good thing since they can facilitate the transfer of money using just an email address. In other words, if your PayPal Business Account is registered to “johnsmith@company.com” but your Extensions->Payments->Paypal Standard email is set to “info@company.com” then PayPal has no way to tie to the two together. That PayPal identity token just doesn’t seem do enough.
Once I made that change, so that the Extensions->Payments->Paypal Standard email setting matched the PayPal Business Account email, everything went swimmingly. The Customer can no longer Cancel from within their PayPal account and the payment shows up in the Paypal Business Account as normal. As the store owner, inside PayPal, you can then issue refunds, etc. And inside OpenCart, the Order status shows “Complete” (per the Order Status Completed setting in the Extensions->Payments->Paypal Standard page).