thinkphp 支付宝 手机网站支付 公钥模式

 config文件配置支付宝信息

 //支付宝 支付配置
    'ALI_CONFIG' => array(
        'gatewayUrl'      => 'https://openapi.alipay.com/gateway.do',//支付宝网关(固定)
        'appId'         => 'APPID即创建应用后生成',
        'rsaPrivateKey'     => '由开发者自己生成: 请填写开发者私钥去头去尾去回车,一行字符串',
        'alipayrsaPublicKey'  => '支付宝公钥,由支付宝生成: 请填写支付宝公钥,一行字符串',
        'notifyUrl'       => 'http://www.xxxx.com/api.php/CallBack/orderCallBackzfb', // 支付成功通知地址
        'returnUrl'       => 'http://www.xxxx.com/index.php/Index/index1', // 支付后跳转地址
    )

controller支付宝支付接口,前台用form表单提交 

    /**
     * 支付宝支付
     */
    public function orderAlipay(){
        if (IS_POST){
            Vendor('Alipay.aop.AopClient');
            Vendor('Alipay.aop.request.AlipayTradeWapPayRequest');
            $order_no = $_REQUEST['order_no'];//订单号
            $order = M("order")->where("order_no='".$order_no."'")->find();
            if($order['type'] == 1){
                $goods = M("fish")->where("id=".$order['goods_id'])->find();
            }else{
                $goods = M("product")->where("id=".$order['goods_id'])->find();
            }
            $out_trade_no = $order_no;
            $body = '支付信息';
            $subject = $goods['name'];//商品名
            $order_amount = $order['price'];//订单加个
            $aliConfig = C('ALI_CONFIG');
            $aop = new \AopClient();
            $aop->gatewayUrl = $aliConfig['gatewayUrl'];
            $aop->appId = $aliConfig['appId'];
            $aop->rsaPrivateKey = $aliConfig['rsaPrivateKey'];
            $aop->alipayrsaPublicKey=$aliConfig['alipayrsaPublicKey'];
            $aop->apiVersion = '1.0';
            $aop->postCharset='UTF-8';
            $aop->format='json';
            $aop->signType='RSA2';
            $request = new \AlipayTradeWapPayRequest ();
            $bizContent = "{" .
                "  \"body\":\"$body.\"," .
                "  \"subject\":\"$subject\"," .
                "  \"out_trade_no\":\"$out_trade_no\"," .
                "  \"timeout_express\":\"90m\"," .
                "  \"total_amount\":$order_amount," .
                "  \"product_code\":\"QUICK_WAP_WAY\"" .
                " }";
            $request->setBizContent($bizContent);
            $request->setNotifyUrl($aliConfig['notifyUrl']);
            $request->setReturnUrl($aliConfig['returnUrl']);
            $result = $aop->pageExecute ( $request);
            echo $result;
        }else{
            echo 'sorry,非法请求失败';
        }
    }

 回调接口

    /**
     * 支付宝回调
     */
    public function alipayCallBack(){
        Vendor('Alipay.wappay.service.AlipayTradeService');
        $arr=$_POST;
        $aliConfig = C('ALI_CONFIG');
        $alipaySevice = new \AlipayTradeService($aliConfig);
        $alipaySevice->writeLog(var_export($_POST,true));
        $result = $alipaySevice->check($arr);
        if($result) {//验证成功
            
            //请在这里加上商户的业务逻辑程序代


            //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——

            //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

            //商户订单号

            $out_trade_no = $_POST['out_trade_no'];

            //支付宝交易号

            $trade_no = $_POST['trade_no'];

            //交易状态
            $trade_status = $_POST['trade_status'];


            if($_POST['trade_status'] == 'TRADE_FINISHED') {

                //判断该笔订单是否在商户网站中已经做过处理
                //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                //请务必判断请求时的total_amount与通知时获取的total_fee为一致的
                //如果有做过处理,不执行商户的业务程序

                //注意:
                //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
            }
            else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
                //判断该笔订单是否在商户网站中已经做过处理
                //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                //请务必判断请求时的total_amount与通知时获取的total_fee为一致的
                //如果有做过处理,不执行商户的业务程序
                //注意:
                //付款完成后,支付宝系统发送该交易状态通知
            }
            //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

            echo "success";		//请不要修改或删除

        }else {
            //验证失败
            echo "fail";	//请不要修改或删除

        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章