/**
  * 支付寶支付跳轉方法
  */
 public function toPay()
 {
     $this->isLogin();
     vendor('Alipay.Corefunction');
     vendor('Alipay.Md5function');
     vendor('Alipay.AlipayNotify');
     vendor('Alipay.AlipaySubmit');
     $m = D('Mobile/Payments');
     $orderIds = I("orderId");
     $data = $m->checkOrderPay($orderIds);
     if ($data["status"] == -1) {
         echo "您的订单已支付,不要重复支付!";
         return;
     } else {
         if ($data["status"] == -2) {
             echo "您订单中商品库存不足,不能支付!";
             return;
         }
     }
     $payment = $m->getPayment("Alipay");
     $alipay_config = array('partner' => $payment['parterID'], 'key' => $payment['parterKey'], 'sign_type' => strtoupper('MD5'), 'input_charset' => strtolower('utf-8'), 'transport' => 'http');
     $format = "xml";
     $v = "2.0";
     $req_id = date('Ymdhis');
     $notify_url = WSTRootDomain() . U('Mobile/Payments/notifyurl');
     $call_back_url = WSTRootDomain() . U('Mobile/Orders/index');
     $subject = '支付购买商品费用';
     $merchant_url = "";
     $seller_email = $payment['payAccount'];
     $out_trade_no = $orderIds;
     $total_fee = $m->getOrdersNeedPay($orderIds);
     $req_data = '<direct_trade_create_req><notify_url>' . $notify_url . '</notify_url><call_back_url>' . $call_back_url . '</call_back_url><seller_account_name>' . $seller_email . '</seller_account_name><out_trade_no>' . $out_trade_no . '</out_trade_no><subject>' . $subject . '</subject><total_fee>' . $total_fee . '</total_fee><merchant_url>' . $merchant_url . '</merchant_url></direct_trade_create_req>';
     //构造要请求的参数数组,无需改动
     $para_token = array("service" => "alipay.wap.trade.create.direct", "partner" => trim($alipay_config['partner']), "sec_id" => trim($alipay_config['sign_type']), "format" => $format, "v" => $v, "req_id" => $req_id, "req_data" => $req_data, "_input_charset" => trim(strtolower($alipay_config['input_charset'])));
     //建立请求
     $alipaySubmit = new \Alipay\AlipaySubmit($alipay_config);
     $html_text = $alipaySubmit->buildRequestHttp($para_token);
     //URLDECODE返回的信息
     $html_text = urldecode($html_text);
     //解析远程模拟提交后返回的信息
     $para_html_text = $alipaySubmit->parseResponse($html_text);
     //获取request_token
     $request_token = $para_html_text['request_token'];
     //**************************根据授权码token调用交易接口alipay.wap.auth.authAndExecute**************************
     //业务详细
     $req_data = '<auth_and_execute_req><request_token>' . $request_token . '</request_token></auth_and_execute_req>';
     //必填
     //构造要请求的参数数组,无需改动
     $parameter = array("service" => "alipay.wap.auth.authAndExecute", "partner" => trim($alipay_config['partner']), "sec_id" => trim($alipay_config['sign_type']), "format" => $format, "v" => $v, "req_id" => $req_id, "req_data" => $req_data, "_input_charset" => trim(strtolower($alipay_config['input_charset'])));
     //建立请求
     $alipaySubmit = new \Alipay\AlipaySubmit($alipay_config);
     $html_text = $alipaySubmit->buildRequestForm($parameter, 'get', '');
     echo $html_text;
 }
