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;
        }

    }


}