/** * 在线支付 * 先判断是否是在线充值,在线支付订单需要有订单号; * 查询出订单信息之后将必需信息提交到支付宝; * * 在线充值需在先生成订单信息,然后再将必需信息提交到支付宝; * */ 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); } }