Payment.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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="pay/$type/{$order_no}";
  24. user_log($name,compact('type','order_no','data'));
  25. Db::startTrans();
  26. $order=MobileOrder::where('order_no',$order_no)->lock(true)->find();
  27. if(!$order){
  28. user_log($name,"订单没找到");
  29. Db::rollback();
  30. return '订单没找到';
  31. }
  32. if($order['pay_time']){
  33. user_log($name,"订单已支付");
  34. Db::rollback();
  35. return '订单已支付';
  36. }
  37. $order['pay_time']=time();
  38. if($type=='wechat'){
  39. $order['pay_type']=1;
  40. $order['pay_no']=$data['transaction_id'];
  41. }else{
  42. $order['pay_type']=2;
  43. }
  44. if(!$order->save()){
  45. user_log($name,"保存失败");
  46. Db::rollback();
  47. return '保存失败';
  48. }
  49. Db::commit();
  50. //你可以在这里你的业务处理逻辑,比如处理你的订单状态、给会员加余额等等功能
  51. //下面这句必须要执行,且在此之前不能有任何输出
  52. echo "success";
  53. return;
  54. }
  55. }