PaymentController.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: ring
  5. * Date: 2019/7/19
  6. * Time: 下午4:21
  7. */
  8. namespace App\Api;
  9. use App\Http\Controllers\Controller;
  10. use App\Models\Orders;
  11. use App\Models\Roses;
  12. use App\Models\Users;
  13. use App\Models\Vip;
  14. use App\Models\AppSettings;
  15. use Illuminate\Http\Request;
  16. use Illuminate\Support\Facades\Cache;
  17. use Illuminate\Support\Facades\DB;
  18. use Omnipay\Omnipay;
  19. use App\Admin\Im;
  20. class PaymentController extends Controller
  21. {
  22. /**
  23. * wechat notify
  24. * @param Request $request
  25. */
  26. public function notify(){
  27. $seting= $this->geSeting('wechat.com');
  28. $gateway=Omnipay::create('WechatPay');
  29. $gateway->setAppId($seting->access_key);
  30. $gateway->setMchId($seting->other);
  31. $gateway->setApiKey($seting->secret_key);
  32. $response = $gateway->completePurchase(['request_params' => file_get_contents('php://input')])->send();
  33. if ($response->isPaid()) {
  34. $data = $response->getRequestData();
  35. $out_trade_no = $data['out_trade_no'];
  36. $orders = Orders::query()->where('status',0)->where('sn',$out_trade_no)->first();
  37. if ($orders) {
  38. if($orders->type==1){//vip
  39. $this->vip($orders);
  40. }
  41. if(!$orders->type){//冲玫瑰
  42. $this->rose($orders);
  43. }
  44. DB::table('love_orders')->where('id',$orders->id)->where('sn', $out_trade_no)->update(['status'=>1]);
  45. }
  46. exit("<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>");
  47. }else{
  48. info('pay error');
  49. return false;
  50. }
  51. }
  52. /**
  53. * alipay notify
  54. * @param Request $request
  55. */
  56. public function alipaynotify(){
  57. $seting= $this->geSeting('alipay.com');
  58. $gateway = Omnipay::create('Alipay_AopApp');
  59. $gateway->setSignType('RSA2');
  60. $gateway->setAppId($seting->access_key);
  61. $gateway->setPrivateKey($seting->secret_key);
  62. $gateway->setAlipayPublicKey($seting->other);
  63. $request = $gateway->completePurchase();
  64. $request->setParams($_POST);
  65. try {
  66. $response = $request->send();
  67. if($response->isPaid()){
  68. $data =$response->getData();
  69. $out_trade_no = $data['out_trade_no'];
  70. $orders = Orders::query()->where('status',0)->where('sn',$out_trade_no)->first();
  71. if ($orders) {
  72. if($orders->type==1){//vip
  73. $this->vip($orders);
  74. }
  75. if(!$orders->type){//冲玫瑰
  76. $this->rose($orders);
  77. }
  78. DB::table('love_orders')->where('id',$orders->id)->where('sn', $out_trade_no)->update(['status'=>1]);
  79. }
  80. die('success');
  81. }else{
  82. die('fail');
  83. }
  84. } catch (\Exception $e) {
  85. die('fail');
  86. }
  87. }
  88. /**
  89. * 增加 vip
  90. * @param $orders
  91. */
  92. private function vip($orders){
  93. $vip=Vip::where('id',$orders->xid)->first();
  94. $user=Users::where('id',$orders->uid)->first();
  95. $user->vip=1;
  96. $user->vip_time=$user->vip_time+86400*($vip->day+$vip->give_day);
  97. $user->rose=$user->rose+$vip->give_rose;
  98. $user->save();
  99. // $this->portrait_set($orders->uid,['Tag'=>'Tag_Profile_IM_Level','Value'=>1]);
  100. Cache::forget('My'.$orders->uid);
  101. Cache::forget('user'.$orders->uid);
  102. }
  103. /**
  104. * 增加rose
  105. * @param $orders
  106. */
  107. private function rose($orders){
  108. $roses=Roses::where('id',$orders->xid)->first();
  109. $user=Users::where('id',$orders->uid)->first();
  110. $user->rose=$user->rose+$roses->give_rose+$roses->rose;
  111. if($roses->give_vip_day){
  112. if($user->vip){
  113. $user->vip_time=$user->vip_time+86400*$roses->give_vip_day;
  114. }else{
  115. $user->vip=1;
  116. $user->vip_time=time()+86400*$roses->give_vip_day;
  117. }
  118. //$this->portrait_set($orders->uid,['Tag'=>'Tag_Profile_IM_Level','Value'=>1]);
  119. }
  120. $user->save();
  121. Cache::forget('My'.$orders->uid);
  122. Cache::forget('user'.$orders->uid);
  123. }
  124. private function geSeting($key){
  125. $seting = Cache::rememberForever($key, function() use ($key){
  126. return AppSettings::where('sole',$key)->where('enabled',1)->first();
  127. });
  128. return $seting;
  129. }
  130. }