PayPal orders - Abandoned without submitting payment
PayPal orders - Abandoned without submitting payment
I have paypal express checkout disabled so the customer can enter their separate billing and shipping addresses, if needed. But I notice I have been getting like 2 out of 3 PayPal orders showing $0.00 payments. (they did not complete the paypal checkout process)
I went through the checkout process myself and selected PayPal and I can see why I am getting so many PayPal orders with customers not completing the checkout process. I was shocked to see that I had to scroll to the bottom of the page to see the small PayPal button needed to be clicked on in order to finalize the order. I really think that should be moved up to the top so they know there is another step in the process.
When I email the customers they say they thought they were done. They actually think they did complete the checkout process because of all the information they have provided. We have to make this thing as idiot proof as possible. I had to make an email template for unpaid PayPal orders as this has been happening for quite some time now but I think we should try and nip it in the bumm before the Christmas shopping season.
If the payment section was moved to the top so it's the first thing they see then that's about all that can be asked... What are your thoughts on this?
I went through the checkout process myself and selected PayPal and I can see why I am getting so many PayPal orders with customers not completing the checkout process. I was shocked to see that I had to scroll to the bottom of the page to see the small PayPal button needed to be clicked on in order to finalize the order. I really think that should be moved up to the top so they know there is another step in the process.
When I email the customers they say they thought they were done. They actually think they did complete the checkout process because of all the information they have provided. We have to make this thing as idiot proof as possible. I had to make an email template for unpaid PayPal orders as this has been happening for quite some time now but I think we should try and nip it in the bumm before the Christmas shopping season.
If the payment section was moved to the top so it's the first thing they see then that's about all that can be asked... What are your thoughts on this?
AC 7.0.3 build 13937
Re: PayPal orders - Abandoned without submitting payment
Some people are going to think that the order has been submitted to paypal
when they click the first "Click here to pay with PayPal" button.
I thought this was confusing from day one.
So here is what I did:
For the first "Pay with Paypal" button, replace it with a "Continue" button
and put this above it:
"NOTE: You must click the Pay Now with PayPal button on the next page to continue to PayPal and pay the order balance."
when they click the first "Click here to pay with PayPal" button.
I thought this was confusing from day one.
So here is what I did:
For the first "Pay with Paypal" button, replace it with a "Continue" button
and put this above it:
"NOTE: You must click the Pay Now with PayPal button on the next page to continue to PayPal and pay the order balance."
Re: PayPal orders - Abandoned without submitting payment
Ahhhh, nice... Thanks Mike!
AC 7.0.3 build 13937
Re: PayPal orders - Abandoned without submitting payment
I have this problem as well. Could you explain how to replace the buttons for idiots like myself with little to no programming knowledge? Thanks!
Re: PayPal orders - Abandoned without submitting payment
In the file "Checkout\PaymentForms\PayPalPaymentForm.ascx",
I did this (The code is at the very bottom of the page):
You need to move the continue.gif image into the correct theme you are using:
ImageUrl="~/App_Themes/Glass_Aqua/images/continue.gif"
I did this (The code is at the very bottom of the page):
Code: Select all
....................
warningMessages.Insert(0, "The order could not be completed because the basket contents changed during checkout. Please review your basket contents and try again.");
}
}
}
</script>
// MY CODE START HERE:
<table class="paymentForm">
<tr>
<th class="caption"><asp:Label ID="Caption" runat="server" Text="Pay with {0}"></asp:Label></th></tr>
<tr>
<td class="pFcontent">
<p align="justify"><asp:Label ID="PayPalHelpText" runat="server"
Text="NOTE: You must click the <b>Pay Now with PayPal</b> button on the next page to continue to PayPal and pay the order balance."></asp:Label></p></td></tr>
<tr>
<td class="submit">
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="PayPal" Visible="false" />
<asp:ImageButton ID="PayPalButton" runat="server" ImageUrl="~/App_Themes/Glass_Aqua/images/continue.gif" OnClick="PayPalButton_Click" ValidationGroup="PayPal" />
</td></tr></table>
ImageUrl="~/App_Themes/Glass_Aqua/images/continue.gif"
Re: PayPal orders - Abandoned without submitting payment
one more thing I forgot, you have to comment out the image path in the Page_Load:
protected void Page_Load(object sender, EventArgs e)
{
.........
// PayPalButton.ImageUrl = Request.Url.Scheme + "://www.paypal.com/en_US/i/btn/x-click-but1.gif";
I wish this first button went right to PayPal instead of going to the Reciept page, then PayPal.
This is just an extra step and gives the shopper one more chance to cancel the order.
I'd rather have them not go to the Receipt page and right to PayPal.
I'll see if I can figure out how to do that.
Maybe the shopper can be returned to Receipt page after they have been to PayPal.
I've seen some sites do this.
protected void Page_Load(object sender, EventArgs e)
{
.........
// PayPalButton.ImageUrl = Request.Url.Scheme + "://www.paypal.com/en_US/i/btn/x-click-but1.gif";
I wish this first button went right to PayPal instead of going to the Reciept page, then PayPal.
This is just an extra step and gives the shopper one more chance to cancel the order.
I'd rather have them not go to the Receipt page and right to PayPal.
I'll see if I can figure out how to do that.
Maybe the shopper can be returned to Receipt page after they have been to PayPal.
I've seen some sites do this.
Re: PayPal orders - Abandoned without submitting payment
Thank you Mike for the two posts. They were extremely helpful, and I got it to work. However, in the code you wrote, I had to include this line in order to get the page to load.
I also do agree with Mike, and I wish the shopper could skip the first receipt page. If anyone ever figures out how to do that while allowing the shopper to return to the receipt page after payment at PayPal, please post instructions on how to do so. Thanks!!
The final code looks like this.<asp:HiddenField runat="server" ID="FormIsSubmitted" value="0" />
Maybe perhaps you are using a different AC version than I am? I am running AbleCommerce 7.0.3 build 12458. Also, there was already a continue.gif image in my theme folder that I was using. Regardless, thank you very much for your detailed notes. I appreciate it tremendously.<table class="paymentForm">
<tr>
<th class="caption">
<asp:Label ID="Caption" runat="server" Text="Pay with {0}"></asp:Label>
</th>
</tr>
<tr>
<td class="pFcontent">
<p align="justify"><asp:Label ID="PayPalHelpText" runat="server" Text="NOTE: You must click the
<b>PayPal</b> button on the <b>next page</b> to continue to PayPal and pay the order
balance."></asp:Label></p>
</td>
</tr>
<tr>
<td class="submit">
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="PayPal"
Visible="false" />
<asp:ImageButton ID="PayPalButton" runat="server"
ImageUrl="~/App_Themes/Glass_Midnight/images/continue.gif" OnClick="PayPalButton_Click"
ValidationGroup="PayPal"/>
<asp:HiddenField runat="server" ID="FormIsSubmitted" value="0" />
</td>
</tr>
</table>
I also do agree with Mike, and I wish the shopper could skip the first receipt page. If anyone ever figures out how to do that while allowing the shopper to return to the receipt page after payment at PayPal, please post instructions on how to do so. Thanks!!
Re: PayPal orders - Abandoned without submitting payment
Yes, you are right, keep that Hidden field.
I was looking at a previous AC version.
I was looking at a previous AC version.
Re: PayPal orders - Abandoned without submitting payment
Today I got two more unprocessed PayPal orders so I decided it was time to work on this change. These changes took care of the PayPalPaymentForm page but I think we really need to work on the Order Receipt page (Checkout/Receipt.aspx) and move the entire PAYMENT INFORMATION section from the very bottom of the page to the top of the page - right above the SHIPMENT INFORMATION section.
I believe the [PayPal - Click Here to Pay] button should be visible on that page without scrolling. Don't you?
I definitely want to get this done before the holiday shopping season (if I am fortunate to have one this year)
I'm going to go look at the code. Hopefully it is just a matter of switching code around...
I believe the [PayPal - Click Here to Pay] button should be visible on that page without scrolling. Don't you?
I definitely want to get this done before the holiday shopping season (if I am fortunate to have one this year)
I'm going to go look at the code. Hopefully it is just a matter of switching code around...
AC 7.0.3 build 13937
Re: PayPal orders - Abandoned without submitting payment
Okay, luckily I think it was just a matter of moving some code around. I moved the Payment Information area up so that it is above the Shipping Information panel and is viewable without scrolling. I think it looks better. It doesn't appear I can add attachments so If anyone is interested just let me know. Thanks.
AC 7.0.3 build 13937
Re: PayPal orders - Abandoned without submitting payment
Please do so Draneb. It would be much appreciated.
Re: PayPal orders - Abandoned without submitting payment
Okay, well I will just paste the code here. I hope I did things right. I am a novice but just moved the Payment Information section to the top of the page. So far I have had no more abandoned PayPal checkouts.
Code: Select all
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ReceiptPage.ascx.cs" Inherits="ConLib_ReceiptPage" %>
<%--
<conlib>
<summary>Display page to show details of an order like order items, shipping address, billing address etc.</summary>
<param name="AllowAddNote" default="true">If true, the customer can add notes to the order. If false, the customer can only see notes added by the merchant.</param>
<param name="HandleFailedPayments" default="false">If true, the customer is redirected to an order payment page if the payment fails at checkout.</param>
</conlib>
--%>
<%@ Register Src="~/ConLib/OrderTotalSummary.ascx" TagName="OrderTotalSummary" TagPrefix="uc" %>
<%@ Register Src="~/ConLib/BreadCrumbs.ascx" TagName="BreadCrumbs" TagPrefix="uc" %>
<%@ Register Src="~/ConLib/Utility/OrderItemDetail.ascx" TagName="OrderItemDetail" TagPrefix="uc" %>
<%@ Register Src="~/ConLib/Utility/PayPalPayNowButton.ascx" TagName="PayPalPayNowButton" TagPrefix="uc" %>
<%-- this file is identical to ~/ConLib/MyOrderPage.ascx, with the addition of the affiliate tracker tag --%>
<%@ Register Src="~/Checkout/AffiliateTracker.ascx" TagName="AffiliateTracker" TagPrefix="uc" %>
<asp:PlaceHolder ID="BalanceDuePanel" runat="server" Visible="false" EnableViewState="false">
<br />
<asp:Label ID="BalanceDueMessage" runat="server" Text="** Your order has a balance of {0:lc} due.  <a href='{1}'><u>Pay Now</u></a>" SkinID="ErrorCondition"></asp:Label>
<br /><br />
</asp:PlaceHolder>
<asp:PlaceHolder ID="OrderInvalidPanel" runat="server" Visible="false" EnableViewState="false">
<br />
<asp:Label ID="OrderInvalidMessage" runat="server" Text="** Your order has been cancelled or invalidated." SkinID="ErrorCondition"></asp:Label>
<br /><br />
</asp:PlaceHolder>
<asp:Panel ID="PageHeaderPanel" runat="server" CssClass="pageHeader">
<h1><asp:Localize ID="Caption" runat="server" Text="View Order #{0}"></asp:Localize></h1>
</asp:Panel>
<asp:Panel ID="OrderSummaryPanel" runat="server" SkinID="OrderSummaryPanel">
<table class="orderSummaryTable">
<tr>
<th class="rowHeader">
<asp:Label ID="OrderDateLabel" runat="server" Text="Order Date: "></asp:Label>
</th>
<td>
<asp:Label ID="OrderDate" runat="server" Text=""></asp:Label>
</td>
<th class="rowHeader">
<asp:Label ID="TotalChargesLabel" runat="server" Text="Order Total: "></asp:Label>
</th>
<td>
<asp:Label ID="TotalCharges" runat="server" Text=""></asp:Label>
</td>
<th class="rowHeader">
<asp:Label ID="BalanceLabel" runat="server" Text="Balance: "></asp:Label>
</th>
<td>
<asp:Label ID="Balance" runat="server" Text=""></asp:Label>
</td>
</tr>
<tr>
<th class="rowHeader">
<asp:Label ID="OrderStatusLabel" runat="server" Text="Status: "></asp:Label>
</th>
<td>
<asp:Label ID="OrderStatus" runat="server" Text=""></asp:Label>
</td>
<th class="rowHeader">
<asp:Label ID="TotalPaymentsLabel" runat="server" Text="Payments: "></asp:Label>
</th>
<td>
<asp:Label ID="TotalPayments" runat="server" Text=""></asp:Label>
</td>
<th class="rowHeader">
<asp:Label ID="UnprocessedPaymentsLabel" runat="server" Text="Unprocessed Payments: "></asp:Label>
</th>
<td>
<asp:Label ID="UnprocessedPayments" runat="server" Text=""></asp:Label>
</td>
</tr >
<tr>
<td colspan="6" align="right">
<asp:HyperLink ID="PrintOrder" runat="server" Text="Printable Version" NavigateUrl="~/Members/PrintMyOrder.aspx"></asp:HyperLink>
</td>
</tr>
</table>
</asp:Panel>
<asp:Panel ID="PaymentPanel" runat="server">
<table align="center" class="form" cellpadding="0" cellspacing="0" border="1">
<tr>
<th colspan="2">
<asp:Localize ID="PaymentMethodCaption" runat="server" Text="PAYMENT INFORMATION"></asp:Localize>
</th>
</tr>
<tr>
<td class="orderSummary" valign="top">
<uc:OrderTotalSummary ID="OrderTotalSummary1" runat="server" />
</td>
<td valign="top" class="expand">
<asp:Label ID="BillingAddressCaption" runat="server" Text="Billing Address:" SkinID="FieldHeader"></asp:Label><br />
<asp:Literal ID="BillToAddress" runat="server"></asp:Literal><br /><br />
<asp:Repeater ID="PaymentRepeater" runat="server">
<ItemTemplate>
<asp:Label ID="PaymentMethodLabel" runat="server" Text="Payment Method: " SkinID="FieldHeader"></asp:Label>
<asp:Label ID="PaymentMethodName" runat="server" Text='<%#Eval("PaymentMethodName")%>'></asp:Label>
<asp:Label ID="ReferenceNumber" runat="server" Text='<%#Eval("ReferenceNumber")%>'></asp:Label><br />
<asp:Label ID="PaymentStatusLabel" runat="server" Text="Status: " SkinID="FieldHeader"></asp:Label>
<asp:Label ID="PaymentStatus" runat="server" Text='<%#StoreDataHelper.GetFriendlyPaymentStatus((Payment)Container.DataItem)%>'></asp:Label>
<asp:Panel ID="ExtendedDetailsPanel" runat="server" Visible='<%#ShowExtendedPaymentDetails(Container.DataItem) %>'>
<asp:Label ID="PaymentDateLabel" runat="server" Text="Date: " SkinID="FieldHeader"></asp:Label>
<asp:Label ID="PaymentDate" runat="server" Text='<%#Eval("PaymentDate", "{0:g}")%>'></asp:Label><br />
<asp:Label ID="AmountLabel" runat="server" Text="Amount: " SkinID="FieldHeader"></asp:Label>
<asp:Label ID="Amount" runat="server" Text='<%#Eval("Amount", "{0:ulc}")%>'></asp:Label><br />
</asp:Panel>
<asp:Panel ID="MailPayMethodMessage" runat="server" Visible='<%# ShowMailPaymentMessage(Container.DataItem) %>'>
<asp:Label ID="MessageLabel" runat="server" Text="Make your check payable to:" SkinID="FieldHeader"></asp:Label><br />
<asp:Label ID="StoreNameLabel" runat="server" Text='<%# Token.Instance.Store.Name%>'></asp:Label><br />
<asp:Label ID="StoreAddress" runat="server" Text='<%# Token.Instance.Store.DefaultWarehouse.FormatAddress(true)%>'></asp:Label>
</asp:Panel>
<uc:PayPalPayNowButton ID="PayPalPayNowButton" runat="server" PaymentId='<%#Eval("PaymentId")%>'></uc:PayPalPayNowButton><br />
</ItemTemplate>
</asp:Repeater>
</td>
</tr>
</table>
</asp:Panel>
<asp:Repeater ID="ShipmentRepeater" runat="server">
<ItemTemplate>
<table align="center" class="form" cellpadding="0" cellspacing="0" border="1">
<tr>
<th colspan="3">
<asp:Localize ID="ShipmentCaption" runat="server" Text="SHIPMENT INFORMATION" Visible='<%# (this.Order.Shipments.Count == 1) %>'></asp:Localize>
<asp:Localize ID="ShipmentCaption2" runat="server" Text='<%# string.Format("SHIPMENT {0} OF {1}", ((OrderShipment)Container.DataItem).ShipmentNumber, this.Order.Shipments.Count) %>' Visible='<%# (this.Order.Shipments.Count > 1) %>'></asp:Localize>
</th>
</tr>
<tr>
<th class="verticalText">
S<br />
H<br />
I<br />
P<br /><br />
T<br />
O<br />
</th>
<td class="address">
<%# GetShipToAddress(Container.DataItem) %>
</td>
<td valign="top" class="expand">
<asp:Label ID="ShipStatusLabel" runat="server" Text="Status:" SkinID="FieldHeader"></asp:Label>
<asp:Label ID="ShipStatus" runat="server" Text='<%#GetShipStatus(Container.DataItem)%>'></asp:Label><br />
<asp:Label ID="ShippingMethodLabel" runat="server" Text="Shipping Method:" SkinID="FieldHeader"></asp:Label>
<asp:Label ID="ShippingMethod" runat="server" Text='<%#Eval("ShipMethodName") %>'></asp:Label>
<asp:Panel ID="TrackingNumberPanel" runat="Server" Visible='<%#HasTrackingNumbers(Container.DataItem)%>'>
<br />
<asp:Label ID="TrackingNumbersLabel" runat="server" Text="Tracking :" SkinID="FieldHeader"></asp:Label>
<asp:Repeater ID="TrackingRepeater" runat="server" DataSource='<%#Eval("TrackingNumbers")%>'>
<ItemTemplate>
<asp:HyperLink ID="TrackingNumberData" Target="_blank" runat="server" Text='<%#Eval("TrackingNumberData")%>' NavigateUrl='<%#GetTrackingUrl(Container.DataItem)%>'></asp:HyperLink>
</ItemTemplate>
<SeparatorTemplate>, </SeparatorTemplate>
</asp:Repeater>
</asp:Panel>
<asp:Panel ID="ShipMessagePanel" runat="Server" Visible='<%# !string.IsNullOrEmpty((string)Eval("ShipMessage")) %>'>
<br /><br />
<asp:Label ID="ShipMessageLabel" runat="server" Text="Delivery Instructions:" SkinID="FieldHeader"></asp:Label>
<asp:Label ID="ShipMessage" runat="server" Text='<%#Eval("ShipMessage")%>'></asp:Label>
</asp:Panel>
</td>
</tr>
<tr>
<td colspan="3" class="dataSheet">
<asp:GridView ID="ShipmentItemsGrid" runat="server" Width="100%" AutoGenerateColumns="false" DataSource='<%# OrderHelper.GetShipmentItems(Container.DataItem) %>' GridLines="none" SkinID="ItemList" OnDataBinding="ItemsGrid_DataBinding">
<Columns>
<asp:TemplateField HeaderText="Qty">
<HeaderStyle Width="50" HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="center" />
<ItemTemplate>
<asp:Label ID="Quantity" runat="server" Text='<%#Eval("Quantity")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="SKU">
<HeaderStyle Width="80" HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="center" />
<ItemTemplate>
<asp:Label ID="SKU" runat="server" Text='<%#ProductHelper.GetSKU(Container.DataItem)%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Item">
<ItemTemplate>
<uc:OrderItemDetail ID="OrderItemDetail1" runat="server" OrderItem='<%#(OrderItem)Container.DataItem%>' ShowAssets="False" LinkProducts="False" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Tax">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" Width="40px" />
<ItemTemplate>
<%#TaxHelper.GetTaxRate(Order, (OrderItem)Container.DataItem).ToString("0.#")%>%
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Price">
<HeaderStyle Width="80" HorizontalAlign="Right" />
<ItemStyle HorizontalAlign="Right" />
<ItemTemplate>
<asp:Label ID="Price" runat="server" Text='<%#TaxHelper.GetInvoiceExtendedPrice(Order, (OrderItem)Container.DataItem).ToString("ulc")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
<asp:Panel ID="NonShippingItemsPanel" runat="server">
<table align="center" class="form" cellpadding="0" cellspacing="0" border="1">
<tr>
<th colspan="3">
<asp:Localize ID="NonShippingItemsCaption" runat="server" Text="NON SHIPPING ITEMS"></asp:Localize>
</th>
</tr>
<tr>
<td colspan="3" class="dataSheet">
<asp:GridView ID="NonShippingItemsGrid" runat="server" Width="100%" AutoGenerateColumns="false" GridLines="none" SkinID="PagedList" OnDataBinding="ItemsGrid_DataBinding">
<Columns>
<asp:TemplateField HeaderText="Qty">
<HeaderStyle Width="50" HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="center" />
<ItemTemplate>
<asp:Label ID="Quantity" runat="server" Text='<%#Eval("Quantity")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="SKU">
<HeaderStyle Width="80" HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="center" />
<ItemTemplate>
<asp:Label ID="SKU" runat="server" Text='<%#ProductHelper.GetSKU(Container.DataItem)%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Item">
<ItemTemplate>
<uc:OrderItemDetail ID="OrderItemDetail1" runat="server" OrderItem='<%#(OrderItem)Container.DataItem%>' ShowAssets="False" LinkProducts="False" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Tax">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" Width="40px" />
<ItemTemplate>
<%#TaxHelper.GetTaxRate(Order, (OrderItem)Container.DataItem).ToString("0.#")%>%
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Price">
<HeaderStyle Width="80" HorizontalAlign="Right" />
<ItemStyle HorizontalAlign="Right" />
<ItemTemplate>
<asp:Label ID="Price" runat="server" Text='<%#TaxHelper.GetInvoiceExtendedPrice(Order, (OrderItem)Container.DataItem).ToString("ulc")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</table>
</asp:Panel>
<asp:PlaceHolder ID="DigitalGoodsPanel" runat="server">
<table align="center" class="form" cellpadding="0" cellspacing="0" border="1">
<tr>
<th colspan="3">
<asp:Localize ID="DigitalGoodsCaption" runat="server" Text="DIGITAL GOODS"></asp:Localize>
</th>
</tr>
<tr>
<td colspan="3" class="dataSheet">
<asp:GridView ID="DigitalGoodsGrid" runat="server" AutoGenerateColumns="false"
GridLines="none" OnRowDataBound="DigitalGoodsGrid_RowDataBound" Width="100%"
SkinID="PagedList">
<Columns>
<asp:TemplateField HeaderText="Name">
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" Width="200px" />
<ItemTemplate>
<%#Eval("Name")%>
<asp:PlaceHolder ID="phAssets" runat="server"></asp:PlaceHolder>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Download">
<ItemStyle HorizontalAlign="Center" Width="80px" />
<HeaderStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:PlaceHolder ID="phDownloadIcon" runat="server" Visible='<%# (((DownloadStatus)Eval("DownloadStatus")) == DownloadStatus.Valid && DGFileExists(Eval("DigitalGood")))%>'>
<a href="<%#GetDownloadUrl(Container.DataItem)%>"><asp:Image ID="DI" runat="server" SkinID="DownloadIcon" AlternateText="Download" /></a>
</asp:PlaceHolder>
<asp:Literal ID="DownloadStatus" runat="server" Text='<%# Eval("DownloadStatus") %>' Visible='<%# ((DownloadStatus)Eval("DownloadStatus")) != DownloadStatus.Valid %>'></asp:Literal>
<asp:Literal ID="MissingDownloadText" runat="server" Text="unavailable" EnableViewState="false" Visible='<%#( !DGFileExists(Eval("DigitalGood")) && ((DownloadStatus)Eval("DownloadStatus")) == DownloadStatus.Valid)%>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Remaining">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" Width="80px" />
<ItemTemplate>
<%#GetMaxDownloads(Container.DataItem)%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
<ItemTemplate>
<asp:Label ID="SerialKeyLabel" runat="server" Text="Serial Key: " SkinID="FieldHeader" Visible='<%#!string.IsNullOrEmpty(Eval("SerialKeyData").ToString())%>'></asp:Label>
<asp:Literal ID="SerialKey" runat="server" Visible='<%#ShowSerialKey(Container.DataItem)%>' Text='<%#Eval("SerialKeyData")%>' />
<asp:LinkButton runat="server" ID="SerialKeyLink" Text="view" OnClientClick="<%#GetPopUpScript(Container.DataItem)%>" Visible='<%#ShowSerialKeyLink(Container.DataItem)%>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</table>
</asp:PlaceHolder>
<asp:Panel ID="GiftCertificatesPanel" runat="server">
<table align="center" class="form" cellpadding="0" cellspacing="0" border="1">
<tr>
<th colspan="3">
<asp:Localize ID="Localize1" runat="server" Text="GIFT CERTIFICATES"></asp:Localize>
</th>
</tr>
<tr>
<td colspan="3" class="dataSheet">
<asp:GridView ID="GiftCertificatesGrid" runat="server" Width="100%" AutoGenerateColumns="False" GridLines="none" SkinID="ItemList">
<Columns>
<asp:TemplateField HeaderText="Name" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:HyperLink ID="Name" runat="server" Text='<%#Eval("Name")%>' NavigateUrl='<%# Eval("GiftCertificateId", "~/Members/MyGiftCertificate.aspx?GiftCertificateId={0}")%>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label ID="Status" runat="server" Text='<%#GetGCDescription(Container.DataItem)%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Expiration Date" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label ID="ExpirationDate" runat="server" Text='<%#Eval("ExpirationDate", "{0:d}")%>' visible='<%# ((DateTime)Eval("ExpirationDate") != DateTime.MinValue) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</table>
</asp:Panel>
<asp:Panel ID="OrderNotesPanel" runat="server">
<ajax:UpdatePanel ID="OrderNotesAjax" runat="server">
<ContentTemplate>
<table align="center" class="form" cellpadding="0" cellspacing="0" border="1">
<tr>
<th>
<asp:Label ID="OrderNotesCaption" runat="server" Text="ORDER NOTES"></asp:Label>
</th>
</tr>
<tr>
<td class="dataSheet">
<asp:GridView ID="OrderNotesGrid" runat="server" Width="100%" AutoGenerateColumns="false"
GridLines="none" SkinID="ItemList" EnableViewState="false">
<Columns>
<asp:TemplateField HeaderText="Date" ItemStyle-Wrap="false">
<ItemTemplate>
<%# Eval("CreatedDate") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="From">
<ItemTemplate>
<%# GetNoteAuthor(Container.DataItem) %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Comment">
<ItemTemplate>
<%# Eval("Comment") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
<tr id="trAddNote" runat="server">
<td>
<table class="inputForm">
<tr>
<th class="rowHeader" valign="top">
Add Note:
</th>
<td>
<asp:TextBox ID="NewOrderNote" runat="server" TextMode="multiline" Width="400px" Height="80px"></asp:TextBox>
</td>
</tr>
<tr>
<td> </td>
<td><asp:LinkButton ID="NewOrderNoteButton" runat="server" Text="Submit my Note" SkinID="Button" OnClick="NewOrderNoteButton_Click"></asp:LinkButton></td>
</tr>
</table>
</td>
</tr>
</table>
</ContentTemplate>
</ajax:UpdatePanel>
</asp:Panel>
<asp:Panel ID="SubscriptionsPanel" runat="server">
<table align="center" class="form" cellpadding="0" cellspacing="0" border="1">
<tr>
<th>
<asp:Localize ID="SubscriptionsCaption" runat="server" Text="SUBSCRIPTIONS"></asp:Localize>
</th>
</tr>
<tr>
<td class="dataSheet">
<asp:GridView ID="SubscriptionGrid" runat="server" AutoGenerateColumns="False" DataKeyNames="SubscriptionId" DataSourceID="SubscriptionDs"
SkinID="ItemList" AllowSorting="False" AllowPaging="false" CellSpacing="4" BorderWidth="0" EnableViewState="false">
<Columns>
<asp:TemplateField HeaderText="Subscription Plan">
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
<ItemTemplate>
<asp:Label ID="SubscriptionPlan" runat="server" text='<%#Eval("SubscriptionPlan.Name")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Ship To">
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
<ItemTemplate>
<asp:Label ID="ShipTo" runat="server" text='<%#Eval("OrderItem.OrderShipment.ShipToFullName")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Active">
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:CheckBox ID="Active" runat="server" Checked='<%#Eval("IsActive")%>' Enabled="False" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Expiration">
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="Expiration" runat="server" text='<%#Eval("ExpirationDate", "{0:d}")%>' visible='<%# ((DateTime)Eval("ExpirationDate") != DateTime.MinValue) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<asp:Label ID="EmptyMessage" runat="server" Text="There are no subscriptions associated with this order."></asp:Label>
</EmptyDataTemplate>
</asp:GridView>
<asp:ObjectDataSource ID="SubscriptionDs" runat="server" OldValuesParameterFormatString="original_{0}"
SelectMethod="LoadForOrder" TypeName="CommerceBuilder.Orders.SubscriptionDataSource" DataObjectTypeName="CommerceBuilder.Orders.Subscription">
<SelectParameters>
<asp:QueryStringParameter Name="OrderId" QueryStringField="OrderId" />
</SelectParameters>
</asp:ObjectDataSource>
</td>
</tr>
</table>
</asp:Panel>
<uc:AffiliateTracker ID="AffiliateTracker1" runat="server" />
AC 7.0.3 build 13937
Re: PayPal orders - Abandoned without submitting payment
Wow, I am so happy. I still haven't had any abandoned paypal orders since implementing the changes above.
1. Continue Button replaces first small paypal button on checkout page
2. Moved Payment Information to the top of the next page so that the Pay Now with PayPal button is visible without scrolling all the way to the bottom.
How have you guys and gals faired with your changes?
I did have one question... As far as coding goes, is there some code that would insert the current Theme instead of having to hard-code it?
For example, instead of
ImageUrl="~/App_Themes/Glass_Midnight/images/continue.gif" OnClick="PayPalButton_Click"
it might look something like
ImageUrl="[CurrentTheme]/images/continue.gif" OnClick="PayPalButton_Click"
Thank you very much!
1. Continue Button replaces first small paypal button on checkout page
2. Moved Payment Information to the top of the next page so that the Pay Now with PayPal button is visible without scrolling all the way to the bottom.
How have you guys and gals faired with your changes?
I did have one question... As far as coding goes, is there some code that would insert the current Theme instead of having to hard-code it?
For example, instead of
ImageUrl="~/App_Themes/Glass_Midnight/images/continue.gif" OnClick="PayPalButton_Click"
it might look something like
ImageUrl="[CurrentTheme]/images/continue.gif" OnClick="PayPalButton_Click"
Thank you very much!
AC 7.0.3 build 13937
Re: PayPal orders - Abandoned without submitting payment
Dear Draneb,
I haven't gotten around to implementing your change yet because of the busy holiday season. I am still getting abandoned carts. Where did you implement this code? I am more of a novice than you.
Thanks!
I haven't gotten around to implementing your change yet because of the busy holiday season. I am still getting abandoned carts. Where did you implement this code? I am more of a novice than you.

Re: PayPal orders - Abandoned without submitting payment
Ooops, sorry. That is the entire code/file for
Conlib/ReceiptPage.ascx
All I did was move the payment information section towards the top of the page so the customer could see the paypal icon without scrolling. I have still had a 100% paypal checkout success rate since making these changes.
Conlib/ReceiptPage.ascx
All I did was move the payment information section towards the top of the page so the customer could see the paypal icon without scrolling. I have still had a 100% paypal checkout success rate since making these changes.
AC 7.0.3 build 13937