密接口怎么获取退款成功之后支付宝接口返回4000的数据

2009年1月 Web 开发大版内专家分月排行榜第一2008年12月 Web 开发大版内专家分月排行榜第一2008年10月 Web 开发大版内专家分月排行榜第一2008年9月 Web 开发大版内专家分月排行榜第一2008年8月 Web 开发大版内专家分月排行榜第一
2009年3月 Web 开发大版内专家分月排行榜第二2009年2月 Web 开发大版内专家分月排行榜第二2008年11月 Web 开发大版内专家分月排行榜第二
2009年1月 Web 开发大版内专家分月排行榜第一2008年12月 Web 开发大版内专家分月排行榜第一2008年10月 Web 开发大版内专家分月排行榜第一2008年9月 Web 开发大版内专家分月排行榜第一2008年8月 Web 开发大版内专家分月排行榜第一
2009年3月 Web 开发大版内专家分月排行榜第二2009年2月 Web 开发大版内专家分月排行榜第二2008年11月 Web 开发大版内专家分月排行榜第二
2009年1月 Web 开发大版内专家分月排行榜第一2008年12月 Web 开发大版内专家分月排行榜第一2008年10月 Web 开发大版内专家分月排行榜第一2008年9月 Web 开发大版内专家分月排行榜第一2008年8月 Web 开发大版内专家分月排行榜第一
2009年3月 Web 开发大版内专家分月排行榜第二2009年2月 Web 开发大版内专家分月排行榜第二2008年11月 Web 开发大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。14526人阅读
Web2.0(6)
支付宝接口支付成功后通过同步或异步跳转返回时,一般都要对数据来源做校验判断是否为真实支付宝提交过来的数据。
但是部分站点校验时 AlipayNotify.verify(params)
始终返回false。&
经过分析返回为false的有几个原因
request.getParameterMap()里的内容没有转换为正常的编码。如果有中文字符要通过编码转换为utf-8才能正常得到内容。
网络慢等原因,当第3方web得到支付宝返回参数中notifyid参数后去支付服务器验证时延迟超过了1分钟才完成。会导致支付宝那边验证失败。这个一般不会出现。第3个原因,提供给支付宝接口中同步和异步回调方法中本身附加了一个本系统内部参数。如下pAction参数是第3方系统内部使用的。需要过滤掉。再调用验证模块才能成功。如下代码红色字体。(因为原demo中提供的2个url都是2个不带参数的jsp页面)
完整的检验来源代码段如下
//获取支付宝GET过来反馈信息
Map&String,String& params = new HashMap&String,String&();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();)
String name = (String) iter.next();
if(name.equals(&pAction&)) // pAction 参数是内部系统的参数要去掉。不能传给params检验
String[] values = (String[]) requestParams.get(name);
String valueStr = &&;
for (int i = 0; i & values. i++)
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + &,&;
//乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化
valueStr = new String(valueStr.getBytes(&ISO-8859-1&), &UTF-8&);
params.put(name, valueStr);
//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)//
//商户订单号
String out_trade_no = new String(request.getParameter(&out_trade_no&).getBytes(&ISO-8859-1&),&UTF-8&);
//支付宝交易号
String trade_no = new String(request.getParameter(&trade_no&).getBytes(&ISO-8859-1&),&UTF-8&);
//交易状态
String trade_status = new String(request.getParameter(&trade_status&).getBytes(&ISO-8859-1&),&UTF-8&);
//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)//
//计算得出通知验证结果
boolean verify_result = AlipayNotify.verify(params);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:69337次
积分:1007
积分:1007
排名:千里之外
原创:33篇
评论:26条
(2)(2)(2)(1)(1)(1)(1)(2)(1)(1)(3)(8)(9)(2)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'2016年1月 总版技术专家分月排行榜第二2015年11月 总版技术专家分月排行榜第二2015年10月 总版技术专家分月排行榜第二
优秀小版主
2016年1月 总版技术专家分月排行榜第二2015年11月 总版技术专家分月排行榜第二2015年10月 总版技术专家分月排行榜第二
优秀小版主
2016年1月 总版技术专家分月排行榜第二2015年11月 总版技术专家分月排行榜第二2015年10月 总版技术专家分月排行榜第二
优秀小版主
2015年3月 .NET技术大版内专家分月排行榜第三2015年2月 .NET技术大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。22081人阅读
Others(17)
微信/支付宝(6)
refund_fastpay_by_platform_nopwd 官方参考文档:
:http://download.csdn.net/detail/ty_hf/9611096
1. 按照官方文档,编写此接口所需要的各个参数;2. 对各参数进行签名处理,生成URL3.调用此URL,跳转到对应请求页面4.同步回调返回【受理结果】,注意是受理结果,就是此笔退款支付宝已经受理成功要去执行了,至于执行退款成功否,见55.异步返回【退款结果】,详细参数见下
【注意,此功能接口,默认是不支持开放的,需要签约才可以。】
一.签约步骤:
2.申请人工服务,提交此接口的开通申请。
3.等待几个工作日,阿里会联系你,进行签约
4.签订协议,开通接口,如下图:
二.访问参数:
请求参数举例:
array (size=12)
'service' =& string 'refund_fastpay_by_platform_nopwd' (length=30)
'partner' =& string '006' (length=16)
'_input_charset' =& string 'UTF-8' (length=5)
'sign_type' =& string 'MD5' (length=3)
'notify_url' =& string '/admin/api/refund/alipay/notify_url.php' (length=60)
'dback_notify_url' =& string '/admin/api/refund/alipay/notify_url.php' (length=60)
'batch_no' =& string '3' (length=13)
'refund_date' =& string ' 18:49:51' (length=19)
'batch_num' =& string '1' (length=1)
'detail_data' =& string '^协商退款' (length=46)
'use_freeze_amount' =& string 'N' (length=1)
'return_type' =& string 'xml' (length=3)
/gateway.do?_input_charset=UTF-8&batch_no=3&batch_num=1&dback_notify_url=http%3A%2F%%2Fadmin%2Fapi%2Frefund%2Falipay%2Fnotify_url.php&detail_data=.01%5E%E5%8D%8F%E5%95%86%E9%80%80%E6%AC%BE¬ify_url=http%3A%2F%%2Fadmin%2Fapi%2Frefund%2Falipay%2Fnotify_url.php&partner=4006&refund_date=+18%3A50%3A51&return_type=xml&service=refund_fastpay_by_platform_pwd&use_freeze_amount=N&sign=528ecfb29dd73&sign_type=MD5
三.回调参数:
1.同步受理回调参数:
string '&?xml version=&1.0& encoding=&GBK& ?&
&is_success&F&/is_success&
&error&DUPLICATE_BATCH_NO&/error&
&/alipay&' (length=122)
2.异步回调参数:
正常异步回调:
成功举例:
post:{&sign&:&e18debabce7d&,&result_details&:&^SUCCESS&,&notify_time&:& 20:49:16&,&sign_type&:&MD5&,&notify_type&:&batch_refund_notify&,&notify_id&:&8edb4fd873cmva&,&batch_no&:&8&,&success_num&:&1&}
失败举例:
post :{&sign&:&8d14deadc8817&,&result_details&:&^SELLER_BALANCE_NOT_ENOUGH&,&notify_time&:& 10:00:52&,&sign_type&:&MD5&,&notify_type&:&batch_refund_notify&,&notify_id&:&e5b5be505denn2&,&batch_no&:&0&,&success_num&:&0&}
充退回调:
四.碰到问题:
1.碰到问题,查看的问题描述,类似的
2.无密退款详细细节,,一定要注意它的必填项与特殊参数的格式要求,比如 detail_data
3.在开发过程中,异步回调的不能再本地电脑调试,改host什么的无效,请到外部可以访问的页面进行,或者使用【花生壳】等工具映射到本地也可
本文地址:http://blog.csdn.net/ty_hf/article/details/
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:342493次
积分:4096
积分:4096
排名:第7845名
原创:105篇
转载:28篇
评论:88条
文章:12篇
阅读:24022
文章:18篇
阅读:19767
(1)(3)(1)(5)(6)(8)(15)(5)(8)(2)(9)(6)(5)(1)(1)(1)(14)(3)(2)(3)(3)(4)(4)(6)(3)(2)(3)(1)(8)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'支付宝支付开发-退款 - 简书
支付宝支付开发-退款
之前写了一篇,现在总结一下支付宝退款的开发。总体上来说,支付宝的退款接口分为即时到账批量有密退款接口(refund_fastpay_by_platform_pwd)和即时到账批量无密退款接口(refund_fastpay_by_platform_nopwd)两种,分别对应前台请求和后台请求。
通俗说明一下前台请求和后台请求的区别:前台请求:通过html的form表单方式提交的。后台请求:直接通过后台交互,利用http请求发送到请求系统。
一、有密退款接口
比较简单,易于理解,相关字段到查看一般业务流程是:用户发起退款请求-&运营人员审批退款请求-&同意退款-&后台组装退款报文(html)-&重定向到支付宝退款页面-&运营人员输入密码-&支付宝将退款结果异步通知到后台-&后台完成剩余后台逻辑。 DEMO如下: 用户发起退款后,运营人员打开退款审核页面:
Paste_Image.png
确认可以退款后,后台组装一个重定向的html到支付宝:
Paste_Image.png
输入密码后支付宝向notify_url发送退款结果通知。
注:组装发送到支付宝的html报文样例如下:
&head&&/head&
&form id="alipaysubmit" name="alipaysubmit" action="/gateway.do?_input_charset=utf-8" method="post"&
&input type="hidden" name="sign" value="签名值" /&
&input type="hidden" name="_input_charset" value="utf-8" /&
&input type="hidden" name="sign_type" value="MD5" /&
&input type="hidden" name="detail_data" value=".01^我要退款" /&
&input type="hidden" name="service" value="refund_fastpay_by_platform_pwd" /&
&input type="hidden" name="notify_url" value="退款通知地址" /&
&input type="hidden" name="seller_user_id" value="值同partner" /&
&input type="hidden" name="partner" value="合作商户ID,需跟支付宝申请" /&
&input type="hidden" name="batch_num" value="1" /&
&input type="hidden" name="batch_no" value="" /&
&input type="hidden" name="refund_date" value=" 07:57:12" /&
&input type="submit" value="确认" style="display:" /&
&script&document.forms['alipaysubmit'].submit();&/script&
其中的detail_data为单笔数据集,规则见支付宝文档。
Paste_Image.png
需要说明的是:原付款支付宝交易号对应的是支付结果通知时的trade_no字段。
二、无密退款接口
无密退款接口的权限是不开放的,如果你需要的话,需要重新与支付宝签约,有密接口是跟着支付一起的,你具备了支付的接口权限,就能用有密退款接口。无密退款接口的流程比较简单:用户发起退款-&后台组装退款数据-&通过http请求到支付宝后台-&接收退款结果异步通知-&后台完成剩余后台逻辑。无密接口有几个概念说明如下:
充退:支付宝将退款退到买家支付宝账号后,将钱再退到买家银行卡的过程,也就是这里是两个过程:退到买家支付宝账号,退到买家银行卡。一般我们不关心这个,因为钱退到买家支付宝账号后,钱已经退给买家了,至于能不能从买家的支付宝退到买家的银行卡,一般不关心。
充退结果通知:充退到买家银行卡成功的异步通知。
三、说明(遇到的坑)
无密接口流程比较简单,一开始就开发了无密接口,结果发现没签约,没权限。
无密接口请求地址:/gateway.do?_input_charset=UTF-8注意到gateway.do后面的_input_charset的值为UTF-8,我们在请求报文中可能也会有_input_charset这个key,注意其value也应该为UTF-8,不能为小写utf-8,否则验签不过,被坑了一天。
Paste_Image.png
码农,搬砖的}

我要回帖

更多关于 支付宝接口返回4000 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信