<?php
/*
* @Description 易宝支付B2C在线支付接口范例
* @V3.0
* @Author rui.xin
*/
include 'yeepayCommon.php';
# 只有支付成功时易宝支付才会通知商户.
##支付成功回调有两次,都会通知到在线支付请求参数中的p8_Url上:浏览器重定向;服务器点对点通讯.
# 解析返回参数.
$return = getCallBackValue($r0_Cmd,$r1_Code,$r2_TrxId,$r3_Amt,$r4_Cur,$r5_Pid,$r6_Order,$r7_Uid,$r8_MP,$r9_BType,$hmac);
# 判断返回签名是否正确(True/False)
$bRet = CheckHmac($r0_Cmd,$r1_Code,$r2_TrxId,$r3_Amt,$r4_Cur,$r5_Pid,$r6_Order,$r7_Uid,$r8_MP,$r9_BType,$hmac);
# 以上代码和变量不需要修改.
# 校验码正确.
if($bRet){
if($r1_Code=="1"){
# 需要比较返回的金额与商家数据库中订单的金额是否相等,只有相等的情况下才认为是交易成功.
# 并且需要对返回的处理进行事务控制,进行记录的排它性处理,在接收到支付结果通知后,判断是否进行过业务逻辑处理,不要重复进行业务逻辑处理,防止对同一条交易重复发货的情况发生.
if($r9_BType=="1"){
echo "交易成功";
echo "<br />在线支付页面返回";
}elseif($r9_BType=="2"){
#如果需要应答机制则必须回写流,以success开头,大小写不敏感.
echo "success";
echo "<br />交易成功";
echo "<br />在线支付服务器返回";
}
}
}else{
echo "交易信息被篡改";
}
?>
1.r1_Code=1为校验成功.
2.r9_BType==1 交易成功后转跳执行的代码.这里尽量输出相关信息.进行业务流程处理.
3.r9_BType==2 为交易成功后易宝返回询问是否有收到通知.通知周期为:2.4.8.16.32.1小时.一天后放弃通知;
这里除了返回success给易宝,尽量不要返回其它的字符.测试时除外;
业务处理流程
if($r1_Code=="1"){
#获取订单状态..
if($r9_BType=="1"){
if(订单状态 != ok) {
#更新订单状态为已付款.
if(订单金额==支付金额){
#执行相关的业务流程并将订单状态改为OK
}else{
echo "支付金额与订单金额不相同.";
}
}else{
echo "该订单已处理完毕";
}
echo "交易成功";
echo "<br />在线支付页面返回";
}elseif($r9_BType=="2"){
#如果需要应答机制则必须回写流,以success开头,大小写不敏感.
echo "success";
echo "<br />交易成功";
echo "<br />在线支付服务器返回";
}
}
}else{
echo "交易信息被篡改";