Shopbase全套开发 ,含产品上传、订单检索、自动履行【PHP接口】开发

本文档详细介绍了如何使用 Shopbase API 进行订单管理,包括获取订单列表、更新订单、获取订单计数以及创建和管理订单履行。通过示例代码展示了如何进行 HTTP 请求,实现如检索订单、更新订单状态、跟踪配送等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2021/9/14
 * Time: 9:58
 */

namespace app\shopbase;


use app\common\ApiResponse;

class Shopbase
{


    /**
     * 检索订单列表
     * @param $shop
     * @param $page
     * @param $username
     * @param $password
     * @return array|string
     * https://api-doc.shopbase.com/#tag/Order
     */
    public function getOrderList($shop, $page, $username, $password)
    {

        $url = 'https://' . $username . ':' . $password . '@' . $shop . '.onshopbase.com/admin/orders.json';
        $request_headers = ['Content-Type:application/json'];
        $data = [
            'financial_status' => 'any',
            'limit' => 20,
            'page' => $page
//            'order_status' => 'open'
        ];
        $result = $this->shopbaseHandle($url, $method = 'GET', $data, $request_headers);
        return $result;


    }

    /**
     * 更新订单
     * @param $shop
     * @param $username
     * @param $password
     * @param $order_id
     * @return array|string
     */
    public function putUpdateOrder($shop, $username, $password, $order_id)
    {

        $url = 'https://' . $username . ':' . $password . '@' . $shop . '.onshopbase.com/admin/orders/' . $order_id . '/adjust.json';
        $request_headers = ['Content-Type:application/json'];
        $data = [
            'is_send_email' => true,
            'line_items' => [
                [
                    "id" => 14596069,
                    "is_custom" => true,
                    "name" => "APPLE",
                    "price" => 51.64,
//                    "properties" => "string",
                    "quantity" => 4,
                    "require_shipping" => true,
//                    "restock" => true,
//                    "variant_id" => 0
                ]
            ],
            'reason' => 'update quantity'
        ];
        $result = $this->shopbaseHandle($url, $method = 'PUT', $data, $request_headers);
        return $result;

    }


    /**
     * 检索订单计数
     * @param $shop
     * @param $username
     * @param $password
     * @return array|string
     */
    public function getOrderCount($shop, $username, $password)
    {
        $url = 'https://' . $username . ':' . $password . '@' . $shop . '.onshopbase.com/admin/orders/count.json';
        $request_headers = ['Content-Type:application/json'];
        $data = [
            'financial_status' => 'paid,any',
//            'order_status' => 'open'

        ];
        $result = $this->shopbaseHandle($url, $method = 'GET', $data, $request_headers);
        return $result;
    }


    /**
     * 创建履行
     * @param $shop
     * @param $username
     * @param $password
     * @param $order_id
     * @param $tracking_number
     * @param $tracking_company
     * @param $fulfillment_id
     * @return array|string
     */
    public function createFulfillments($shop, $username, $password, $order_id, $tracking_number, $tracking_company, $fulfillment_id)
    {
        $result = [];
        if ($fulfillment_id != 1) {
            if ($fulfillment_id) {
                $this->cancelFulfillments($shop, $username, $password, $fulfillment_id, $order_id);
            }


            $url = 'https://' . $username . ':' . $password . '@' . $shop . '.onshopbase.com/admin/orders/' . $order_id .
                '/fulfillments.json';
            $request_headers = ['Content-Type:application/json'];

            $data = [
                'fulfillment' => [
                    "notify_customer" => true,
                    "service" => "shopbase",
                    "status" => true,
                    "tracking_company" => $tracking_company,
                    "tracking_number" => $tracking_number,
                    "tracking_url" => "https://t.17track.net/en#nums=" . $tracking_number
                ]
            ];

            $result = $this->shopbaseHandle($url, 'POST', $data, $request_headers);
            return $result;
        }
        return $result;

    }


    /**
     * 取消履行
     * @param $shop
     * @param $username
     * @param $password
     * @param $fulfillment_id
     * @param $order_id
     * @return array|string
     */
    public function cancelFulfillments($shop, $username, $password, $fulfillment_id, $order_id)
    {
        $url = 'https://' . $username . ':' . $password . '@' . $shop . '.onshopbase.com/admin/orders/' . $order_id .
            '/fulfillments/' . $fulfillment_id . '/cancel.json';
        $request_headers = ['Content-Type:application/json'];
        $data = [];

        $result = $this->shopbaseHandle($url, 'POST', $data, $request_headers);
        return $result;
    }


    /**
     * 更新履行
     * @param $shop
     * @param $username
     * @param $password
     * @param $fulfillment_id
     * @param $order_id
     * @return array|string
     */
    public function updateFulfillments($shop, $username, $password, $fulfillment_id, $order_id)
    {

        $url = 'https://' . $username . ':' . $password . '@' . $shop . '.onshopbase.com/admin/orders/' . $order_id .
            '/fulfillments/' . $fulfillment_id . '.json';
        $request_headers = ['Content-Type:application/json'];

        $data = [
            'fulfillment' => [
                "notify_customer" => true,
                "service" => "shopbase",
                "status" => true,
                "tracking_company" => "Yun Express",
                "tracking_number" => "YT2125721272307013",
                "tracking_url" => "https://t.17track.net/en#nums=YT2125721272307013"
            ]
        ];


        $result = $this->shopbaseHandle($url, 'PUT', $data, $request_headers);
        return $result;
    }


    /**
     * curl 请求
     * @param $url
     * @param string $method
     * @param array $data
     * @param array $request_headers
     * @return array|string
     */
    protected function shopbaseHandle($url, $method = 'GET', $data = [], $request_headers = [])
    {
        if (in_array($method, array('GET', 'DELETE'))) {
            if ($data) {
                $url = $url . "?" . http_build_query($data);
            }
        }

        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_HEADER, TRUE);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($curl, CURLOPT_MAXREDIRS, 3);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($curl, CURLOPT_TIMEOUT, 30);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);

        if (in_array($method, array('POST', 'PUT'))) {
            if (is_array($data)) {
                $data = json_encode($data);
            }
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_HTTPHEADER, $request_headers);
        $response = curl_exec($curl);
        $response = str_replace("HTTP/1.1 100 Continue\r\r", '', $response);
        $response = str_replace("HTTP/1.1 100 Continue\r\n\r\n", '', $response);
        $response = str_replace("HTTP/1.1 100 Continue\n\n", '', $response);
        $error_number = curl_errno($curl);
        $error_message = curl_error($curl);
        curl_close($curl);
        if ($error_number) {
            return $error_message;
        } else {
            $response = preg_split("/\r\n\r\n|\n\n|\r\r/", $response, 2);
            $headers = array();
            $header_data = explode("\n", $response[0]);
            $headers['status'] = $header_data[0];
            array_shift($header_data);
            foreach ($header_data as $part) {
                $h = explode(":", $part);
                $headers[trim($h[0])] = trim($h[1]);
            }
//            return array('response' => $response, 'headers' => $headers);
            return JD($response[1]);
        }
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jason Ho

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值