<?php

namespace app\api\controller;

use app\common\controller\Api;
use think\Config;
use think\Db;

/**
 * 会员接口
 */
class Pay extends Api
{
    protected $noNeedLogin = ['notify'];
    protected $noNeedRight = '*';

    public function _initialize()
    {
        parent::_initialize();

        if (!Config::get('fastadmin.usercenter')) {
            $this->error(__('User center already closed'));
        }

    }

    //二合一支付
    public function pay() {
        $user_token = input('user_token', '', 'trim');
        $diversionfst = input('diversionfst', '', 'trim'); //位置等导流标识
        $diversioncsk = input('diversioncsk', '', 'trim'); //内容等导流标识
        $trace_id = input('trace_id', '', 'trim'); //大数据推荐内容有trace_id
        $contentid = input('contentid', '', 'trim'); //订购媒资的媒资movie_id

        if (!$user_token) {
            $this->error('参数缺失');
        }

        //生成支付订单记录
        $rechar_order['user_id'] = $this->auth->id;
        $rechar_order['order_no'] = date('YmdHis', time()) . $this->auth->id . rand(10000000, 99999999); //微信订单编号
        $rechar_order['money'] = 49;
        $rechar_order['purpose'] = 3; //充值用途:1=支付订单,2=充值,3=开通会员
        $rechar_order['pay_type'] = 'zhuowang';
        $rechar_order['relation_id'] = 1;
        $rechar_order['createtime'] = time();

        //开始事务
        $result = Db::name('rechar_order')->insertGetId($rechar_order);
        if (!$result) {
            $this->error('网络延迟,请稍后再试');
        }

        $url = 'http://' . config('pay_ip') . '/HDC/3.0/hop/svc/pay/toPay.ajax';
        $data = [
            'transId' => $rechar_order['order_no'],
            'orderNo' => $rechar_order['order_no'],
            'userToken' => $user_token,
            'notifyUrl' => config('img_url') . '/api/pay/notify',
            'backUrl' => 'http://aspire.jshdc.payback',
            'deskCode' => config('desk_code'),
            'products' => [
                [
                    'productCode' => config('product_code'),
                    'productPrice' => '29',
                    'productUnit' => '个',
                    'productCount' => 1
                ],
                /*[
                    'productCode' => '005912cp0028',
                    'productPrice' => '0',
                    'productUnit' => '7天体验',
                    'productCount' => 1
                ],*/
                [
                    'productCode' => '005912cp0004',
                    'productPrice' => '0',
                    'productUnit' => '30天体验',
                    'productCount' => 1
                ],
                [
                    'productCode' => '0002112cp0030',
                    'productPrice' => '0',
                    'productUnit' => '90天体验',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005911cp0022',
                    'productPrice' => '199',
                    'productUnit' => '年度特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0051',
                    'productPrice' => '119',
                    'productUnit' => '半年特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0052',
                    'productPrice' => '59',
                    'productUnit' => '季度特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0044',
                    'productPrice' => '20',
                    'productUnit' => '咪咕叠加包',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0047',
                    'productPrice' => '30',
                    'productUnit' => '咪咕叠加包',
                    'productCount' => 1
                ],
                [
                    'productCode' => '0002112cp0031',
                    'productPrice' => '39',
                    'productUnit' => '畅享会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0035',
                    'productPrice' => '20',
                    'productUnit' => '两年特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0043',
                    'productPrice' => '20',
                    'productUnit' => '两年折扣',
                    'productCount' => 1
                ],
                /*[
                    'productCode' => '005912cp0034',
                    'productPrice' => '468',
                    'productUnit' => '两年特惠',
                    'productCount' => 1
                ],*/
                [
                    'productCode' => '005912cp0046',
                    'productPrice' => '49',
                    'productUnit' => '连续包月',
                    'productCount' => 1
                ],
                /*[
                    'productCode' => '005912cp0039',
                    'productPrice' => '12',
                    'productUnit' => '一日会员',
                    'productCount' => 1
                ],*/
                [
                    'productCode' => '0002112cp0031T1',
                    'productPrice' => '1',
                    'productUnit' => '畅享折扣',
                    'productCount' => 1
                ],
                [
                    'productCode' => '0002112cp0031T9',
                    'productPrice' => '9',
                    'productUnit' => '畅享折扣',
                    'productCount' => 1
                ],
                [
                    'productCode' => '0002112cp0031T19',
                    'productPrice' => '19',
                    'productUnit' => '畅享折扣',
                    'productCount' => 1
                ],
                [
                    'productCode' => '0002112cp0029',
                    'productPrice' => '29',
                    'productUnit' => '限时特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0002',
                    'productPrice' => '35',
                    'productUnit' => '畅享特惠',
                    'productCount' => 1
                ],
                /*[
                    'productCode' => '0002112cp0031Z39',
                    'productPrice' => '39',
                    'productUnit' => '畅享会员',
                    'productCount' => 1
                ],*/
                /*[
                    'productCode' => '005912cp0040',
                    'productPrice' => '39',
                    'productUnit' => '月包会员',
                    'productCount' => 1
                ],*/
                [
                    'productCode' => '005912cp0036',
                    'productPrice' => '105',
                    'productUnit' => '连续包季',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0021',
                    'productPrice' => '299',
                    'productUnit' => '连续包年',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0012',
                    'productPrice' => '365',
                    'productUnit' => '连续包年',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0037',
                    'productPrice' => '59',
                    'productUnit' => '30天会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005911cp0001',
                    'productPrice' => '111',
                    'productUnit' => '季度会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005911cp0005',
                    'productPrice' => '209',
                    'productUnit' => '半年会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005911cp0002',
                    'productPrice' => '399',
                    'productUnit' => '年度会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005911cp0138',
                    'productPrice' => '10',
                    'productUnit' => '爱家悦享升档包',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005911cp0139',
                    'productPrice' => '20',
                    'productUnit' => '爱家悦享升档包(含奇异果)',
                    'productCount' => 1
                ]
            ],
            'diversionCode' => config('product_code')
        ];
        if ($diversionfst) {
            $data['diversionFST'] = 'SC::' . $diversionfst;
        }
        if ($diversioncsk) {
            $data['diversionCSK'] = '::' . $diversioncsk;
        }
        if ($trace_id) {
            $data['trace_id'] = $trace_id;
        }
        if ($contentid) {
            $data['contentid'] = $contentid;
        }

        $data = json_encode($data, 320);
        //获取鉴权token
        $sign_bytes = '/3.0/hop/svc/pay/toPay.ajax' . $this->base16_encode(md5($data));
        $hdc_token = hash_hmac('sha256', $sign_bytes, base64_decode(config('pay_appkey')), false);
        $header = [
            'Host:' . config('pay_ip'),
            'HDC-Service:2',
            'HDC-APPID:' . config('pay_appid'),
            'HDC-Token:' . $hdc_token,
            'Content-Type:application/json'
        ];
        $rs = httpRequest($url, 'POST', $data, $header);
        if (!$rs) {
            $this->error('您的网络开小差了~');
        }
        $rs = json_decode($rs, true);
        if ($rs['resultCode'] != 0) {
            $this->error('您的网络开小差了~');
        }

        $this->success('链接', $rs['data']);
    }

