闲来无事,找来支付宝即时到账接口用了下。遇到一些事情,现在想回放下,看遍电影。

如上图所示,支付宝官方给的使用流程,前3步客户做好自不必说,在第4、5步遇到一些问题:

1.支付宝跳转页面同步通知(return_url),这一块,支付宝给的示例中是使用表单get提交的方式,辗转跳向支付宝的,它是形如"<form>...</form><script>document.forms['alipaysubmit'].submit();</script>"的,这一段html直接使用out返回给客户浏览器,然后自动跳转向支付宝。注意,这里一开始我没有设置响应头信息response.setContentType("text/html"),导致测试谷歌、搜狗、百度、UC浏览器时,不能跳转,而是整个html被解析为字符串显示在页面上,而火狐、IE浏览器是可以跳转的。猜测,可能火狐、IE浏览器默认解析为"text/html"的,而谷歌、搜狗、百度、UC浏览器不是,致此问题;

2.在支付宝跳转页面同步通知(return_url)回来之后,不管是通过bean还是通过request.getParameter方式来获取参数,应该对参数进行new String(xxx.getBytes("ISO-8859-1"),"UTF-8")处理;

3.维持用户登录状态。有如下流程:

         用户登录商户系统 -> 跳转到支付宝支付 -> 在支付宝XXX操作 -> 支付宝返回return_url -> 页面显示用户充值后获得的积分

关键点在"支付宝返回return_url"这一步,请求回来时它请求头里是不带原先用户登录的jsessionid的,这样就导致它进入不了我这个使用spring security框架的商户系统,页面会跳转到用户登录界面,那么最后我的处理方案是,在去支付宝之前把用户登录的jsessionid写进cookie,然后同步通知回来之后先跳转到登录状态外的一个.do,在这个.do里面把请求头装载好cookie里的jsessionid,再次翻进登录状态,显示那个用户充值后的积分;

4.return_url翻进登录状态自后,不应该傻乎乎的给用户充积分,应该再一次判断通知是不是支付宝发回来的,判断这一个订单有没有处理过,防止重复处理订单,为此要数据库单独创建个存储订单的表了;

5.业务流程。在用户去支付宝之前,我把订单创建好并且存入数据库,置装态为"WAIT_BUYER_PAY",等到用户支付完毕,从支付宝回来,我对订单做好判断后,给用户充积分,然后更新订单状态为"TRADE_CLOSED";

6.发现有时候支付宝支付成功之后,页面就停止了,不跳转回我的商户网页,所以只使用支付宝跳转页面同步通知(return_url)是有风险的,所以我还加上支付宝服务器异步通知(notify_url),确保用户充完值积分就充上,维护消费者利益;

7.一点疑虑,对于支付宝跳转页面同步通知(return_url)不放心,虽然notifyid的生命期只有1分钟,虽然有sign校验,但只要攻击者对请求模拟的足够,速度足够,那么我的积分岂不是白白送人了?那我的钱呢?

8.在调试支付宝的过程中遇到一个 错误代码 CALL_LIMITED ,在支付宝及时到账接口开发文档里没找到该错误代码,不知是神吗错误。

电影,完了。

