Notify.php 3.0 KB
<?php
namespace app\mobile\controller;

use think\Db;
use app\common\controller\Api;
use app\mobile\model\CourseOrder;
use app\mobile\model\SecretOrder;
use app\mobile\model\ScoreOrder;

/**
 * 支付异步接口
 * @ApiInternal
 */
class Notify extends Api
{
	protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    public function _initialize()
    {
        parent::_initialize();
    }

    /**
     * 课程
     */
    public function notifyCourse()
    {
        $paytype = $this->request->param('paytype');
        $pay = \addons\epay\library\Service::checkNotify($paytype);
        if (!$pay) {
            echo '签名错误';
            return;
        }
        $data = $pay->verify();
        try {
            $payamount = $paytype == 'alipay' ? $data['total_amount'] : $data['total_fee'] / 100;
            $out_trade_no = $data['out_trade_no'];

            // 处理订单逻辑
            $order = CourseOrder::get(['order_sn'=>$out_trade_no,'pay_price'=>$payamount,'pay_type'=>$paytype]);
            if($order && $order['pay_status'] != '1'){
                $order->save(['pay_status'=>'1','pay_time'=>time()]);
            }
        } catch (Exception $e) {
        }
        echo $pay->success();
    }

    /**
     * 密卷
     */
    public function notifySecret()
    {
        $paytype = $this->request->param('paytype');
        $pay = \addons\epay\library\Service::checkNotify($paytype);
        if (!$pay) {
            echo '签名错误';
            return;
        }
        $data = $pay->verify();
        try {
            $payamount = $paytype == 'alipay' ? $data['total_amount'] : $data['total_fee'] / 100;
            $out_trade_no = $data['out_trade_no'];

            // 处理订单逻辑
            $order = SecretOrder::get(['order_sn'=>$out_trade_no,'pay_price'=>$payamount,'pay_type'=>$paytype]);
            if($order && $order['pay_status'] != '1'){
                $order->save(['pay_status'=>'1','pay_time'=>time()]);
            }
        } catch (Exception $e) {
        }
        echo $pay->success();
    }

    /**
     * 积分
     */
    public function notifyScore()
    {
        $paytype = $this->request->param('paytype');
        $pay = \addons\epay\library\Service::checkNotify($paytype);
        if (!$pay) {
            echo '签名错误';
            return;
        }
        $data = $pay->verify();
        try {
            $payamount = $paytype == 'alipay' ? $data['total_amount'] : $data['total_fee'] / 100;
            $out_trade_no = $data['out_trade_no'];

            // 处理订单逻辑
            $order = ScoreOrder::get(['order_sn'=>$out_trade_no,'pay_price'=>$payamount,'pay_type'=>$paytype]);
            if($order && $order['pay_status'] != '1'){
                $order->save(['pay_status'=>'1','pay_time'=>time()]);
                // 增加积分
                \app\common\model\User::score($order['score'],$order['user_id'],'充值积分');
            }
        } catch (Exception $e) {
        }
        echo $pay->success();
    }
}