美文网首页PHP学习PHP开发PHP学习
支付那些小事儿--支付宝支付

支付那些小事儿--支付宝支付

作者: 码谜妈咪 | 来源:发表于2017-04-22 14:03 被阅读219次

    继上一篇《支付那些小事儿--微信支付》,我这次说一说支付宝支付,希望可以帮助小伙伴少走弯路,少入坑。话不多说,还是直接上代码吧。

    注:
    1.支付文件是从支付宝上直接拿过来的
    2.依旧是TP框架
    
    【1】将文件放入第三方类库:
    
    (1)
      * 类名:AlipayConfig.php 
    
      * 功能:支付宝配置文件
    
      * 修改配置:
      
      // MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
            $alipay_config['key'] = '';//(**从支付宝中获取**)
    
      // 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
            $alipay_config['notify_url'] = 'http://' . $_SERVER['SERVER_NAME'] . '/index.php/Wine/PayCallback/alipay_notify';
    
      // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
            $alipay_config['return_url'] = 'http://' . $_SERVER['SERVER_NAME'] . '/index.php?g=Wine&m=Orders&a=alipay_return';
    
    (2)
     * 类名:AlipayNotify.php
    
     * 功能:支付宝通知处理类
    
     * 详细:处理支付宝各接口通知返回
    
    (3)
     * 类名:Alipay.php
    
     * 功能:手机网站支付接口接入页
    
     * 详细:处理支付宝各接口通知返回
    class Alipay {
    
        public function submit($params) {
    //建立请求
            $alipaySubmit = new AlipaySubmit($alipay_config);
            $html_text = $alipaySubmit->buildRequestForm($parameter, "get", "确认");
            return '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html>
            <head>
             <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
             <title>支付宝支付</title>
            </head>' . $html_text . '
            </body>
            </html>';
        }
    }
    (4)
     * 类名:notify_url.php
    
     * 功能:支付宝服务器异步通知页面
    
     * 详细:处理支付宝各接口通知返回
    
    
    Paste_Image.png
    【2】支付业务逻辑
    (1)GoodsController.class.php 下提交订单 ajax_sure() 
    
    public function ajax_sure() {
    .
    .
    .
      $data['order_code'] = $order_code;
      $addr[0] = $_POST['prov'];
      $addr[1] = $_POST['city'];
      $addr[2] = $_POST['dist'];
      $addr[3] = $_POST['area'];
      $data['area'] = serialize($addr);
      $data['create_time'] = time();
      $data['update_time'] = time();
      $data['ip'] = $_SERVER['REMOTE_ADDR'];
       if ($data['pay_id'] == 1) {
              $data['order_status'] = 11; //已付款
              $data['status'] = '1';
       } else {
              $data['order_status'] = 10; //待付款
               $data['status'] = '1';
      }
       //函数调用 返回信息
      $this->Callback_url($data);
    
    }
    
    /**
         * 回调信息函数
         * @param type $data
         */
        public function Callback_url($data) {
            $o_model = D("Wine/Orders");
            $add_id = $o_model->add($data);
            if (!$add_id) {
                $this->error("订单提交失败,请稍后重试!");
            }
    .
    .
    .
            if ('3' == $data['pay_id']) {
                //支付宝支付
                $msg = '正在为您跳转到支付宝支付页面,请等待……';
                $url = U("Pay/doalipay", array('o_id' => $add_id));
            }
            $this->success("订单提交成功!" . $msg, $url);
        }
    
    (2)PayController.class.php 下
        /**
         * 支付页面
         */
        public function doalipay() {
    
            $o_id = I("get.o_id", 0, "intval");
            $info = $this->model->findone(array("a.id" => $o_id, 'a.status' => array('neq', '-1')));
            //10代表订单待支付的状态
            if ($info['order_status'] != 10) {
                $this->error("订单已支付!");
            }
    
            vendor("Payment.Alipay.Alipay");
    
            $alipay = new \Alipay();
            $param['order_sn'] = $info['order_code'];
    //        $param['order_amount'] = $info['pay_price'];
            $param['order_amount'] = 0.01;//测试支付时,将支付价格设为0.01元,土豪朋友忽略此提示O(∩_∩)O~
            $param['order_subject'] = '支付宝支付测试';
            $param['return_url'] = 'http://' . $_SERVER['SERVER_NAME'] . '/index.php/Wine/Orders/pay_ok/o_id/'.$o_id;
            $return = $alipay->submit($param);
            echo $return;
            exit;
        }
    

    就是这么简单几步,到此,支付宝支付的流程就已经结束了。

    相关文章

      网友评论

        本文标题:支付那些小事儿--支付宝支付

        本文链接:https://www.haomeiwen.com/subject/pzhszttx.html