function setSubscription() { global $user_ID; if (class_exists('WPSC_Subscription')) { $sub = new WPSC_Subscription($user_ID); } foreach ($this->cart_items as $itemIndex => $item) { if (isset($item['is_recurring']) && (int) $item['is_recurring'] > 0) { //If you already have a subscription then pass $subscription = new AuthorizeNet_Subscription(); //If there is a predefined interval set it if (isGood($item['recurring_data']['rebill_interval']['unit']) && isGood($item['recurring_data']['rebill_interval']['length'])) { $unit = $item['recurring_data']['rebill_interval']['unit']; $length = $item['recurring_data']['rebill_interval']['length']; if ($unit == 'month') { $unit = 'months'; } elseif ($unit == 'days') { $unit = 'days'; } elseif ($unit == 'week') { $length = $length * 7; $unit = 'days'; } elseif ($unit == 'year') { $length = $length * 12; $unit = 'months'; } $subscription->intervalUnit = $unit; $subscription->intervalLength = $length; } //Set rebill design if (isset($item['recurring_data']['charge_to_expiry']) && (int) $item['recurring_data']['charge_to_expiry'] > 0) { //we bill forever, set the totalOccurences to 9999 $subscription->totalOccurrences = 9999; } elseif (isset($item['recurring_data']['times_to_rebill']) && (int) $item['recurring_data']['times_to_rebill'] > 0) { //Only a specified ammount of times $subscription->totalOccurrences = (int) $item['recurring_data']['times_to_rebill']; } else { $subscription->totalOccurrences = 1; } //Always set the start date to today $subscription->startDate = date('Y-m-d'); $subscription->amount = $item['price'] * $item['quantity'] + $item['tax'] + $item['shipping']; $amount = $subscription->amount; if (isGood($item['name'])) { $subscription->name = $item['name']; } //Set the billing info if (isGood($this->cart_data['billing_address']['first_name'])) { $subscription->billToFirstName = $this->cart_data['billing_address']['first_name']; } if (isGood($this->cart_data['billing_address']['last_name'])) { $subscription->billToLastName = $this->cart_data['billing_address']['last_name']; } if (isGood($this->cart_data['billing_address']['address'])) { $subscription->billToAddress = $this->cart_data['billing_address']['address']; } if (isGood($this->cart_data['billing_address']['city'])) { $subscription->billToCity = $this->cart_data['billing_address']['city']; } if (isGood($this->cart_data['billing_address']['state'])) { $subscription->billToState = $this->cart_data['billing_address']['state']; } if (isGood($this->cart_data['billing_address']['post_code'])) { $subscription->billToZip = $this->cart_data['billing_address']['post_code']; } if (isGood($this->cart_data['billing_address']['country'])) { $subscription->billToCountry = $this->cart_data['billing_address']['country']; } if (isGood($this->cart_data['email_address'])) { $subscription->customerEmail = $this->cart_data['email_address']; } $subscription->customerId = $user_ID; //Trying to figure out how to set this //$subscription->customerPhoneNumber = $item['']; if (isGood($_REQUEST['payType']) && ($_REQUEST['payType'] = 'creditCardForms')) { $ccInfo = $_REQUEST['auth_net']['creditCard']; $subscription->creditCardCardNumber = $ccInfo['card_number']; $subscription->creditCardExpirationDate = $ccInfo['expiry']['year'] . '-' . $ccInfo['expiry']['month']; $subscription->creditCardCardCode = $ccInfo['card_code']; } elseif (isGood($_REQUEST['payType']) && ($_REQUEST['payType'] = 'checkForms')) { $bInfo = $_REQUEST['auth_net']['bankAccount']; $subscription->bankAccountAccountType = $bInfo['account_type']; $subscription->bankAccountRoutingNumber = $bInfo['routing_number']; $subscription->bankAccountAccountNumber = $bInfo['account_number']; $subscription->bankAccountNameOnAccount = $bInfo['name_on_account']; //$subscription->bankAccountEcheckType = ""; $subscription->bankAccountBankName = $bInfo['bank_name']; } else { //TODO return if payment data is bad } $request = new AuthorizeNetARB(); //Create a unique refid so if there are multiple subscriptions everything works out ok $refid = $this->cart_data['session_id'] . '-' . $item['cart_item_id']; $request->setRefId($refid); $this->response = $request->createSubscription($subscription); $this->response->transaction_id = $this->cart_data['session_id']; if ($this->response->isOk()) { //This created subscription; $this->response->authorization_code = $this->response->getSubscriptionId(); $subscriptionId = $this->response->getSubscriptionId(); $end = strtotime($length . ' ' . $unit); $sub->saveSubscriptionMeta(array('purchase_id' => $this->purchase_id, 'producti_d' => $item['product_id'], 'ref_id' => $refid, 'subscription_id' => $this->response->getSubscriptionId(), 'startTime' => time(), 'endTime' => $end)); //If we setup the transaction and it worked, remove it from the cart //if their are more subscriptions the foreach will catch the reset of them //If there are other items non-subscription based this loop finishes and returns true //THe submit function will then continue to see if it needs to do anything else. unset($this->cart_items[$itemIndex]); //Remove this ammount from cart_data['total_price'] & tax $this->cart_data['total_price'] = $this->cart_data['total_price'] - $amount; $this->cart_data['cart_tax'] = $this->cart_data['cart_tax'] - $item['tax']; } else { //error occured, bailing back to checkout stand $this->set_transaction_details($this->cart_data['session_id'], 6); $this->set_error_message(__('Failed to Authorize the Subscription', 'wpsc_gold_cart')); $this->return_to_checkout(); return false; } } } return true; }
public function testCreateSubscriptionECheck() { $subscription = new AuthorizeNet_Subscription(); $subscription->name = "my test echeck subscription"; $subscription->intervalLength = "1"; $subscription->intervalUnit = "months"; $subscription->startDate = "2015-04-12"; $subscription->totalOccurrences = "2"; $subscription->trialOccurrences = ""; $subscription->amount = "11.99"; $subscription->trialAmount = ""; $subscription->bankAccountAccountType = "checking"; $subscription->bankAccountRoutingNumber = "121000248"; $subscription->bankAccountAccountNumber = "12345678"; $subscription->bankAccountNameOnAccount = "John Doe"; $subscription->bankAccountEcheckType = "WEB"; $subscription->bankAccountBankName = "Bank of Earth"; $subscription->orderInvoiceNumber = ""; $subscription->orderDescription = ""; $subscription->customerId = "12"; $subscription->customerEmail = "*****@*****.**"; $subscription->customerPhoneNumber = ""; $subscription->customerFaxNumber = ""; $subscription->billToFirstName = "john"; $subscription->billToLastName = "doe"; $subscription->billToCompany = ""; $subscription->billToAddress = ""; $subscription->billToCity = ""; $subscription->billToState = ""; $subscription->billToZip = ""; $subscription->billToCountry = ""; $subscription->shipToFirstName = ""; $subscription->shipToLastName = ""; $subscription->shipToCompany = ""; $subscription->shipToAddress = ""; $subscription->shipToCity = ""; $subscription->shipToState = ""; $subscription->shipToZip = ""; $subscription->shipToCountry = ""; $refId = "ref" . time(); // Create the request and send it. $request = new AuthorizeNetARB(); $request->setRefId($refId); $response = $request->createSubscription($subscription); // Handle the response. $this->assertTrue($response->isOk()); $this->assertEquals($response->getMessageCode(), "I00001"); $this->assertEquals($response->getMessageText(), "Successful."); $this->assertEquals($response->getRefId(), $refId); $this->assertEquals($response->getResultCode(), "Ok"); // Cancel the subscription to avoid duplicate errors in future $cancellation = new AuthorizeNetARB(); $cancellation->setRefId($refId); $cancel_response = $cancellation->cancelSubscription($response->getSubscriptionId()); $this->assertTrue($cancel_response->isOk()); }
function onTP_Processpayment_recurring($data) { $order_id = $data['order_id']; require_once dirname(__FILE__) . '/authorizenet/lib/AuthorizeNet.php'; $auth_net_login_id = $this->params->get('login_id', '1'); $auth_net_tran_key = $this->params->get('tran_key', '1'); $plgPaymentAuthorizenetHelper = new plgPaymentAuthorizenetHelper(); $auth_net_url = $plgPaymentAuthorizenetHelper->buildAuthorizenetUrl(); $auth_net_url; $DEBUGGING = 1; # Display additional information to track down problems $TESTING = 1; # Set the testing flag so that transactions are not live $ERROR_RETRIES = 2; # Number of transactions to post if soft errors occur $exp_date = explode('-', $data['expirationDate']); $data['expirationDate'] = $exp_date[1] . "-" . $exp_date[0]; define("AUTHORIZENET_API_LOGIN_ID", $auth_net_login_id); define("AUTHORIZENET_TRANSACTION_KEY", $auth_net_tran_key); $subscription = new AuthorizeNet_Subscription(); $subscription->name = $data['sub_name']; $subscription->intervalLength = $data['intervalLength']; $subscription->intervalUnit = $data['intervalUnit']; $subscription->startDate = $data['startDate']; $subscription->totalOccurrences = $data['totalOccurrences']; $subscription->amount = $data['amount']; $subscription->orderInvoiceNumber = $data['order_id']; $subscription->creditCardCardNumber = $data['cardNumber']; $subscription->creditCardExpirationDate = $data['expirationDate']; $subscription->creditCardCardCode = $data['cardcode']; $subscription->billToFirstName = $data['firstName']; $subscription->billToLastName = $data['lastName']; $subscription->billToAddress = $data['cardaddress1']; $subscription->billToCity = $data['cardcity']; $subscription->billToState = $data['cardstate']; $subscription->billToZip = $data['cardzip']; // Create the subscription. $request = new AuthorizeNetARB(); $refId = $subscription->orderInvoiceNumber; $request->setRefId($refId); $testmode = $this->params->get('sandbox', '1'); if ($testmode == 0) { $request->setSandbox(false); //turn OFF sandbox } else { $request->setSandbox(true); //turn ON sandbox } $response = $request->createSubscription($subscription); $subscription_id = $response->getSubscriptionId(); $error = ""; if ($response->xml->messages->resultCode != 'Ok') { $payment_status = "P"; $error = JText::_('AUTH_SUB_FAIL') . $response->xml->messages->message->text; } else { $payment_status = "C"; $success = JText::_('AUTH_SUB_SUCCESS') . $subscription_id; } $result = array('transaction_id' => $refId, 'subscription_id' => $subscription_id, 'order_id' => $data['order_id'], 'status' => $payment_status, 'total_paid_amt' => $data['amount'], 'raw_data' => $response, 'payment_type' => 'recurring', 'error' => $error, 'success' => $success, 'return' => $data['return']); return $result; }
function process_subscription($item, $data, $config) { //Check for subscriptions $sub = array(); if (!defined('AUTHORIZENET_API_LOGIN_ID')) { define("AUTHORIZENET_API_LOGIN_ID", $config["x_login"]); define("AUTHORIZENET_TRANSACTION_KEY", $config["x_tran_key"]); } $unit = $item["subscription"]["period"] == 1 ? 'days' : 'months'; $member_id = $this->EE->session->userdata["member_id"]; $email = $this->EE->session->userdata["email"]; // Set the start date $start_dt = date('Y-m-d', strtotime('+' . $item["subscription"]["length"] . ' ' . $unit)); // Check if there is a trial subscription $price = $item["subscription"]["price"]; $renewal_price = $item["subscription"]["price"]; unset($item["subscription"]["price"]); $trial_occur = ""; $trial_price = ""; if ($item["subscription"]["trial_occur"] > 1) { // reduce the trial occurrences by one since we // already gave them the discount on the first // payment $occur = $item["subscription"]["trial_occur"] - 1; if ($occur >= 1) { #$renewal_price = $item["subscription"]["trial_price"]; $trial_occur = $occur; $trial_price = $item["subscription"]["trial_price"]; } } $subscription = new AuthorizeNet_Subscription(); $subscription->name = $item["title"]; $subscription->intervalLength = $item["subscription"]["length"]; $subscription->intervalUnit = $unit; $subscription->startDate = $start_dt; $subscription->totalOccurrences = 9999; $subscription->trialOccurrences = $trial_occur; $subscription->amount = $price; $subscription->trialAmount = $trial_price; $subscription->creditCardCardNumber = $data["autho_cc_num"]; $subscription->creditCardExpirationDate = $data["autho_cc_year"] . '-' . $data["autho_cc_month"]; $subscription->creditCardCardCode = $data["autho_cc_code"]; $subscription->orderInvoiceNumber = $data["order_id"]; $subscription->orderDescription = ""; $subscription->customerId = $member_id; $subscription->customerEmail = $email; $subscription->customerPhoneNumber = $data["br_billing_phone"]; $subscription->billToFirstName = $data["br_billing_fname"]; $subscription->billToLastName = $data["br_billing_lname"]; $subscription->billToCompany = $data["br_billing_company"]; $subscription->billToAddress = $data["br_billing_address1"] . ' ' . $data["br_billing_address2"]; $subscription->billToCity = $data["br_billing_city"]; $subscription->billToState = $data["br_billing_state"]; $subscription->billToZip = $data["br_billing_zip"]; $subscription->billToCountry = $data["br_billing_country"]; $subscription->shipToFirstName = $data["br_shipping_fname"]; $subscription->shipToLastName = $data["br_shipping_lname"]; $subscription->shipToCompany = $data["br_shipping_company"]; $subscription->shipToAddress = $data["br_shipping_address1"] . ' ' . $data["br_shipping_address2"]; $subscription->shipToCity = $data["br_shipping_city"]; $subscription->shipToState = $data["br_shipping_state"]; $subscription->shipToZip = $data["br_shipping_zip"]; $subscription->shipToCountry = $data["br_shipping_country"]; $refId = "ref" . time(); // Create the request and send it. $request = new AuthorizeNetARB(); // do we need to process in sandbox mode if (array_key_exists("x_test_request", $config) && $config["x_test_request"] == 'FALSE') { $request->setSandbox(FALSE); } $request->setRefId($refId); $response = $request->createSubscription($subscription); $item["subscription"]["code"] = (string) $response->xml->refId; $item["subscription"]["status_id"] = 1; $item["subscription"]["result"] = (string) $response->xml->messages->resultCode; $item["subscription"]["message"] = (string) $response->xml->messages->message->text; $item["subscription"]["subscription_id"] = (int) $response->xml->subscriptionId; $item["subscription"]["renewal_price"] = $renewal_price; $item["subscription"]["trial_occur"] = $trial_occur; $item["subscription"]["trial_price"] = $trial_price; $item["subscription"]["next_renewal"] = $start_dt; $item["subscription"]["cc_last_four"] = substr($data["autho_cc_num"], -4, 4); $item["subscription"]["cc_month"] = $data["autho_cc_month"]; $item["subscription"]["cc_year"] = $data["autho_cc_year"]; return $item["subscription"]; }
/** * function to create subscription * @param array $requestData form data * @param int $userId user id * @author Gaurav Bhandari */ public function createSubscription($requestData, $userId) { //Create Subscription $subscription = new AuthorizeNet_Subscription(); $subscription->name = $requestData['User']['user_email']; $subscription->intervalLength = "1"; $subscription->intervalUnit = "months"; $subscription->startDate = date('Y-m-d', time()); $subscription->totalOccurrences = "999"; $subscription->amount = $requestData['BusinessOwner']['memberShipPrice']; $subscription->creditCardCardNumber = $requestData['BusinessOwner']['CC_Number']; $subscription->creditCardExpirationDate = $requestData['BusinessOwner']['expiration']; $subscription->creditCardCardCode = $requestData['BusinessOwner']['cvv']; $subscription->billToFirstName = $requestData['BusinessOwner']['fname']; $subscription->billToLastName = $requestData['BusinessOwner']['lname']; $request = new AuthorizeNetARB(); $response = $request->createSubscription($subscription); $subscriptionData['subscription_id'] = $response->getSubscriptionId(); $subscriptionData['user_id'] = $userId; $monthChange = date('m') + 1; if ($monthChange <= 12) { $subscriptionData['next_subscription_date'] = date('Y-' . $monthChange . '-d'); } else { $monthChange = 1; $year = date('Y') + 1; $subscriptionData['next_subscription_date'] = date($year . '-' . $monthChange . '-d'); } $subscriptionData['transaction_id'] = $requestData['Subscription']['transaction_id']; $this->Subscription->create(); $this->Subscription->save($subscriptionData); }
private function process_recurring(&$payment) { $data = $payment->get_data('billing-information'); $arb = new AuthorizeNetARB(wpbdp_get_option('authorize-net-login-id'), wpbdp_get_option('authorize-net-transaction-key')); if (wpbdp_get_option('payments-test-mode')) { $arb->setSandbox(true); } else { $arb->setSandbox(false); } $recurring_item = $payment->get_recurring_item(); //wpbdp_debug_e( $recurring_item ); $s = new AuthorizeNet_Subscription(); $s->intervalLength = $recurring_item->data['fee_days']; $s->intervalUnit = 'days'; $s->totalOccurrences = '9999'; $s->startDate = date('Y-m-d', strtotime('+1 day', current_time('timestamp'))); $s->amount = $recurring_item->amount; $s->creditCardCardNumber = $data['cc_number']; $s->creditCardExpirationDate = $data['cc_exp_year'] . '-' . $data['cc_exp_month']; $s->creditCardCardCode = $data['cc_cvc']; $s->billToFirstName = $data['first_name']; $s->billToLastName = $data['last_name']; $s->billToAddress = $data['address_line1']; $s->billToCity = $data['address_city']; $s->billToState = $data['address_state']; $s->billToCountry = $data['address_country']; $s->billToZip = $data['zipcode']; $s->orderInvoiceNumber = $payment->get_id(); $s->orderDescription = $payment->get_short_description(); // TODO: maybe add zip, phone, email, cust_id. $response = $arb->createSubscription($s); if (!$response->isOk()) { $payment->add_error(_x('Could not process payment.', 'authorize-net', 'WPBDM')); $payment->set_status(WPBDP_Payment::STATUS_REJECTED, WPBDP_Payment::HANDLER_GATEWAY); } else { $subscription_id = $response->getSubscriptionId(); $payment->set_data('recurring_id', $subscription_id); $payment->set_status(WPBDP_Payment::STATUS_COMPLETED, WPBDP_Payment::HANDLER_GATEWAY); } $payment->save(); wp_redirect(esc_url_raw($payment->get_redirect_url())); }