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.
141 lines
4.3 KiB
141 lines
4.3 KiB
<?php |
|
/** |
|
* Created by PhpStorm. |
|
* User: Administrator |
|
* Date: 2017/8/31 |
|
* Time: 14:54 |
|
*/ |
|
|
|
namespace app\utils; |
|
|
|
use app\models\Store; |
|
|
|
class KdOrder |
|
{ |
|
/** |
|
* Json方式 调用电子面单接口 |
|
* |
|
*/ |
|
public static function submitEOrder($requestData, $store_id) |
|
{ |
|
$store = Store::findOne(['id'=>$store_id]); |
|
$EBusinessID = $store->kdniao_mch_id; |
|
$AppKey = $store->kdniao_api_key; |
|
//测试接口 |
|
$ReqUrl = 'http://testapi.kdniao.com:8081/api/EOrderService '; |
|
//正式接口 |
|
$ReqUrl = 'http://api.kdniao.com/api/EOrderService'; |
|
$datas = array( |
|
'EBusinessID' => $EBusinessID, |
|
'RequestType' => '1007', |
|
'RequestData' => urlencode($requestData) , |
|
'DataType' => '2', |
|
); |
|
$datas['DataSign'] = self::encrypt($requestData, $AppKey); |
|
$result=self::sendPost($ReqUrl, $datas); |
|
|
|
//根据公司业务处理返回的信息...... |
|
|
|
return $result; |
|
} |
|
|
|
|
|
/** |
|
* post提交数据 |
|
* @param string $url 请求Url |
|
* @param array $datas 提交的数据 |
|
* @return url响应返回的html |
|
*/ |
|
public static function sendPost($url, $datas) |
|
{ |
|
$temps = array(); |
|
foreach ($datas as $key => $value) { |
|
$temps[] = sprintf('%s=%s', $key, $value); |
|
} |
|
$post_data = implode('&', $temps); |
|
$url_info = parse_url($url); |
|
if (empty($url_info['port'])) { |
|
$url_info['port']=80; |
|
} |
|
$httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n"; |
|
$httpheader.= "Host:" . $url_info['host'] . "\r\n"; |
|
$httpheader.= "Content-Type:application/x-www-form-urlencoded\r\n"; |
|
$httpheader.= "Content-Length:" . strlen($post_data) . "\r\n"; |
|
$httpheader.= "Connection:close\r\n\r\n"; |
|
$httpheader.= $post_data; |
|
$fd = fsockopen($url_info['host'], $url_info['port']); |
|
fwrite($fd, $httpheader); |
|
$gets = ""; |
|
$headerFlag = true; |
|
while (!feof($fd)) { |
|
if (($header = @fgets($fd)) && ($header == "\r\n" || $header == "\n")) { |
|
break; |
|
} |
|
} |
|
while (!feof($fd)) { |
|
$gets.= fread($fd, 128); |
|
} |
|
fclose($fd); |
|
|
|
return $gets; |
|
} |
|
|
|
/** |
|
* 电商Sign签名生成 |
|
* @param data 内容 |
|
* @param appkey Appkey |
|
* @return DataSign签名 |
|
*/ |
|
public static function encrypt($data, $appkey) |
|
{ |
|
return urlencode(base64_encode(md5($data.$appkey))); |
|
} |
|
/************************************************************** |
|
* |
|
* 使用特定function对数组中所有元素做处理 |
|
* @param string &$array 要处理的字符串 |
|
* @param string $function 要执行的函数 |
|
* @return boolean $apply_to_keys_also 是否也应用到key上 |
|
* @access public |
|
* |
|
*************************************************************/ |
|
function arrayRecursive(&$array, $function, $apply_to_keys_also = false) |
|
{ |
|
static $recursive_counter = 0; |
|
if (++$recursive_counter > 1000) { |
|
die('possible deep recursion attack'); |
|
} |
|
foreach ($array as $key => $value) { |
|
if (is_array($value)) { |
|
self::arrayRecursive($array[$key], $function, $apply_to_keys_also); |
|
} else { |
|
$array[$key] = $function($value); |
|
} |
|
|
|
if ($apply_to_keys_also && is_string($key)) { |
|
$new_key = $function($key); |
|
if ($new_key != $key) { |
|
$array[$new_key] = $array[$key]; |
|
unset($array[$key]); |
|
} |
|
} |
|
} |
|
$recursive_counter--; |
|
} |
|
|
|
|
|
/************************************************************** |
|
* |
|
* 将数组转换为JSON字符串(兼容中文) |
|
* @param array $array 要转换的数组 |
|
* @return string 转换得到的json字符串 |
|
* @access public |
|
* |
|
*************************************************************/ |
|
function JSON($array) |
|
{ |
|
self::arrayRecursive($array, 'urlencode', true); |
|
$json = json_encode($array); |
|
return urldecode($json); |
|
} |
|
}
|
|
|