It's been a month since the creation of the first live recurring billing profiles; the first transaction is processed correctly, but the transactions are being declined as the credit card number was not passed correctly when the profile was setup. The first transaction's credit card number gets correctly passed, but the profile has an unidentifiable four digit number where the CC should be.

Here's the Daily Activity Transaction Report from Payflow :

TransactionID
TRANSACTION TIME
Apr 7, 2010 7:38:11 AM

TRANSACTION TYPE

Sale

-CARD TYPE, ACCOUNT NUMBER and EXPIRATION DATE Mirror what's in the recurring profile

CARD TYPE
BankCard

ACCOUNT NUMBER
XXXX

EXPIRATION DATE
01/12

CURRENCY
USD

AMOUNT
25.00

RESULT
23

RESPONSE MESSAGE
Invalid account number

COMMENT2
Recurring Profile: RT0000000007 Payment: 000001 Name: main_administrator

Here's a MySQL Dump for a few rows from the uc_payflowpro_recurring_profiles table
-----------------------------

-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Apr 07, 2010 at 12:56 PM
-- Server version: 5.0.89
-- PHP Version: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `databasename`
--

-- --------------------------------------------------------

--
-- Table structure for table `uc_payflowpro_recurring_profiles`
--

CREATE TABLE IF NOT EXISTS `uc_payflowpro_recurring_profiles` (
  `pfp_pid` int(10) unsigned NOT NULL auto_increment,
  `txnid` int(10) unsigned default NULL,
  `order_id` int(10) unsigned default NULL,
  `uc_model` varchar(255) default NULL,
  `nid` int(10) unsigned NOT NULL default '0',
  `vid` int(10) unsigned NOT NULL default '0',
  `pfp_uid` int(10) unsigned default NULL,
  `pfp_profile_id` varchar(20) default NULL,
  `pfp_rpref` varchar(20) default NULL,
  `pfp_origid` varchar(20) default NULL,
  `pfp_status` char(1) default NULL,
  `next_payment_date` int(10) unsigned default NULL,
  `last_status_check` int(10) unsigned default NULL,
  `payment_status` varchar(45) default NULL,
  `profile_status` varchar(45) default NULL,
  PRIMARY KEY  (`pfp_pid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=277 ;

--
-- Dumping data for table `uc_payflowpro_recurring_profiles`
--

INSERT INTO `uc_payflowpro_recurring_profiles` (`pfp_pid`, `txnid`, `order_id`, `uc_model`, `nid`, `vid`, `pfp_uid`, `pfp_profile_id`, `pfp_rpref`, `pfp_origid`, `pfp_status`, `next_payment_date`, `last_status_check`, `payment_status`, `profile_status`) VALUES
(7, NULL, 20, 'ULTD-subscription', 240, 665, 1, 'RT0000000007', 'R7851FAF0BF8', 'R7851FAF0BF8', '0', 1270530000, 1267902005, NULL, 'ACTIVE'),
(8, NULL, 20, 'basic-subscription', 236, 646, 1, 'RT0000000008', 'R1852AF61004', 'R1852AF61004', '0', 1270530000, 1267902006, NULL, 'ACTIVE'),
(9, NULL, 23, 'ULTD-subscription', 240, 665, 4903, 'RP0000000001', 'RSG54E5BE822', 'RSG54E5BE822', '0', 1270530000, 1267909205, NULL, 'ACTIVE'),
(10, NULL, 33, 'ULTD-subscription', 240, 665, 639, 'RP0000000002', 'RPC54F16CA79', 'RPC54F16CA79', '0', 1270530000, 1267930801, NULL, 'ACTIVE');

------------------------------------------------
XML Data dump from (cron) function _uc_payflowpro_recurring_process_recurring() :

object(PayflowProRecurring)#49 (30) {
  ["pid:protected"]=>
  NULL
  ["profile_id:protected"]=>
  string(12) "RT0000000001"
  ["profile_name:protected"]=>
  string(0) ""
  ["profile_term:protected"]=>
  string(0) ""
  ["profile_start:protected"]=>
  string(0) ""
  ["profile_end:protected"]=>
  string(0) ""
  ["profile_payperiod:protected"]=>
  string(0) ""
  ["profile_amt:protected"]=>
  string(0) ""
  ["profile_tender:protected"]=>
  array(0) {
  }
  ["profile_email:protected"]=>
  string(0) ""
  ["profile_company_name:protected"]=>
  string(0) ""
  ["profile_billto:protected"]=>
  array(0) {
  }
  ["profile_shipto:protected"]=>
  array(0) {
  }
  ["profile_payments_left:protected"]=>
  string(0) ""
  ["profile_aggregate_amt:protected"]=>
  string(0) ""
  ["profile_aggregate_trans_amt:protected"]=>
  string(0) ""
  ["profile_num_failed_payments:protected"]=>
  string(0) ""
  ["profile_retry_num_days:protected"]=>
  string(0) ""
  ["profile_next_payment:protected"]=>
  string(0) ""
  ["profile_exp_data:protected"]=>
  array(0) {
  }
  ["profile_status:protected"]=>
  string(23) "DEACTIVATED BY MERCHANT"
  ["payment_history:protected"]=>
  array(0) {
  }
  ["auth:protected"]=>
  array(4) {
    ["vendor"]=>
    string(11) "FAKEUSER"
    ["partner"]=>
    string(11) "FakePartner"
    ["user"]=>
    string(11) "FAKEUSER"
    ["password"]=>
    string(10) "fakepassword"
  }
  ["mode:protected"]=>
  string(4) "test"
  ["return_code:protected"]=>
  string(0) ""
  ["return_msg:protected"]=>
  string(0) ""
  ["last_payment_status:private"]=>
  NULL
  ["update_items:protected"]=>
  array(0) {
  }
  ["create_new:protected"]=>
  bool(false)
  ["loaded:protected"]=>
  bool(true)
}
CommentFileSizeAuthor
#2 uc_payflowpro-764874.patch4.85 KBkwinters

Comments

beifler’s picture

I'm not sure if it's related, but the customer's full name is placed in the first name field in the Payflow recurring profile. Also, the phone # is missing from the profile info.

kwinters’s picture

Assigned: Unassigned » kwinters
Status: Active » Needs review
StatusFileSize
new4.85 KB

This should be fixed now (patch provided and also committed).

When not in test mode, Ubercart truncates the credit card info from the order object right after the initial charge (keeps last 4 digits). Before this patch, the recurring profile was being created after this truncation and thus only getting the last 4 digits passed.

However, some parts of the recurring processing still have to be done well after the CC info is lost. If a user is anonymous on checkout, a user is created for them near the end of the process and that user has to be tied to the recurring profile. Now only the user -> profile linkup happens after the user is created, so everything gets all the data it needs.

kwinters’s picture

Status: Needs review » Fixed

Fixed in 6.x-1.2

Status: Fixed » Closed (fixed)

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