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 }