185 lines
4.7 KiB
PHP
185 lines
4.7 KiB
PHP
<?php
|
|
namespace addon\supply\model;
|
|
use app\model\BaseModel;
|
|
class CloudApi extends BaseModel
|
|
{
|
|
public $gatewayHost = 'https://api.supply.cn';
|
|
public $appKey = '';
|
|
public $appSecret = '';
|
|
public $config = [];
|
|
public $public = [];
|
|
public function __construct($id = 0)
|
|
{
|
|
$info = model('supply_app')->getInfo(['id' => $id]);
|
|
if (!empty($info)) {
|
|
$this->gatewayHost = $info['push_url'];
|
|
$this->appKey = $info['app_id'];
|
|
$this->appSecret = $info['app_secret'];
|
|
$this->config = $info;
|
|
} else {
|
|
$this->gatewayHost = addon_url('supply://api/index');
|
|
}
|
|
}
|
|
|
|
public function getConfig()
|
|
{
|
|
return $this->config;
|
|
}
|
|
|
|
/***
|
|
* 获取远程商品列表
|
|
* @param $data
|
|
* @return array
|
|
* @throws \Exception
|
|
*/
|
|
public function getGoodsList($data = [])
|
|
{
|
|
$return = $this->requestApi('supply.v1.product.lists', $data);
|
|
$return = json_decode($return, true);
|
|
return $this->success($return['result']);
|
|
}
|
|
|
|
/***
|
|
* 获取商品详情
|
|
* @param $productID
|
|
* @return array
|
|
* @throws \Exception
|
|
*/
|
|
public function getGoodsInfo($productID)
|
|
{
|
|
$data = [
|
|
'itemIds' => $productID
|
|
];
|
|
if(is_array($productID)){
|
|
$data=implode(',',$productID);
|
|
}
|
|
$return = $this->requestApi('supply.v1.product.details', $data);
|
|
$return = json_decode($return, true);
|
|
return $this->success($return['result']);
|
|
}
|
|
|
|
|
|
/***
|
|
* 关注产品
|
|
* @param $data
|
|
* @return array
|
|
* @throws \Exception
|
|
*/
|
|
public function followGoods($productID,$cloudType='')
|
|
{
|
|
$data=[
|
|
'itemId' =>$productID,
|
|
'cloud_id' =>$cloudType,
|
|
'isFollow' =>1,
|
|
];
|
|
$return = $this->requestApi('supply.v1.product.follow', $data);
|
|
$return = json_decode($return, true);
|
|
return $this->success($return['result']);
|
|
}
|
|
|
|
|
|
/***
|
|
* 创建订单
|
|
* @param $data
|
|
* @return array
|
|
* @throws \Exception
|
|
*/
|
|
public function createOrderData($data)
|
|
{
|
|
$return = $this->requestApi('supply.v1.order.fastCreateOrder', $data);
|
|
$return = json_decode($return, true);
|
|
return $this->success($return['result']);
|
|
}
|
|
|
|
|
|
/****
|
|
* 发起余额代扣
|
|
* @param $data
|
|
* @return array
|
|
* @throws \Exception
|
|
*/
|
|
public function pBalancePay($data)
|
|
{
|
|
$return = $this->requestApi('supply.v1.orderPay.pbalancePay', $data);
|
|
$return = json_decode($return, true);
|
|
return $this->success($return['result']);
|
|
}
|
|
|
|
public function getPayOnlineInfo($data)
|
|
{
|
|
$return = $this->requestApi('supply.v1.orderPay.getPay', $data);
|
|
$return = json_decode($return, true);
|
|
if ($return['code'] >= 0) {
|
|
return $this->success($return['result']);
|
|
}else{
|
|
return $return;
|
|
}
|
|
}
|
|
|
|
|
|
/***
|
|
* 获取产品详情
|
|
* @param $data
|
|
* @return array
|
|
* @throws \Exception
|
|
*/
|
|
public function getOrderInfo($data)
|
|
{
|
|
$return = $this->requestApi('supply.v1.order.getOrderInfo', $data);
|
|
$return = json_decode($return, true);
|
|
return $this->success($return['result']);
|
|
}
|
|
|
|
|
|
/***
|
|
* 取消关闭订单
|
|
* @param $data
|
|
* @return void
|
|
* @throws \Exception
|
|
*/
|
|
public function cancelOrder($data){
|
|
$return = $this->requestApi('supply.v1.order.cancel', $data);
|
|
$return = json_decode($return, true);
|
|
if ($return['code'] >= 0) {
|
|
return $this->success($return['result']);
|
|
}else{
|
|
return $return;
|
|
}
|
|
}
|
|
|
|
/***
|
|
* 请求接口
|
|
* @param string $api
|
|
* @param $data
|
|
* @return array|bool|mixed|string
|
|
* @throws \Exception
|
|
*/
|
|
public function requestApi(string $api, $data = [])
|
|
{
|
|
$timestamp = round(microtime(true));
|
|
$data['timestamp'] = $timestamp;
|
|
$data['app_id'] = $this->appKey;
|
|
$data['app_secret'] = $this->appSecret;
|
|
$data['method'] = $api;
|
|
$data['signature'] = $this->getSign($data);
|
|
// 发起请求
|
|
return http($this->gatewayHost, 30, [], array_merge($this->public, $data));
|
|
}
|
|
|
|
/***
|
|
* 获取签名
|
|
* @param $path
|
|
* @param $postData
|
|
* @return string
|
|
*/
|
|
public function getSign($data)
|
|
{
|
|
ksort($data);
|
|
$content = http_build_query($data);
|
|
$sign = hash_hmac("sha1", $content, $this->appSecret, true);
|
|
$signHexWithLowcase = bin2hex($sign);
|
|
$signHexUppercase = strtoupper($signHexWithLowcase);
|
|
return $signHexUppercase;
|
|
}
|
|
}
|