第四方微派支付签名核对

签名都是按照参数的键值字母排序组成字符串,经过md5加密再转成大写字母

发起支付时传递的签名

$arr = array('dingdan'=>time(),'userid'=>$userid,'money'=>$money);

$data =  json_encode($arr);
$data = base64_encode($data);

$appid = "lalalalalalalallalalala";
$body = $money."元金币充值";
$callback_url = "http://123456.cn/pay/success";
$channel_id = "default";
$out_trade_no = $data;
$total_fee = $money;
$version = "2.0";

$sign_prep = "app_id=".$appid."&body=".$body."&callback_url=".$callback_url."&channel_id=".$channel_id."&out_trade_no=".$out_trade_no."&total_fee=".$total_fee."&version=".$version.$this->key;
$sign = strtoupper( md5($sign_prep) );


中间回调的签名验证,第四方post传递过来的参数,除了sign,其它参与排序计算签名再和sign对比,一样返回success

$cpparam = $request->get('cpparam');
$orderNo = $request->get('orderNo');
$price =$request->get('price');
$status = $request->get('status');
$synType = $request->get('synType');
$time = $request->get('time');
$sign = $request->get('sign');

$str = "cpparam=".$cpparam."&orderNo=".$orderNo."&price=".$price."&status=".$status."&synType=".$synType."&time=".$time.$this->key;
$str = strtoupper( md5($str) );
if($sign == $str){
    if($status == "success"){
        //获取参数,发送命令给服务端
        $data = $request->get('cpparam');
        $dingdan = $request->get('orderNo');
        $data = base64_decode($data);
        $data = json_decode($data,true);
        $result = "1";

        if(PFGameCommand::recharge($data['userid'],$data['money'],$dingdan,$result)){
            return "success";
        }

    }else{
        PFGameCommand::recharge("0000","0","0","0");
    }
}else{
    PFGameCommand::recharge("0000","0","0","0");
    return "";
}



首页 我的博客
粤ICP备17103704号