82 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
namespace addons\xilufitness\controller;
 | 
						|
 | 
						|
 | 
						|
use addons\xilufitness\services\pay\PayService;
 | 
						|
use think\Db;
 | 
						|
 | 
						|
/**
 | 
						|
 * @ApiSector(支付中心)
 | 
						|
 * @ApiRoute(addons/xilufitness/pay)
 | 
						|
 * @ApiWeigh(1)
 | 
						|
 * @package addons\xilufitness\controller
 | 
						|
 */
 | 
						|
class Pay extends Base
 | 
						|
{
 | 
						|
    protected $noNeedRight = '*';
 | 
						|
    protected $noNeedLogin = '*';
 | 
						|
 | 
						|
    /**
 | 
						|
     * @ApiTitle(支付中心)
 | 
						|
     * @ApiSummary(支付中心网关)
 | 
						|
     * @ApiRoute(/index)
 | 
						|
     * @ApiMethod(GET)
 | 
						|
     * @ApiParams(name="order_id",type="string",require=true,description="订单id")
 | 
						|
     * @ApiParams(name="order_type",type="integer",require=true,description="订单类型")
 | 
						|
     * @ApiParams(name="timestamp",type="integer",require=true,description="时间戳")
 | 
						|
     * @ApiParams(name="pay_type",type="integer",require=true,description="支付方式")
 | 
						|
     * @ApiParams(name="sign",type="string",require=true,description="数据签名")
 | 
						|
     * @ApiHeaders(name = "brand-key", type = "string",require = true, description = "应用key")
 | 
						|
     * @ApiHeaders(name = "token", type = "string", require = true, description = "Token")
 | 
						|
     * @ApiReturnParams(name="code", type="integer",required=true, sample="0")
 | 
						|
     * @ApiReturnParams(name="msg", type="string",required=true, sample="获取成功")
 | 
						|
     * @ApiReturnParams(name="data", type="bject",required=true, description= "扩展数据")
 | 
						|
     * @ApiReturn({
 | 
						|
        "code" => 1,
 | 
						|
        "msg" => "获取成功",
 | 
						|
        "data" => {}
 | 
						|
     *})
 | 
						|
     */
 | 
						|
    public function index(){
 | 
						|
        $order_id = $this->request->param('order_id/s');
 | 
						|
        $order_type = $this->request->param('order_type/d',0);
 | 
						|
        $timestamp = $this->request->param('timestamp/d');
 | 
						|
        $pay_type = $this->request->param('pay_type/d',2);
 | 
						|
        $sign = $this->request->param('sign/s');
 | 
						|
        $makeSign = $this->paySign($order_id,$order_type,$timestamp);
 | 
						|
        $order_id = xilufitness_get_id_value($order_id);
 | 
						|
        if(time() > $timestamp){
 | 
						|
            $this->error('已超时,请重新提交订单');
 | 
						|
        }
 | 
						|
        if($sign != $makeSign){
 | 
						|
            $this->error('签名错误,数据已篡改!!!');
 | 
						|
        }
 | 
						|
        $result = PayService::getInstance(['mini_config' => $this->miniConfig])->gateWay($order_id,$order_type,$pay_type);
 | 
						|
        $this->success('',$result);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @ApiTitle(支付异步回调)
 | 
						|
     * @ApiSummary(支付成功异步回调)
 | 
						|
     * @ApiRoute(/notify)
 | 
						|
     * @ApiMethod(GET)
 | 
						|
     * @ApiParams(name="order_type",type="integer",require=true,description="订单类型")
 | 
						|
     * @ApiParams(name="brand_id",type="integer",require=true,description="品牌商id")
 | 
						|
     * @ApiReturnParams(name="code", type="integer",required=true, sample="0")
 | 
						|
     * @ApiReturnParams(name="msg", type="string",required=true, sample="获取成功")
 | 
						|
     * @ApiReturnParams(name="data", type="bject",required=true, description= "扩展数据")
 | 
						|
     * @ApiReturn({
 | 
						|
        "code" => 1,
 | 
						|
        "msg" => "获取成功",
 | 
						|
        "data" => {}
 | 
						|
     *})
 | 
						|
     */
 | 
						|
    public function notify(){
 | 
						|
        $order_type = $this->request->param('order_type/d');
 | 
						|
        $this->brand_id = $this->request->param('brand_id/d',0);
 | 
						|
        $mini_config = $this->getMiniConfig($this->brand_id ?? 0);
 | 
						|
        PayService::getInstance(['mini_config' => $mini_config ])->notify($order_type);
 | 
						|
    }
 | 
						|
} |