Notify.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace app\api\controller\h5;
  3. use app\hander\HelpHander;
  4. use EasyWeChat\Factory;
  5. use think\Controller;
  6. use think\Db;
  7. use think\Exception;
  8. class Notify extends Controller
  9. {
  10. public function phorder(){
  11. $config = config('app.wx_config');
  12. $app = Factory::payment($config);
  13. $response = $app->handlePaidNotify(function ($message, $fail) {
  14. if ($message['return_code'] === 'SUCCESS' && $message['result_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
  15. // 用户是否支付成功
  16. $tradeNo = $message['out_trade_no'];
  17. // 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
  18. $order = Db::name('ph_order_pay')->where('sn',$tradeNo)->find();
  19. if (!$order || $order['status'] != 0) { // 如果订单不存在 或者 订单已经支付过了
  20. return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
  21. }
  22. $ret = model('PhOrderPay')->paySuccess($order['id'],2);
  23. if(!$ret){
  24. trace('订单修改失败');
  25. $fail('订单修改失败');
  26. }
  27. } else {
  28. return $fail('通信失败,请稍后再通知我');
  29. }
  30. return true; // 返回处理完成
  31. });
  32. $response->send();
  33. }
  34. public function xshopOrder(){
  35. $config = config('app.wx_config');
  36. $app = Factory::payment($config);
  37. $response = $app->handlePaidNotify(function ($message, $fail) {
  38. if ($message['return_code'] === 'SUCCESS' && $message['result_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
  39. // 用户是否支付成功
  40. $tradeNo = $message['out_trade_no'];
  41. // 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
  42. $order = Db::name('g_orders')->where('order_sn',$tradeNo)->find();
  43. if (!$order || $order['status'] != 0) { // 如果订单不存在 或者 订单已经支付过了
  44. return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
  45. }
  46. $ret = Db::name('g_orders')->where('id',$order['id'])->update(['status'=>1,'pay_time'=>date('Y-m-d H:i:s')]);
  47. $goods = Db::name('g_order_goods')->where('order_id',$order['id'])->select();
  48. //增加销量
  49. foreach ($goods as $k=>$v){
  50. Db::name('g_goods')
  51. ->where('id',$v['id'])
  52. ->inc('sale',$v['nums'])
  53. ->update();
  54. }
  55. if(!$ret){
  56. trace('订单修改失败');
  57. $fail('订单修改失败');
  58. }
  59. } else {
  60. return $fail('通信失败,请稍后再通知我');
  61. }
  62. return true; // 返回处理完成
  63. });
  64. $response->send();
  65. }
  66. }