115 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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);
 | 
						||
    }
 | 
						||
}
 |