public function merchantPayment() { $token = isset($this->data['token']) ? $this->data['token'] : ''; if (isset($this->data['payment_opt'])) { if (!($merchant = Yii::app()->functions->getMerchantByToken($token))) { $this->msg = Yii::t("default", "ERROR: cannot get merchant information"); return; } if ($this->data['payment_opt'] == "ccr") { if (is_numeric($this->data['cc_id'])) { if (isset($this->data['renew'])) { $membership_info = Yii::app()->functions->upgradeMembership($merchant['merchant_id'], $this->data['package_id']); $params = array('package_id' => $this->data['package_id'], 'merchant_id' => $merchant['merchant_id'], 'price' => $membership_info['package_price'], 'payment_type' => $this->data['payment_opt'], 'mt_id' => $this->data['cc_id'], 'date_created' => date('c'), 'ip_address' => $_SERVER['REMOTE_ADDR'], 'membership_expired' => $membership_info['membership_expired']); $this->insertData("{{package_trans}}", $params); $params_update = array('package_id' => $this->data['package_id'], 'package_price' => $membership_info['package_price'], 'membership_expired' => $membership_info['membership_expired'], 'membership_purchase_date' => date('c'), 'status' => 'active'); $this->updateData("{{merchant}}", $params_update, 'merchant_id', $merchant['merchant_id']); $this->code = 1; $this->msg = Yii::t("default", "Payment Successful"); } else { $params = array('package_id' => $merchant['package_id'], 'merchant_id' => $merchant['merchant_id'], 'price' => $merchant['package_price'], 'payment_type' => $this->data['payment_opt'], 'mt_id' => $this->data['cc_id'], 'date_created' => date('c'), 'ip_address' => $_SERVER['REMOTE_ADDR']); if ($package = Yii::app()->functions->getPackagesById($merchant['package_id'])) { $expiration = $package['expiration']; $membership_expired = date('Y-m-d', strtotime("+{$expiration} days")); $params['membership_expired'] = $membership_expired; } if ($this->insertData("{{package_trans}}", $params)) { $this->code = 1; $this->msg = Yii::t("default", "Payment Successful"); $this->details = $token; $this->updateData("{{merchant}}", array('payment_steps' => 3, 'membership_purchase_date' => date('c')), 'merchant_id', $merchant['merchant_id']); } else { $this->msg = Yii::t("default", "ERROR: Cannot insert records."); } } } else { $this->msg = Yii::t("default", "Please select credit card."); } } elseif ($this->data['payment_opt'] == "pyp") { if (isset($this->data['renew'])) { if ($new_info = Yii::app()->functions->getPackagesById($this->data['package_id'])) { $package_price = $new_info['price']; if ($new_info['promo_price'] > 0) { $package_price = $new_info['promo_price']; } $merchant['package_name'] = $new_info['title']; $merchant['package_id'] = $new_info['package_id']; } else { $package_price = 0; } } else { $package_price = $merchant['package_price']; } $paypal_con = Yii::app()->functions->getPaypalConnectionAdmin(); $params = ''; $x = 0; $params['L_NAME' . $x] = isset($merchant['package_name']) ? $merchant['package_name'] : Yii::t("default", "No description"); $params['L_NUMBER' . $x] = $merchant['package_id']; $params['L_DESC' . $x] = isset($merchant['package_name']) ? $merchant['package_name'] : Yii::t("default", "No description"); $params['L_AMT' . $x] = normalPrettyPrice($package_price); $params['L_QTY' . $x] = 1; $params['AMT'] = normalPrettyPrice($package_price); /** add card fee */ $card_fee = Yii::app()->functions->getOptionAdmin('admin_paypal_fee'); if (!empty($card_fee) && $card_fee >= 0.1) { $x++; $params['L_NAME' . $x] = t("Card Fee"); $params['L_DESC' . $x] = t("Card Fee"); $params['L_AMT' . $x] = normalPrettyPrice($card_fee); $params['L_QTY' . $x] = 1; $params['AMT'] = $params['AMT'] + $card_fee; } if (isset($this->data['renew'])) { $params['RETURNURL'] = "http://" . $_SERVER['HTTP_HOST'] . Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3a/internal-token/{$token}/renew/1/package_id/" . $this->data['package_id']; } else { $params['RETURNURL'] = "http://" . $_SERVER['HTTP_HOST'] . Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3a/internal-token/{$token}"; } $params['CANCELURL'] = "http://" . $_SERVER['HTTP_HOST'] . Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3/token/{$token}"; $params['NOSHIPPING'] = '1'; $params['LANDINGPAGE'] = 'Billing'; $params['SOLUTIONTYPE'] = 'Sole'; $params['CURRENCYCODE'] = adminCurrencyCode(); $paypal = new Paypal($paypal_con); $paypal->params = $params; $paypal->debug = false; if ($resp = $paypal->setExpressCheckout()) { $this->code = 1; $this->msg = Yii::t("default", "Please wait while we redirect you to paypal."); $this->details = $resp['url']; } else { $this->msg = $paypal->getError(); } } elseif ($this->data['payment_opt'] == "stp") { /*STRIPE*/ $this->code = 1; $this->msg = Yii::t("default", "Please wait while we redirect you to stripe"); $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}"; if (isset($this->data['renew'])) { $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/renew/1/package_id/" . $this->data['package_id']; } } elseif ($this->data['payment_opt'] == "mcd") { /*MERCADO*/ $this->code = 1; $this->msg = Yii::t("default", "Please wait while we redirect you to mercadopago"); $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/mcd"; if (isset($this->data['renew'])) { $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/mcd/renew/1/package_id/" . $this->data['package_id']; } } elseif ($this->data['payment_opt'] == "pyl") { /*PAYLINE*/ $this->code = 1; $this->msg = Yii::t("default", "Please wait while we redirect you to payline"); $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/pyl"; if (isset($this->data['renew'])) { $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/pyl/renew/1/package_id/" . $this->data['package_id']; } } elseif ($this->data['payment_opt'] == "ide") { /*PAYLINE*/ $this->code = 1; $this->msg = Yii::t("default", "Please wait while we redirect you to Sisow"); $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/ide"; if (isset($this->data['renew'])) { $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/ide/renew/1/package_id/" . $this->data['package_id']; } } elseif ($this->data['payment_opt'] == "payu") { /*PAYLINE*/ $this->code = 1; $this->msg = Yii::t("default", "Please wait while we redirect you to PayUMoney"); $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/payu"; if (isset($this->data['renew'])) { $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/payu/renew/1/package_id/" . $this->data['package_id']; } } elseif ($this->data['payment_opt'] == "obd") { // offline bank deposit if (Yii::app()->functions->offlineBankDeposit($merchant, $this->data)) { $this->code = 1; $this->msg = Yii::t("default", "Thank You. an email has been sent to your email."); $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/thankyou3/token/{$token}/"; } else { $this->msg = Yii::t("default", "Error: cannot send bank instructions email"); } } elseif ($this->data['payment_opt'] == "pys") { // paysera $this->code = 1; $this->msg = Yii::t("default", "Please wait while we redirect you to paysera"); $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/pys"; if (isset($this->data['renew'])) { $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/pys/renew/1/package_id/" . $this->data['package_id']; } } elseif ($this->data['payment_opt'] == "bcy") { // barclay $this->code = 1; $this->msg = Yii::t("default", "Please wait while we redirect you"); $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/" . $this->data['payment_opt']; if (isset($this->data['renew'])) { $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/bcy/renew/1/package_id/" . $this->data['package_id']; } } elseif ($this->data['payment_opt'] == "epy") { // EpayBg $this->code = 1; $this->msg = Yii::t("default", "Please wait while we redirect you"); $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/" . $this->data['payment_opt']; if (isset($this->data['renew'])) { $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/epy/renew/1/package_id/" . $this->data['package_id']; } } else { if (isset($this->data['payment_opt'])) { $this->code = 1; $this->msg = Yii::t("default", "Please wait while we redirect you"); $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/" . $this->data['payment_opt']; if (isset($this->data['renew'])) { $this->details = Yii::app()->request->baseUrl . "/store/merchantSignup/Do/step3b/token/{$token}/gateway/" . $this->data['payment_opt'] . "/renew/1/package_id/" . $this->data['package_id']; } } else { $this->msg = Yii::t("default", "No payment method has been selected."); } } } else { $this->msg = Yii::t("default", "Please select payment option"); } }
$card_fee = Yii::app()->functions->getOption('merchant_paypal_fee', $merchant_id); } if (!empty($card_fee) && $card_fee >= 0.1) { $x++; $params['L_NAME' . $x] = t("Card Fee"); $params['L_DESC' . $x] = t("Card Fee"); $params['L_AMT' . $x] = normalPrettyPrice($card_fee); $params['L_QTY' . $x] = 1; $params['AMT'] = $params['AMT'] + $card_fee; } /*dump($params); die();*/ $paypal = new Paypal($paypal_con); $paypal->params = $params; $paypal->debug = false; if ($resp = $paypal->setExpressCheckout()) { $insert['token'] = $resp['token']; $insert['order_id'] = isIsset($_GET['id']); $insert['date_created'] = date('c'); $insert['ip_address'] = $_SERVER['REMOTE_PORT']; $insert['paypal_request'] = json_encode($paypal->params); $insert['paypal_response'] = json_encode($resp['resp']); Yii::app()->functions->paypalSavedToken($insert); header('Location: ' . $resp['url']); } else { $error = $paypal->getError(); } } } else { $error = Yii::t("default", "Merchant Paypal Credential not yet been set."); }
function paypal_set_ec($order_no = '') { //pr($this->data); if (!empty($this->data)) { $user_id = $this->Session->read('Auth.User.id'); if ($this->data['payment_option'] == 'paypal') { $order_details = $this->OrderDetail->find('all', array('conditions' => array('order_no' => $order_no, 'is_paid' => '0'))); if (empty($order_details)) { $this->redirect('/'); } else { $total = 0; foreach ($order_details as $order_detail) { $total = $total + $order_detail['OrderDetail']['total_amount']; } //pr($order_details);exit; } /*$save_order = array(); $save_order['Payment']['user_id'] = $user_id; $save_order['Payment']['order_no'] = $order_no; $save_order['Payment']['amount'] = $total; $save_order['Payment']['method'] = '0'; $save_order['Payment']['shipping_amount'] = '0'; $save_order['Payment']['token'] = '0'; pr($this->data);exit;*/ $min_order_price = $this->Orderprices->find('first'); $ShippingPrice = $this->ShippingPrice->find('first'); if ($min_order_price['Orderprices']['price'] >= $total) { $total1 = $total + $ShippingPrice['ShippingPrice']['price']; $shipping = 'ship'; $shipping_amount = $ShippingPrice['ShippingPrice']['price']; } else { $total1 = $total; $shipping_amount = 0; } //build nvp string //use your own logic to get and set each variable $returnURL = Router::url(array('controller' => 'purchases', 'action' => 'paypal_return'), true); $cancelURL = Router::url(array('controller' => 'purchases', 'action' => 'paypal_cancel'), true); $nvpStr = "RETURNURL={$returnURL}&CANCELURL={$cancelURL}"; $nvpStr .= "&PAYMENTREQUEST_0_CURRENCYCODE=MYR"; $nvpStr .= "&PAYMENTREQUEST_0_AMT=" . number_format($total1, 2, '.', ''); $nvpStr .= "&PAYMENTREQUEST_0_ITEMAMT=" . number_format($total, 2, '.', ''); $nvpStr .= "&AYMENTREQUEST_0_PAYMENTACTION=sale"; $nvpStr .= "&L_PAYMENTREQUEST_0_ITEMCATEGORY0=Digital"; $nvpStr .= "&L_PAYMENTREQUEST_0_NAME0=Harimau LTD \n Order#" . $order_no; $nvpStr .= "&L_PAYMENTREQUEST_0_QTY0=1"; $nvpStr .= "&L_PAYMENTREQUEST_0_AMT0=" . number_format($total, 2, '.', ''); if (isset($shipping) and $shipping == 'ship') { $nvpStr .= "&PAYMENTREQUEST_0_SHIPPINGAMT=" . number_format($ShippingPrice['ShippingPrice']['price'], 2, '.', ''); } /*$nvpStr= "RETURNURL=$returnURL&CANCELURL=$cancelURL" ."&PAYMENTREQUEST_0_CURRENCYCODE=MYR" ."&PAYMENTREQUEST_0_AMT=15" ."&PAYMENTREQUEST_0_ITEMAMT=10" ."&AYMENTREQUEST_0_PAYMENTACTION=Sale" ."&L_PAYMENTREQUEST_0_ITEMCATEGORY0=Digital" ."&L_PAYMENTREQUEST_0_NAME0=test" ."&L_PAYMENTREQUEST_0_QTY0=1" ."&L_PAYMENTREQUEST_0_AMT0=10" ."&PAYMENTREQUEST_0_SHIPPINGAMT=5.00" ; */ //do paypal setECCheckout App::import('Model', 'Paypal'); $paypal = new Paypal(); if ($paypal->setExpressCheckout($nvpStr)) { $save_order = array(); $payment_order = $this->Payment->findByOrderNo($order_no); if (empty($payment_order)) { $save_order['Payment']['user_id'] = $user_id; $save_order['Payment']['order_no'] = $order_no; $save_order['Payment']['amount'] = number_format($total, 2, '.', ''); $save_order['Payment']['method'] = '0'; $save_order['Payment']['shipping_amount'] = $shipping_amount; $save_order['Payment']['token'] = $paypal->token; $this->Payment->save($save_order); } $result = $paypal->getPaypalUrl($paypal->token); } else { $this->log($paypal->errors); $result = false; } pr($paypal->errors); if (false !== $result) { $this->redirect($result); } else { $this->Session->setFlash(__('Error while connecting to PayPal, Please try again', true)); } exit; } else { if ($this->data['payment_option'] == 'molpay') { $order_details = $this->OrderDetail->find('all', array('conditions' => array('order_no' => $order_no, 'is_paid' => '0'))); $merchant = 2; $auth_key = 'QZRSggdz'; $total = 0; foreach ($order_details as $order_detail) { $total = $total + $order_detail['OrderDetail']['total_amount']; } $name = $order_details['0']['OrderDetail']['name']; $email = $order_details['0']['User']['username']; $mobile = ''; //substr($order_details['0']['OrderDetail']['phone'],1,20); $str = strtoupper(md5($merchant . '' . $auth_key . '' . $order_no . '' . $total . '' . $name . '' . $email . '' . $mobile)); $url = "http://payment.theviko.com/api/merchant/{$merchant}/{$str}/{$total}/{$order_no}/{$name}/{$email}/{$mobile}"; $this->redirect($url); } else { $this->Session->setFlash('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> Invalid order details<button data-dismiss="alert" class="close" type="button">×</button> </div>'); $this->redirect('/store/makepayment/' . $order_no); } } } }
/** * Starts the transaction and gets the token. Afterwards it's passed off to the final transaction method. * @param */ public function paypal_set_ec() { if ($this->request->is('post')) { //Abort if cancel button was pressed if (isset($this->request->data['cancel'])) { //Pass the user along to an action that will clear the account and the upload $this->redirect(array('controller' => 'users', 'action' => 'clear_user_data', $this->request->data['Upload']['user_id'])); break; } //Check to make sure that the total codes haven't already been added to this file $upload = $this->Upload->read(null, $this->request->data['Upload']['id']); if (intval($upload['Upload']['total_codes']) > 0) { if (intval($upload['Upload']['total_codes']) == count($upload['Code'])) { $this->Session->setFlash(__('Error! No more codes can be added to this upload. Please re-upload the file.', true), 'message_fail'); $this->render('paypal_back_to_add'); return; } } //do paypal setECCheckout App::import('Model', 'Paypal'); $paypal = new Paypal(); $codePrice = $this->Upload->Code->getPrice($this->request->data['Upload']['total_codes']); $itemName = $this->Upload->Code->getItemName($this->request->data['Upload']['total_codes']); $nvpStr = $paypal->buildNVPString($codePrice, $itemName, $this->request->data['Upload']['user_id'], $this->request->data['Upload']['id'], $this->request->data['Upload']['total_codes']); if ($paypal->setExpressCheckout($nvpStr)) { $result = $paypal->getPaypalUrl($paypal->token); } else { $this->log($paypal->errors); $result = false; } //debug($this->request); if (false !== $result) { //The result should look like the following //https://www.sandbox.paypal.com/incontext?token=EC-09N44269CG053064W $this->redirect($result); } else { $this->Session->setFlash(__('Error while connecting to PayPal, Please try again', true)); } } $payment_options = $this->Upload->Code->getPaymentOptions(); //Get the options array for the select list $this->set(compact('payment_options')); }