美文网首页
京东jcq消息列队接口获取订单信息和改变订单状态

京东jcq消息列队接口获取订单信息和改变订单状态

作者: 吴涛涛 | 来源:发表于2020-11-10 10:06 被阅读0次

直接上代码,对应的值按照自己jcq消息列队上面填就OK。

<?php
/**
 * Created by PhpStorm.
 * User: 吴涛
 * Date: 2020/10/10
 * Time: 10:28
 */
namespace app\jdzeus\controller;
use app\jdzeus\lib\functions;

class JdMQ
{
    private $url;
    private $accessKey;
    private $topic;//状态改变
    private $consumerGroupId;
    private $secretKey;
    private $topic_new;//新订单
    public function __construct()
    {
        $this->url = "https://jcq-shared-004-httpsrv-pub-nlb-FI.jvessel-open-hb.jdcloud.com:443";
        $this->accessKey = '';
        $this->secretKey = '';
        $this->topic = 'open_message_medicine_ordchange_64FC3A8881B204A7EAAD320476343ED9';//状态改变
        $this->consumerGroupId = 'open_message_622491002583';
        $this->topic_new = 'open_message_medicine_ordcreate_64FC3A8881B204A7EAAD320476343ED9';//新订单

    }

    //获取消息
    public function ct_order_create()
    {
        $size = 30;//每次拉取条数
        $url = $this->url . "/v2/messages?topic=" . $this->topic_new . "&consumerGroupId=" . $this->consumerGroupId . "&size=" . $size;
        $dateTime = gmdate("Y-m-d\TH:i:s\Z");
        $headers[] = 'accessKey: ' . $this->accessKey;
        $headers[] = 'dateTime: ' . $dateTime;
        $data['accessKey'] = $this->accessKey;
        $data['dateTime'] = $dateTime;
        $data['topic'] = $this->topic_new;
        $data['consumerGroupId'] = $this->consumerGroupId;
        $data['size'] = $size;
        $headers[] = 'signature: ' . $this->getSignature($data);
        $get = $this->postData($url, $headers);
        $get = json_decode($get, true);
        //获取消息
        $messages = $get['result']['messages'];
        $ackIndex = $get['result']['ackIndex'];

        if (is_array($messages)) {
            foreach ($messages  as $k=>$v) {
                $body = $v['messageBody'];
                $businessinfo = json_decode($body, true);
                $order_id = $businessinfo['businessinfo']['orderId'];
                //调用获取单条订单信息接口
                //jingdong.medicine.ds.order.getOrder ( 获取单个店送订单 )
                $fx = new functions();
                $newOrderData = $fx->getOneOrders($order_id);
                $newOrderData = json_decode(json_encode($newOrderData),true);
                if (is_array($newOrderData) &&
                    $newOrderData['jingdong_medicine_ds_order_getOrder_responce']['ApiResult']['msg'] == "success" &&
                    !empty($newOrderData['jingdong_medicine_ds_order_getOrder_responce']['ApiResult']['data'])) {
                    //返回请求到的数据
                    $orderDataArray = $newOrderData['jingdong_medicine_ds_order_getOrder_responce']
                    ['ApiResult']['data'];     
                }
            }
        }
    }

    //获取状态改变消息
    public function ct_order_change()
    {
        $size = 30;//每次拉取条数
        $ack = 'true';
        //$url = $this->url . "/v2/messages?topic=" . $this->topic . "&consumerGroupId=" . $this->consumerGroupId . "&size=" . $size . "&ack=" . $ack;
        $url = $this->url . "/v2/messages?topic=" . $this->topic . "&consumerGroupId=" . $this->consumerGroupId . "&size=" . $size;
        $dateTime = gmdate("Y-m-d\TH:i:s\Z");
        $headers[] = 'accessKey: ' . $this->accessKey;
        $headers[] = 'dateTime: ' . $dateTime;
        $data['accessKey'] = $this->accessKey;
        $data['dateTime'] = $dateTime;
        $data['topic'] = $this->topic;
        $data['consumerGroupId'] = $this->consumerGroupId;
        $data['size'] = $size;
        //$data['ack'] = $ack;
        $headers[] = 'signature: ' . $this->getSignature($data);
        $get = $this->postData($url, $headers);
        $get = json_decode($get, true);
        $ackIndex = $get['result']['ackIndex'];
        //获取消息
        $messages = $get['result']['messages'];
        if (is_array($messages)) {
            foreach ($messages  as $k=>$v) {
                $body = $v['messageBody'];
                $businessinfo = json_decode($body, true);
                $order_id = $businessinfo['businessinfo']['orderId'];
                //调用获取单条订单信息接口
                //jingdong.medicine.ds.order.getOrder ( 获取单个店送订单 )
                $fx = new functions();
                $newOrderData = $fx->getOneOrders($order_id);
                $newOrderData = json_decode(json_encode($newOrderData),true);
                if (is_array($newOrderData) &&
                    $newOrderData['jingdong_medicine_ds_order_getOrder_responce']['ApiResult']['msg'] == "success" &&
                    !empty($newOrderData['jingdong_medicine_ds_order_getOrder_responce']['ApiResult']['data'])) {
                    //获取请求的数据
                    $orderDataArray = $newOrderData['jingdong_medicine_ds_order_getOrder_responce']
                    ['ApiResult']['data'];
                }
            }
        }
    }

相关文章

网友评论

      本文标题:京东jcq消息列队接口获取订单信息和改变订单状态

      本文链接:https://www.haomeiwen.com/subject/zcbdbktx.html