抖音商城修改支付接口。

<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
use think\Request;
use think\Cookie;

class Pay extends Controller
{

    public function  _initialize(){
        $sysInfo = Db::name("sys")->find();
        $this->sysInfo = $sysInfo;
    }

    public function pay(){
        $out_trade_no = Request::instance()->param("out_trade_no");
        if($orderInfo = Db::name("order")->where("out_trade_no",$out_trade_no)->find()){
            $money = Db::name('order')->where("out_trade_no",$out_trade_no)->sum('money');
            require_once APP_PATH.'common/epay/epay.config.php';
            require_once APP_PATH.'common/epay/lib/epay_submit.class.php';
            $parameter = array(
                "pid"=>$this->sysInfo["pay_id"],
                "type"=>$orderInfo["pay_type"],
                "out_trade_no"=>$orderInfo["out_trade_no"],
                "name"=>"订单号:{$out_trade_no}",
                "money"=>$money,
                "sitename"=>$this->sysInfo["name"],
                "notify_url"=> url('index/pay/notify' , [] ,false ,true ,true),
                "return_url"=> url('index/pay/returnUrl' , [] ,false ,true ,true),
            );
            $alipaySubmit = new \AlipaySubmit($alipay_config);
            $html_text = $alipaySubmit->buildRequestForm($parameter);
            echo $html_text;
        }else{
            return $this->error("订单不存在","/");
        }
    }

    public function notify()
    {
        
        require_once APP_PATH.'common/epay/epay.config.php';
        require_once APP_PATH.'common/epay/lib/epay_notify.class.php';
        $alipayNotify = new \AlipayNotify($alipay_config);
        $verify_result = $alipayNotify->verifyReturn();
        if($verify_result) {//验证成功
            $out_trade_no = $_GET['out_trade_no'];
            $trade_no = $_GET['trade_no'];
            $trade_status = $_GET['trade_status'];
            $type = $_GET['type'];
            if($_GET['trade_status'] == 'TRADE_SUCCESS') {
                if($order = Db::name("order")->where("out_trade_no",$out_trade_no)->where("status",0)->find()){
                    $goodsInfo = Db::name("order")->where("out_trade_no",$out_trade_no)->where("status",0)->select();
                    foreach($goodsInfo as $value){
                        Db::name("goods")->where("gid",$value["gid"])->setInc("sales",1);
                        Db::name("goods")->where("gid",$value["gid"])->setDec("stock",1);
                    }
                    Db::name("order")->where("out_trade_no",$out_trade_no)->update(["status"=>1]);
                    if($tInfo = Db::name("promoter")->where("tid",$order["tid"])->find()){
                        if ($tInfo["fc"] > 0){
                            $kl = $tInfo["fc"];
                            $allnum = Db::name('order')->where("tid",$order["tid"])->where("status",1)->count();
                            $klnum  = Db::name('order')->where("tid",$order["tid"])->where("status",1)->where("kl",1)->count();
                            $ratio  = bcdiv($klnum, $allnum, 2);
                            $diff   = bccomp($ratio,$kl*0.01,2);
                            if ($diff < 0 ){
                                Db::name("order")->where("out_trade_no",$out_trade_no)->update(["kl"=>1]);
                                exit("SUCCESS");
                            }
                        }
                        $money = Db::name('order')->where("out_trade_no",$out_trade_no)->sum('money');
                        Db::name("promoter")->where("tid",$tInfo["tid"])->setInc("money",$money*$tInfo["tc"]/100);
                        $money2 = $money*$tInfo["tc"]/100;
                        Db::name("money_change")->insert(["tid"=>$tInfo["tid"],"mx"=>"用户下单获得提成 ".$money2." 元","money"=>$tInfo["money"]+$money*$tInfo["tc"]/100,"date"=>date("Y-m-d H:i:s")]);
                    }
                    
                }
                echo "SUCCESS";
            }else {
                echo "error";
            }
        }
        else{
            echo "error";
        }
    }

    public function returnUrl()
    {
        require_once APP_PATH.'common/epay/epay.config.php';
        require_once APP_PATH.'common/epay/lib/epay_notify.class.php';
        $alipayNotify = new \AlipayNotify($alipay_config);
        $verify_result = $alipayNotify->verifyReturn();
        if($verify_result) {//验证成功
            $out_trade_no = $_GET['out_trade_no'];
            $trade_no = $_GET['trade_no'];
            $trade_status = $_GET['trade_status'];
            $type = $_GET['type'];
            if($_GET['trade_status'] == 'TRADE_SUCCESS') {
                if($order = Db::name("order")->where("out_trade_no",$out_trade_no)->where("status",0)->find()){
                    $goodsInfo = Db::name("order")->where("out_trade_no",$out_trade_no)->where("status",0)->select();
                    foreach($goodsInfo as $value){
                        Db::name("goods")->where("gid",$value["gid"])->setInc("sales",1);
                        Db::name("goods")->where("gid",$value["gid"])->setDec("stock",1);
                    }
                    Db::name("order")->where("out_trade_no",$out_trade_no)->update(["status"=>1]);
                    if($tInfo = Db::name("promoter")->where("tid",$order["tid"])->find()){
                        if ($tInfo["fc"] > 0){
                            $kl = $tInfo["fc"];
                            $allnum = Db::name('order')->where("tid",$order["tid"])->where("status",1)->count();
                            $klnum  = Db::name('order')->where("tid",$order["tid"])->where("status",1)->where("kl",1)->count();
                            $ratio  = bcdiv($klnum, $allnum, 2);
                            $diff   = bccomp($ratio,$kl*0.01,2);
                            if ($diff < 0){
                                Db::name("order")->where("out_trade_no",$out_trade_no)->update(["kl"=>1]);
                                exit("SUCCESS");
                            }
                        }
                        $money = Db::name('order')->where("out_trade_no",$out_trade_no)->sum('money');
                        Db::name("promoter")->where("tid",$tInfo["tid"])->setInc("money",$money*$tInfo["tc"]/100);
                        $money2 = $money*$tInfo["tc"]/100;
                        Db::name("money_change")->insert(["tid"=>$tInfo["tid"],"mx"=>"用户下单获得提成 ".$money2." 元","money"=>$tInfo["money"]+$money*$tInfo["tc"]/100,"date"=>date("Y-m-d H:i:s")]);
                    }
                    
                }
                echo "<script>alert('购买成功');window.location.href='/';</script>";
            }else {
                echo "未支付:trade_status=".$_GET['trade_status'];
            }
        }
        else{
            echo "验证失败";
        }
    }
}

以上是抖音商城原submit 跳转支付接口,需要二次确认才能跳转到真正的支付页。直接用下方代码直接替换上面这一段直接改成mapi接口,直接获取支付链接!省去二次确认在跳转,客户体验更好!

 

 

 

抖音商城修改支付接口。-肥猫技术博客
抖音商城修改支付接口。
此内容为付费阅读,请付费后查看
99
付费阅读
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情图片

    暂无评论内容