第一次更新,完成了初版调整
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | 企油通 · 回调接收
|
||||
// +----------------------------------------------------------------------
|
||||
// | 入口:public/qytconsume.php -> /qytNotify/consume
|
||||
// | 对应企油通 7.10「运单加油明细推送(异步)」,我方须返回 {"code":"100","msg":"Success"}
|
||||
// +----------------------------------------------------------------------
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use app\common\crypto\Qyt as QytCrypto;
|
||||
use app\common\service\QueueService;
|
||||
use app\common\service\QytOil;
|
||||
use think\facade\Request;
|
||||
|
||||
class QytNotify extends Controller
|
||||
{
|
||||
/**
|
||||
* 7.10 运单加油明细推送
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function consume()
|
||||
{
|
||||
$raw = Request::instance()->getContent();
|
||||
(new QytOil())->saveLog('7.10 消费回调原文:' . $raw);
|
||||
|
||||
$body = json_decode($raw, true);
|
||||
|
||||
// 兼容:外层信封 {appId,timestamp,sign,params(JSON字符串)} 或 直接推 body
|
||||
$params = $body;
|
||||
if (is_array($body) && isset($body['params'])) {
|
||||
$params = is_string($body['params']) ? json_decode($body['params'], true) : $body['params'];
|
||||
}
|
||||
|
||||
// TODO 验签(规则待对接人确认)
|
||||
// if (is_array($body) && !empty($body['sign'])) {
|
||||
// $crypto = new QytCrypto();
|
||||
// if (!$crypto->verify($params, $body['sign'])) {
|
||||
// return json(['code' => '99', 'msg' => '验签失败']);
|
||||
// }
|
||||
// }
|
||||
|
||||
// 无明细也回 100,避免企油通重复推送
|
||||
if (is_array($params) && !empty($params['order_list'])) {
|
||||
(new QueueService())->push('callback_queue', json_encode([
|
||||
'header' => ['method' => 'qyt_consume'],
|
||||
'res' => $params,
|
||||
], 320));
|
||||
} else {
|
||||
(new QytOil())->saveLog('7.10 消费回调无 order_list,已忽略');
|
||||
}
|
||||
|
||||
return json(['code' => '100', 'msg' => 'Success']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user