Payment.php 4.4 KB

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