<?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]);
}
}
}
Shopbase全套开发 ,含产品上传、订单检索、自动履行【PHP接口】开发
最新推荐文章于 2022-07-13 17:23:41 发布