Important Notice: PayPal checkout using a credit card bug (fixed)

  • Jason@DPD
  • March 9, 2011
  • 4 Comments

Update April 12, 2011 We’ve just received word that PayPal has fixed this problem.

This is not a DPD error and there is nothing we can do to fix it from our end. PayPal currently displays the following error when trying to return customers who checkout using a credit card without a PayPal account to the DPD download page:

Sorry — your last action could not be completed
If you were making a purchase or sending money, we recommend that you check both your PayPal account and your email for a transaction confirmation after 30 minutes.

If you came to this page from another website, please return to that site (don’t use your browser’s Back button) and restart your activity.

This PayPal bug does not pertain only to DPD- it is a system-wide PayPal bug and is affecting all checkouts using a credit card for every shopping cart, delivery service like DPD, and even simple PayPal buttons created in your PayPal account.

PayPal knows about the issue but they have not provided an ETA on when checkout might be back to normal. You can read up on the issue on the official PayPal developer forums and DPD has filed a ticket with PayPal so we can be notified when this is fixed, but for now there is no resolution.

PayPal’s last reply to our ticket:

Thanks for contacting PayPal today. We are currently working on the return URL errors issue. I am creating this ticket to communicate with you about the issue and notify you when it is resolved. Please note that we cannot provide a timeline for resolution at this time. Please stand by for additional updates. Again, thank you for contacting us, and if you have additional questions or updates to your ticket, please reply to this message.

We highly suggest that everyone affected by this bug file a support ticket with PayPal so they understand how serious of an issue this is- You can file a ticket with Merchant Technical Support here: https://ppmts.custhelp.com/

This is not a DPD error and there is nothing we can do to fix it from our end. You will still get paid, DPD purchases activate normally, and DPD sends the download link to your customers via email like any other transaction. However, until PayPal fixes this bug your buyers will not be automatically sent to the download page at DPD and will instead see the above error message if they check out using a credit card and not a PayPal account.

We understand that seeing an error right after checkout can be distressing at the least, but until PayPal fixes the bug on their site there is nothing we can do but wait with you. Please be reassured that DPD is working normally and sending download links via email and hopefully PayPal will get their act together soon!

Feb 24, 2011 Update: New Button Creator Pages

  • Jason@DPD
  • February 24, 2011
  • No Comments

Only minutes ago we published an update to the DPD servers that revamps the product button creation process and allows you to generate buttons for all products in a store on a single page.

We’ve never really been a fan of having to go to each product individually, open the button creator, selecting the style for each button, etc. so we’ve done our best to smooth the process out- Now all you need to do is setup your store in DPD, create your products, and click the green Button Creator link to generate button code for all your products at the same time. It’s a HUGE time saver for setting up many products at once. Pick a button style and get all the buttons for your entire website in one place!

New Button Creator link to get buttons for all your products.

The cart button creator gives you both the view cart / checkout button code and individual add-to-cart button codes for each product. You have the option of choosing between cart with lightbox (the floaty JavaScript window thing), cart without lightbox, or plain text links for integration with your own button graphics on your site.

Cart Button Creator Page

The instant checkout button creator generates instant checkout buttons (obviously) with your choice of processor if more than one is active on a storefront. You can choose from button code or plain text links like the add-to-cart buttons.

This update is fairly small but it’s paving the way for some big improvements for DPD- soon buttons will not be the only thing you can generate for your products and customizing your checkout experience is going to be more awesome than ever. 😉

January 27, 2011 Updates

  • Jacob@DPD
  • January 27, 2011
  • No Comments

Customize Your Continue Shopping URL

The button generator has been upgraded with a place to customize the continue shopping URL. If you’ve been having trouble with the continue shopping button or simply want to customize where the button goes, this is the upgrade you’ve been waiting for!

Upgraded Purchase CSV

We’ve also released a much-needed upgrade to the purchase history CSV file. The format has been completely overhauled and now includes the following fields: Purchase ID, Date, Product ID, Product Name, Product Price, Discount, Commission, Net Sale, Currency, Status, Coupon, Website, Customer.

Bug Fixes

  • The cart code has been upgraded to enhance compatibility with Internet Explorer 8. Thank you to everyone who reported odd rendering.
  • The cart code has been updated to work correctly when included multiple times on one page.

New Feature: IP logging and Geo-Location for DPD Transactions

  • Jason@DPD
  • January 7, 2011
  • No Comments

