<?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接口,直接获取支付链接!省去二次确认在跳转,客户体验更好!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END




暂无评论内容