5242880)//大于5M自动切换 { rename($notify_file, $log_base_dir.'sandpay_notify_'.date('Y_m_d_H_i_s').'.txt'); } if(!file_exists($notify_file)) { @touch($notify_file); @chmod($notify_file, 0770); } }*/ /** * 支付成功(插件) */ public function notify() { //$input_post_data = json_encode($_POST); //filePut('[wallet][paySucc]充值参数 recharge money post'.$input_post_data); $postData = isset($_POST['data']) ? $_POST['data'] : []; $sign = isset($_POST['sign']) ? $_POST['sign'] : ''; filePut('[wallet][paySucc]充值参数 recharge money data:'.$postData."\n".' sign:'.$sign); /*$dataArr = [ "head"=>[ "version"=>"1.0", "respTime"=>"20230913093602", "respCode"=>"000000", "respMsg"=>"成功", ], "body"=>[ "mid"=>"6888806122762", "orderCode"=>"P23091309351693000123", "tradeNo"=>"P23091309351693000123", "clearDate"=>"20230913", "totalAmount"=>"000000000001", "orderStatus"=>"1", "payTime"=>"20230913093602", "settleAmount"=>"000000000001", "buyerPayAmount"=>"000000000001", "discAmount"=>"000000000000", "txnCompleteTime"=>"20230913093601", "payOrderCode"=>"20230913001224810000000000018593", "accLogonNo"=>"odk6K6wzq1m0sKwDD98Vv0xzYsIo", "accNo"=>"", "midFee"=>"000000000000", "extraFee"=>"000000000000", "specialFee"=>"000000000000", "plMidFee"=>"000000000000", "bankserial"=>"4200001938202309134493832643", "externalProductCode"=>"00002021", "cardNo"=>"", "creditFlag"=>"", "bid"=>"", "benefitAmount"=>"000000000000", "remittanceCode"=>"", "respTime"=>"20230912141303", "extend"=>[ "type" => "gold", ] ], ]; $data = ["extend"=>"", "charset"=>"UTF-8", "data"=>$dataArr, "sign"=>"hoCYCLfEmbHjoXg8KHLYU+TCwAh8HrilFUfk7x9GoXAHidKRGu+\/5CkUlC1AqY0OeD3EJKu3ckyqLFUZF4G5PbzFbV27DYNeaRNnbU8htmwCV06a9SgOumv79EJGZ78x2FmNcPL8xu8IhPoOzorLtG5uIifSbsPK4283X09ikb8wTeNFGMMEy+MioftEoOv892kFs5wbNaazJNp8IdAjRwB5wYeMJc28hfnSQfg9SsR5zpqTsMkbiQoybyVdF8msWjlXC1TD5+y33zj77If\/bOK5obSUCrdHZt7S3V5bN2HqyNtFPEK3Ipn2p\/lu3yyo9fFKC5WtgO8G20OVYCu7dQ==", "signType"=>"01", ]; $plainText = json_encode($dataArr);*/ //$plainText = '{"extend":"","charset":"UTF-8","data":"{\"head\":{\"version\":\"1.0\",\"respTime\":\"20230913093602\",\"respCode\":\"000000\",\"respMsg\":\"\u6210\u529f\"},\"body\":{\"mid\":\"6888806122762\",\"orderCode\":\"P23091309351693000123\",\"tradeNo\":\"P23091309351693000123\",\"clearDate\":\"20230913\",\"totalAmount\":\"000000000001\",\"orderStatus\":\"1\",\"payTime\":\"20230913093602\",\"settleAmount\":\"000000000001\",\"buyerPayAmount\":\"000000000001\",\"discAmount\":\"000000000000\",\"txnCompleteTime\":\"20230913093601\",\"payOrderCode\":\"20230913001224810000000000018593\",\"accLogonNo\":\"odk6K6wzq1m0sKwDD98Vv0xzYsIo\",\"accNo\":\"\",\"midFee\":\"000000000000\",\"extraFee\":\"000000000000\",\"specialFee\":\"000000000000\",\"plMidFee\":\"000000000000\",\"bankserial\":\"4200001938202309134493832643\",\"externalProductCode\":\"00002021\",\"cardNo\":\"\",\"creditFlag\":\"\",\"bid\":\"\",\"benefitAmount\":\"000000000000\",\"remittanceCode\":\"\",\"extend\":\"{\\\"type\\\":\\\"gold\\\"}\"}}","sign":"hoCYCLfEmbHjoXg8KHLYU+TCwAh8HrilFUfk7x9GoXAHidKRGu+\/5CkUlC1AqY0OeD3EJKu3ckyqLFUZF4G5PbzFbV27DYNeaRNnbU8htmwCV06a9SgOumv79EJGZ78x2FmNcPL8xu8IhPoOzorLtG5uIifSbsPK4283X09ikb8wTeNFGMMEy+MioftEoOv892kFs5wbNaazJNp8IdAjRwB5wYeMJc28hfnSQfg9SsR5zpqTsMkbiQoybyVdF8msWjlXC1TD5+y33zj77If\/bOK5obSUCrdHZt7S3V5bN2HqyNtFPEK3Ipn2p\/lu3yyo9fFKC5WtgO8G20OVYCu7dQ==","signType":"01"}'; //echo '
';var_dump($plainText);exit; //提取数据 $plainText = $postData; $dataArray = json_decode($postData,true); $head = isset($dataArray['head']) ? $dataArray['head'] : []; $body = isset($dataArray['body']) ? $dataArray['body'] : []; $respCode = isset($head['respCode']) ? $head['respCode'] : '000001'; $orderStatus = isset($body['orderStatus']) ? $body['orderStatus'] : '0'; $orderCode = isset($body['orderCode']) ? $body['orderCode'] : ''; $extend = isset($body['extend']) ? $body['extend'] : ''; $extendType = ''; if (!empty($extend)) { $extendArr = json_decode($extend,true); $extendType = isset($extendArr['type']) ? $extendArr['type'] : ''; } //验签 1是正确 $sandpay = new \app\common\library\Sandpay(); /*$plainText = '{"head":{"version":"1.0","respTime":"20230913110455","respCode":"000000","respMsg":"成功"},"body":{"mid":"6888806122762","orderCode":"P23091311040769547523","tradeNo":"P23091311040769547523","clearDate":"20230913","totalAmount":"000000000001","orderStatus":"1","payTime":"20230913110455","settleAmount":"000000000001","buyerPayAmount":"000000000001","discAmount":"000000000000","txnCompleteTime":"20230913110455","payOrderCode":"20230913001241710000000000029923","accLogonNo":"odk6K6wzq1m0sKwDD98Vv0xzYsIo","accNo":"","midFee":"000000000000","extraFee":"000000000000","specialFee":"000000000000","plMidFee":"000000000000","bankserial":"4200001942202309131368220541","externalProductCode":"00002021","cardNo":"","creditFlag":"","bid":"","benefitAmount":"000000000000","remittanceCode":"","extend":"{\"type\":\"gold\"}"}}'; $sign = 'Vs2JTo57FwdeT78Lxi7Sgj3XLw48+XxUZblSpVnAQkpgvPqai3m4rkobG8hfuUnYCU/yXxDbYU8hEEfc9rDryT5sFPmmTYjOISJnc6jNDBs6SpeDQhAvnpiiXgZ3/hDWp8ehsgPJbHv5nqlbzLsJM1+WhfW86sfJt70oMiffQ5v9G192zerJWXF3jL9dyLM0WmG2icr9qHz12ZPFyYYonUWRIVc+jcZ0R0qrHD7wAPx+JzbK9crXnTWu1lHjOwcVUrYtMcVDv84wSxl8NnofNUCSMSxVSYHh8ZvgPis7WtgwBcy9XfD30Jux/a/V5oIbN+7yzTlEBIL9pHZb31O4fg==';*/ $encrypt_str = $sandpay->verify($plainText, $sign); if($encrypt_str != 1){ filePut('[wallet][paySucc]充值入账更新余额失败 recharge money fail'.$orderCode."\n".' data:'.$postData."\n".' sign:'.$sign); echo 'Fail';exit; } //状态验证 if($respCode != '000000'){ filePut('[wallet][paySucc]验证回调状态失败 respCode'.$orderCode); echo 'Fail';exit; } if($orderStatus != '1'){ filePut('[wallet][paySucc]验证回调订单状态 recharge money fail orderStatus'.$orderCode); echo 'Fail';exit; } //查询订单信息 $PayResult = Db::name('pay_order'); $where['pay_no'] = $orderCode; $order_info = $PayResult->where($where)->find(); if ($order_info['status'] == 1) { filePut('[wallet][paySucc]充值入账更新余额失败 recharge money fail status已更新过'.$orderCode); echo 'respCode=000000';exit; } //构建支付订单处理结果信息 //$_data['transaction_id'] = isset($data['body']['payOrderCode']) ? $data['body']['payOrderCode'] : ''; //因为文档说不一定有,所以不填了 $_data['status'] = 2; $result = $PayResult->where($where)->setField($_data); if ($result || 1) { //你可以在此编写订单逻辑 $payEventWhere['pay_no'] = $orderCode; $payEvent = Db::name('pay_event')->where($payEventWhere)->find(); $args = isset($payEvent['args']) ? $payEvent['args'] : ''; $args = json_decode($args,true); $rechargeM = new \app\common\model\Recharge(); if ($extendType == 'gold') { $payRes = $rechargeM->goldpaysucc($orderCode,$args); $payTypeStr = '充值'; } elseif($extendType == 'vip') { $payRes = $rechargeM->vippaysucc($orderCode,$args); $payTypeStr = 'vip'; } else { $payRes = false; $payTypeStr = '未知支付类型'; } if(!$payRes){ filePut('[wallet][paySucc]'.$payTypeStr.'更新失败请查看问题'.$orderCode); exit; } filePut('[wallet][paySucc]回调成功'.$orderCode); echo 'respCode=000000';exit; } } }