public function createRecurlySubscription2(Recurly_Account $account, $planCode, $billingFirstName, $billingLastName, $billingAddr1, $billingAddr2 = "", $billingCity, $billingState, $billingZIP, $billingCountry = "US", $ccNumber, $ccExpMonth, $ccExpYear, $ccVerificationValue)
{
$billing_info = new Recurly_BillingInfo();
$billing_info->account_code = $account->account_code;
$billing_info->first_name = $billingFirstName;
$billing_info->last_name = $billingLastName;
$billing_info->address1 = $billingAddr1;
$billing_info->address2 = $billingAddr2;
$billing_info->city = $billingCity;
$billing_info->state = $billingState;
$billing_info->country = $billingCountry;
$billing_info->zip = $billingZIP;
$billing_info->year = intval($ccExpYear);
$billing_info->month = intval($ccExpMonth);
if (trim($ccVerificationValue) != "") {
$billing_info->verification_value = $ccVerificationValue;
}
if (substr($ccNumber, 0, 5) != "*****") {
$billing_info->number = $ccNumber;
}
$billing_info->ip_address = $_SERVER['REMOTE_ADDR'];
$account_info = $billing_info->update();
$account_info = null;
$currentSubscription = self::getSubscription($account->account_code);
$currentPlanCode = "";
$currentPlanCost = 0;
$newPlanCost = 0;
if ($planCode != "" && $planCode != "daily") {
$newPlan = Recurly_Plan::get($planCode);
$newPlanCost = $newPlan->unit_amount_in_cents;
}
if ($currentSubscription) {
$currentPlanCode = $currentSubscription->plan_code;
$currentPlan = Recurly_Plan::get($currentPlanCode);
$currentPlanCost = $currentSubscription->unit_amount_in_cents;
}
if ($planCode == "" || $planCode == "daily") {
// if the plan is being moved from a monthly plan to daily, then we have to cancel subscription.
if ($currentSubscription) {
$currentSubscription->cancel();
}
} else {
// if the plan is being moved from one monthly plan to another, then we have to
// upgrade or downgrade.
if ($currentSubscription) {
$currentSubscription->plan_code = $planCode;
// get the current plan's amount and compare to the new one
if ($newPlanCost > $currentPlanCost) {
// upgrade
$currentSubscription->updateImmediately();
} elseif ($newPlanCost < $currentPlanCost) {
$currentSubscription->updateAtRenewal();
}
} else {
// no current subscription and we want a monthly, so just add a new one
$subscription = new Recurly_Subscription();
$subscription->plan_code = $planCode;
$subscription->currency = "USD";
$account->billing_info = $billing_info;
$subscription->account = $account;
$subscription->create();
}
}
return $account_info;
}