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.

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.

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]

New PDF Encryption Features

  • Jason@DPD
  • October 22, 2010
  • No Comments

Why does it seem like we only update on Fridays now?

This morning we released an update that brings enhanced security options to PDF products. In addition to PDF Buyer Tracking / Stamping that marks each page of the PDF with the buyer’s information to discourage sharing, DPD can now automatically encrypt your PDF documents to prevent tampering and minimize plagiarism and abuse.

Using the new feature, DPD will automatically encrypt your PDF document to lock future editing. You also have the option to prevent printing as well as prevent copying of the PDF contents (disables copying and pasting of the PDF text).

PDF Advanced Options Panel
PDF Advanced Options Panel with PDF Stamping and PDF Encryption Options

You can use the new PDF encryption feature with or without PDF Buyer Tracking / Stamping. When you use both, DPD will automatically add your tracking stamp to the pages you specify, then encrypt the PDF to prevent removal.

Like all DPD features, setting up PDF encryption is as simple as clicking a few options when configuring your product- no complicated encryption URLs or keys.

The same rules apply for PDF documents using the encryption feature as with the stamping feature- we must be able to edit your PDF document to apply the stamp so you must upload an unsecured PDF, but now we’ll lock it down tight when we’re done!

If anyone has any questions or comments on the new PDF encryption feature we’re here to help! Leave a comment here or submit a support request and we’ll do our best to answer any questions you may have!

Everyone Have a great weekend!

New Payment Pending Page

  • Jacob@DPD
  • October 12, 2010
  • No Comments

As many of you have noticed, the payment pending page is popping up a lot more often than it used to. PayPal released an updated website a couple of weeks ago and removed one of the features we used to ensure quick, reliable payment. Our old pending page was really meant only to be displayed in extreme cases and was in all honesty a bit scary for your customers to see.

As of five minutes ago, we’ve changed the payment pending page to be a more friendly “working” page that looks like this:
New payment pending page

We’ve also changed this page to update every 15 seconds.

Also in this update:

  • Added product purchase limits. You can now offer limited availability products.
  • Your billing history now has printable invoices for your records.
  • Product key codes longer than 40 characters can now be entered without causing the code to split.
  • Combo/bundle products can now include tangible products. Previously only digital and key products were allowed to be bundled.
  • A minor JavaScript error was fixed in the cart in Internet Explorer (all version).

MailChimp: Planned Outage on Oct 10

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

TGIF!   This is just a quick heads-up reminder all DPD vendors using the DPD MailChimp Integration that they have a planned outage this weekend on October 10 at 1 AM ET.  They anticipate the outage will last from 2 – 4 hours while they upgrade their systems.

From the MailChimp Blog:

We’re moving a large portion of MailChimp’s brain power to a much bigger, much faster server. Our recent growth, and the rapid uptake of Social Pro (there were more than 50 million social data queries since we made it free 2 weeks ago in v5.3), mean we have to add extra capacity much sooner than anticipated.

and…

Most of our upgrades are like changing tires on a moving car: we rarely pull over to stop, because your emails, your open tracking, and your list subscriptions never stop. But this upgrade is more like swapping out our engine (and adding in 4 turbochargers, plus a larger trunk), so we have to stop the car this time. That means open tracking, click tracking, list subscriptions, and everything will be temporarily turned off.

This means that DPD products and websites using the MailChimp integration will not pass purchasers details to MailChimp while they’re offline.

We’re sorry for the inconvenience this might cause DPD vendors, but MailChimp has picked the best time of the week to do it when both general internet traffic and DPD purchase activity is at its lowest. MailChimp is pretty awesome though (we use them for our pathetically infrequent update newsletters) and this is the first outage we’ve ever seen from them.  I’m sure they’ll be back online with more-better-faster services for everyone before you know it!