<?php
namespace backend\controllers;

use backend\models\PayApi;
use backend\models\RateApi;
use Yii;
use yii\helpers\VarDumper;
use yii\httpclient\Client;
use yii\web\Controller;

class PayController extends Controller
{
    public $enableCsrfValidation = false;

    /**
     * 支付异步回调
     * @return string
     */
    public function actionNotify()
    {
        $payType = intval(Yii::$app->getRequest()->get('payType'));
        if ($payType <= 0) {
            return 'invalid request';
        }
        if (Yii::$app->getRequest()->getIsPost()) {
            $data = Yii::$app->getRequest()->post();
            if (empty($data)) {
                $data = @json_decode(Yii::$app->getRequest()->getRawBody(), true);
            }
        } else {
            $data = Yii::$app->getRequest()->get();
        }
        Yii::warning('支付异步通知参数，' . VarDumper::dumpAsString($data), __METHOD__);
        $api = new PayApi();
        $result = $api->callNotify($data, $payType);
        return $result['data'];
    }

    /**
     * 支付同步回调
     * @return string|\yii\web\Response
     */
    public function actionReturn()
    {
        $payType = intval(Yii::$app->getRequest()->get('payType'));
        if ($payType <= 0) {
            return 'invalid request';
        }
        if (Yii::$app->getRequest()->getIsPost()) {
            $data = Yii::$app->getRequest()->post();
            if (empty($data)) {
                $data = @json_decode(Yii::$app->getRequest()->getRawBody(), true);
            }
        } else {
            $data = Yii::$app->getRequest()->get();
        }
        Yii::warning('支付同步通知参数，' . VarDumper::dumpAsString($data), __METHOD__);
        $api = new PayApi();
        $result = $api->callReturn($data, $payType);
        return $this->redirect(['/user/pay/succeed']);
//        if ($result['code'] == 1) {
//            return $this->redirect(['/user/pay/succeed']);
//        } else {
//            return $this->redirect(['/user/pay/failed']);
//        }
    }

    /**
     * 汇率获取
     */
    public function actionRate()
    {
        $rateApi = new RateApi();
        $res = $rateApi->getRate();
        echo json_encode($res);
    }
}