Files
2026-09-01 22:15:50 +08:00

99 lines
3.7 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// +----------------------------------------------------------------------
// | 管理系统
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2023 https://www.zizai.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
// +----------------------------------------------------------------------
// | Author: 自在科技
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\api\controller\syb;
use app\api\controller\Controller;
use app\api\model\Order as OrderModel;
use app\api\model\Order\Record as RecordModel;
use app\common\crypto\Crypto;
use think\facade\Request;
/**
* 加油e卡通通知接口
* Class SybUser
* @package app\api\controller
*/
class SybNotify extends Controller
{
/** 通知接口
* @return array|mixed|string[]
*/
public function notify()
{
// 获取所有 HTTP 请求头
$headers = Request::header();
// 获取 JSON 格式的请求体
$jsonData = Request::instance()->getContent();
$data = json_decode($jsonData, true);
$crypto = new Crypto();
$res = $crypto->processResponse(['header'=>$headers,'encryptData'=>$data]);
// 检查 JSON 解码是否成功
if (!$res) {
return json(['code' => '03', 'message' => '报文解密异常']);
}
// 此处可以根据业务逻辑处理接收到的数据
switch ($headers['method']) {
case "syb.notify.pay.result":
// 二维码交易结果通知
$where = array(
['oilCardNo', '=', $res['oilCardNo']],
['amount', '=', $res['amount']],
);
$field['qrCode'] = $res['qrCode'];
if($res['status'] == 'success'){
$field['order_status'] = 30;
$field['use_status'] = 1;
}else{
$field['use_text'] = $res['errMessage'];
}
OrderModel::orderUpdate($where, $field);
break;
case "syb.notify.oilCard.change":
// 油卡变动通知
$order = OrderModel::detail(['oilCardNo'=>$res['oilCardNo'], 'amount'=>$res['amount']]);
$res['order_id'] = $order['order_id'];
$res['user_id'] = $order['user_id'];
$RecordModel = new RecordModel();
$RecordModel->add($res);
break;
case "syb.notify.oilCard.share":
// 分油结果通知
$where = array(
['oilCardNo', '=', $res['oilCardNo']],
['amount', '=', $res['amount']],
);
$field = ['oil_time' => time()];
if($res['status'] == 'success'){
$field['order_status'] = 20;
$field['oil_status'] = 1;
}else{
$field['order_status'] = 60;
$field['oil_status'] = 0;
$field['oil_text'] = $res['msg'];
}
OrderModel::orderUpdate($where, $field);
break;
default:
return json(['code' => '03', 'message' => '报文解密异常']);
}
// 记录日志等
$this->saveLog($headers['method'].":".json_encode($res,320));
// 返回成功的 JSON 响应
return json(['code' => '00', 'message' => '请求成功']);
}
}