Payment.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. $order['status']=MobileOrder::STATUS_WAIT_SEND;
  39. if($type=='wechat'){
  40. $order['pay_type']=1;
  41. $order['pay_no']=$data['transaction_id'];
  42. }else{
  43. $order['pay_type']=2;
  44. }
  45. if(!$order->save()){
  46. user_log($name,"保存失败");
  47. Db::rollback();
  48. return '保存失败';
  49. }
  50. Db::commit();
  51. //你可以在这里你的业务处理逻辑,比如处理你的订单状态、给会员加余额等等功能
  52. //下面这句必须要执行,且在此之前不能有任何输出
  53. echo "success";
  54. return;
  55. }
  56. /**
  57. * 支付成功回调
  58. */
  59. public function notify_jd($order_no)
  60. {
  61. $name="pay/jd/{$order_no}";
  62. user_log($name,compact('type','order_no'));
  63. Db::startTrans();
  64. $order=MobileOrder::where('order_no',$order_no)->lock(true)->find();
  65. if(!$order){
  66. user_log($name,"订单没找到");
  67. Db::rollback();
  68. return 'success';
  69. }
  70. if($order['pay_time']){
  71. user_log($name,"订单已支付");
  72. Db::rollback();
  73. return 'success';
  74. }
  75. $order['pay_time']=time();
  76. $order['status']=MobileOrder::STATUS_WAIT_SEND;
  77. $order['pay_type']=3;
  78. if(!$order->save()){
  79. user_log($name,"保存失败");
  80. Db::rollback();
  81. return '保存失败';
  82. }
  83. Db::commit();
  84. //你可以在这里你的业务处理逻辑,比如处理你的订单状态、给会员加余额等等功能
  85. //下面这句必须要执行,且在此之前不能有任何输出
  86. return 'success';
  87. }
  88. }