We’ve published a new feature today that many vendors have been requesting-  Buyer IP logging and Geo-Location.

DPD now records the IP address of the buyer with each transaction and the information is available on the Purchase Detail page, through the DPD IPN system, and for use on delivery page templates through its own merge tag.

We also use the IP to geo-locate the buyer and display their location on a world map on the Purchase Detail page.  This can help give you an idea where you buyers are coming from (and also it just looks cool).

The technical details:

Buyer IP Address IPN field value:

ip_address

DPD IPN Notification URL Documentation >>

Buyer IP Delivery Page Template Merge Var:  

{{ purchase.ip_address }}

Customizing Your Cart Checkout and Delivery Pages Documentation >>

January 3, 2011 Update

  • Jacob@DPD
  • January 3, 2011
  • 2 Comments

Happy new year! We have just released a few upgrades to DPD.

URLs can now be delivered via the key delivery product type. No configuration is needed on your part. Simply enter a key that starts with “http://” or “https://” and we will link to that URL on the delivery page.

We have added an option to override PayPal shipping settings and always ship a product for free.

Bug fixes:

  • Fixed a problem with delivered filename getting corrupted when using filenames with special characters.
  • Fixed a problem with the FTP drop box not working when the filename has a “#” character in it.
  • Fixed a problem activating ClickBank combo products when delivered through the thankyou page.

DPD Loves Olark

  • Jason@DPD
  • December 8, 2010
  • No Comments

This week we added a new feature to our website- live chat through Olark. The verdict so far? We love it. We don’t often write about other services here, but we’re really pleased and think that live chat could be a powerful tool to help our vendors with their sales and conversions so we’re going to tell you our experience thus far-

Olark has a different approach to live chat than many other services- they use the common XMPP protocol for their chat servers instead of proprietary software. For those not up to date on chat protocols, the XMPP protocol is the same thing that Jabber, Google Talk, Facebook Chat, and a host of other chat services use. XMPP support is built in to every multi-protocol chat client and is a snap to set up.

Here at DPD that’s pretty important- I’m on Windows 7, Jacob is on a Mac, and Scott gets the geek badge for developing on Ubuntu. We needed something that would work on all platforms and even our Android phones- Olark fit the bill.

Installation

Olark provides you with a bit of javascript to place in the footer of your site. Thats it. It took 30 seconds to integrate Olark with DPD, and 25 of those were waiting for the editor to open.

Client Setup and Usage

Using Olark with Pidgin
Olark integrates with your chat client like any other service and gives you interesting user information
On my Windows desktop I use Pidgin to keep in contact with the other DPD guys as well as friends and family. Olark integrates with Pidgin using the XMPP protocol as you can see in the screenshot to the right. Visitors to your website are shown with some basic information- where they’re from, what page their looking at, what page referred them to the site, and how long they’ve been browsing around on DPD.

We did a little programmer magic using Olark’s API to automatically display usernames for logged in DPD users to help us be even more effective with support (the logged in visitor’s usernames are blurred in the screenshot to protect our users privacy).

When a user sends a live chat request, it broadcasts a message to all the operators who are online and not “away.” Any operator can reply and “claim” the chat, and if needed you can transfer them to someone else with a simple !transfer command in the chat window. You can also be proactive and pick someone from the list to initiate a chat from your end- you just open a chat window and start typing like you’re sending a message to your Aunt Ruth.

Customization

Olark Customization Options
Olark gives you several themes and lets you further customize them
Olark lets you customize the chat box to your hearts content. They have several pre-made themes, and you can further customize the available themes to your liking.

There are a lot of extra customization features too- You can customize your offline message (as we’ve done with a link to our knowledge base), specify what email to send offline messages to, window behavior and options, and more.

Reports, Transcripts, and More

In addition to integrating with Google Analytics, Olark has built in stats from Mixpanel that show how many visitors have been to your site while you were online, how many you missed when you were offline, and how many chats you had for a given time period. This is great for figuring out the best times to offer live support!

Olark Stats
Olark's built-in stats show engagement numbers

Olark can also optionally record transcripts and email them to a specified address, great for quality control, follow-up, and supervisory functions.

Olark’s Hatchery is their experimental playground with some neat stuff in the works- you can optionally enable an auto-translate plugin that uses Google Translate or check out some new experimental themes. It’s great to use a service that is under active development!

Support

We haven’t really had any problems with the service, but Olark has a well documented API that let Jacob add our user data to the chat widget in minutes. For the one question I had, I chatted up Olark on their site and spoke to Zach, one of the Olark founders who promptly answered my question. He seems like a pretty swell guy too 🙂

