You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
think-library/src/service/KaShAngWl.php

162 lines
3.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace DtApp\ThinkLibrary\service;
use DtApp\ThinkLibrary\Service;
use DtApp\ThinkLibrary\service\curl\HttpService;
use think\App;
use think\exception\HttpException;
/**
* 卡商网
* http://www.kashangwl.com/
* Class KaShAngWl
* @package DtApp\ThinkLibrary\service
*/
class KaShAngWl extends Service
{
/**
* 接口地址
* @var string
*/
private $api_url = 'http://www.kashangwl.com/api';
/**
* 商家编号、商家密钥
* @var
*/
private $customer_id, $customer_key;
/**
* 设置商家编号
* @param string $customer_id
* @return $this
*/
public function setCustomerId(string $customer_id): self
{
$this->customer_id = $customer_id;
return $this;
}
/**
* 设置商家密钥
* @param string $customer_key
* @return $this
*/
public function setCustomerKey(string $customer_key): self
{
$this->customer_key = $customer_key;
return $this;
}
/**
* 待请求的链接
* @var string
*/
private $method = '';
/**
* 设置接口
* @param $method
* @return KaShAngWl
*/
public function setMethod($method): self
{
$this->method = "{$this->api_url}/$method";
return $this;
}
/**
* 需要发送的的参数
* @var
*/
private $param;
/**
* 入参
* @param $param
* @return KaShAngWl
*/
public function param($param): self
{
$this->param = $param;
return $this;
}
/**
* 响应内容
* @var
*/
private $output;
/**
* 时间戳
* @var int
*/
private $time;
public function __construct(App $app)
{
$this->time = time();
parent::__construct($app);
}
/**
* @return array|mixed
*/
public function toArray()
{
//首先检测是否支持curl
if (!extension_loaded("curl")) {
throw new HttpException(404, '请开启curl模块');
}
$this->http();
// 正常
if (is_array($this->output)) {
return $this->output;
}
if (is_object($this->output)) {
$this->output = json_encode($this->output, JSON_UNESCAPED_UNICODE);
}
$this->output = json_decode($this->output, true);
return $this->output;
}
/**
* 网络请求
*/
private function http(): void
{
//生成签名
$sign = $this->createSign();
//组织参数
$this->param['customer_id'] = $this->customer_id;
$this->param['timestamp'] = $this->time;
$this->param['sign'] = $sign;
$result = HttpService::instance()
->url($this->method)
->data($this->param)
->post()
->toArray();
$this->output = $result;
}
/**
* 签名
* @return string
*/
private function createSign(): string
{
$sign = $this->customer_key;
$this->param['customer_id'] = $this->customer_id;
$this->param['timestamp'] = $this->time;
ksort($this->param);
foreach ($this->param as $key => $val) {
if ($key !== '' && $val !== '') {
$sign .= $key . $val;
}
}
$sign = strtolower(md5($sign));
return $sign;
}
}