private void Page_Load(object sender, System.EventArgs e) {

			if (!IsPostBack) {

				IWebFormPaymentProvider provider = ServiceFactory.GetService(typeof(IPaymentProvider)) as IWebFormPaymentProvider;
                ICommerceDao dao = ServiceFactory.GetService(typeof(ICommerceDao)) as ICommerceDao;
                ICommerceService service = ServiceFactory.GetService(typeof(ICommerceService)) as ICommerceService;

                if (provider == null || dao == null || service == null) {
                    LogManager.GetLogger(GetType()).Warn("Unable to create services for CC Postback");
                    return;
                }

				IElectronicPayment payment = provider.ProcessAuthPaymentResponse(Request);

                BasketDecorator order = new PaymentHelper(dao).ProcessReceivedPayment(payment, this);
                if (order != null) {
                    service.CloseOrder(order.Basket, TranslatorUtils.GetTextTranslator(GetType(), order.CultureCode));
                }
			}
		}
        protected virtual void CollectPayment(BasketDecorator basketOrder) {

            IElectronicPayment payment = new PaymentHelper(EModule.CommerceDao).CreatePayment(basketOrder, this);
            IPaymentProvider provider = EModule.PaymentProvider;//HACK to get it to compile MUST FIX

            IWebFormPaymentProvider webProvider = provider as IWebFormPaymentProvider;

            if (webProvider != null) {
                webProvider.TransferClientToPaymentPage(payment, PaymentRequestTypes.ImmediatePayment);
            } else {
                if (provider != null) {
                    provider.RequestAuthPayment(payment);
                    IBasket order = new PaymentHelper(EModule.CommerceDao).ProcessReceivedPayment(payment, this);
                    if (order != null) {
                        EModule.CommerceService.CloseOrder(order, TranslatorUtils.GetTextTranslator(GetType(), order.CultureCode));
                    }
                } else {
                    //What??
                    PopulateOrderDetailsFromForm(basketOrder);
                }
            }
        }