Olark does have premium email support for paid users and I expect that will be just as great as the rest of our Olark experience when we need it.

The Verdict? We love it.

There are a lot of things we like about Olark– it’s pretty awesome to see the visitors on your site, where they came from, and where they are in the world in real time. The live chat works well and the extreme ease of setting it up in our own chat clients, with no annoying software, gets bonus points in our book. We’ve generated new happy customers with the live chat feature, and thats really the bottom line.

Olark plans with unlimited conversations start at $15/mo and they even offer a free plan limited to 20 conversations a month so you can try it out and see if you like it. This is one service we wholeheartedly recommend to our vendors and we bet it will improve your conversions too.

DPD is not affiliated with Olark in any way, we’re just happy customers 🙂

Recent PayPal IPN Issues: Postmortem

  • Jacob@DPD
  • December 8, 2010
  • 1 Comment

Instant Payment Notifications (IPNs) are key to how DPD processes and validates PayPal orders. We receive an IPN for each successful purchase that triggers an email and activates the buyer’s purchase. To make sure we are receiving an actual IPN from PayPal to prevent unauthorized download, DPD contacts and verifies each IPN with PayPal. We either get a VALID or INVALID response.

In the past week or so we noticed a spike in failed IPN verifications from PayPal due to the continued rollout of PayPal’s new site. These sort of breakages aren’t uncommon with PayPal and they’re reasonably quick to address these types of issues. We normally don’t have to make any changes on our end before PayPal rolls out a fix. This time was different- There was no fix or even mention of the issue on PayPal’s site and failed IPN verifications were piling up.

So we dug into the logs and figured out what changed. Yesterday we rolled out changes to address the problem. We’re happy to report that we are now seeing a 100% success rate in validating IPNs.

