PayController.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\api\controller\v1;
  12. use app\Request;
  13. use crmeb\services\pay\Pay;
  14. /**
  15. * 支付回调
  16. * Class PayController
  17. * @package app\api\controller\v1
  18. */
  19. class PayController
  20. {
  21. /**
  22. * 支付回调
  23. * @param string $type
  24. * @return string|void
  25. * @throws \EasyWeChat\Core\Exceptions\FaultException
  26. */
  27. public function notify(string $type)
  28. {
  29. switch (urldecode($type)) {
  30. case 'alipay':
  31. /** @var Pay $pay */
  32. $pay = app()->make(Pay::class, ['ali_pay']);
  33. return $pay->handleNotify();
  34. case 'wechat':
  35. case 'routine':
  36. if (sys_config('pay_wechat_type')) {
  37. /** @var Pay $pay */
  38. $pay = app()->make(Pay::class, ['v3_wechat_pay']);
  39. } else {
  40. /** @var Pay $pay */
  41. $pay = app()->make(Pay::class);
  42. }
  43. return $pay->handleNotify()->getContent();
  44. default:
  45. if (strstr($type, 'allin') !== false) {
  46. /** @var Pay $pay */
  47. $pay = app()->make(Pay::class, ['allin_pay']);
  48. return $pay->handleNotify($type);
  49. }
  50. }
  51. }
  52. /**
  53. * 支付配置
  54. * @param Request $request
  55. * @return mixed
  56. */
  57. public function config(Request $request)
  58. {
  59. $config = [
  60. [
  61. 'icon' => 'icon-weixinzhifu',
  62. 'name' => '微信支付',
  63. 'value' => 'weixin',
  64. 'title' => '使用微信快捷支付',
  65. 'number' => null,
  66. 'payStatus' => !!sys_config('pay_weixin_open', 0),
  67. ],
  68. [
  69. 'icon' => 'icon-zhifubao',
  70. 'name' => '支付宝支付',
  71. 'value' => 'alipay',
  72. 'title' => '使用线上支付宝支付',
  73. 'number' => null,
  74. 'payStatus' => !!sys_config('ali_pay_status', 0),
  75. ],
  76. [
  77. 'icon' => 'icon-yuezhifu',
  78. 'name' => '余额支付',
  79. 'value' => 'yue',
  80. 'title' => '当前可用余额',
  81. 'number' => $request->user('now_money'),
  82. 'payStatus' => (int)sys_config('yue_pay_status', 0) === 1,
  83. ],
  84. [
  85. 'icon' => 'icon-yuezhifu1',
  86. 'name' => '线下支付',
  87. 'value' => 'offline',
  88. 'title' => '选择线下付款方式',
  89. 'number' => null,
  90. 'payStatus' => (int)sys_config('offline_pay_status', 0) === 1,
  91. ],
  92. [
  93. 'icon' => 'icon-haoyoudaizhifu',
  94. 'name' => '好友代付',
  95. 'value' => 'friend',
  96. 'title' => '找微信好友支付',
  97. 'number' => null,
  98. 'payStatus' => !!sys_config('friend_pay_status', 0),
  99. ]
  100. ];
  101. return app('json')->success($config);
  102. }
  103. }