支付宝即时到账接口使用历险记相关推荐

  1. 支付宝即时到账接口开发 - DEMO讲解

    支付宝即时到账接口开发 - DEMO讲解 环境要求 PHP5.0以上,且需要开启curl.openssl. 文档地址: https://doc.open.alipay.com/doc2/detail? ...

  2. Payment:支付宝即时到账接口接入教程

    记住,如果觉得文档写得不清楚,一定要告诉我.励志写好文档为大家服务! Payment 3.0 支付宝的配置设置文档请 点击这里 项目GitHub地址:https://github.com/helei1 ...

  3. java支付宝即时到账api_集成支付宝即时到账接口

    签约授权 即时到账接口需要商家签约后才有使用的权限. 商家签约后拥有 即时到账交易接口(create_direct_pay_by_user) 即时到账批量退款有密接口(refund_fastpay_b ...

  4. ThinkPHP 3.2 支付宝即时到账接口开发

    前言: 一.支付流程 构造请求参数 向支付宝网关发送请求 生成支付宝页面 支付宝交易结果 二.构建支付类 1.官方即时到账文档地址: https://doc.open.alipay.com/doc2/ ...

  5. 支付宝 java 乱码_支付宝即时到账接口中文乱码问题

    遇见乱码的情况一般都是粗心大意造成的,就像我今天对接支付宝支付接口碰到的中文商品名称在支付宝收银台乱码了,找了半天问题原来是控制层没有设置响应编码造成的. //设置返回字符编码,设置返回内容类型防止中 ...

  6. 支付宝手机网页支付即时到账接口

    mycncart的前后台均为移动设备方便访问,支付宝方面单独针对移动设备访问网站设立了支付接口,普通的支付宝即时到账接口无法在手机网页上正常支付 本支付插件是支付宝手机网页即时到账接口. 本插件需要解 ...

  7. 搞定支付接口(一) 支付宝即时到账支付接口详细流程和代码

    搞定支付接口(一) 支付宝即时到账支付接口详细流程和java代码 为避免你们和我一样被支付接口搞得焦头烂额,写一个从申请开始到能收到钱为止的详细教程,实际上各个语言都可以用来集成支付接口,我用java ...

  8. 支付宝手机网页即时到账接口(3)之交易接口请求

    前言 这篇文章主要讲诉系统调用支付宝手机网页即时到账交易接口跳转到支付宝收银台. 上篇文章地址:支付宝手机网页即时到账接口(2)之授权接口请求. 这是第一篇文章结尾调用交易接口的图解. 交易接口请求参 ...

  9. PHP支付宝免签约即时到账接口扫码支付实例

    PHP支付宝免签约即时到账接口扫码支付实例,比较简单实用,下面有教程 安装教程: 1.把\pay_files\4422875341317181.png换成你自己的二维码.  2.把pay.htm文件里 ...

最新文章

  1. 美国重夺超算“头把交椅”,专家建议中国加快E级超算研制
  2. 寒武纪创始人兼CEO陈天石博士的公开信
  3. s:if 标签 字符串比较 正确用法和错误用法
  4. python将字符转换为字典
  5. android preference tab,Android SharedPreference - TabHost问题
  6. 美团Android资源混淆保护实践
  7. 680. Valid Palindrome II
  8. Oracle:FOR循环语句练习
  9. 【java】【乱码】Java 读取本地 UTF8 txt文件乱码处理
  10. OSSemPost()--发出一个信号量
  11. sql server 中xml 数据类型的insert、update、delete
  12. 怎么在php分页上结束分页,很经典的分页程序,该如何处理
  13. centos 下载tomcat8
  14. MSVCR71.dll is missing from your computer-(Window7 install sqldeveloper for oracle )
  15. 电脑的计算机文件打开格式,如何打开zip文件_怎样在电脑上打开zip文件
  16. 筛选过的 Code rule
  17. 计算机毕业设计SSM大学生学科竞赛管理系统【附源码数据库】
  18. 基于网易云信WebRTC的Web音视频实现
  19. 计算机收藏夹无法添加,Win7系统收藏夹不能用怎么办?
  20. 网站安全公司生存发展趋势分析

热门文章

  1. 显示器的基础知识详解
  2. VMware运用Intel I350网卡异常处理
  3. mmdetection --tools工具简单使用1
  4. React:DOM Diff算法
  5. ML学习分享系列(2)_计算广告小窥[中]
  6. 玩转SQLite6:使用C语言来读写数据库
  7. JavaScript【流程控制】【数组】【函数】【函数作用域】经典!!
  8. 斜率优化dp (P2365/P5785 任务安排)
  9. 让服务器系统更安全的七个配置步骤
  10. VS2015错误(二) msvcp120d.dll和msvcr120d.dll缺失