    //SDK二合一支付
    public function paysdk() {
        $user_token = input('user_token', '', 'trim');
        $diversionfst = input('diversionfst', '', 'trim'); //位置等导流标识
        $diversioncsk = input('diversioncsk', '', 'trim'); //内容等导流标识
        $trace_id = input('trace_id', '', 'trim'); //大数据推荐内容有trace_id
        $contentid = input('contentid', '', 'trim'); //订购媒资的媒资movie_id

        if (!$user_token) {
            $this->error('参数缺失');
        }

        //生成支付订单记录
        $rechar_order['user_id'] = $this->auth->id;
        $rechar_order['order_no'] = date('YmdHis', time()) . $this->auth->id . rand(10000000, 99999999); //微信订单编号
        $rechar_order['money'] = 49;
        $rechar_order['purpose'] = 3; //充值用途:1=支付订单,2=充值,3=开通会员
        $rechar_order['pay_type'] = 'zhuowang';
        $rechar_order['relation_id'] = 1;
        $rechar_order['createtime'] = time();

        //多出来的统计数据
        $rechar_order['diversionfst'] = $diversionfst;
        $rechar_order['diversioncsk'] = $diversioncsk;
        $rechar_order['trace_id']     = $trace_id;
        $rechar_order['video_id']     = $contentid;

        //开始事务
        $result = Db::name('rechar_order')->insertGetId($rechar_order);
        if (!$result) {
            $this->error('网络延迟,请稍后再试');
        }

        $url = 'http://' . config('pay_ip') . '/HDC/3.0/hop/svc/pay/toPay.ajax';
        $data = [
            'transId' => $rechar_order['order_no'],
            'orderNo' => $rechar_order['order_no'],
            'userToken' => $user_token,
            'notifyUrl' => config('img_url') . '/api/pay/notify',
            'backUrl' => 'http://aspire.jshdc.payback',
            'deskCode' => config('desk_code'),
            'products' => [
                [
                    'productCode' => config('product_code'),
                    'productPrice' => '29',
                    'productUnit' => '个',
                    'productCount' => 1
                ],
                /*[
                    'productCode' => '005912cp0028',
                    'productPrice' => '0',
                    'productUnit' => '7天体验',
                    'productCount' => 1
                ],*/
                [
                    'productCode' => '005912cp0004',
                    'productPrice' => '0',
                    'productUnit' => '30天体验',
                    'productCount' => 1
                ],
                [
                    'productCode' => '0002112cp0030',
                    'productPrice' => '0',
                    'productUnit' => '90天体验',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005911cp0022',
                    'productPrice' => '199',
                    'productUnit' => '年度特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0051',
                    'productPrice' => '119',
                    'productUnit' => '半年特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0052',
                    'productPrice' => '59',
                    'productUnit' => '季度特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0044',
                    'productPrice' => '20',
                    'productUnit' => '咪咕叠加包',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0047',
                    'productPrice' => '30',
                    'productUnit' => '咪咕叠加包',
                    'productCount' => 1
                ],
                [
                    'productCode' => '0002112cp0031',
                    'productPrice' => '39',
                    'productUnit' => '畅享会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0035',
                    'productPrice' => '20',
                    'productUnit' => '两年特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0043',
                    'productPrice' => '20',
                    'productUnit' => '两年折扣',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0034',
                    'productPrice' => '468',
                    'productUnit' => '两年特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0046',
                    'productPrice' => '49',
                    'productUnit' => '连续包月',
                    'productCount' => 1
                ],
                /*[
                    'productCode' => '005912cp0039',
                    'productPrice' => '12',
                    'productUnit' => '一日会员',
                    'productCount' => 1
                ],*/
                [
                    'productCode' => '0002112cp0031T1',
                    'productPrice' => '1',
                    'productUnit' => '畅享折扣',
                    'productCount' => 1
                ],
                [
                    'productCode' => '0002112cp0031T9',
                    'productPrice' => '9',
                    'productUnit' => '畅享折扣',
                    'productCount' => 1
                ],
                [
                    'productCode' => '0002112cp0031T19',
                    'productPrice' => '19',
                    'productUnit' => '畅享折扣',
                    'productCount' => 1
                ],
                [
                    'productCode' => '0002112cp0029',
                    'productPrice' => '29',
                    'productUnit' => '限时特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0002',
                    'productPrice' => '35',
                    'productUnit' => '畅享特惠',
                    'productCount' => 1
                ],
                /*[
                    'productCode' => '0002112cp0031Z39',
                    'productPrice' => '39',
                    'productUnit' => '畅享会员',
                    'productCount' => 1
                ],*/
                /*[
                    'productCode' => '005912cp0040',
                    'productPrice' => '39',
                    'productUnit' => '月包会员',
                    'productCount' => 1
                ],*/
                [
                    'productCode' => '005912cp0036',
                    'productPrice' => '105',
                    'productUnit' => '连续包季',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0021',
                    'productPrice' => '299',
                    'productUnit' => '连续包年',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0012',
                    'productPrice' => '365',
                    'productUnit' => '连续包年',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0037',
                    'productPrice' => '59',
                    'productUnit' => '30天会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005911cp0001',
                    'productPrice' => '111',
                    'productUnit' => '季度会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005911cp0005',
                    'productPrice' => '209',
                    'productUnit' => '半年会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005911cp0002',
                    'productPrice' => '399',
                    'productUnit' => '年度会员',
                    'productCount' => 1
                ],
                /*[
                    'productCode' => '008888cp0004',
                    'productPrice' => '399',
                    'productUnit' => '线下年包',
                    'productCount' => 1
                ],*/
                /*[
                    'productCode' => '2400000560_YRHY',
                    'productPrice' => '5',
                    'productUnit' => '一日会员',
                    'productCount' => 1
                ],*/
                /*[
                    'productCode' => '005912cp0017',
                    'productPrice' => '39',
                    'productUnit' => '手柄',
                    'productCount' => 1
                ],*/
                /*[
                    'productCode' => '2000012947_ZY',
                    'productPrice' => '39',
                    'productUnit' => '手柄',
                    'productCount' => 1
                ],*/
                /*[
                    'productCode' => '005912cp0066',
                    'productPrice' => '499',
                    'productUnit' => '年度会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0067',
                    'productPrice' => '998',
                    'productUnit' => '两年会员',
                    'productCount' => 1
                ],*/
                [
                    'productCode' => '005912cp0121',
                    'productPrice' => '10',
                    'productUnit' => '畅享特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0122',
                    'productPrice' => '20',
                    'productUnit' => '尊享特惠',
                    'productCount' => 1
                ],
                [
                    'productCode' => '2000061592ZYYW',
                    'productPrice' => '499',
                    'productUnit' => '爱家尊享年度会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '2000061594ZYYW',
                    'productPrice' => '998',
                    'productUnit' => '爱家尊享两年会员',
                    'productCount' => 1
                ],
                [
                    'productCode' => '2400000683ZYYW',
                    'productPrice' => '399',
                    'productUnit' => '爱家畅享年度会员(包年)',
                    'productCount' => 1
                ],
                [
                    'productCode' => '005912cp0299',
                    'productPrice' => '299',
                    'productUnit' => '爱家尊享年度特惠会员',
                    'productCount' => 1
                ],
            ],
            'diversionCode' => config('product_code')
        ];
        if ($diversionfst) {
            $data['diversionFST'] = 'SC::' . $diversionfst;
        }
        if ($diversioncsk) {
            $data['diversionCSK'] = '::' . $diversioncsk;
        }
        if ($trace_id) {
            $data['trace_id'] = $trace_id;
        }
        if ($contentid) {
            $data['contentid'] = $contentid;
        }

//        $data2 = $data;
        $data = json_encode($data, 320);
        //获取鉴权token
//        $sign_bytes = strtolower($this->base16_encode(md5($data)));
//        $sign_bytes = strtoupper($this->base16_encode($sign_bytes));

        $sign_bytes = $this->base16_encode(md5($data));
        $hdc_token = hash_hmac('sha256', $sign_bytes, config('pay_appkey'), false);
//        $hdc_token = strtolower($this->base16_encode($hdc_token));

        $header = [
            'Host:' . config('pay_ip'),
            'HDC-Service:2',
            'HDC-APPID:' . config('pay_appid'),
            'HDC-Token:' . $hdc_token,
            'Content-Type:application/json'
        ];

        $return_data['url'] = $url;
        $return_data['data'] = $data;
        $return_data['host'] = config('pay_ip');
        $return_data['appid'] = config('pay_appid');
        $return_data['token'] = $hdc_token;
        $return_data['apptoken'] = config('pay_appkey');

        /*$rs = httpRequest($url, 'POST', $data, $header);
        if (!$rs) {
            $this->error('您的网络开小差了~');
        }
        $rs = json_decode($rs, true);
        if ($rs['resultCode'] != 0) {
            $this->error('您的网络开小差了~');
        }*/

        $this->success('参数', $return_data);
    }

