示例#1
0
 /**
  * 在线支付
  * 先判断是否是在线充值,在线支付订单需要有订单号;
  * 查询出订单信息之后将必需信息提交到支付宝;
  * 
  * 在线充值需在先生成订单信息,然后再将必需信息提交到支付宝;
  * 
  */
 public function index()
 {
     if (IS_POST) {
         $member_id = session('home_member_id');
         /*获取充值用户ID*/
         if (!$member_id) {
             $this->error('请登录后在操作', U('/User/Login/index'));
         }
         /*接收参数*/
         $posts = I('post.');
         $order_id = $posts['order_id'];
         /*获取订单ID*/
         $paytype = $posts['pay_type'];
         /*获取支付方式*/
         if ($order_id) {
             /*判断是订单支付还是在线充值*/
             /* 如果有订单ID则是订单支付 */
             /*获取即将被支付的订单*/
             $info = get_info($this->table, array('id' => $order_id, 'status' => 1));
             if (!$info) {
                 $this->error('订单不存在或已经支付');
             }
             /*获取订单号*/
             $order_no = $info['order_num'];
             $title = $info['title'];
             // 				$title = '商品一';
             $total_price = $info['total_price'];
             $param = array('order_id' => $order_id, 'shop_id' => $info['shop_id'], 'member_id' => $info['member_id']);
         } else {
             /* 没有订单ID则是在线充值 */
             $total_price = $posts['recharge_money'];
             /*获取充值金额*/
             if (floatval($total_price) <= 0) {
                 $this->error('充值金额必须大于0');
             }
             $order_no = get_order_num(C('PLATFORM_ID'), $member_id);
             $title = '账户余额充值';
             $_POST = array('title' => $title, 'qty' => '1', 'shop_id' => 0, 'order_num' => $order_no, 'member_id' => $member_id, 'total_price' => $total_price, 'status' => '1', 'pay_type' => '2', 'description' => '账户余额充值', 'type' => '1');
             $res = update_data($this->table);
             if (is_numeric($res)) {
                 /*@liuqiao  购买商品后增加积分*/
                 $get_coin = get_coin_points($total_price, $member_id);
             }
             $param = array('order_id' => $res, 'shop_id' => 0, 'member_id' => $member_id);
             if (!is_numeric($res)) {
                 $this->error('订单生成失败');
             }
         }
         if ($paytype == 'alipay') {
             $callBack = "Pay/pay";
             //$total_price=0.01;//测试完后 删除
             //$param['test']='1';
             // echo $paytype,' -- ',$order_no,' -- ',$title,' -- ',$callBack,' -- ',$param;exit;
             $callBack = "Pay/pay";
             $vo = new \Think\Pay\PayVo();
             $vo->setType($paytype)->setBody("支付成功后请不要关闭窗口,等待自动跳转")->setFee($total_price)->setOrderNo($order_no)->setTitle($title)->setCallback($callBack)->setUrl(U('/Pay/success'))->setParam($param);
             //必要的一些信息,用来产生动态时调用相关数据
             $payment_conf = C('payment.' . $paytype);
             $pay = new \Think\Pay($paytype, $payment_conf);
             echo $pay->buildRequestForm($vo);
         }
     } else {
         $paytype = 'alipay';
         $callBack = "Pay/pay";
         $title = '异步通知支付测试';
         $total_price = 0.01;
         $param['test'] = '1';
         $order_no = get_order_num(1, 1);
         $callBack = "Pay/pay";
         $vo = new \Think\Pay\PayVo();
         $vo->setType($paytype)->setBody("支付成功后请不要关闭窗口,等待自动跳转")->setFee($total_price)->setOrderNo($order_no)->setTitle($title)->setCallback($callBack)->setUrl(U('/Pay/success'))->setParam($param);
         //必要的一些信息,用来产生动态时调用相关数据
         $payment_conf = C('payment.' . $paytype);
         $pay = new \Think\Pay($paytype, $payment_conf);
         echo $pay->buildRequestForm($vo);
     }
 }