You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
3.9 KiB
115 lines
3.9 KiB
10 months ago
|
<?php
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Author: CRMEB Team <admin@crmeb.com>
|
||
|
// +----------------------------------------------------------------------
|
||
|
|
||
|
namespace app\api\controller\v1;
|
||
|
|
||
|
|
||
|
use app\Request;
|
||
|
use crmeb\services\app\MiniProgramService;
|
||
|
use crmeb\services\pay\Pay;
|
||
|
|
||
|
/**
|
||
|
* 支付回调
|
||
|
* Class PayController
|
||
|
* @package app\api\controller\v1
|
||
|
*/
|
||
|
class PayController
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
* 支付回调
|
||
|
* @param string $type
|
||
|
* @return string|void
|
||
|
* @throws \EasyWeChat\Core\Exceptions\FaultException
|
||
|
*/
|
||
|
public function notify(string $type)
|
||
|
{
|
||
|
switch (urldecode($type)) {
|
||
|
case 'alipay':
|
||
|
/** @var Pay $pay */
|
||
|
$pay = app()->make(Pay::class, ['ali_pay']);
|
||
|
return $pay->handleNotify();
|
||
|
case 'v3wechat':
|
||
|
return app()->make(Pay::class, ['v3_wechat_pay'])->handleNotify()->getContent();
|
||
|
case 'routine':
|
||
|
return MiniProgramService::handleNotify();
|
||
|
case 'wechat':
|
||
|
if (sys_config('pay_wechat_type')) {
|
||
|
/** @var Pay $pay */
|
||
|
$pay = app()->make(Pay::class, ['v3_wechat_pay']);
|
||
|
} else {
|
||
|
/** @var Pay $pay */
|
||
|
$pay = app()->make(Pay::class);
|
||
|
}
|
||
|
return $pay->handleNotify()->getContent();
|
||
|
default:
|
||
|
if (strstr($type, 'allin') !== false) {
|
||
|
/** @var Pay $pay */
|
||
|
$pay = app()->make(Pay::class, ['allin_pay']);
|
||
|
return $pay->handleNotify($type);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 支付配置
|
||
|
* @param Request $request
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function config(Request $request)
|
||
|
{
|
||
|
$config = [
|
||
|
[
|
||
|
'icon' => 'icon-weixinzhifu',
|
||
|
'name' => '微信支付',
|
||
|
'value' => 'weixin',
|
||
|
'title' => '使用微信快捷支付',
|
||
|
'number' => null,
|
||
|
'payStatus' => !!sys_config('pay_weixin_open', 0),
|
||
|
],
|
||
|
[
|
||
|
'icon' => 'icon-zhifubao',
|
||
|
'name' => '支付宝支付',
|
||
|
'value' => 'alipay',
|
||
|
'title' => '使用线上支付宝支付',
|
||
|
'number' => null,
|
||
|
'payStatus' => !!sys_config('ali_pay_status', 0),
|
||
|
],
|
||
|
[
|
||
|
'icon' => 'icon-yuezhifu',
|
||
|
'name' => '余额支付',
|
||
|
'value' => 'yue',
|
||
|
'title' => '当前可用余额',
|
||
|
'number' => $request->user('now_money'),
|
||
|
'payStatus' => (int)sys_config('yue_pay_status', 0) === 1,
|
||
|
],
|
||
|
[
|
||
|
'icon' => 'icon-yuezhifu1',
|
||
|
'name' => '线下支付',
|
||
|
'value' => 'offline',
|
||
|
'title' => '选择线下付款方式',
|
||
|
'number' => null,
|
||
|
'payStatus' => (int)sys_config('offline_pay_status', 0) === 1,
|
||
|
],
|
||
|
[
|
||
|
'icon' => 'icon-haoyoudaizhifu',
|
||
|
'name' => '好友代付',
|
||
|
'value' => 'friend',
|
||
|
'title' => '找微信好友支付',
|
||
|
'number' => null,
|
||
|
'payStatus' => !!sys_config('friend_pay_status', 0),
|
||
|
]
|
||
|
];
|
||
|
|
||
|
return app('json')->success($config);
|
||
|
}
|
||
|
}
|