/** * Post manual additions transacton form */ static function addManually($params) { extract($params); $ipn_url = Config::get('project.paypal_ipn_url'); $params = array('first_name' => Input::get('first_name'), 'last_name' => Input::get('last_name'), 'email' => Input::get('email'), 'password' => Input::get('password'), 'product_id' => Input::get('product_id'), 'plan_id' => Input::get('plan_id'), 'pay_id' => Input::get('pay_id'), 'stripe_token' => Input::get('stripe_token'), 'paypal_sub_id' => Input::get('paypal_sub_id'), 'amount' => Input::get('amount'), 'affiliate_id' => Input::get('affiliate_id')); $members[] = array('email' => $email, 'fname' => $first_name, 'lname' => $last_name); $data = array(); if ($members) { foreach ($members as $member) { // Add or get buyer if ($buyer = Buyer::getOrCreate($member)) { // Get Plan $plan = Plan::find($plan_id); if ($plan and !$plan->is_oto) { // Add purchase for the buyer $purchase = new Purchase(); $purchase->buyer_id = $buyer->id; $purchase->product_id = $product_id; $purchase->plan_id = $plan_id; $purchase->stripe_token = $stripe_token ? $stripe_token : NULL; $purchase->paypal_sub_id = $paypal_sub_id ? $paypal_sub_id : NULL; $purchase->pay_method = 2; $purchase->affiliate_id = $affiliate_id; // If method is Stripe if ($pay_id and DKHelpers::GetPayMethod($pay_id) == 'Stripe') { $purchase->pay_method = 1; } $purchase->save(); } // Push to PayPal IPN of DK $ipn_data = array('plan_id' => $plan_id, 'product_id' => $product_id, 'email' => $buyer->email, 'first_name' => $buyer->first_name, 'last_name' => $buyer->last_name, 'password' => $password, 'transaction_id' => $pay_id ? $pay_id : 'MNL-' . time(), 'amount' => $amount, 'manual_transaction' => TRUE); if ($password) { $ipn_data['dk_new_user'] = TRUE; } else { $ipn_data['dk_new_charge'] = TRUE; $ipn_data['buyer_id'] = $buyer->id; } // Add Curl library require_once app_path() . "/libraries/Curl/Curl.php"; // Post data to IPN $curl = new Curl(); $curl->simple_post($ipn_url, $ipn_data, array(CURLOPT_BUFFERSIZE => 10)); } } } return TRUE; }