Exemplo n.º 2
0
 /**
  * 生成支付代码
  * @param   array   $order      订单信息
  * @param   array   $payment    支付方式信息
  */
 function getAlipayUrl()
 {
     //$morders = D('Home/Orders');
     $payment = self::getPayment();
     $real_method = 2;
     switch ($real_method) {
         case '0':
             $service = 'trade_create_by_buyer';
             break;
         case '1':
             $service = 'create_partner_trade_by_buyer';
             break;
         case '2':
             $service = 'create_direct_pay_by_user';
             break;
     }
     $extend_param = '';
     $orderIds = I("orderIds");
     $orderAmount = I("needPay");
     $USER = session('WST_USER');
     $userId = (int) $USER['userId'];
     $obj["userId"] = $userId;
     $obj["orderIds"] = $orderIds;
     $orders = self::getPayOrders($obj);
     $orderNoList = array();
     foreach ($orders as $key => $order) {
         $orderNoList[] = $order["orderNo"];
     }
     $return_url = WSTRootDomain() . U('Payment/response');
     $notify_url = WSTRootDomain() . U('Payment/notify');
     $orderNos = implode(",", $orderNoList);
     $parameter = array('extra_common_param' => $userId, 'service' => $service, 'partner' => $payment['parterID'], '_input_charset' => "utf-8", 'notify_url' => $notify_url, 'return_url' => $return_url, 'subject' => '支付购买商品费' . $orderAmount . '元', 'body' => '支付订单[' . $orderNos . ']费用', 'out_trade_no' => $orderIds, 'total_fee' => $orderAmount, 'quantity' => 1, 'payment_type' => 1, 'logistics_type' => 'EXPRESS', 'logistics_fee' => 0, 'logistics_payment' => 'BUYER_PAY_AFTER_RECEIVE', 'seller_email' => $payment['payAccount']);
     ksort($parameter);
     reset($parameter);
     $param = '';
     $sign = '';
     foreach ($parameter as $key => $val) {
         $param .= "{$key}=" . urlencode($val) . "&";
         $sign .= "{$key}={$val}&";
     }
     $param = substr($param, 0, -1);
     $sign = substr($sign, 0, -1) . $payment['parterKey'];
     return 'https://mapi.alipay.com/gateway.do?' . $param . '&sign=' . md5($sign) . '&sign_type=MD5';
 }
 /**
  * 验证授权码
  */
 public function verifyLicense()
 {
     $this->isAjaxLogin();
     $license = I('license');
     $content = file_get_contents(C('WST_WEB') . '/index.php?m=Api&c=License&a=verifyLicense&host=' . WSTRootDomain() . '&license=' . $license);
     $json = json_decode($content, true);
     $rs = array('status' => 1);
     if ($json['status'] == 1) {
         $rs = D('Admin/Index')->saveLicense();
     }
     $rs['license'] = $json;
     $this->ajaxReturn($rs);
 }
Exemplo n.º 4
0
 /**
  * 生成支付代码
  * @param   array   $order      订单信息
  * @param   array   $payment    支付方式信息
  */
 public function alipay($data)
 {
     //$morders = D('Home/Orders');
     $payment = self::getPayment('alipay');
     $real_method = 2;
     switch ($real_method) {
         case '0':
             $service = 'trade_create_by_buyer';
             break;
         case '1':
             $service = 'create_partner_trade_by_buyer';
             break;
         case '2':
             $service = 'create_direct_pay_by_user';
             break;
     }
     $return_url = WSTRootDomain() . U('Payments/response');
     $notify_url = WSTRootDomain() . U('Payments/notify');
     $USER = session('WST_USER');
     $userId = (int) $USER['userId'];
     $obj["userId"] = $userId;
     $parameter = array('extra_common_param' => $userId, 'service' => $service, 'partner' => $payment['parterID'], '_input_charset' => "utf-8", 'notify_url' => $notify_url, 'return_url' => $return_url, 'subject' => '需要支付:' . $data['amount'] . '元', 'body' => '支付订单[' . $data['orderId'] . ']费用', 'out_trade_no' => $data['orderId'], 'total_fee' => $data['amount'], 'quantity' => 1, 'payment_type' => 2, 'logistics_type' => 'EXPRESS', 'logistics_fee' => 0, 'logistics_payment' => 'BUYER_PAY_AFTER_RECEIVE', 'seller_email' => $payment['payAccount']);
     ksort($parameter);
     reset($parameter);
     $param = '';
     $sign = '';
     foreach ($parameter as $key => $val) {
         $param .= "{$key}=" . urlencode($val) . "&";
         $sign .= "{$key}={$val}&";
     }
     $param = substr($param, 0, -1);
     $sign = substr($sign, 0, -1) . $payment['parterKey'];
     $url = 'https://mapi.alipay.com/gateway.do?' . $param . '&sign=' . md5($sign) . '&sign_type=MD5';
     return $url;
 }
Exemplo n.º 5
0
 /**
  * 验证授权码
  */
 public function verifyLicense()
 {
     $this->checkPrivelege('scxx_00');
     $license = I('license');
     $content = file_get_contents('http://www.wstmall.com/index.php?m=Api&c=License&a=verifyLicense&host=' . WSTRootDomain() . '&license=' . $license);
     $json = json_decode($content, true);
     $rs = array('status' => 1);
     if ($json['status'] == 1) {
         $rs = D('Admin/Index')->saveLicense();
     }
     $rs['license'] = $json;
     $this->ajaxReturn($rs);
 }