PHP控制器示例
<?php
namespace webapi\modules\pm\controllers;
use common\extensions\CrossController;
use common\widgets\Log;
use Qingbohf\common\CurlHelper;
/**
* 订单请求示例
* Class AutoOpenController
* @package webapi\modules\pm\controllers
*/
class AutoOpenController extends CrossController
{
/**
* 固定路由 : /api/pm/auto-open/accept-order-for-url
* 场景订单审批通过时调研提前获取访问链接
* 输入:
* {"order":{"orderId":"202303170001","createUserid":"345441411523058159","createUsername":"姚瑞琳","customerName":"测试2","customerCompany":"测试2的开票信息1010(改)","customerId":"178977204","projectName":"123","process":"order_excute","processName":"订单执行","status":"311","orderType":"1","statusI18n":"执行办理中,归档审批中","orderTypeI18n":"正式订单","standardPrice":"175.00","assessPrice":"0.00"},"contract":{"contractId":"829","excuteTypeI18n":"全款证明执行","contactPrice":"2.0000","realIncomeJson":[{"productName":"舆情专报-常规版本","productAlias":"REP0239","productIsStandard":"1","amount":"1","cateNameI18n":"智能数据分析-专报","realIncome":"1"},{"productName":"标准产品测试-应","productAlias":"SER0387","productIsStandard":"1","amount":"1","cateNameI18n":"服务-代运营","realIncome":"1"}],"serviceStart":"2023-03-17 09:45:31","serviceEnd":"2023-03-17 09:45:31"},"autoOpenUnionID":"202303170001_0_1772","productInfo":{"orderInfoId":"1772","productId":"387","productName":"标准产品测试-应","productAlias":"SER0387","productIsStandard":"1","parentCateName":"服务","cateName":"代运营","amount":"1","price":"25.0000","productM":[{"productMId":"1061","productMPrice":"10","productMName":"基础模块2","productMBillingType":"unit","productMAmount":[{"flag":"*","num":"1","val":"套"}],"basePrice":"5.0000","extraPrice":"5.0000"},{"productMId":"1060","productMPrice":"15","productMName":"基础模块","productMBillingType":"unit","productMAmount":[{"flag":"*","num":"1","val":"套"}],"basePrice":"10.0000","extraPrice":"5.0000"}]},"extend":[]}
* 固定输出:
* {"code":10000,"msg":"success","data":{"url":"http://www.baidu.com"}}
* 接受订单系统推送来的订单数据并返回自动开通的Url供订单系统调用
*/
public function actionAcceptOrderForUrl()
{
$post = \Yii::$app->request->post();
Log::write("debug.log", json_encode($post, JSON_UNESCAPED_UNICODE));
$res = ["url" => "http://www.baidu.com"];
return jsonSuccessReturn($res);
}
/**
* 固定路由 : /api/pm/auto-open/accept-order-for-result
* 输入:post
* {"autoOpenUnionID":"202302240002_0_1679"}
* 固定输出:
* {"code":10000,"msg":"success","data":{"status":1,"statusMsg":"状态提示文字","mobileList":[{"mobile":"18600000000","msg":"开通成功"},{"mobile":"18600000001","msg":"开通失败"},{"mobile":"18600000002","msg":"开通成功"},{"mobile":"18600000003","msg":"开通成功"}],"domainList":[{"domain":"www.baidu.com","msg":"开通成功"},{"domain":"www.baidu2.com","msg":"开通失败"}]}}
* 接受订单系统推送来的订单数据并返回开通结果
*/
public function actionAcceptOrderForResult()
{
$post = \Yii::$app->request->post();
$res = [
"status" => 1,//开通总状态 1:开通成功 2:开通失败 3:等待中
"statusMsg" => "状态提示文字,订单系统告知商务用",
"mobileList" => [//开通的手机号详情
["mobile" => "18600000000", "msg" => "开通成功"],
["mobile" => "18600000001", "msg" => "开通失败"],
["mobile" => "18600000002", "msg" => "开通成功"],
["mobile" => "18600000003", "msg" => "开通成功"]
],
"domainList" => [//开通的域名详情
['domain' => "www.baidu.com", "msg" => "开通成功"],
['domain' => "www.baidu2.com", "msg" => "开通失败"]
],
];
return jsonSuccessReturn($res);
}
/**
* 固定路由 : /api/pm/auto-open/accept-order-cancel
* 场景:订单被取消会对当前路由推送消息
* 输入:post
* {"autoOpenUnionID":"202302240002_0_1679"}
* 固定输出:
* {"code":10000,"msg":"success","data":[]}
* 接受订单系统推送来的订单数据并返回正常响应结果
*/
public function actionAcceptOrderCancel()
{
$post = \Yii::$app->request->post();
return jsonSuccessReturn([]);
}
/**
* 固定路由 : /api/pm/auto-open/accept-order-done
* 输入:post
* {"autoOpenUnionID":"202302240002_0_1679"}
* 固定输出:
* {"code":10000,"msg":"success","data":[]}
* 场景:当前订单产品被执行人标注为已完成会对当前路由推送消息
* 接受订单系统推送来的订单数据并返回正常响应结果
*/
public function actionAcceptOrderDone()
{
$post = \Yii::$app->request->post();
return jsonSuccessReturn([]);
}
/**
* 示例A
* 实时获取订单的更多信息
*/
public function actionGetOrderMoreDetail()
{
/* @description: 验签规则 @author Jius YING @date 2023/3/15 15:55 */
$appKey = 'testOpenApi';//订单系统分配的key
$appSecret = 'skkkkasfasnfasfnasf';//订单系统分配的secret
$timestamp = time();
$sign = md5(md5($appSecret . substr($timestamp, 0, 8)));
$domain = YII_ENV == 'pro' ? "http://digital.gstai.com" : "http://digitaltest.gstai.com";
$url = $domain . "/api/pm/open/get-order-info-from-auto-open";
$url .= "?appKey={$appKey}&sign={$sign}×tamp={$timestamp}";
/* @description: 业务参数 @author Jius YING @date 2023/3/15 15:54 */
$autoOpenUnionID = "202303080002_308_1748";
$autoOpenUnionID = "202302240002_0_1679";
$url .= "&autoOpenUnionID={$autoOpenUnionID}";
$res = CurlHelper::httpRequest($url, [], 'GET');
$res = json_decode($res, true);
return jsonSuccessReturn($res);
}
/**
* 示例B
* 通过订单系统给用户发送钉钉通知消息
*/
public function actionSendMessageByPm()
{
$appKey = 'testOpenApi';
$appSecret = 'skkkkasfasnfasfnasf';
$timestamp = time();
$sign = md5(md5($appSecret . substr($timestamp, 0, 8)));
$domain = YII_ENV == 'pro' ? "http://digital.gstai.com" : "http://digitaltest.gstai.com";
$pushData = [];
$pushData['timestamp'] = $timestamp;
$pushData['appKey'] = $appKey;
$pushData['sign'] = $sign;
/* @description: 业务参数 @author Jius YING @date 2023/3/15 15:55 */
$pushData['mobile'] = ['18602500579'];//测试站消息可能收不到,请联系订单系统获取权限
$pushData['content'] = '这是一段测试通知,请忽略';
$json_data = json_encode($pushData, JSON_UNESCAPED_UNICODE);
$headers = ['Content-Type: application/json', 'Content-Length: ' . strlen($json_data)];
$resJson = CurlHelper::httpRequest($url, $headers, 'POST', [], $json_data, 3);
$res = json_decode($resJson, true);
return jsonSuccessReturn($res);
}
}
修改于 2023-03-17 03:00:07