Hi,

In "function uc_paypal_buttons_validate_ipn($order_id, $ipn, $order)"

l.1642:

  // subscription-specific validation during sign-up stage
      if ($options['subscription'] && $ipn['txn_type'] == 'subscr_signup') {
        // Verify subscription settings from IPN
        $orderopts = unserialize($rec->options);
        if ((isset($orderopts['a1']) && uc_currency_format($orderopts['a1'], FALSE, FALSE) !== uc_currency_format($ipn['amount1'], FALSE, FALSE)) || (isset($orderopts['a2']) && uc_currency_format($orderopts['a2'], FALSE, FALSE) !== uc_currency_format($ipn['amount2'], FALSE, FALSE)) || (uc_currency_format($orderopts['a3'], FALSE, FALSE) !== uc_currency_format($ipn['amount3'], FALSE, FALSE))) {
          watchdog('uc_paypal_button', 'PayPal Subscription sign-up IPN for order @order-id contains price amounts different than the initial product settings.', array('@order-id' => $order_id), WATCHDOG_WARNING);
          return FALSE;
        }

Will always return FALSE in case your currency is not USD. From IPN doc:

"amount3:
Amount of payment for regular subscription period for USD payments; otherwise blank."

You probably want to use mc_amount1-2-3 instead.

Comments

sdsheridan’s picture

This was causing me problems. Good catch!

Shawn

arithmetric’s picture

Version: 6.x-1.0 » 6.x-1.x-dev
Status: Active » Fixed

Thanks for reporting this issue. I've committed this fix, and it will be included in the next development and stable releases.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.