ecshop支付宝接口返回“支付操作失败,请返回重试”
2012-02-02 12:10
281 查看
第二次遇到这个问题了,ecshop购买商品,成功支付后跳转到一个错误提示的页面:
地址栏返回的代码为:“http://abc.com/respond.php?code=alipay&buyer_email=xxx2008%40126.com&buyer_id=2088302295952289&exterface=create_direct_pay_by_user&is_success=T¬ify_id=RqPnCoPT3K9%252Fvwbh3I7z31fy5VZ2nTUUsZUcr%252FxCgjYYbvl4p6p6QU8wwplNFGvP0ETC¬ify_time=2012-02-02+10%3A59%3A45¬ify_type=trade_status_sync&out_trade_no=20120202469454904&payment_type=1&seller_email=15510719013&seller_id=2088302019601851&subject=2012020246945&total_fee=1.50&trade_no=2012020242158728&trade_status=TRADE_SUCCESS&sign=f09711546fea83d1b6d3f844119d32d6&sign_type=MD5”,都是成功信息,支付宝后台查看,这笔款已经收到,但是浏览器却显示“支付操作失败,请返回重试”。
检查支付宝接口文件,查到如下代码:
if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS')
{
/* 改变订单状态 */
order_paid($order_sn, 2);
return true;
}
elseif ($_GET['trade_status'] == 'TRADE_FINISHED')
{
/* 改变订单状态 */
order_paid($order_sn);
return true;
}
else
{
return false;
}
比对成功代码的返回值,发现和地址栏返回的不一致,应该为:TRADE_SUCCESS;
修改之后,就可以返回成功信息了;
支付宝技术人员提供的解释如下:
尊敬的商户,您好:
您与支付宝签约的协议即将生效,在这次签约的产品中包含了高级即时到帐交易,支付宝公司从2010年10月1日起签约的即时到账产品里面进行了产品升级,新增加了退款功能,即在交易成功后的三个月内,允许卖家进行退款操作。另外在处理接口的通知返回的时候有一些参数变化,如果贵网站程序没有做及时调整,可能会导致你网站出现掉单。即:买家付款成功后,支付宝网站上显示的是交易成功,而贵网站后台显示的等待买家付款。
如何解决?(以下内容需要贵网站技术员操作)
支付成功后,支付宝会向商户指定的信息接收页面,即notify_url 页面发送支付成功后的信息,其中返回来的参数 trade_status
之前的值为TRADE_FINISHED,升级后这个参数的值变为:trade_status=TRADE_SUCCESS,需要贵网站技术员做相应的调整。
以下是部分php的代码实例,供参考。notify_url 这个参数所指向的url页面程序代码:
-------------------------------------------------------------------------------------------
if($_POST['trade_status'] == 'TRADE_SUCCESS') { //交易成功的状态判断,注意
……………… //更新网站的订单状态
………………
die('success'); //返处理成功后返回success通知支付宝
}
本文出自 “三足乌工作室” 博客,请务必保留此出处http://webteam.blog.51cto.com/863355/771029
地址栏返回的代码为:“http://abc.com/respond.php?code=alipay&buyer_email=xxx2008%40126.com&buyer_id=2088302295952289&exterface=create_direct_pay_by_user&is_success=T¬ify_id=RqPnCoPT3K9%252Fvwbh3I7z31fy5VZ2nTUUsZUcr%252FxCgjYYbvl4p6p6QU8wwplNFGvP0ETC¬ify_time=2012-02-02+10%3A59%3A45¬ify_type=trade_status_sync&out_trade_no=20120202469454904&payment_type=1&seller_email=15510719013&seller_id=2088302019601851&subject=2012020246945&total_fee=1.50&trade_no=2012020242158728&trade_status=TRADE_SUCCESS&sign=f09711546fea83d1b6d3f844119d32d6&sign_type=MD5”,都是成功信息,支付宝后台查看,这笔款已经收到,但是浏览器却显示“支付操作失败,请返回重试”。
检查支付宝接口文件,查到如下代码:
if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS')
{
/* 改变订单状态 */
order_paid($order_sn, 2);
return true;
}
elseif ($_GET['trade_status'] == 'TRADE_FINISHED')
{
/* 改变订单状态 */
order_paid($order_sn);
return true;
}
else
{
return false;
}
比对成功代码的返回值,发现和地址栏返回的不一致,应该为:TRADE_SUCCESS;
修改之后,就可以返回成功信息了;
支付宝技术人员提供的解释如下:
尊敬的商户,您好:
您与支付宝签约的协议即将生效,在这次签约的产品中包含了高级即时到帐交易,支付宝公司从2010年10月1日起签约的即时到账产品里面进行了产品升级,新增加了退款功能,即在交易成功后的三个月内,允许卖家进行退款操作。另外在处理接口的通知返回的时候有一些参数变化,如果贵网站程序没有做及时调整,可能会导致你网站出现掉单。即:买家付款成功后,支付宝网站上显示的是交易成功,而贵网站后台显示的等待买家付款。
如何解决?(以下内容需要贵网站技术员操作)
支付成功后,支付宝会向商户指定的信息接收页面,即notify_url 页面发送支付成功后的信息,其中返回来的参数 trade_status
之前的值为TRADE_FINISHED,升级后这个参数的值变为:trade_status=TRADE_SUCCESS,需要贵网站技术员做相应的调整。
以下是部分php的代码实例,供参考。notify_url 这个参数所指向的url页面程序代码:
-------------------------------------------------------------------------------------------
if($_POST['trade_status'] == 'TRADE_SUCCESS') { //交易成功的状态判断,注意
……………… //更新网站的订单状态
………………
die('success'); //返处理成功后返回success通知支付宝
}
本文出自 “三足乌工作室” 博客,请务必保留此出处http://webteam.blog.51cto.com/863355/771029
相关文章推荐
- 支付宝支付接口返回到第3方站点后程序对支付宝来源检验失败原因分析
- ECSHOP 支付宝发货确认接口,记录支付宝返回的交易号
- Ecshop支付宝网银支付插件|支付宝网银直连插件|纯网关网银接口
- 自己动手搞定支付宝手机网站支付接口 FOR ECShop
- 支付宝 ECSHOP 支付接口 PHP
- 支付宝接口支付成功但是return_url验证失败
- iOS开发支付宝支付成功返回字符串的处理操作
- 新版支付宝WAP支付成功回调接口验签失败问题解决办法
- 对接支付宝接口时,不使用SDK,调用成功但是返回的数据一直验签失败问题解决方案
- ios 从前台返回到回台 从后台返回到前台 或者 支付宝支付订单后 对界面进行操作
- [ecshop 支付接口 开发调试] ecshop 需要做一些支付接口,和接口升级,经常需要支付返回
- 支付宝电脑支付notify异步返回验签失败坑
- 支付宝接口手机网站支付验证返回字符串以及签名验证不通过的原因总结
- 调用接口返回失败时的必要操作
- Delphi XE10实现移动端支付宝支付接口
- Java web集成支付宝电脑支付接口(沙箱环境)
- 支付宝WAP支付接口开发
- 支付宝WAP支付接口开发
- 支付宝php支付接口说明
- asp 支付宝 企业版 接口 支持网银接口 ,网银直接支付