2024-09-29 15:43:18 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace app\openapi\controller;
|
|
|
|
|
|
|
|
|
|
|
|
use app\gateway\service\RedisService as redisObj;
|
|
|
|
use dever\Log;
|
2024-12-04 12:33:47 +08:00
|
|
|
use Exception;
|
2024-09-29 15:43:18 +08:00
|
|
|
use think\facade\Db;
|
|
|
|
class Taobao extends Coretb
|
|
|
|
{
|
|
|
|
|
|
|
|
# 是否检测数据
|
|
|
|
protected bool $check = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 查询接口 一般用于查询数据,同步执行
|
|
|
|
|
|
|
|
|
|
|
|
public function query()
|
|
|
|
{
|
|
|
|
$data = input();
|
|
|
|
$data = $this->charsetToUTF8($data);
|
|
|
|
|
|
|
|
$order = '';
|
|
|
|
$merchant_order = $data['tbOrderNo'];
|
|
|
|
|
2024-12-04 12:33:47 +08:00
|
|
|
try {
|
|
|
|
$redis = new redisObj();
|
|
|
|
$data = $redis->get('taobao_query' . $merchant_order);
|
|
|
|
} catch (Exception) {
|
|
|
|
// 处理Redis操作异常
|
|
|
|
$data = false;
|
2024-09-29 15:43:18 +08:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2024-12-04 12:33:47 +08:00
|
|
|
|
|
|
|
$this->agentId= input('app_key');
|
|
|
|
$data = $this->queryData($merchant_order, $data, $order);
|
2024-09-29 15:43:18 +08:00
|
|
|
|
|
|
|
|
|
|
|
return $this->yesTB($data,'query',$merchant_order);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function query_coop()
|
|
|
|
{
|
|
|
|
$data = input();
|
|
|
|
$data = $this->charsetToUTF8($data);
|
|
|
|
$order = '';
|
|
|
|
$merchant_order = $data['tbOrderNo'];
|
|
|
|
$this->bizType = $data['bizType'];
|
|
|
|
|
2024-12-04 12:33:47 +08:00
|
|
|
try {
|
|
|
|
$redis = new redisObj();
|
|
|
|
$data = $redis->get('taobao_query' . $merchant_order);
|
|
|
|
} catch (Exception) {
|
|
|
|
// 处理Redis操作异常
|
|
|
|
$data = false;
|
2024-09-29 15:43:18 +08:00
|
|
|
|
|
|
|
}
|
2024-12-04 12:33:47 +08:00
|
|
|
$this->agentId= input('supplierId');
|
|
|
|
$data = $this->queryData($merchant_order, $data, $order);
|
2024-09-29 15:43:18 +08:00
|
|
|
|
|
|
|
return $this->yesTB($data,'query_coop',$merchant_order);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 提交接口 一般用于提交数据,异步执行
|
2024-12-04 12:33:47 +08:00
|
|
|
public function charge(): void
|
2024-09-29 15:43:18 +08:00
|
|
|
{
|
|
|
|
|
|
|
|
$this->input();
|
|
|
|
|
|
|
|
$settingStatus = sysconf('settingStatus');
|
|
|
|
if ($settingStatus == 1) {
|
|
|
|
$this->noTB(401003);
|
|
|
|
}
|
|
|
|
|
|
|
|
$data = $this->channel($this->mid, $this->product, true);
|
2025-02-15 19:02:39 +08:00
|
|
|
var_dump($data);die;
|
2024-09-29 15:43:18 +08:00
|
|
|
|
|
|
|
$this->yesTB($data, 'submit', $this->order);
|
|
|
|
}
|
|
|
|
|
2025-02-15 19:00:17 +08:00
|
|
|
public function charge_test(): void
|
|
|
|
{
|
|
|
|
|
|
|
|
$this->input();
|
|
|
|
|
|
|
|
$settingStatus = sysconf('settingStatus');
|
|
|
|
if ($settingStatus == 1) {
|
|
|
|
$this->noTB(401003);
|
|
|
|
}
|
|
|
|
|
|
|
|
$data = $this->channel($this->mid, $this->product, true);
|
|
|
|
// var_dump($data);die;
|
|
|
|
|
|
|
|
$this->yesTB($data, 'submit', $this->order);
|
|
|
|
}
|
|
|
|
|
2024-09-29 15:43:18 +08:00
|
|
|
# 提交接口 一般用于提交数据,异步执行
|
|
|
|
public function tb_charge()
|
|
|
|
{
|
|
|
|
|
|
|
|
$this->input_coop();
|
|
|
|
$settingStatus = sysconf('settingStatus');
|
|
|
|
if ($settingStatus == 1) {
|
|
|
|
$this->noTB(401003);
|
|
|
|
}
|
|
|
|
$data = $this->channel($this->mid, $this->product, true);
|
|
|
|
|
|
|
|
$this->yesTB($data, 'submit_coop', $this->order);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 提交接口 一般用于提交数据,异步执行
|
|
|
|
public function dc_charge(): void
|
|
|
|
{
|
|
|
|
$this->charge();
|
|
|
|
}
|
|
|
|
#取消接口
|
|
|
|
public function cancel()
|
|
|
|
{
|
|
|
|
|
|
|
|
$data = input();
|
|
|
|
|
|
|
|
$tborderfk = array(
|
|
|
|
'tbOrderNo' => $data['tbOrderNo'],
|
|
|
|
'coopOrderSuccessTime' => $data['timestamp'],
|
|
|
|
'coopOrderStatus' => 'GENERAL_ERROR',
|
|
|
|
'failedReason' => '签名失败',
|
|
|
|
'failedCode' => '0102',
|
|
|
|
'coopOrderNo' => "XT".$data['tbOrderNo']
|
|
|
|
);
|
|
|
|
|
|
|
|
$code = 200;
|
|
|
|
$header = [
|
|
|
|
'Content-type' =>'text/xml; charset=GBK'
|
|
|
|
];
|
|
|
|
return xml($tborderfk,$code,$header,array('root_node' => 'gamezctopcancel', 'encoding' => 'GBK',));
|
|
|
|
}
|
|
|
|
|
|
|
|
public function notify($bestUrl,$merchant_order ,$merchant,$apiParams=[])
|
|
|
|
{
|
|
|
|
|
|
|
|
$request = $this->getOrder('', $merchant_order);
|
|
|
|
$requestParam = json_decode($request['param'],true);
|
|
|
|
|
|
|
|
try{
|
|
|
|
|
|
|
|
|
|
|
|
$senddata = $this->doaction($merchant,$request,$requestParam,$apiParams);
|
2024-12-04 12:33:47 +08:00
|
|
|
}catch(Exception $e){
|
2024-09-29 15:43:18 +08:00
|
|
|
Log::write('errorTip', 'taobao_notify', $e->getMessage());
|
|
|
|
return 'error';
|
|
|
|
}
|
|
|
|
|
|
|
|
$data = (array) $senddata;
|
|
|
|
if(isset($data['update_result']) == 'T'){
|
|
|
|
return 'success';
|
|
|
|
}else{
|
|
|
|
return json_encode($data);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#授权回调地址
|
|
|
|
public function gettoken(){
|
|
|
|
|
|
|
|
#https://oauth.taobao.com/authorize?response_type=code&client_id=34615444&redirect_uri=http://111.229.70.26/openapi/taobao/gettoken&state=34598038&view=web
|
|
|
|
##https://oauth.taobao.com/authorize?response_type=code&client_id=34650202&redirect_uri=http://101.43.58.121/openapi/taobao/gettoken&state=34640614&view=web
|
|
|
|
// https://oauth.taobao.com/authorize?response_type=code&client_id=34656002&redirect_uri=http://124.223.48.127/openapi/taobao/gettoken&state=34608230&view=web
|
|
|
|
#http://111.229.70.26/openapi/taobao/gettoken?code=B1iHjrmobM1VDijv4y4AmKSV25209089&state=34598038
|
|
|
|
$code = input('code');
|
|
|
|
$agentId = input('state');
|
|
|
|
|
|
|
|
$this->agentId = $agentId;
|
|
|
|
$this->getMerchant();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(isset($this->agentkey)){
|
|
|
|
$app_data = json_decode($this->merchant['other_param'],true);
|
|
|
|
|
|
|
|
// $request['agentId'] = '34615444';
|
|
|
|
// $request['agentkey'] = '2e59a0c00b4fafd9ae46bedced6eccc3';
|
|
|
|
$request['agentId'] = $app_data['reapi_appkey'];
|
|
|
|
$request['agentkey'] = $app_data['reapi_appsecret'];
|
|
|
|
// $this->mid = '1';
|
|
|
|
$request['code'] = $code;
|
|
|
|
$token = $this->taobaosdk('getToken',$request);
|
|
|
|
// var_dump($token);die;
|
|
|
|
|
|
|
|
// print_r($token);die;
|
|
|
|
$token = (array) $token;
|
|
|
|
$token_result = json_decode($token['token_result'],true);
|
|
|
|
$updaterefresh_token = array(
|
|
|
|
'refresh_token' => $token_result['refresh_token'],
|
|
|
|
'access_token' => $token_result['access_token'],
|
|
|
|
'access_token_time' => time() + $token_result['expires_in']
|
|
|
|
);
|
|
|
|
// var_dump($updaterefresh_token);die;
|
|
|
|
|
|
|
|
Db::name('merchant_list')->where('id', $this->mid)->update($updaterefresh_token);
|
|
|
|
|
|
|
|
}
|
|
|
|
$this->redirect('/');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2024-12-04 12:33:47 +08:00
|
|
|
/**
|
|
|
|
* @param mixed $merchant_order
|
|
|
|
* @param mixed $data
|
|
|
|
* @param string $order
|
|
|
|
* @return array|mixed
|
|
|
|
*/
|
|
|
|
public function queryData(mixed $merchant_order, mixed $data, string $order): mixed
|
|
|
|
{
|
|
|
|
if (!$this->agentId) {
|
|
|
|
$this->noTB('0101', 'query', $merchant_order);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$this->getMerchant();
|
|
|
|
|
|
|
|
//TODO修改
|
|
|
|
if ($data) {
|
|
|
|
$data = is_array($data) ? $data : json_decode($data, true);
|
|
|
|
} else {
|
|
|
|
$data = $this->getOrder($order, $merchant_order);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!$data) {
|
|
|
|
$this->noTB('0104', 'query', $merchant_order);
|
|
|
|
}
|
|
|
|
return $data;
|
|
|
|
}
|
2024-09-29 15:43:18 +08:00
|
|
|
|
|
|
|
|
|
|
|
}
|