getAppKey();
$timestamp = $time;
$sign = $util::SingForLvmama($time);
$currentPage = 1;
$url = $util->getBaseUrl() . '/ticketProd/scenicInfoListByPage' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign . "¤tPage=" . $currentPage;
$result = Utils::httpRequest($url);
print_r($url);
print_r(json_decode($result, true));
}
/**
* Function Description:批量产品/商品信息接口
* Function Name: actionGetProdList
*
*
* @author 娄梦宁
*/
public function actionGetProdList()
{
set_time_limit(0);
$util = new Util();
$opera_prod = new OperaProduct();
$outside_ticket = new OutsideTicket();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$sign = $util::SingForLvmama($time);
$currentPage = 1;
$url = $util->getBaseUrl() . '/ticketProd/productInfoListByPage' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign . "¤tPage=" . $currentPage;
$result = Utils::httpRequest($url);
$prod_list = json_decode($result, true);
//查出opera_prod表中所有的主code(即驴妈妈的productId)
$code_arr = $opera_prod->getCodeArr();
$code_arr_son=$opera_prod->getCodeArrSon();
for ($currentPage = 1; $currentPage <= $prod_list['totalPage']; $currentPage++) {
if ($currentPage == 1) {//分页的循环
$tmp_arr = $prod_list;
} else {
$url = $util->getBaseUrl() . '/ticketProd/productInfoListByPage' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign . "¤tPage=" . $currentPage;
$result = Utils::httpRequest($url);
$tmp_arr = json_decode($result, true);
}
foreach ($tmp_arr['productList'] as $val) {
//如果产品在opera_prod表中,即产品信息已添加
if (array_key_exists($val['productId'], $code_arr)) {//产品已经存在
if ($val['productStatus'] == true) {//当前产品在驴妈妈上架
$tmp_prod_name = $util::doCdada($val['productName']);
$remark = '';
if (isset($val['bookingInfo'])) {
foreach ($val['bookingInfo'] as $book) {
$remark .= $util::doCdada($book);
}
}
$remark .= $util::doCdada($val['goodsList'][0]['importentPoint']);
$is_refund = $val['goodsList'][0]['rules'][0]['isChange'];
$refund_limit_day = 1;
$refund_limit_time = '23:00';
if ($is_refund == 1 && isset($val['goodsList'][0]['rules'][0]['aheadTime'])) {//可以退款就同步退款规则
$limit_day_time = $util::countRefundTime($val['goodsList'][0]['rules'][0]['aheadTime']);
$refund_limit_day = $limit_day_time['day'];
$refund_limit_time = $limit_day_time['time'];
}
$tmp_prod_code = $val['productId'];
//
$upt_main = $opera_prod->uptLvmamaProdDetail($tmp_prod_code, $tmp_prod_name, $remark, $refund_limit_day, $refund_limit_time, $is_refund);
$parent_id = $code_arr[$val['productId']]['prod_id'];
// }else{
// $upt_main=$opera_prod->istLvmamaProdMain($tmp_prod_code, $tmp_prod_name, $remark, $refund_limit_day, $refund_limit_time, $is_refund);
// $parent_id=$upt_main['prod_id'];
// }
if ($upt_main['code'] != 0) {
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $upt_main['msg'] . $val['prod_code'] . " 批量定时更新产品出错" . PHP_EOL, FILE_APPEND);
continue;
}
foreach ($val['goodsList'] as $goods) {//循环添加子产品
if ($goods['status'] == true) {
$prod_name_son = $util::doCdada($goods['goodsName']);
$prod_code_son = $goods['goodsId'];
if (array_key_exists($prod_code_son, $code_arr_son)) {//商品已经存在
$son_prod = $opera_prod->uptLvmamaProdSon($prod_code_son, $prod_name_son, $remark, $refund_limit_day, $refund_limit_time, $is_refund, $parent_id);
} else {
$son_prod = $opera_prod->insLvmamaProdSon($parent_id, $prod_name_son, $prod_code_son, $refund_limit_day, $refund_limit_time, $is_refund);
}
if ($son_prod['code'] != 0) {
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $son_prod['msg'] . $prod_code_son . " 批量定时添加子门票产品出错" . PHP_EOL, FILE_APPEND);
continue;
}
} else {//商品下架
$outside_ticket->cancelGoods($val['productId'], $goods['goodsId']);
}
}
} else {//产品下架
$opera_prod->cancelProductByCode($val['productId']);
}
}
}
}
}
/**
* Function Description:批量价格、库存信息
* Function Name: actionGetProdPriceList
*
*
* @author 娄梦宁
*/
public function actionGetProdPriceList()
{
set_time_limit(0);
$util = new Util();
$opera_prod = new OperaProduct();
$outside_ticket = new OutsideTicket();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$sign = $util::SingForLvmama($time);
$currentPage = 1;
$beginDate = date('Y-m-d');
$endDate = date('Y-m-d', strtotime('+ 30 day'));
$url = $util->getBaseUrl() . '/ticketProd/productPriceListByPage' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign .
"¤tPage=" . $currentPage . "&beginDate=" . $beginDate . "&endDate=" . $endDate;
$prod_list = Utils::httpRequest($url);
//查出opera_prod表中所有的code(即驴妈妈的productId)
$code_arr = $opera_prod->getCodeArr();
//循环所有页数,每次结果插入opera_ticket
$prod_list = json_decode($prod_list, true);
for ($currentPage = 1; $currentPage <= $prod_list['totalPage']; $currentPage++) {
if ($currentPage == 1) {
$tmp_arr = $prod_list;
} else {
$url = $util->getBaseUrl() . '/ticketProd/productPriceListByPage' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign .
"¤tPage=" . $currentPage . "&beginDate=" . $beginDate . "&endDate=" . $endDate;
$tmp_arr = Utils::httpRequest($url);
$tmp_arr = json_decode($tmp_arr, true);
}
foreach ($tmp_arr['priceList'] as $val) {
//////////////////这层逻辑先不管
// if (array_key_exists($val['productId'], $code_arr)) {//如果产品在opera_prod表中,即在售
// }
// else {//加一层逻辑,获取到的产品都加到opera_prod表中,(前提是驴妈妈接口反馈都是有效数据)
// //添加主产品
// $prod_id = $val['productId'];
// $prod_info = $this->GetProdById($prod_id);
// try {
// $prod_name = $util::doCdada($prod_info['productList'][0]['productName']);
// //$remark = $util::doCdada($prod_info['productList'][0]['introdution']);暂不需要简介
// $remark = '';
// foreach ($prod_info['productList'][0]['bookinginfo'] as $book) {
// $remark .= $util::doCdada($book);
// }
// } catch (Exception $e) {
// file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $prod_id . " 添加产品获取详情出错" . PHP_EOL, FILE_APPEND);
// continue;
// }
// $main_prod_id = $opera_prod->istLvmamaProdMain($prod_id, $prod_name, $remark);
// if ($main_prod_id['code'] != 0) {
// file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $main_prod_id['msg'] . $prod_id . " 添加主门票产品出错" . PHP_EOL, FILE_APPEND);
// continue;
// }
// foreach ($val['goodsList']['goods'] as $goods) {//循环添加子产品
// $parent_id_son = $main_prod_id['prod_id'];
// $prod_name_son = $util::doCdada($goods['goodsName']);
// $prod_code_son = $goods['goodsId'];
// $son_prod = $opera_prod->insLvmamaProdSon($parent_id_son, $prod_name_son, $prod_code_son);
// if ($son_prod['code'] != 0) {
// file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $son_prod['msg'] . $prod_code_son . " 添加子门票产品出错" . PHP_EOL, FILE_APPEND);
// continue;
// }
// }
// $code_arr = $opera_prod->getCodeArr();
// }
if ($val['productStatus'] == true) {//产品上线中
foreach ($val['goodsList']['goods'] as $v) {//循环prod下的商品,
if ($v['goodsOnLine'] == true) {//商品上线中
if (!empty($v['prices'])) {
foreach ($v['prices']['price'] as $value) {//循环不同的价格日历
$tmp_prod_code = $val['productId'];
$tmp_prod_name = $code_arr[$tmp_prod_code]['prod_name'];
$tmp_ticket_code = $v['goodsId'];
$tmp_ticket_date = $value['date'];
$tmp_ticket_name = $util::doCdada($v['goodsName']);
$tmp_ticket_num = $value['stock'] == -1 ? 9999 : $value['stock'];
$tmp_ticket_price = $value['b2bPrice'];
$tmp_agent_price = $value['sellPrice'];
$tmp_cs_prod_id = $code_arr[$tmp_prod_code]['prod_id'];
$tmp_insert = $outside_ticket->InsertData($tmp_prod_code, $tmp_prod_name, $tmp_ticket_code, $tmp_ticket_date, $tmp_ticket_name,
$tmp_ticket_num, $tmp_ticket_price, $tmp_agent_price, $tmp_cs_prod_id);
if (!$tmp_insert) {
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $tmp_prod_code . $tmp_prod_name . $tmp_ticket_date
. "批量接口插入更新失败" . PHP_EOL, FILE_APPEND);
}
}
}
} else {//商品已下线
$outside_ticket->cancelGoods($val['productId'], $v['goodsId']);
}
}
} else {//产品已下线
$opera_prod->cancelProductByCode($val['productId']);
}
}
}
}
/**
* Function Description:通过id获取产品信息
* Function Name: actionGetProdById
*
*
* @author 娄梦宁
*/
public function GetProdById($productIds)
{
$util = new Util();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$sign = $util::SingForLvmama($time);
$url = $util->getBaseUrl() . '/ticketProd/productInfoList' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign . "&productIds=" . $productIds;
$result = Utils::httpRequest($url);
return json_decode($result, true);
}
/**
* Function Description:定时任务通过id同步产品信息
* Function Name: actionGetProdById
*
*
* @author 娄梦宁
*/
public function actionUptProdById()
{
set_time_limit(0);
$opera_prod = new OperaProduct();
$util = new Util();
//获取驴妈妈渠道下所有产品id
$prod_arr = $opera_prod->getIdForLvmama();
foreach ($prod_arr as $val) {//循环处理各产品
if ($val['productStatus'] == true) {//产品在驴妈妈上架
$prod_info = $this->GetProdById($val['prod_code']);
try {
$prod_name = $util::doCdada($prod_info['productList'][0]['productName']);
$remark = '';
foreach ($prod_info['productList'][0]['bookingInfo'] as $book) {
$remark .= $util::doCdada($book);
}
} catch (Exception $e) {
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $val['prod_code'] . " 定时更新产品id获取详情出错" . PHP_EOL, FILE_APPEND);
continue;
}
$main_prod_id = $opera_prod->uptLvmamaProdMain($val['prod_code'], $prod_name, $remark);
if ($main_prod_id['code'] != 0) {
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $main_prod_id['msg'] . $val['prod_code'] . " 定时更新产品id出错" . PHP_EOL, FILE_APPEND);
continue;
}
}
// else {//产品在驴妈妈下架
// $opera_prod->cancelProductByCode($val['productId']);
// }
}
}
/**
* Function Description:通过id获取商品信息
* Function Name: actionGetGoodById
*
*
* @author 娄梦宁
*/
public function GetGoodById($goodsIds)
{
$util = new Util();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$sign = $util::SingForLvmama($time);
$url = $util->getBaseUrl() . '/ticketProd/goodInfoList' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign . "&goodsIds=" . $goodsIds;
$result = Utils::httpRequest($url);
return json_decode($result, true);
}
public function actionTest(){
$util = new Util();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$beginDate = date('Y-m-d');
$endDate = date('Y-m-d', strtotime('+ 60 day'));
$sign = $util::SingForLvmama($time);
$url = $util->getBaseUrl() . '/ticketProd/productInfoList' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign . "&productIds=" . 1040730;
// $url = $util->getBaseUrl() . '/ticketProd/goodInfoList' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign . "&goodsIds=" . 934395;
$url = $util->getBaseUrl() . '/ticketProd/goodPriceList' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign . "&goodsIds=" . 9992857 . "&beginDate=" . $beginDate . "&endDate=" . $endDate;
$result = Utils::httpRequest($url);
print_r(json_decode($result, true));
}
/**
* Function Description:定时任务通过id同步商品信息
* Function Name: actionGetProdById
*
*
* @author 娄梦宁
*/
public function actionUptGoodById()
{
set_time_limit(0);
$opera_prod = new OperaProduct();
$outside_ticket = new OutsideTicket();
$util = new Util();
//获取驴妈妈渠道下所有子产品code
$prod_arr = $opera_prod->getSonIdForLvmama();
foreach ($prod_arr as $val) {
$prod_info = $this->GetGoodById($val['prod_code']);
if ($prod_info['goodsList'][0]['status'] == true) {//商品在驴妈妈上架则更新信息
try {
$prod_name = $util::doCdada($prod_info['goodsList'][0]['goodsName']);
$remark = $util::doCdada($prod_info['goodsList'][0]['importentPoint']);
$is_refund = $prod_info['goodsList'][0]['rules'][0]['isChange'];
$refund_limit_day = 1;
$refund_limit_time = '23:00';
if ($is_refund == 1 && isset($prod_info['goodsList'][0]['rules'][0]['aheadTime'])) {//可以退款就同步退款规则
$limit_day_time = $util::countRefundTime($prod_info['goodsList'][0]['rules'][0]['aheadTime']);
$refund_limit_day = $limit_day_time['day'];
$refund_limit_time = $limit_day_time['time'];
}
} catch (Exception $e) {
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $val['prod_code'] . " 定时更新产品id获取详情出错" . PHP_EOL, FILE_APPEND);
continue;
}
$main_prod_id = $opera_prod->uptLvmamaProdSon($val['prod_code'], $prod_name, $remark, $refund_limit_day, $refund_limit_time, $is_refund);
if ($main_prod_id['code'] != 0) {
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $main_prod_id['msg'] . $val['prod_code'] . " 定时更新产品id出错" . PHP_EOL, FILE_APPEND);
continue;
}
//同步两天后价格日历信息
$this->GetGoodPriceList($val['prod_code']);
} else {//商品在驴妈妈下架
$outside_ticket->cancelGoods($val['productId'], $val['goodsId']);
}
}
}
/**
* Function Description:按 ID 获取价格库存接口
* Function Name: GetGoodPriceList
* @param $goodsIds
*
*
* @author 娄梦宁
*/
public function GetGoodPriceList($goodsIds)
{
$util = new Util();
$outside_ticket = new OutsideTicket();
$opera_prod = new OperaProduct();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$beginDate = date('Y-m-d');
$endDate = date('Y-m-d', strtotime('+ 2 day'));
$sign = $util::SingForLvmama($time);
$url = $util->getBaseUrl() . '/ticketProd/goodPriceList' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign . "&goodsIds=" . $goodsIds . "&beginDate=" . $beginDate . "&endDate=" . $endDate;
$result = Utils::httpRequest($url);
$result = json_decode($result, true);
//查出opera_prod表中所有的code(即驴妈妈的productId)
$code_arr = $opera_prod->getCodeArr();
if ($result['state']['code'] != 1000) {
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '按 ID 获取商品价格库存接口接口访问失败 ' . $result['state']['solution'] . PHP_EOL, FILE_APPEND);
}
foreach ($result['priceList'] as $val) {
if ($val['productStatus'] == true) {
foreach ($val['goodsList']['goods'] as $v) {
if ($v['goodsOnLine'] == true) {
if ($v['prices']['price']) {
foreach ($v['prices']['price'] as $value) {
$tmp_prod_code = $val['productId'];
$tmp_prod_name = $code_arr[$tmp_prod_code]['prod_name'];
$tmp_ticket_code = $v['goodsId'];
$tmp_ticket_date = $value['date'];
$tmp_ticket_name = $util::doCdada($v['goodsName']);
$tmp_ticket_num = $value['stock'] == -1 ? 9999 : $value['stock'];
$tmp_ticket_price = $value['b2bPrice'];
$tmp_agent_price = $value['sellPrice'];
$tmp_cs_prod_id = $code_arr[$tmp_prod_code]['prod_id'];
$tmp_insert = $outside_ticket->InsertData($tmp_prod_code, $tmp_prod_name, $tmp_ticket_code, $tmp_ticket_date, $tmp_ticket_name,
$tmp_ticket_num, $tmp_ticket_price, $tmp_agent_price, $tmp_cs_prod_id);
if (!$tmp_insert) {
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $tmp_prod_code . $tmp_prod_name . $tmp_ticket_date
. "单产品插入更新失败" . PHP_EOL, FILE_APPEND);
}
}
}
} else {//商品下架不在此处理
continue;
}
}
} else {//产品下架不在此处理
continue;
}
}
}
/**
* Function Description:按 ID 获取景区信息接口(不通)
* Function Name: actionGetScenicListById
*
*
* @author 娄梦宁
*/
public function actionGetScenicListById()
{
$util = new Util();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$scenicId = 1;
$sign = $util::SingForLvmama($time);
$url = $util->getBaseUrl() . '/ticketProd/scenicInfoList' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign . "&scenicId=" . $scenicId;
$result = Utils::httpRequest($url);
print_r($result);
}
/**
* Function Description:订单校验接口
* Function Name: actionValidateOrder
*
*
* @author 娄梦宁
*/
public function actionValidateOrder()
{
$util = new Util();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$sign = $util::SingForLvmama($time);
$order_info = [
'request' => [
'orderInfo' => [
'partnerOrderNo' => 5633325,
'orderAmount' => 160,
'product' => [
'productId' => 434492,
'goodsId' => 1646663,
'quantity' => 2,
'visitDate' => '2017-04-12',
'sellPrice' => 80
],
'booker' => [
'name' => '名字',
'mobile' => '18616307052',
'email' => '326017639@qq.com'
],
'travellers' => [
'traveller' => [
'name' => '中文',
'enName' => 'TYPE_NUM_NO',
'credentialsType' => 'ID_CARD',
'credentials' => '430321199212251717',
'mobile' => '18616307052',
],
]
]]];
$order_info = $util::arrayToXml($order_info);
$url = $util->getBaseUrl() . '/ticket/validateOrder' . "?appKey=" . $appKey . "&messageFormat=Xml×tamp=" . $timestamp . "&sign=" . $sign . "&request=" . $order_info;
$result = Utils::httpRequest($url);
$result = $util::xmlToJson($result);
print_r($url);
print_r(json_decode($result, true));
}
/**
* Function Description:创建订单接口
* Function Name: actionCreateOrder
*
*
* @author 娄梦宁
*/
public function actionCreateOrder()
{
$util = new Util();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$sign = $util::SingForLvmama($time);
$order_info = [
'request' => [
'orderInfo' => [
'partnerOrderNo' => 812437,
'orderAmount' => 20,
'product' => [
'productId' => 434492,
'goodsId' => 1646663,
'quantity' => 2,
'visitDate' => '2017-04-14',
'sellPrice' => 80
],
'booker' => [
'name' => '名字',
'mobile' => '18616307052',
'email' => '326017639@qq.com'
],
'travellers' => [
'traveller' => [
'name' => '中文',
'enName' => 'TYPE_NUM_NO',
'credentialsType' => 'ID_CARD',
'credentials' => '430321199212251717',
'mobile' => '18616307052',
'email' => '326017639@qq.com'
],
]
]]];
$order_info = $util::arrayToXml($order_info);
$url = $util->getBaseUrl() . '/ticket/createOrder' . "?appKey=" . $appKey . "&messageFormat=Xml×tamp=" . $timestamp . "&sign=" . $sign . "&request=" . $order_info;
$result = Utils::httpRequest($url);
$result = $util::xmlToJson($result);
print_r($url);
print_r(json_decode($result, true));
}
/**
* Function Description:订单支付接口
* Function Name: actionOrderPayment
*
*
* @author 娄梦宁
*/
public function actionOrderPayment()
{
$util = new Util();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$sign = $util::SingForLvmama($time);
$order = [
'request' => [
'order' => [
'partnerOrderNo' => 633333,
'orderId' => 20060214,
'serialNum' => 111111111111111111
]
]
];
$order = $util::arrayToXml($order);
$url = $util->getBaseUrl() . '/order/orderPayment' . "?appKey=" . $appKey . "&messageFormat=Xml×tamp=" . $timestamp . "&sign=" . $sign . "&request=" . $order;
$result = Utils::httpRequest($url);
print_r($url);
print_r($result);
}
/**
* Function Description:获取订单详情
* Function Name: actionGetOrderInfo
*
*
* @author 娄梦宁
*/
public function actionGetOrderInfo()
{
$main_order_id=Yii::$app->request->get('order_id');
$order_ids=OrderMain::find()->select('order_id')->from(OrderMain::tableName())
->where(['parent_order_id'=>$main_order_id])->asArray()->all();
$tmp_id=[];
foreach($order_ids as $v){
$tmp_id[]=$v['order_id'];
}
$ids=LvmamaOrderConnect::find()->select('GROUP_CONCAT(partner_id) as ids')->from(LvmamaOrderConnect::tableName())
->where(['in','partner_id',$tmp_id])
->asArray()->one();
$util = new Util();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$sign = $util::SingForLvmama($time);
$order = [
'request' => [
'order' => [
'partnerOrderNos' => $ids['ids']
]
]
];
$order = $util::arrayToXmlForLvmama($order);
$get_data=array(
"appKey" =>$appKey,
'messageFormat'=>'Xml',
'timestamp'=>$time,
'sign'=>$sign,
'request'=>$order,
);
$url_param = http_build_query($get_data);
$result=file_get_contents( util::getBaseUrl(). 'order/getOrderInfo?'.$url_param);
// $url = $util->getBaseUrl() . '/order/getOrderInfo' . "?appKey=" . $appKey . "&messageFormat=Xml×tamp=" . $timestamp . "&sign=" . $sign . "&request=" . $order;
// $result = Utils::httpRequest($url);
$result=$util::xmlToArray($result);
var_dump($result);
}
/**
* Function Description:申请退款接口
* Function Name: actionOrderCancel
*
*
* @author 娄梦宁
*/
public function actionOrderCancel()
{
$util = new Util();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$sign = $util::SingForLvmama($time);
$PartnerOrderNo = 812499;
$orderId = 20060329;
$url = $util->getBaseUrl() . '/ticket/orderCancel' . "?appKey=" . $appKey . "&messageFormat=json×tamp=" . $timestamp . "&sign=" . $sign . "&PartnerOrderNo=" . $PartnerOrderNo . "&orderId=" . $orderId;
$result = Utils::httpRequest($url);
$result = json_decode($result, true);
print_r($url);
print_r($result);
if ($result['state']['code'] == '1000') {
if ($result['order']['requestStatus'] == 'PASS') {
return '已退款';
} elseif ($result['order']['requestStatus'] == 'REVIEWING') {
return '审核中';
} else {
return '申请驳回 ' . $result['order']['refundInfo'];
}
}
return false;
}
/**
* Function Description:退款推送接口
* Function Name: actionPushOrderCancel
*
* @return string
*
* @author 娄梦宁
*/
public function actionPushOrderCancel()
{
$util = new Util();
$lvmama_push_info = new LvmamaPushInfo();
$order = Yii::$app->request->post('order', '');
$order = Util::xmlToJson($order);
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '退款推送接口 ' . $order . PHP_EOL, FILE_APPEND);
$lvmama_push_info->istPush('退款推送接口', $order);
$order = json_decode($order, true);
$order_id = $order['body']['order']['orderId'];
$secret = $util::getSecret();
if (md5($secret . $order_id) == $order['header']['signed']) {
if ($order) {
if($order['requestStatus'] =='REJECT'){//申请已驳回,发送短信通知
$content="预警:驴妈妈后台直连取消门票失败,订单号({$order['partnerOrderID']}),请及时处理。";
$phone_arr=[
'18367152515',
'18667946782',
'13872284051',
// '18874559393',
];
foreach($phone_arr as $phone){
$send_result=Msg::sendTelMsg($phone,$content);
if($send_result !==0){
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '退款推送接口 短信发送失败 ' . $order .' '.$send_result. PHP_EOL, FILE_APPEND);
}
}
}
$result = [
'response' => [
'state' => [
'code' => 1000,
'message' => '接收成功'
]
]
];
return '' . Util::arrayToXml($result);
}
}
$result = [
'response' => [
'state' => [
'code' => 25,
'message' => '签名错误'
]
]
];
return '' . Util::arrayToXml($result);
}
/**
* Function Description:接收产品推送接口
* Function Name: actionPushProductChange
*
* @return string
*
* @author 娄梦宁
*/
public function actionPushProductChange()
{
$result = [
'response' => [
'state' => [
'code' => 1000,
'message' => '接收成功'
]
]
];
return '' . Util::arrayToXml($result);
$lvmama_push_info = new LvmamaPushInfo();
$product = Yii::$app->request->post('product', '');
$product = Util::xmlToJson($product);
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '产品变更接收推送接口 ' . $product . PHP_EOL, FILE_APPEND);
$lvmama_push_info->istPush('产品推送接口', $product);
$product = json_decode($product, true);
$secret = Util::getSecret();
$changeType = $product['body']['changeType'];
if (md5($secret . $changeType) != $product['header']['signed']) {
$result = [
'response' => [
'state' => [
'code' => 25,
'message' => '签名错误'
]
]
];
return '' . Util::arrayToXml($result);
}
if ($changeType == 'price_change') {//价格日历变更时处理
$prod=$product['body']['product'];
if(isset($prod['productId'])){
$this->GetGoodPriceList($prod['goodsId']);
}else{
foreach($prod as $val){
$this->GetGoodPriceList($val['goodsId']);
}
}
} elseif ($changeType == 'product_create') {//新增产品
$this->AddNewProd($product['body']['product']['productId']);
}
$result = [
'response' => [
'state' => [
'code' => 1000,
'message' => '接收成功'
]
]
];
return '' . Util::arrayToXml($result);
}
/**
* Function Description:新增产品时操作
* Function Name: AddNewProd
* @param $prod_id
*
* @return bool
*
* @author 娄梦宁
*/
public function AddNewProd($prod_id)
{
//添加主产品
$util = new Util();
$opera_prod = new OperaProduct();
$prod_info = $this->GetProdById($prod_id);
try {
$prod_name = $util::doCdada($prod_info['productList'][0]['productName']);
$remark = $util::doCdada($prod_info['productList'][0]['introdution']);
} catch (Exception $e) {
return false;
}
$main_prod_id = $opera_prod->istLvmamaProdMain($prod_id, $prod_name, $remark);
if ($main_prod_id['code'] != 0) {
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $main_prod_id['msg'] . $prod_id . " 添加单个主门票产品出错" . PHP_EOL, FILE_APPEND);
}
return true;
}
/**
* Function Description:重发凭证接口
* Function Name: actionResendCode
*
*
* @author 娄梦宁
*/
public function actionResendCode()
{
$util = new Util();
//请求参数构建
$time = time();
$appKey = $util->getAppKey();
$timestamp = $time;
$sign = $util::SingForLvmama($time);
$request = [
'request' => [
'order' => [
'partnerOrderNos' => 633333,
'orderId' => 20060214
]
]
];
$request = $util::arrayToXml($request);
$url = $util->getBaseUrl() . '/order/resendCode' . "?appKey=" . $appKey . "&messageFormat=xml×tamp=" . $timestamp . "&sign=" . $sign . "&request=" . $request;
$result = Utils::httpRequest($url);
print_r($url);
print_r($result);
}
/**
* Function Description:订单信息推送接口
* Function Name: actionPushOrderInfo
*
* @return string
*
* @author 娄梦宁
*/
public function actionPushOrderInfo()
{
$util = new Util();
$lvmama_push_info = new LvmamaPushInfo();
$order_refund_lvmama = new OrderRefundLvmama();
$order = Yii::$app->request->post('order', '');
$order = Util::xmlToJson($order);
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '订单信息推送接收的json ' . $order . PHP_EOL, FILE_APPEND);
// $order='{"header":{"signed":"dc0914aed23133d528ae4cd2779d484a"},"body":{"order":{"orderId":"20060214","status":"CANCEL","approveStatus":"true","paymentStatus":"PAYED","credenctStatus":"CREDENCE_SEND","waitPayment":{},"performStatus":"USED","credentials":"CREDENCE_SEND"}}}';
$lvmama_push_info->istPush('订单信息推送接口', $order);
$order = json_decode($order, true);
$order_id = $order['body']['order']['orderId'];
$secret = $util::getSecret();
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '订单信息推送接收的json ' . $order_id . PHP_EOL, FILE_APPEND);
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '订单信息推送接收的json ' . md5($secret . $order_id) . PHP_EOL, FILE_APPEND);
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '订单信息推送接收的json ' . $order['header']['signed'] . PHP_EOL, FILE_APPEND);
if (md5($secret . $order_id) == $order['header']['signed']) {
if ($order['body']['order']['status'] == 'CANCEL' || $order['body']['order']['status'] == 'REFUND') {//订单信息推送操作
$status = $order['body']['order']['status'];
$approve_status = $order['body']['order']['approveStatus'] == true ? 1 : 0;
$payment_status = $order['body']['order']['paymentStatus'] == 'PAYED' ? 1 : 0;
$istRefund = $order_refund_lvmama->istRefund($order_id, $status, $approve_status, $payment_status);
if ($istRefund == false) {
file_put_contents(__DIR__ . '/../log/lvmama/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '订单信息推送录入数据库失败 ' . $order_id . PHP_EOL, FILE_APPEND);
}
}
$result = [
'response' => [
'state' => [
'code' => 1000,
'message' => '接收成功'
]
]
];
} else {
$result = [
'response' => [
'state' => [
'code' => 25,
'message' => '签名错误'
]
]
];
}
return '' . Util::arrayToXml($result);
}
public function actionTest1(){
// $time=time();
//// $url="http://api.lvmama.com/distributorApi/2.0/api//ticket/createOrder?appKey=ZHIZHUCHUXING&messageFormat=Xml×tamp=1510279231&sign=eb2c9be41fc8b923d1e81a6f7594f68a&request=1803444453622407308179612017-11-11453.00陈梦云18951971757陈梦云ID_CARD46010319920707034X18951971757";
// $sign=Util::SingForLvmama($time);
// ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; GreenBrowser)');
// $url='http://api.lvmama.com/distributorApi/2.0/api/ticket/createOrder?appKey=ZHIZHUCHUXING&messageFormat=Xml×tamp=1510292787&sign=6a9c59bb3b273b7e3b41e7baa23a003b&request=1804849453622407308179612017-11-11453.00丁倩13815403234丁倩ID_CARD33090319920909022613815403234';
// $result=file_get_contents($url);
// // $result=Util::OrderPayment(56614790,1803444,'56614790'.'1803444_'.time());
// print_r($result);
$result=Util::OrderPayment(1804849,56626116,'1804849'.'56626116_'.time());
print_r($result);
}
}