<?php
namespace app\pay\controller;

class Success extends \think\Controller {
    
    public function index(){
        if (empty($_POST)) $_POST = $_GET;//如果为GET方式访问
		$sign = $this->ASCII($_POST);
		$flag = $this->md5Verify($sign,$_POST['sign'],config('yuanbaopay.appkey'));
		if($flag){
		    $pay_id = $_POST['pay_id'];              //需要充值的ID 或订单号 或用户名
    		$pay_money = (float)$_POST['pay_money']; //实际付款金额
    		$result = '支付成功，请返回游戏里查收邮件';
		}else{
		    $pay_id ="";
		    $pay_money="";
		    $result="支付失败";
		}
		$this->assign('pay_id',$pay_id);
		$this->assign('pay_money',$pay_money);
		$this->assign('result',$result);
		return view();
    }
    /**
     * 验证签名
     * @param $prestr 需要签名的字符串
     * @param $sign 签名结果
     * @param $key 私钥
     * return 签名结果
     */
	function md5Verify($prestr, $sign, $key) {
		$prestr = $prestr . $key;
		$mysgin = md5($prestr);
		if($mysgin == $sign) {
			return true;
		} else {
			return false;
		}
	}
    function ASCII($params = array()){
		//ksort()对数组按照键名进行升序排序
		ksort($params);
		//reset()内部指针指向数组中的第一个元素
		reset($params);
		//$sign = http_build_query($params, '', '&amp');
		$sign = '';//初始化
		foreach ($params AS $key => $val) { //遍历POST参数
			if ($val == ''||$key == 'sign') continue; //跳过这些不签名
			if ($sign) $sign .= '&'; //第一个字符串签名不加& 其他加&连接起来参数
			$sign .= "$key=$val"; //拼接为url参数形式
		}		
		return $sign;
	}
}