<?php

namespace app\api\controller;

use app\Request;
use crmeb\repositories\PaymentRepositories;
use crmeb\services\AlipayService;
use crmeb\services\SystemConfigService;
use crmeb\utils\Hook;

class AlipayController
{
    public function Notify()
    {
        $alipay = SystemConfigService::more(['alipay_app_id', 'alipay_pub_key', 'alipay_private_key', 'alipay_key']);
        $Pay = new AlipayService();
        $Pay->setAlipayPublicKey($alipay['alipay_key']);
        $result = $Pay->rsaCheck($_POST, $_POST['sign_type']);
        if ($result === true && $_POST['trade_status'] == 'TRADE_SUCCESS') {
            $out_trade_no = input('out_trade_no', '');
            if (($count = strpos(input('out_trade_no'), '_')) !== false) {
                $out_trade_no = substr(input('out_trade_no'), $count + 1);
            }
            parse_str(input('passback_params'), $attach);
            (new Hook(PaymentRepositories::class, 'wechat'))->listen($attach['attach'], $out_trade_no);
            echo 'success';
            exit();
        } else {
            echo 'error';
            exit();
        }
    }
}