public function purchase_direct($id)
 {
     $subscriptions = $this->subscriptions;
     $subscription = $subscriptions[$id];
     if (empty($subscription)) {
         return;
     }
     $sandbox = $this->anetarb_settings['mode'] == 'sandbox' ? true : false;
     $payment = new AuthnetAIM($sandbox);
     $creditcard = $_POST['cc_number'];
     $expiration = $_POST['cc_expmonth'] . $_POST['cc_expyear'];
     $cvv = $_POST['cc_cvc'];
     $total = $subscription['init_amount'];
     $invoice = null;
     $tax = null;
     $first_name = $_POST['first_name'];
     $last_name = $_POST['last_name'];
     $email = $_POST['email'];
     $payment->transaction($creditcard, $expiration, $total, $cvv, $invoice, $tax);
     $login = $this->anetarb_settings['acct.api_login_id'];
     $key = $this->anetarb_settings['acct.transaction_key'];
     $payment->setParameter("x_login", $login);
     $payment->setParameter("x_tran_key", $key);
     $payment->setParameter("x_first_name", $first_name);
     $payment->setParameter("x_last_name", $last_name);
     $payment->setParameter("x_email", $email);
     $subscription_name = $subscription['name'];
     $payment->process();
     if ($payment->isApproved()) {
         // Instanciate our ARB class
         $arb = new AuthnetARB($sandbox, $login, $key);
         // Set recurring billing variables
         // Set recurring billing parameters
         $arb->setParameter('amount', $total);
         $arb->setParameter('cardNumber', $creditcard);
         $arb->setParameter('expirationDate', $expiration);
         $arb->setParameter('firstName', $first_name);
         $arb->setParameter('lastName', $last_name);
         //$arb->setParameter('address', $address);
         //$arb->setParameter('city', $city);
         //$arb->setParameter('state', $state);
         //$arb->setParameter('zip', $zip);
         $arb->setParameter('customerEmail', $email);
         $arb->setParameter('subscrName', $subscription_name);
         // Create the recurring billing subscription
         $arb->createAccount();
         // If successful let's get the subscription ID
         if ($arb->isSuccessful()) {
             $arb_id = $arb->getSubscriberID();
             $status = array('status' => 'active', 'id' => $arb_id);
         } else {
             //var_dump('Fail:' . $arb->getResponse());
         }
     } else {
         //var_dump($payment->getResultResponseFull());
     }
     $_POST['lastname'] = $last_name;
     $_POST['firstname'] = $first_name;
     $_POST['action'] = 'wpm_register';
     $_POST['wpm_id'] = $subscription['sku'];
     $_POST['username'] = $email;
     $_POST['email'] = $email;
     $_POST['sctxnid'] = $status['id'];
     $_POST['password1'] = $_POST['password2'] = $this->wlm->PassGen();
     $this->wlm->ShoppingCartRegistration();
 }