Login.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. namespace app\api\controller;
  3. use EasyWeChat\Factory;
  4. use Firebase\JWT\JWT;
  5. use library\Controller;
  6. use think\Db;
  7. use think\facade\Log;
  8. class Login extends Controller{
  9. /**
  10. * 小程序用户登录
  11. * */
  12. public function login(){
  13. $code = input('code');
  14. $param=$this->request->param();
  15. if(!isset($code) || !isset($param['nickname']) || !isset($param['sex']) || !isset($param['headimgurl'])){
  16. $this->error('参数错误','','400');
  17. }
  18. $app = Factory::miniProgram(config('app.mini_program'));
  19. $data = $app->auth->session($code);
  20. if(empty($data['openid'])){
  21. $this->error('微信登录失败','','400');
  22. }
  23. $member = Db::name('hy_user')->field('id')->where('openid',$data['openid'])->find();
  24. if(empty($member)){
  25. $insert['openid'] =$data['openid'];
  26. $insert['nickname'] = addslashes($param['nickname']);
  27. $insert['sex'] = addslashes($param['sex']);
  28. $insert['headimgurl'] =$param['headimgurl'];
  29. $insert['create_at']=date('Y-m-d H:i:s',time());
  30. $uid = Db::table('hy_user')->insertGetId($insert);
  31. }else{
  32. $udate['nickname'] =$param['nickname'];
  33. $udate['sex'] =$param['sex'];
  34. $udate['headimgurl'] =$param['headimgurl'];
  35. Db::table('hy_user')->where(['openid'=>$data['openid']])->update($udate);
  36. $uid = $member['id'];
  37. }
  38. if(empty($uid)){
  39. $this->error('请求失败,请稍后重试','','400');
  40. }
  41. $token_arr = [
  42. 'time' => Config('jwt_time')+time(),
  43. 'uid'=>$uid,
  44. ];
  45. $token = JWT::encode($token_arr, Config('jwt_key'), 'HS256');
  46. $this->success('登录成功',$token,'200');
  47. }
  48. /**
  49. * 支付回调
  50. * */
  51. public function notify(){
  52. $app = Factory::payment(Config('mini_program'));
  53. $response = $app->handlePaidNotify(function ($message, $fail){
  54. $order_no = $message['out_trade_no'];
  55. if (!$order_no){
  56. return true;
  57. }
  58. $order_info = Db::table('hy_order')->where('order_no',$order_no)->find();
  59. if (!$order_info){
  60. return true;
  61. }
  62. if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
  63. // 用户是否支付成功
  64. $log_data['is_pay'] = 1;
  65. $log_data['callback_data'] = json_encode($message);
  66. $log_data['pay_money'] = $message['cash_fee'];
  67. //if ($message['cash_fee'] != ($order_info['money']*100)){
  68. if((int)(round($order_info['money']* 100)) != (int)$message['total_fee']){
  69. $log_data['msg'] = '支付金额和实际金额不符';
  70. Db::table('hy_wxpay_log')->where('order_no',$order_no)->update($log_data);
  71. return true;
  72. }else{
  73. Db::table('hy_wxpay_log')->where('order_no',$order_no)->update($log_data);
  74. if ($message['result_code'] === 'SUCCESS') {
  75. $order_data['is_pay'] = 1;
  76. $order_data['pay_time'] = date('Y-m-d H:i:s',time());
  77. $oid = Db::table('hy_order')->where('order_no',$order_no)->value('id');
  78. Db::table('hy_order')->where('order_no',$order_no)->update($order_data);
  79. Db::table('hy_order_card')->where('oid',$oid)->update(['is_pay'=>1]);
  80. return true;
  81. // 用户支付失败
  82. } elseif ($message['result_code'] === 'FAIL') {
  83. return true;
  84. }
  85. }
  86. } else {
  87. return $fail('通信失败,请稍后再通知我');
  88. }
  89. });
  90. }
  91. /**
  92. * 未刷出金额支付回调
  93. * */
  94. public function brush_notify(){
  95. $app = Factory::payment(Config('mini_program'));
  96. $response = $app->handlePaidNotify(function ($message, $fail){
  97. $order_no = $message['out_trade_no'];
  98. if (!$order_no){
  99. return true;
  100. }
  101. $order_info = Db::table('hy_brush_order')->where('order_no',$order_no)->find();
  102. if (!$order_info){
  103. return true;
  104. }
  105. if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
  106. // 用户是否支付成功
  107. $log_data['is_pay'] = 1;
  108. $log_data['callback_data'] = json_encode($message);
  109. $log_data['pay_money'] = $message['cash_fee'];
  110. //if ($message['cash_fee'] != $order_info['money']*100){
  111. if((int)(round($order_info['money']* 100)) != (int)$message['total_fee']){
  112. $log_data['msg'] = '支付金额和实际金额不符';
  113. Db::table('hy_wxpay_log')->where('order_no',$order_no)->update($log_data);
  114. return true;
  115. }else{
  116. Db::table('hy_wxpay_log')->where('order_no',$order_no)->update($log_data);
  117. if ($message['result_code'] === 'SUCCESS') {
  118. $order_data['is_pay'] = 1;
  119. $order_data['pay_time'] = date('Y-m-d H:i:s',time());
  120. $oid = Db::table('hy_brush_order')->where('order_no',$order_no)->value('id');
  121. $is_up_order = Db::table('hy_brush_order')->where('order_no',$order_no)->update($order_data);
  122. $is_card = Db::table('hy_order_card')->where('boid',$oid)->update(['brush_pay'=>2]);
  123. return true;
  124. // 用户支付失败
  125. } elseif ($message['result_code'] === 'FAIL') {
  126. return true;
  127. }
  128. }
  129. } else {
  130. return $fail('通信失败,请稍后再通知我');
  131. }
  132. });
  133. }
  134. public function cc(){
  135. $order_info = Db::table('hy_order')->where('order_no','2021051551985751')->find();
  136. //var_dump($order_info['money']*100);
  137. $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"}';
  138. //var_dump(json_decode($json,true));
  139. $aa = json_decode($json,true);
  140. if((int)(round($order_info['money']* 100)) == (int)$aa['total_fee']){
  141. //if ($order_info['money'] == $aa['total_fee']){
  142. echo "<pre>";print_r('2222');exit;
  143. }else{
  144. echo "<pre>";print_r('aaa');exit;
  145. }
  146. }
  147. }