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.
142 lines
4.3 KiB
142 lines
4.3 KiB
5 years ago
|
<?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);
|
||
|
}
|
||
|
}
|