Payment.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. namespace app\index\controller;
  3. use addons\epay\library\Service;
  4. use app\common\controller\Frontend;
  5. use app\common\model\MobileOrder;
  6. use think\Db;
  7. /**
  8. * 第三方登录控制器
  9. */
  10. class Payment extends Frontend
  11. {
  12. protected $noNeedLogin='*';
  13. /**
  14. * 支付成功回调
  15. */
  16. public function notify($type,$order_no)
  17. {
  18. $data=Service::checkNotify($type);
  19. if (!$data) {
  20. echo '签名错误';
  21. return;
  22. }
  23. $name="payment/$type/{$order_no}";
  24. user_log($name,compact('type','order_no','data'));
  25. Db::startTrans();
  26. $payment=\app\common\model\Payment::where('order_no',$order_no)->lock(true)->find();
  27. if(!$payment){
  28. user_log($name,"支付没找到");
  29. Db::rollback();
  30. return '支付没找到';
  31. }
  32. if($payment['pay_time']){
  33. user_log($name,"支付已支付");
  34. Db::rollback();
  35. return '支付已支付';
  36. }
  37. $payment['pay_time']=time();
  38. if(!$payment->save()){
  39. user_log($name,"支付保存失败");
  40. Db::rollback();
  41. return '支付保存失败';
  42. }
  43. Db::commit();
  44. Db::startTrans();
  45. $mobileOrder=MobileOrder::where('id',$payment['mobile_order_id'])->find();
  46. if(!$mobileOrder){
  47. user_log($name,"手机订单不存在");
  48. Db::rollback();
  49. return '手机订单不存在';
  50. }
  51. if($mobileOrder['pay_time']){
  52. user_log($name,"手机订单已支付");
  53. Db::rollback();
  54. return '手机订单已支付';
  55. }
  56. $mobileOrder['status']=MobileOrder::STATUS_WAIT_SEND;
  57. if($type=='wechat'){
  58. $mobileOrder['pay_type']=1;
  59. $mobileOrder['pay_no']=$data['transaction_id'];
  60. }else{
  61. $mobileOrder['pay_type']=2;
  62. }
  63. $mobileOrder['payment_id']=$payment['id'];
  64. if(!$mobileOrder->save()){
  65. user_log($name,"手机订单保存失败");
  66. Db::rollback();
  67. return '手机订单保存失败';
  68. }
  69. Db::commit();
  70. //你可以在这里你的业务处理逻辑,比如处理你的订单状态、给会员加余额等等功能
  71. //下面这句必须要执行,且在此之前不能有任何输出
  72. echo "success";
  73. return;
  74. }
  75. /**
  76. * 支付成功回调
  77. */
  78. public function notify_jd($order_no)
  79. {
  80. $name="pay/jd/{$order_no}";
  81. user_log($name,compact('type','order_no'));
  82. user_log($name,compact('type','order_no','data'));
  83. Db::startTrans();
  84. $payment=\app\common\model\Payment::where('order_no',$order_no)->lock(true)->find();
  85. if(!$payment){
  86. user_log($name,"支付没找到");
  87. Db::rollback();
  88. return '支付没找到';
  89. }
  90. if($payment['pay_time']){
  91. user_log($name,"支付已支付");
  92. Db::rollback();
  93. return '支付已支付';
  94. }
  95. $payment['pay_time']=time();
  96. if(!$payment->save()){
  97. user_log($name,"支付保存失败");
  98. Db::rollback();
  99. return '支付保存失败';
  100. }
  101. Db::commit();
  102. Db::startTrans();
  103. $mobileOrder=MobileOrder::where('id',$payment['mobile_order_id'])->find();
  104. if(!$mobileOrder){
  105. user_log($name,"手机订单不存在");
  106. Db::rollback();
  107. return '手机订单不存在';
  108. }
  109. if($mobileOrder['pay_time']){
  110. user_log($name,"手机订单已支付");
  111. Db::rollback();
  112. return '手机订单已支付';
  113. }
  114. $mobileOrder['status']=MobileOrder::STATUS_WAIT_SEND;
  115. if($type=='wechat'){
  116. $mobileOrder['pay_type']=1;
  117. $mobileOrder['pay_no']=$data['transaction_id'];
  118. }else{
  119. $mobileOrder['pay_type']=2;
  120. }
  121. $mobileOrder['payment_id']=$payment['id'];
  122. if(!$mobileOrder->save()){
  123. user_log($name,"手机订单保存失败");
  124. Db::rollback();
  125. return '手机订单保存失败';
  126. }
  127. Db::commit();
  128. //你可以在这里你的业务处理逻辑,比如处理你的订单状态、给会员加余额等等功能
  129. //下面这句必须要执行,且在此之前不能有任何输出
  130. return 'success';
  131. }
  132. }