setKey($tenpay_config['key']);
//判断签名
if ($resHandler->isTenpaySign()) {
//通知id
$notify_id = $resHandler->getParameter("notify_id");
//通过通知ID查询,确保通知来至财付通
//创建查询请求
$queryReq = new RequestHandler();
$queryReq->init();
$queryReq->setKey($tenpay_config['key']);
$queryReq->setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml");
$queryReq->setParameter("partner", $tenpay_config['partner']);
$queryReq->setParameter("notify_id", $notify_id);
//通信对象
$httpClient = new TenpayHttpClient();
$httpClient->setTimeOut(5);
//设置请求内容
$httpClient->setReqContent($queryReq->getRequestURL());
//后台调用
if ($httpClient->call()) {
//设置结果参数
$queryRes = new ClientResponseHandler();
$queryRes->setContent($httpClient->getResContent());
$queryRes->setKey($tenpay_config['key']);
if ($resHandler->getParameter("trade_mode") == "1") {
//判断签名及结果(即时到帐)
//只有签名正确,retcode为0,trade_state为0才是支付成功
if ($queryRes->isTenpaySign() && $queryRes->getParameter("retcode") == "0" && $resHandler->getParameter(
"trade_state"
) == "0"
) {
log_result("即时到帐验签ID成功");
//取结果参数做业务处理
//$out_trade_no = $resHandler->getParameter("out_trade_no");
//财付通订单号
//$transaction_id = $resHandler->getParameter("transaction_id");
//金额,以分为单位
//$total_fee = $resHandler->getParameter("total_fee");
//如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
//$discount = $resHandler->getParameter("discount");
//------------------------------
//处理业务开始
//------------------------------
//处理数据库逻辑
//注意交易单不要重复处理
//注意判断返回金额
//规范传入参数
$para_ret = array();
//支付平台别名
$para_ret['plat_name'] = 'TENPAY';
//交易状态
$para_ret['status'] = 1;
//商家内部订单号
$para_ret['out_ordno'] = $_REQUEST['out_trade_no'];
//支付平台订单号
$para_ret['plat_ordno'] = $_REQUEST['transaction_id'];
//交易总额
$para_ret['total_fee'] = floatval($_REQUEST['total_fee']) / 100;
//客户邮箱账号
$para_ret['buyer_email'] = '';
//客户数字账号
$para_ret['buyer_id'] = '';
//支付时间
$para_ret['pay_time'] = current_time('mysql');
//处理返回参数
require_once(WS_ALIPAY_INC . 'cls.return.php');
$ins_ret = new wsAlipayReturn($para_ret);
$INFO = $ins_ret->returnProcess();
$url = ws_alipay_show_url($INFO, $para_ret['out_ordno']);
//------------------------------
//处理业务完毕
//------------------------------
log_result("即时到帐后台回调成功");
echo "success";
} else {
//错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。
//echo "验证签名失败 或 业务错误信息:trade_state=" . $resHandler->getParameter("trade_state") . ",retcode=" . $queryRes-> getParameter("retcode"). ",retmsg=" . $queryRes->getParameter("retmsg") . "
" ;
log_result("即时到帐后台回调失败");
echo "fail";
}
} elseif ($resHandler->getParameter("trade_mode") == "2") {
//判断签名及结果(中介担保)
//只有签名正确,retcode为0,trade_state为0才是支付成功
if ($queryRes->isTenpaySign() && $queryRes->getParameter("retcode") == "0") {
log_result("中介担保验签ID成功");
//取结果参数做业务处理
$out_trade_no = $resHandler->getParameter("out_trade_no");
//财付通订单号
$transaction_id = $resHandler->getParameter("transaction_id");
//------------------------------
//处理业务开始
//------------------------------
//处理数据库逻辑
//注意交易单不要重复处理
//注意判断返回金额
log_result("中介担保后台回调,trade_state=" . $resHandler->getParameter("trade_state"));
switch ($resHandler->getParameter("trade_state")) {
case "0": //付款成功
break;
case "1": //交易创建
break;
case "2": //收获地址填写完毕
break;
case "4": //卖家发货成功
break;
case "5": //买家收货确认,交易成功
break;
case "6": //交易关闭,未完成超时关闭
break;
case "7": //修改交易价格成功
break;
case "8": //买家发起退款
break;
case "9": //退款成功
break;
case "10": //退款关闭
break;
default:
//nothing to do
break;
}
//------------------------------
//处理业务完毕
//------------------------------
echo "success";
} else {
//错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。
//echo "验证签名失败 或 业务错误信息:trade_state=" . $resHandler->getParameter("trade_state") . ",retcode=" . $queryRes-> getParameter("retcode"). ",retmsg=" . $queryRes->getParameter("retmsg") . "
" ;
log_result("中介担保后台回调失败");
echo "fail";
}
}
//获取查询的debug信息,建议把请求、应答内容、debug信息,通信返回码写入日志,方便定位问题
/*
echo "
------------------------------------------------------
";
echo "http res:" . $httpClient->getResponseCode() . "," . $httpClient->getErrInfo() . "
";
echo "query req:" . htmlentities($queryReq->getRequestURL(), ENT_NOQUOTES, "GB2312") . "
";
echo "query res:" . htmlentities($queryRes->getContent(), ENT_NOQUOTES, "GB2312") . "
";
echo "query reqdebug:" . $queryReq->getDebugInfo() . "
" ;
echo "query resdebug:" . $queryRes->getDebugInfo() . "
";
*/
} else {
//通信失败
echo "fail";
//后台调用通信失败,写日志,方便定位问题
echo "
call err:" . $httpClient->getResponseCode() . "," . $httpClient->getErrInfo() . "
";
}
} else {
echo "
" . "认证签名失败" . "
";
//echo $resHandler->getDebugInfo() . "
";
}
?>