RefundLogRepository.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Mead
  5. * Date: 2019/8/6
  6. * Time: 9:16 PM
  7. */
  8. namespace App\Repositories;
  9. use App\Models\RefundLog;
  10. class RefundLogRepository extends BaseRepository
  11. {
  12. protected $model;
  13. public function __construct(RefundLog $model)
  14. {
  15. $this->model = $model;
  16. }
  17. public function byUserIdCheckUserIsRefundOk($user_id)
  18. {
  19. $return = [
  20. 'status' => true,
  21. 'msg' => '退款成功'
  22. ];
  23. $refund = $this->model->where('user_id', $user_id)->where('pay_status', RefundLog::PAY_STATUS_NO)->orderBy('id', 'desc')->first();
  24. if ($refund) {
  25. //检查是否退款成功
  26. $payment = app('wechat.payment');
  27. $re = $payment->refund->queryByOutRefundNumber($refund->no);
  28. if ($re['return_code'] === 'SUCCESS') {
  29. switch ($re['refund_status_0']) {
  30. case 'SUCCESS':
  31. //退款成功
  32. $refund->pay_time = $re['refund_success_time_0'];
  33. $refund->pay_status = RefundLog::PAY_STATUS_OK;
  34. $refund->save();
  35. //退款成功回调
  36. $refund->refund_order_callback();
  37. break;
  38. case 'REFUNDCLOSE':
  39. //退款关闭
  40. $refund = [
  41. 'status' => false,
  42. 'msg' => '退款关闭'
  43. ];
  44. break;
  45. case 'PROCESSING':
  46. //退款处理中
  47. $refund = [
  48. 'status' => false,
  49. 'msg' => '退款处理中,请稍后再试。'
  50. ];
  51. break;
  52. case 'CHANGE':
  53. //退款异常
  54. $refund = [
  55. 'status' => false,
  56. 'msg' => '退款异常'
  57. ];
  58. $refund->pay_status = RefundLog::PAY_STATUS_ERROR;
  59. $refund->result = $re['err_code_des'];
  60. break;
  61. }
  62. } else {
  63. $return = [
  64. 'status' => false,
  65. 'msg' => $re['return_msg']
  66. ];
  67. }
  68. }
  69. return $return;
  70. }
  71. }