If you are seeing new purchases with the “Error” status, this is most likely caused by an incompatable character encoding in your PayPal account profile having trouble with names and addresses with special characters in them. Please take a moment to enable UTF-8 (item #5) in your PayPal account. This fixes 99% of the remaining IPN validation errors.

What follows is a technical analysis of what happened and how we fixed it. We are posting this in hopes of helping other PayPal developers.

Geeky Programmer Stuff Below…

(Code samples are in PHP.)

The first problem is with generating the validation params. In every IPN validation sample out there, including on PayPal’s own site, you will see the following code to build the validation request:

$req = 'cmd=_notify-validate';

    foreach($params as $key => $value) {
      $value = urlencode(stripslashes($value));
      $req.= "&$key=$value";
    }

There are two things wrong with this snippet. First, PayPal sometimes sends three extra parameters. The most important of those is the cmd parameter. This causes the validation command to switch from _notify-validate to whatever PayPal includes in their IPN and PayPal responds with a 400 Bad Request error. The CONTEXT, myAllTextSubmitID, and form_charset parameters do not have any effect on validation. Adding a unset($params['cmd']); before the foreach fixes the problem.

Secondly, the call to stripslashes is not needed. PayPal likes for you to send back the string exactly as they sent it to you, and they send strings with slashes included. Go figure.

The fixed validation request builder looks like:

$req = 'cmd=_notify-validate';

    unset($params['cmd']);
    foreach($params as $key => $value) {
      $value = urlencode($value);
      $req.= "&$key=$value";
    }

DPD Now Supports AlertPay Payments!

  • Jacob@DPD
  • December 7, 2010
  • No Comments

We’re happy to announce beta support for AlertPay as a processor choice for your DPD cart!

Adding an AlertPay product is easy:

  • Create a new website
  • Choose AlertPay from the drop-down menu and enter your AlertPay login and IPN code
  • Login to AlertPay and enable IPN support with the URL we display in your website setup
  • Add your product to the new website

DPD supports AlertPay for both instant, single item checkout as well as using our multi-item checkout cart.

We only support digital and key code products at this time. We will be adding tangible support in the future, along with more processor choices.

Using DPD Coupons for Seasonal Promotions

  • Jason@DPD
  • November 23, 2010
  • 1 Comment

In 2009, comScore reported that online spending increased 5 percent on Cyber Monday to $887 Million. With Black Friday and Cyber Monday being the two busiest online shopping days of the year, we thought it was a great time to share with DPD vendors how to make special, limited coupons to entice sales during these spending frenzies.

DPD’s coupon controls offer a couple unique features to build excitement and offer a compelling call to action for your buyers that are especially applicable to seasonal sales like Black Friday and Cyber Monday:

Use Limits – “50% Off Only To The First 100 Customers!”

DPD coupons can be configured to only work for a specified number of uses. This is great for promotions where the first X number of people get a special deal, or to limit the total number of people that can take advantage of the offer.

Activation / Deactivation Dates – “Only valid Friday, Nov. 26th thru Monday, Nov 29th!”

Vendors can set an activation date and time as well as when a coupon automatically deactivates. This can be set down to the minute so a coupon promotion can last minutes, hours, days, or weeks.

Setting up a Limited Coupon:

In the screenshot below, we’ve set the limits for a special seasonal discount coupon that will only be valid for the first 100 customers and only from 12:01AM Black Friday (Nov. 26th) through midnight on Cyber Monday (Nov 29th). This is just an example- you can set your coupon to your own discount conditions.

DPD Coupon Discount Conditions
DPD Coupon Discount Conditions

Setting up your own limited coupon is easy- you can mix and match any of the options below:

Required Product – If you only want this coupon to apply to a specific product in your store, select it here. Otherwise, leave it on Any Product to allow them to use the coupon for any purchase.

Max Uses – If you only want to allow this coupon to be used a specific number of times, such as a limited promotion for the first 50 buyers, then set this number to the number of checkouts with the coupon you want to allow. If you want the coupon to be available to all customers then leave this blank or 0 for unlimited.

This is not a limit on the number of times a coupon can be used on one checkout. DPD never allows coupon stacking where they can apply the same coupon to one order twice.

Minimum Order Amount – If you only want this coupon to apply to a minimum order, set that amount here. For example, you might have a coupon for “20% off your order of $50 or more!” In that case, you would set your 20% off coupon minimum order amount to “50”

Minimum Quantity – If you want a coupon to only work when a set number of items are being purchased, enter that number of items here. For example, “20% off when you buy 3 items or more!”

Activation / Deactivation Date / Times – This is where you set a range of time for your coupon to be active where it can be used. This is useful for both preparing promotions beforehand as well as creating limited time offers.

DPD has a handy date picker where you can select the dates for your promotion. For those wanting down to the minute control, you can set the time of day when the coupon will activate/deactivate. All times in DPD are 24-Hour time, (UTC-05:00) Eastern Time (US & Canada), and the common city associated with the time zone is New York.

Please note, if you set a coupon for a future activation date / time then it will appear as inactive in DPD until that time, even if you set the status to active when creating the coupon. DPD will automatically activate the coupon at the set activation date/time.

With DPD coupon discount conditions a whole range of “limited” promotion opertunities are available. From “Limited Time” and “First 50 customer” call-to-action offers to upsale inducing discounts on $XX cart total or X number of items, DPD offers the controls to set a promotion up just how you want and make more sales!

Important Notice: PayPal is Having Lots of Issues Today

  • Jason@DPD
  • November 12, 2010
  • 3 Comments

Today has been one heck of a day for PayPal. They have been having problems with their API system, Webflow system, Website, Developer Sandbox and just about everything else. This has caused all manner of havoc for vendors and your loving DPD support staff.

It’s never fun for us to tell vendors that PayPal just isn’t working, even when it’s completely out of our control, but we’ve had to several times today. We just pushed an update to DPD that should help mitigate some of the purchase errors that some vendors are getting, and hopefully this will fix 99% of the problems that DPD vendors are having today.

Some purchases for a number of vendors were not activated when PayPal failed to send out Instant Purchase Notifications (IPNs) or malformed IPN data. DPD uses this IPN data to verify that a purchase was paid for, so when PayPal doesn’t send it (or sends garbage) then DPD can’t verify a purchase and activate a download. We’re working on identifying all those transactions that PayPal messed up and correcting them manually.

Currently there are 47 broken transactions out of 3000+ vendors but we normally average less than 1 error a day so this is unacceptable- we’re doing our best to make it right for everyone affected by the PayPal IPN sillyness. If you have transactions with the status of “Error” in your DPD Purchase List, please contact support so we can take a look at them. We can’t control PayPal’s problems, but we’ll do our best to clean up the damage for our users.

[box type=”note” style=”rounded” border=”full”]Update: We’ve activated all the transactions we could find that were affected by PayPal’s issues and were not already refunded by the vendor. We’ll continue to monitor incoming IPNs for further issues.[/box]