123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <?php
- namespace app\api\controller;
- use EasyWeChat\Factory;
- use Firebase\JWT\JWT;
- use library\Controller;
- use think\Db;
- use think\facade\Log;
- class Login extends Controller{
- /**
- * 小程序用户登录
- * */
- public function login(){
- $code = input('code');
- $param=$this->request->param();
- if(!isset($code) || !isset($param['nickname']) || !isset($param['sex']) || !isset($param['headimgurl'])){
- $this->error('参数错误','','400');
- }
- $app = Factory::miniProgram(config('app.mini_program'));
- $data = $app->auth->session($code);
- if(empty($data['openid'])){
- $this->error('微信登录失败','','400');
- }
- $member = Db::name('hy_user')->field('id')->where('openid',$data['openid'])->find();
- if(empty($member)){
- $insert['openid'] =$data['openid'];
- $insert['nickname'] = addslashes($param['nickname']);
- $insert['sex'] = addslashes($param['sex']);
- $insert['headimgurl'] =$param['headimgurl'];
- $insert['create_at']=date('Y-m-d H:i:s',time());
- $uid = Db::table('hy_user')->insertGetId($insert);
- }else{
- $udate['nickname'] =$param['nickname'];
- $udate['sex'] =$param['sex'];
- $udate['headimgurl'] =$param['headimgurl'];
- Db::table('hy_user')->where(['openid'=>$data['openid']])->update($udate);
- $uid = $member['id'];
- }
- if(empty($uid)){
- $this->error('请求失败,请稍后重试','','400');
- }
- $token_arr = [
- 'time' => Config('jwt_time')+time(),
- 'uid'=>$uid,
- ];
- $token = JWT::encode($token_arr, Config('jwt_key'), 'HS256');
- $this->success('登录成功',$token,'200');
- }
- /**
- * 支付回调
- * */
- public function notify(){
- $app = Factory::payment(Config('mini_program'));
- $response = $app->handlePaidNotify(function ($message, $fail){
- $order_no = $message['out_trade_no'];
- if (!$order_no){
- return true;
- }
- $order_info = Db::table('hy_order')->where('order_no',$order_no)->find();
- if (!$order_info){
- return true;
- }
- if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
- // 用户是否支付成功
- $log_data['is_pay'] = 1;
- $log_data['callback_data'] = json_encode($message);
- $log_data['pay_money'] = $message['cash_fee'];
- //if ($message['cash_fee'] != ($order_info['money']*100)){
- if((int)(round($order_info['money']* 100)) != (int)$message['total_fee']){
- $log_data['msg'] = '支付金额和实际金额不符';
- Db::table('hy_wxpay_log')->where('order_no',$order_no)->update($log_data);
- return true;
- }else{
- Db::table('hy_wxpay_log')->where('order_no',$order_no)->update($log_data);
- if ($message['result_code'] === 'SUCCESS') {
- $order_data['is_pay'] = 1;
- $order_data['pay_time'] = date('Y-m-d H:i:s',time());
- $oid = Db::table('hy_order')->where('order_no',$order_no)->value('id');
- Db::table('hy_order')->where('order_no',$order_no)->update($order_data);
- Db::table('hy_order_card')->where('oid',$oid)->update(['is_pay'=>1]);
- return true;
- // 用户支付失败
- } elseif ($message['result_code'] === 'FAIL') {
- return true;
- }
- }
- } else {
- return $fail('通信失败,请稍后再通知我');
- }
- });
- }
- /**
- * 未刷出金额支付回调
- * */
- public function brush_notify(){
- $app = Factory::payment(Config('mini_program'));
- $response = $app->handlePaidNotify(function ($message, $fail){
- $order_no = $message['out_trade_no'];
- if (!$order_no){
- return true;
- }
- $order_info = Db::table('hy_brush_order')->where('order_no',$order_no)->find();
- if (!$order_info){
- return true;
- }
- if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
- // 用户是否支付成功
- $log_data['is_pay'] = 1;
- $log_data['callback_data'] = json_encode($message);
- $log_data['pay_money'] = $message['cash_fee'];
- //if ($message['cash_fee'] != $order_info['money']*100){
- if((int)(round($order_info['money']* 100)) != (int)$message['total_fee']){
- $log_data['msg'] = '支付金额和实际金额不符';
- Db::table('hy_wxpay_log')->where('order_no',$order_no)->update($log_data);
- return true;
- }else{
- Db::table('hy_wxpay_log')->where('order_no',$order_no)->update($log_data);
- if ($message['result_code'] === 'SUCCESS') {
- $order_data['is_pay'] = 1;
- $order_data['pay_time'] = date('Y-m-d H:i:s',time());
- $oid = Db::table('hy_brush_order')->where('order_no',$order_no)->value('id');
- $is_up_order = Db::table('hy_brush_order')->where('order_no',$order_no)->update($order_data);
- $is_card = Db::table('hy_order_card')->where('boid',$oid)->update(['brush_pay'=>2]);
- return true;
- // 用户支付失败
- } elseif ($message['result_code'] === 'FAIL') {
- return true;
- }
- }
- } else {
- return $fail('通信失败,请稍后再通知我');
- }
- });
- }
- public function cc(){
- $order_info = Db::table('hy_order')->where('order_no','2021051551985751')->find();
- //var_dump($order_info['money']*100);
- $json = '{"appid":"wx1536aaba5fff19c4","bank_type":"OTHERS","cash_fee":"28440","fee_type":"CNY","is_subscribe":"N","mch_id":"1608316958","nonce_str":"609fc1086063e","openid":"oU7I05S8wkcAlil65SbR18isBMtc","out_trade_no":"2021051551985751","result_code":"SUCCESS","return_code":"SUCCESS","sign":"228E3A23151AF7255FADED38FBC31FC3","time_end":"20210515203947","total_fee":"28440","trade_type":"JSAPI","transaction_id":"4200001033202105152422258343"}';
- //var_dump(json_decode($json,true));
- $aa = json_decode($json,true);
- if((int)(round($order_info['money']* 100)) == (int)$aa['total_fee']){
- //if ($order_info['money'] == $aa['total_fee']){
- echo "<pre>";print_r('2222');exit;
- }else{
- echo "<pre>";print_r('aaa');exit;
- }
- }
- }
|