这两天做了一下支付宝服务窗,记一下吧,做一个积累,防止以后再次需要开发时忘记。 项目的要求是可以使用支付宝的服务窗就可以了,相关交互也很简单,只需要获取到使用用户的支付宝的唯一标识符(以前是openId,不过openId将会在2016年9月废弃,现在使用userId。如果还是使用的openId,也就是遗留的项目,支付宝提供了相关的接口,可以使用openId换取userId<alipay.platform.userid.get>)就可以了。其实感觉支付宝提供的相关的文档还是蛮全的。

支付宝服务窗开发主要需要:

  1. 已申请支付宝服务窗的账号

  2. 外网可以访问的url。本机上可以使用端口映射,主要开发时使用(直接使用ip+端口映射不知道可不可以,没有试过)。
    3.openssl软件,这个其实在支付宝提供的包里已经提供了(支付宝的手机网站支付的demo中有<demo网址。

开发步骤

  1. 激活开发者模式(必须验签和回复相关消息,偷懒的话可以不验签,直接将相关的消息响应给支付宝就好了,猜的,没试过,应该)。

    这里相关的文档还是蛮详细的。生成公钥和私钥就不多说了,已近够详细了,简单的说下它提供的demo吧(放到结尾说,排版好看点)。

  2. 设置服务窗的菜单及相关的功能。其实这如果不需要支付宝提供的userId,那样上面写的和下面写的所有东西都可以忽略,只要在管理中心的几个菜单上点点就好了。
    同样相关的文档支付宝也已经提供。(文档)。我使用的是只要获取用户的userId,不需要其他的用户信息,所以只要scope=auth_base就好了。这里的代码支付宝的demo中已经提供了,只要稍微改一下就可以使用:

           try {String authCode = this.getReqParam("auth_code");String userId = null;AlipaySystemOauthTokenRequest req = new AlipaySystemOauthTokenRequest();req.setGrantType("authorization_code");req.setCode(authCode);AlipayClient alipayClient = AlipayUtil.getAlipayClient();AlipaySystemOauthTokenResponse res = alipayClient.execute(req);XMap map = new XMap();if (null != res && res.isSuccess()) {userId = res.getAlipayUserId();map.put("appid", userId);System.out.println(userId);} else {System.out.println("authCode换取userId失败");}this.outPut(map);} catch (AlipayApiException e) {e.printStackTrace();}
    

    如果获取用户的信息,支付宝的demo也有,直接删删改改就可以了。 这里需要注意一下的是需要导入支付宝的相关jar包,当然如果只是这里使用的话可以不使用支付宝的jar包,换成使用HttpClient来实现,但是相比较而言麻烦一下,直接使用支付宝的直接传几个参数而已,何乐而不为呢。如果还要使用其他信息,就要修改相关的scope,文档里直接找就是了。

支付宝服务窗demo

支付宝的demo只要知道服务窗的基本功能就可以:

  • 纯文本类型 MsgType:text

  • 事件类型 MsgType:event

    • 激活验证开发者模式 (service:alipay.service.check)(EventType:verifygw)

    • 其他消息通知 (service:alipay.mobile.public.message.notify)

      • 服务窗关注事件 (EventType:follow)

      • 服务窗取消关注事件 (EventType:unfollow)

      • 服务窗进入事件 (EventType:enter)

        • 自定义场景进入事件

        • 普通进入服务窗事件

      • 根据actionParam进行转发(服务窗点击事件)(EventType:click)

        • authentication 申请开发者会员绑定事件: actionParam支付宝服务窗固定值(ActionParam:authentication )

        • delete 删除开发者会员绑定事件:actionParam支付宝服务窗固定值(ActionParam:delete)

        • xxx 开发者自定义 (ActionParam:xxx)

    • 更多

  • 更多

对照这看demo很容易就知道了。 从servlet开始:这方面主要在GatewayServlet里面。

验签没什么,直接调相关方法就好了,注意req的编码和本项目的编码。

宏观上来说demo主要是接收相关的req,然后取得该req的参数,进入(Dispatcher)获取业务的分发器,然后在分发器中获取业务的执行器。简单点说,就是从上面的纯文本类型开始验证,逐渐细化到最里面的一层,将该层的功能返回对应的执行器(执行器也就是ActionExecutor接口,不同的功能就是该接口的不同的实现,以后添加功能直接添加该接口的实现就好了)。

开发的时候可以直接使用相关的代码,然后在里面删减对应的功能就好了。不过话说如果像我现在的项目只要验证,所以只要一个激活验证开发者模式的验证就好了,两层验证返回就好了,当然要求更低的可以直接返回相关的res就好,都可以不验证。可以是可以,但是如果以后加功能的话。。。

在LoginAuthServlet里面也就是取得用户的userId和用户的详细信息等相关内容。

其他的一些类都是一些例子,对于我这样的新手+菜鸟来说简直是福音。

怎么说呢,一开始看见那么多类,都不想去看这个demo,后来没办法才去看的。清晰,第一感觉就是这个,不想自己写的代码,业务一复杂时自己都不想去看,不过由于源码读的少的原因,自从看完设计模式的书后,虽然大概也知道现在的比较出名的开源框架大概用了哪些,但是都是别人说的,从来没有自己去体会过。或者说知道使用了相关的模式之后,再去读源码的时候自动去找相关的模式的使用情况,虽然知道他们很好,但是由于自己没有去写,从来不知道这玩意儿多好。但是看了这个demo后真心很。。。震撼,应该是,比比自己的代码,就是去堆逻辑,固然有很多地方是用不上模式的,更多的原因是不熟。虽然知道这玩意用多了也不好,但是用了之后可以取舍,而这和不会用完全是两回事,慢慢积累吧,会有一天脱离菜鸟的行列的。任重而道远啊。

来源:https://segmentfault.com/a/1190000004547818

支付宝服务窗的简单开发体会相关推荐

  1. 支付宝服务窗API接口开发php版本

    支付宝服务窗API接口的开发对于许多网站要充值的朋友来讲是非常的重要的,今天我们就一起来看一篇关于php版本的支付宝服务窗API接口的开发例子. 这两天没事要接入支付宝服务窗,看支付宝的DEMO,我的 ...

  2. 服务窗 菜单 php,支付宝服务窗API接口开发php版本

    支付宝服务窗API接口的开发对于许多网站要充值的朋友来讲是非常的重要的,今天我们就一起来看一篇关于php版本的支付宝服务窗API接口的开发例子. 这两天没事要接入支付宝服务窗,看支付宝的DEMO,我的 ...

  3. 全面剖析支付宝服务窗功能二次开发

    支付宝服务窗功能二次开发是类似于微信公众号功能二次开发一样的平台,但是支付宝跟微信之间只有区别的,微信可提供给客户发布些个人相关的信息.言论.文章等,也可以提供给单位使用:而且都支持二次开发的.而支付 ...

  4. JEECG支付宝服务窗开发培训视频

    为什么80%的码农都做不了架构师?>>>    JEECG支付宝服务窗开发培训视频 JEEWX 支付宝服务窗开发培训视频 讲师: 张加强 开课时间: 2016年12月06日开课 ** ...

  5. JEECG再创新举,开辟支付宝服务窗开发新时代,业内独家培训 《支付宝服务窗实战培训》

    <支付窗开发实战专题公开课>- 业内独家培训,免费 一.课程简介                  支付窗开发实战讲解 二.课程内容 开课时间: 2016年12月06日开课 ******* ...

  6. php支付宝接服务窗开发,支付宝服务窗配置教程

    百家CMS微商城V2.2版本新增支付宝服务窗对接功能,很多商城都不懂得怎么对接.官方发布这个对接教程,采用图文说明的方式帮助商家快速简单的配置好支付宝服务窗. 1.服务窗申请地址:fuwu.alipa ...

  7. 支付宝服务窗关注 html,支付宝服务窗/生活号/小程序二次开发

    支付宝服务窗/生活号/小程序二次开发 什么是支付宝生活号: 支付宝生活号是支付宝为企业.组织和个人提供的直接触达用户的服务平台,入驻商户可以通过此平台对用户进行信息推送.交易场景打通和会员服务管理.支 ...

  8. 支付宝服务窗 开发 验证

    微信公众账号风风火火了了这么久,支付宝按捺不住终于也在今天推出了服务窗(类似微信公众账号),无奈就是没有php的demo,不过还是提供了sdk.希望以后支付宝同学勤奋写,直接写demo! 还有就是,本 ...

  9. 支付宝服务窗接入常见问题说明

    近日将一产品接入支付宝服务窗,接入过程遇到几点磕绊,记下也为后来者有所借鉴.支付宝服务窗无论界面到技术接入,同微信公众号相似度还是比较高的,做过公众号接入的,服务窗接入就是轻车熟路了. 接入前的准备工 ...

最新文章

  1. Gitlab完整搭建手册+排错
  2. tril--下三角矩阵的抽取
  3. php childnodes,小tips:HTML DOM中的children和childNodes属性
  4. oracle的监听器是什么,Oracle监听器,让你监听想要的东东
  5. 2016年第七届蓝桥杯 - 国赛 - Java大学C组 - I. 路径之谜
  6. OpenCV 中的图像处理 004_平滑图像
  7. vue 实现页面静态化
  8. PaperNotes(12)-Autoregressive Quantile networks for generative modeling
  9. 合肥师范学院计算机与技术,合肥师范学院计算机科学与技术系JAVA复习提纲
  10. 2018 Multi-University Training Contest 3: G. Interstellar Travel(凸包)
  11. VS2012无法打开文件“kernel32.lib”问题的解决办法
  12. 3dmax:3dmax动画栏(加载动画【IK计算器、约束、变换控制器、参数编辑器、关联参数、骨骼工具】、关键帧动画【修改关键帧、运动面板、曲线编辑器】、控制器动画【控制器指定】)之详细攻略
  13. 踩了个DNS解析的坑,但我还是没想通
  14. PHP微信公众号,获取用户地理位置 定位 经纬度
  15. 17.答题卡识别判卷
  16. PLC PID控制优化系列之积分分离、变积分系数(FC)
  17. 【牛客】凤凰【交并集】
  18. Linux下访问处理器硬件信息原理:图形化工具RWLinux的诞生
  19. 微信小程序 首行缩进、 去掉/取消首行缩进
  20. 博人传:火影迷青春的证明和延续

热门文章

  1. 在Linux上的虚拟机上启动Oracle上报ORA-00845: MEMORY_TARGET not supported on this system的问题解决
  2. 内存中原码,反码,补码,查看数值范围,,或,异或,取反,左右移位操作
  3. 开发每个静态网站是的模版代码(自己开发是长期优化过的觉得最简的代码)
  4. faster_rcnn c++版本的 caffe 封装,动态库(2)
  5. hashCode()方法(覆盖hashCode()方法)
  6. Linux+Tomcat+Jdk1.8+jenkins环境搭建
  7. lvs之 lvs原理架构介绍
  8. 如何用cocoapods 来管理项目中的第三方框架?
  9. tcpdump -i eth0 -n -vvv src or dst port 443
  10. SecureCRT提示----数据库里没找到防火墙“无”----解决方案