How can a customer pay for a "pending order"?
When using Paypal Standard, a user can create an order, select Paypal for payment, then abort the order either by using the "cancel and return to website" link on the Paypal page OR by simply closing the Paypal window before completing the transaction. Sitefinity still creates an order and even sends an email out telling the customer the order was accepted and shows "Payment" Paypal which further leads the customer to believe they have a valid order.
If the customer does want to complete the order, they have no way to access that "pending order" to complete the payment. So, wondering what if anything people are doing out there when this happens? Clearly we can cancel the order, email the customer and tell them the order is cancelled but that's pretty unconventional, not to mention time consuming.
Suggestions?
Thanks.
Hi Barbara,
This is the default behaviour and in if the order is placed but not paid - it should be recreated. You can also configure notifications for such pending orders. If needed they could be Deleted or Canceled in the backend. However there is a Feature Request logged for configure this here:
http://feedback.telerik.com/Project/153/Feedback/Details/160814-checkout-add-option-to-disable-enable-email-sent-to-customer-upon-order-placed
As workaround for this issue (intercept the emails and not send them) you can create a custom class to send emails for the eCommerce module:
using
System;
using
System.Linq;
using
Telerik.Sitefinity.Web.Mail;
namespace
SitefinityWebApp
public
class
EmailSenderCustom : StandardDotNetEmailSender
public
override
void
Send(
string
from,
string
to,
string
subject,
string
message)
//Implement interception here and if the email is coming from the eCommerce skip the call to base.Send
base
.Send(from, to, subject, message);
protected
void
Application_Start(
object
sender, EventArgs e)
Bootstrapper.Initialized += Bootstrapper_Initialized;
void
Bootstrapper_Initialized(
object
sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
if
(e.CommandName ==
"Bootstrapped"
)
ObjectFactory.Container.RegisterType<IEmailSender, EmailSenderCustom>(
"Standard"
);
private
void
SendEmail(
string
from,
string
to,
string
subject,
string
body)
IEmailSender emailSender = EmailSender.Get();
emailSender.SendAsync(from, to, subject, body,
null
);