logisticName(); $logistic_number = $rejected['logistic_number'] ?? ''; $logistic_number_return = $rejected['logistic_number_return'] ?? ''; $order_number = $rejected['order_number'] ?? ''; $quality_label = $rejected->qualityLabelName(); $sender_mobile = $rejected['mobile_sender'] ?? ''; $sender_name = $rejected['sender'] ?? ''; $json = $this->packSendToRemote($amount,$created_at,$fee_collected,$goods_barcode, $goods_name,$logistic_name_return,$logistic_number,$logistic_number_return,$order_number, $quality_label,$sender_mobile,$sender_name); if(!$json){ $this->log(__METHOD__,'error'.'_'.$logistic_number_return,"没有返回"); return false; } if(!$json['success']){ $this->log(__METHOD__,'error'.'_'.$logistic_number_return,"返回错误:".json_encode($json)); return false; }else{ $this->log(__METHOD__,'JianshangResponse'.'_'.$logistic_number_return,json_encode($json)); } return $json; } function sendRejectedByApi(Request $request){ $amount = $request->input('amount') ?? ''; $created_at = $request->input('created_at') ?? ''; $fee_collected = $request->input('fee_collected') ?? ''; $goods_barcode = $request->input('goods_barcode') ?? ''; $goods_name = $request->input('goods_name') ?? ''; $logistic_name_return = $request->input('logistic_name_return') ?? ''; $logistic_number = $request->input('logistic_number') ?? ''; $logistic_number_return = $request->input('logistic_number_return') ?? ''; $order_number = $request->input('order_number') ?? ''; $quality_label = $request->input('quality_label') ?? ''; $sender_mobile = $request->input('sender_mobile') ?? ''; $sender_name = $request->input('sender_name') ?? ''; $json = $this->packSendToRemote($amount,$created_at,$fee_collected,$goods_barcode, $goods_name,$logistic_name_return,$logistic_number,$logistic_number_return,$order_number, $quality_label,$sender_mobile,$sender_name); if(!$json)return ['success'=>'false','fail_info'=>'没有JSON回复']; if(!$json['success']){return $this->apiError(__METHOD__,"返回错误:".json_encode($json));} return $json; } private function packSendToRemote($amount,$created_at,$fee_collected,$goods_barcode, $goods_name,$logistic_name_return,$logistic_number,$logistic_number_return,$order_number, $quality_label,$sender_mobile,$sender_name){ if(env('api_faking')){ $this->log(__METHOD__,'error_'.__FUNCTION__,'API FAKING'); return false; } $data="{\"amount\":\"$amount\", \"created_at\":\"$created_at\", \"fee_collected\":\"$fee_collected\", \"goods_barcode\":\"$goods_barcode\", \"goods_name\":\"$goods_name\", \"logistic_name_return\":\"$logistic_name_return\", \"logistic_number\":\"$logistic_number\", \"logistic_number_return\":\"$logistic_number_return\", \"order_number\":\"$order_number\", \"quality_label\":\"$quality_label\", \"sender_mobile\":\"$sender_mobile\", \"sender_name\":\"$sender_name\"}"; $sortParamsAndMd5=function(Array $params,$timestamp,$nonce,$signKey){ $params=new Collection($params); $params=$params->sortKeys(); $str=''; $params->each(function($param,$key)use(&$str){ $val=trim($param); if($val){ $str .= $key.$val; } }); return strtolower(md5($str.$timestamp.$nonce.$signKey)); }; $timestamp=intval(microtime(true)*1000); $nonce=md5(microtime(true)); $sign=$sortParamsAndMd5(json_decode($data,true),$timestamp,$nonce,config('api.sign_key_rejected_send_jianshang')); $url=config('api.url_rejected_send_jianshang'); $response=Zttp::withHeaders([ 'sign'=>$sign, 'nonce'=>$nonce, 'timestamp'=>$timestamp, 'Content-Type'=>'application/json' ])->post($url,json_decode($data,true)); $this->log(__METHOD__,__FUNCTION__,$data); if(!$response){ $this->log(__METHOD__,'error_'.__FUNCTION__,'回复异常:'.$response->body()); return false; } if(!$response->json()){ $this->log(__METHOD__,'error_'.__FUNCTION__,'json为空:'.$response->body()); return false; } return $response->json(); } }