shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

alipay_cross.php (3843B)


      1 <?php
      2 class ControllerExtensionPaymentAlipayCross extends Controller {
      3 	var $alipay_gateway = 'https://mapi.alipay.com/gateway.do?';
      4 	var $alipay_gateway_test = 'https://openapi.alipaydev.com/gateway.do?';
      5 
      6 	public function index() {
      7 		$data['button_confirm'] = $this->language->get('button_confirm');
      8 
      9 		$this->load->model('checkout/order');
     10 
     11 		$order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
     12 
     13 		$out_trade_no = str_pad($order_info['order_id'], 7, "0",STR_PAD_LEFT); // Length must be greater than 7
     14 		$subject = trim($this->config->get('config_name'));
     15 		$currency = $this->config->get('payment_alipay_cross_currency');
     16 		$total_fee = trim($this->currency->format($order_info['total'], $currency, '', false));
     17 		$total_fee_cny = trim($this->currency->format($order_info['total'], 'CNY', '', false));
     18 		$body = trim($this->config->get('config_name'));
     19 
     20 		$alipay_config = array (
     21 			'partner'              => $this->config->get('payment_alipay_cross_app_id'),
     22 			'key'                  => $this->config->get('payment_alipay_cross_merchant_private_key'),
     23 			'notify_url'           => HTTPS_SERVER . "payment_callback/alipay_cross",
     24 			'return_url'           => $this->url->link('checkout/success'),
     25 			'sign_type'            => strtoupper('MD5'),
     26 			'input_charset'        => strtolower('utf-8'),
     27 			'cacert'               => getcwd().'/cacert.pem',
     28 			'transport'            => 'https',
     29 			'service'              => 'create_forex_trade'
     30 		);
     31 
     32 		$parameter = array(
     33 			"service"        => $alipay_config['service'],
     34 			"partner"        => $alipay_config['partner'],
     35 			"notify_url"     => $alipay_config['notify_url'],
     36 			"return_url"     => $alipay_config['return_url'],
     37 
     38 			"out_trade_no"   => $out_trade_no,
     39 			"subject"        => $subject,
     40 			"body"           => $body,
     41 			"currency"       => $currency,
     42 			"_input_charset" => trim(strtolower($alipay_config['input_charset']))
     43 		);
     44 		if ($this->session->data['currency'] == 'CNY') {
     45 			$parameter['rmb_fee'] = $total_fee_cny;
     46 		} else {
     47 			$parameter['total_fee'] = $total_fee;
     48 		}
     49 
     50 		$this->load->model('extension/payment/alipay_cross');
     51 		$data['params'] = $this->model_extension_payment_alipay_cross->buildRequestPara($alipay_config, $parameter);
     52 		$gateway = $this->config->get('payment_alipay_cross_test') == "sandbox" ? $this->alipay_gateway_test : $this->alipay_gateway;
     53 		$data['action'] = $gateway . "_input_charset=".trim($alipay_config['input_charset']);
     54 
     55 		return $this->load->view('extension/payment/alipay_cross', $data);
     56 	}
     57 
     58 	public function callback() {
     59 		$this->log->write('alipay cross payment notify:');
     60 		$alipay_config = array (
     61 			'partner'              => $this->config->get('payment_alipay_cross_app_id'),
     62 			'key'                  => $this->config->get('payment_alipay_cross_merchant_private_key'),
     63 			'sign_type'            => strtoupper('MD5'),
     64 			'input_charset'        => strtolower('utf-8'),
     65 			'cacert'               => getcwd().'/cacert.pem'
     66 		);
     67 		$this->load->model('extension/payment/alipay_cross');
     68 		$this->log->write('config: ' . var_export($alipay_config,true));
     69 		$verify_result = $this->model_extension_payment_alipay_cross->verifyNotify($alipay_config);
     70 
     71 		if($verify_result) {//check successed
     72 			$this->log->write('Alipay cross check successed');
     73 			$order_id = $_POST['out_trade_no'];
     74 			if($_POST['trade_status'] == 'TRADE_FINISHED') {
     75 				$this->load->model('checkout/order');
     76 				$this->model_checkout_order->addOrderHistory($order_id, $this->config->get('payment_alipay_cross_order_status_id'));
     77 			} else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
     78 			}
     79 			echo "success"; //Do not modified or deleted
     80 		} else {
     81 			$this->log->write('Alipay cross check failed');
     82 			//chedk failed
     83 			echo "fail";
     84 
     85 		}
     86 	}
     87 }