'ok', # 小于0为失败 0 => '暂时未处理', -1 => 'appid为空', -2 => '产品错误', -3 => 'appid无效', -4 => '余额不足或者没有传入价格', -5 => 'signature不能为空', -6 => 'nonce不能为空', -7 => 'time不能为空', -8 => 'signature已失效', -9 => 'signature验证失败', -100 => '请求错误', -101 => '订单不存在', -102 => '订单号重复', 401 => '签名错误', 408 => '时间戳过期', -103 => '正在处理中', -104 => '锁卡失败', -1000 => '系统维护中', ); protected $secretKey = 'ez8bfsrgefga5nkx5zgccegrb25mct7w'; protected string $host_url = 'https://supplier-api.wanmahui.com/api/openplatform/gateway'; # 查询接口 一般用于查询数据,同步执行 # 提交接口 一般用于提交数据,异步执行 public function refund_created($data, $mid) { $AfterSalesOrderService = AfterSalesOrderService::instance(); $info = $AfterSalesOrderService->db()->where(['refund_id' => $data['refund_id']])->find(); if (!$info) { $update = []; $update['listdata'] = json_encode($data); $update['mid'] = $mid; $update['status'] = '1'; $update['merchant_order_id'] = $data['tid']; $update['refund_id'] = $data['refund_id']; $update['refund_fee'] = $data['refund_fee']; // $update['dispute_type'] = $vo['dispute_type']; // $update['refund_desc'] = $vo['desc']; $update['create_at'] = $data['modified']; $update['buyer_nick'] = $data['buyer_nick']; $update['buyer_open_uid'] = $data['buyer_open_uid']; $update['refund_phase'] = $data['refund_phase']; $up = $AfterSalesOrderService->up(['refund_id' => $data['refund_id']], $update); } } public function refund_get($data, $mid) { } #更新备注 public function trade_memo($tid, $uid,$key,$flag,$desc = '') { $request = [ 'method' => 'trade_memo', 'uid' => $uid, 'timestamp' => time(), 'tid' => $tid, 'flag' => $flag, ]; if($desc){ $request['memo'] = $desc; } $request['sign'] = $this->_sign($request, $key); $response = $this->curl('POST', $this->host_url, $request); $response = json_decode($response,true); if($response['code'] == 10000){ return true; }else{ return false; } } public function _sign($request,$secretKey) { ksort($request); if(isset($request['method'])){ unset($request['method']); } if(isset($request['appmid'])){ unset($request['appmid']); } $str = ''; foreach ($request as $k => $v){ $str .= $k . $v ; } $str = $secretKey.$str.$secretKey.$secretKey; return md5($str); } protected static function log($data, $type = 'request'):void { \dever\Log::write('agiso', $type, $data); // \dever\Log::write('jingdong', $type, $data); } public function send_post($notify_url, $post_data, $type): mixed { $postdate = http_build_query($post_data); $options = array( 'http' => array( 'method' => $type, 'header' => 'Content-type:application/x-www-form-urlencoded', 'content' => $postdate, 'timeout' => 15 * 60 // 超时时间(单位:s) ) ); $context = stream_context_create($options); return file_get_contents($notify_url, false, $context); } protected function curl($method, $url, $param = array(), $json = false, $header = false):mixed { if ($param) { $log['type'] = 'request'; $log['url'] = $url; $log['param'] = $param; $this->log($log); } $curl = CurlService::getInstance($url, $param, $method, $json, $header); $curl->setTimeOut(3600); return $curl->result(); } /** * 返回成功的消息 * @param mixed $info * @param string $data * @param integer $code */ protected function yes($data = '{-null-}', $info = 'ok', $code = 200) { if (is_string($data) && $data != 'ok' && $data != 'success') { if ($data == '订单号重复') { return $this->no(-102); } return $this->no(-100, $data); } $response = [ 'code' => $code, 'message' => $info, 'data' => $data ]; throw new HttpResponseException(json($response)); } /** * 返回失败的消息 * @param mixed $info * @param string $data * @param integer $code */ protected function no($code = 0, $info = '', $data = null) { $msg = $this->code[$code] ?? 'error'; if ($info) { $msg .= ':' . $info; } $response = [ 'code' => $code, 'message' => $msg, 'data' => $data ]; throw new HttpResponseException(json($response)); } }