"transaction", "algorithm"=> "AEAD_AES_256_GCM", "ciphertext"=> "//hUHdektloiqMVIQ0nOEZj91e2oIEUNZ7EtnLdLnjriyKQwKes9VcEvfmFYMnTFXr1Lg/mFHJaNE2C4hZrVykVpiT0aahWSV4pn1m9867LOwXWbE2uhMMPXtDLT9bfYT3gzXbxkdo\/LkOB7Bke20MnEq3mgSkPbRytyQ96RhZGPsqa9S7QiycshC82Hw\/QhGwqvLsUOdCP8y6yt28\/MPJc+VB1sSi\/hIDKIlYFxb7TIWRtzpIu057ICyNHtPXRzCEUEtK7t9gywxYJd6kXYEKQqOTqUlXoHAHQt4lIHN27TCuAE0KujE1+ub5CDYEQl4gG8lX\/kDgEqvKVSzCjVhXWL2VBG41Q0Hs+O5SpTYHkhhKDLEnEopEOAs\/h7NUVAhUHpM1TTYxWp9hL2q\/es6sGIW15hXOv5GarqNL3SI\/aTuIsYP\/wrinBLbe8yjwqpn0TFtMeCa7deuTlWF\/xBXmDfnH\/je+vS6cofeZeKJbCspWZ0upBTi4JARtiQL7bEvjnpVhgApn2iZ0\/Ta0KUmg6dy52W1lsdJn81ACQxUxD8gCdtfqwFtBcvBRbxR1uPCqQEBJo2NWrKqtq1409H7F4WtEbqsJUBHaR4LQAoiz49rw1fW06U5UBmbRUMBT0c+4GD3iRUdhRo6WsoSvld5LbY6bIzSdwcuAZ8jfWTBtY7qqw4i9fd6UlrX4WYTZJOKW80RmgIyPOCiMbA6dZTnGbfcs3LMw==", "associated_data"=> "transaction", "nonce"=> "jyvk10O4xN5a" ];*/ // $cc = new NotifyController(); //$result = $cc->pay('index',$data ); unset($data['s']); //ksort($data); $signStr = "1626672721\nOpMHKndhcOTAf0OsuQRGpr80o4WzUHXo\n".json_encode($data)."\n"; var_dump($signStr); $result = WechatService::checkJsapiNotifyV3($signStr,$json['sign']); 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'); $signStr = "{$timestamp}\n{$nonce}\n{$body}\n"; $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('回调参数错误'); } // 解密 $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'; } }