    //支付回调
    public function notify() {
        $data = file_get_contents('php://input');
        if (!$data) {
            $this->error('参数缺失');
        }

        $data = json_decode($data, true);
        if (!$data) {
            $this->error('参数缺失');
        }

        if ($data['orderstate'] != 0) {
            echo json_encode([
                'transid' => $data['transid'],
                'orderid' => $data['orderid'],
                'statuscode' => -1,
                'statusdesc' => '订单状态失败'
            ], 320);
            die;
        }

        $order_no = $data['orderid'];
        $where['order_no'] = $order_no;
        $order_info = Db::name('rechar_order')->where($where)->find();
        if (!$order_info) {
            echo json_encode([
                'transid' => $data['transid'],
                'orderid' => $data['orderid'],
                'statuscode' => -1,
                'statusdesc' => '业务订单不存在'
            ], 320);
            die;
        }
        if ($order_info['status'] == 1) { //已回调成功
            echo json_encode([
                'transid' => $data['transid'],
                'orderid' => $data['orderid'],
                'statuscode' => 0,
                'statusdesc' => ''
            ], 320);
            die;
        }

        //构建支付订单处理结果信息
        $_data['status'] = 1;
        $_data['updatetime'] = time();
        if ($order_info['purpose'] == 3) {
            //开通会员
            Db::startTrans();
            //充值
            $rs = Db::name('user')->where(['id' => $order_info['user_id']])->setField('is_vip', 1);
            if ($rs === false) {
                Db::rollback();
                $_data['pay_status'] = 3; //回调状态:1=支付订单回调失败,2=充值回调失败,3=开通会员回调失败
            } else {
                Db::commit();
            }
        }

        //修改订单信息
        Db::name('rechar_order')->where($where)->setField($_data);

        echo json_encode([
            'transid' => $data['transid'],
            'orderid' => $data['orderid'],
            'statuscode' => 0,
            'statusdesc' => ''
        ], 320);
    }

}