| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Helpers\Jwt;
- use App\Http\Controllers\Api\v1\NotifyController;
- use App\Models\MemberModel;
- use App\Models\UserModel;
- use App\Services\ConfigService;
- use App\Services\DevicesService;
- use App\Services\NotifyService;
- use App\Services\RedisService;
- use App\Services\SnapshotService;
- use App\Services\WechatService;
- use Illuminate\Support\Facades\Session;
- /**
- * 测试控制器类
- * @author wesmiler
- * @since 2020/11/10
- * Class TestController
- * @package App\Http\Controllers
- */
- class TestController extends BaseController
- {
- /**
- * 构造函数
- * @author wesmiler
- * @since 2020/11/11
- * TestController constructor.
- */
- public function __construct()
- {
- parent::__construct();
- }
- public function index(){
- $result = WechatService::getCerts();
- var_dump($result);
- return message(1005,'true',['ddd'=> []]);
- }
- public function lamp(){
- $orderSn = request()->get('order_sn');
- return DevicesService::make()->catchLamp($orderSn);
- }
- public function lamp1(){
- $colors = ['黄色','红色','绿色','白色'];
- shuffle($colors);
- $data = [
- 'CommandType'=> 'OpenLed', // 执行命令方式:OpenLed-开灯,CloseLed-关灯,QuitStatus-查询状态
- 'MD'=> 1, // 机器号设备号
- 'MDPORT'=> 1, // 设备端口:暂与设备号一致
- 'LEDID'=> 4, // 亮灯灯号1-498对应1号设备,498后为设备2
- 'Color'=> urlencode($colors[0]), // 颜色
- 'OrderNo'=> 'G202107152132315', // 订单号
- ];
- $dataStr = [];
- foreach($data as $k => $v){
- $dataStr[] = $k.'='.$v;
- }
- // 调用亮灯接口处理
- $dataStr = implode('&', $dataStr);
- var_dump($dataStr);
- $headers = ["Content-Type: application/x-www-form-urlencoded; charset=UTF-8"];
- $apiUrl = ConfigService::make()->getConfigByCode('gd_api_url').'/LEDControl.ashx';
- $result = httpHeaderRequest($apiUrl, $dataStr,'post',$headers,'text');
- var_dump($result);
- return $result;
- }
- /**
- * 支付回调
- */
- public function pay($scene){
- $postData = request()->all();
- $sign = request()->headers->get('Wechatpay-Signature');
- $nonce = request()->headers->get('Wechatpay-Nonce');
- $timestamp = request()->headers->get('Wechatpay-Timestamp');
- $body = file_get_contents('php://input');
- $id = isset($postData['id'])? '_'.$postData['id'] : '';
- RedisService::set('caches:payments:'.$scene.':result'.$id.'_'.date('YmdHis'), ['result'=> $postData,'sign'=> $sign,'date'=> date('Y-m-d H:i:s')], 7200);
- $postData = isset($postData['resource'])? $postData['resource'] : [];
- if(empty($scene) || empty($postData)){
- return NotifyService::make()->rebackMsg('回调参数错误');
- }
- // 解密
- $signStr = "{$timestamp}\n{$nonce}\n{$body}\n";
- $ciphertext = isset($postData['ciphertext'])? $postData['ciphertext'] : '';
- RedisService::set('caches:payments:'.$scene.':result'.$id.'_ciphertext', ['result'=> $postData,'date'=> date('Y-m-d H:i:s')], 7200);
- if(empty($ciphertext)){
- return NotifyService::make()->rebackMsg('解密数据不存在');
- }
- $postData = WechatService::decryptNotifyData($postData);
- $postData = $postData? json_decode($postData, true) : [];
- // var_dump($postData);
- $outTradeNo = isset($postData['out_trade_no']) ? $postData['out_trade_no'] : '';
- if(empty($postData) || empty($outTradeNo)){
- return NotifyService::make()->rebackMsg('获取解密数据失败');
- }
- RedisService::set('caches:payments:'.$scene.':result'.$id.'_'.$outTradeNo, ['result'=> $postData], 7200);
- RedisService::set('caches:payments:'.$scene.':check'.$id.'_'.$outTradeNo, ['data'=> $postData,'signStr'=> $signStr,'sign'=> $sign], 3600);
- if (WechatService::checkJsapiNotifyV3($signStr, $sign, $postData)) {
- switch($scene){
- case 'index': // 供灯订单
- return NotifyService::make()->notifyGongdeng($postData, $outTradeNo);
- case 'recharge': // 充值
- break;
- default:
- break;
- }
- }
- return 'fail';
- }
- }
|