延展 《谈谈微信支付曝出的漏洞》

【联调 DEMO下载地址】https://docs.open.alipay.com/194/105201/

【内置 一份 说明文档可做参考】

【import  而不是  open】DEMO 本身是 Eclipse 项目

【确认zfbinfo.properties配置文件是否已配置完成】沙箱环境搬配置。

open_api_domain

pid

appid

【生成RSA密钥下载地址】https://docs.open.alipay.com/291/105971

private_key

public_key         ( 摘取到配置粘贴 并且 上传到 沙箱环境的 RSA2字段 => 得到【支付宝公钥】 复制到下一项)

alipay_public_key

【DEMO 运行下 MAIN 函数】

① 得到二维码 qr_code ,百度 二维码 生成

②【下载沙箱钱包】打开扫扫,登录买家     商家的账号看看消费、进账。

========================================================================================

可选,可能可以直接部署【DEMO jsp 本地部署 tomcat】

① project structure   >    modules    >  web

② artifact > web application ....

③ WebRoot   Web   手动同步下文件 , jar 可以保持原来依赖引用。

【运行在 tomcat local server 】

二维码支付  >  随意填充     ,    提交        =        trade_precreate.jsp

…………………………………………………………………………………………………………………………………………

            《处理回调通知办法》

选择【natapp外网穿透】

① natapp.cn 下载客户端  ,sudo chmod a+x

② https://natapp.cn/article/natapp_newbie  , 主要拿  authtoken         (直接命令行敲)

③ URL 放到浏览器地址栏 ,已经可以用 tomcat 了,外网也能访问到本地部署(windows桌面server)。

选择【tomcat remote调试(现实可能是阿里云主机)】1 REMOTE = LOCAL 代码一样。 2 要手动关闭开放的 debug 的端口。

sudo vim catalina.sh

CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5990"

把 linux 防火墙配置 开放 debug 端口 5990

sudo vim /etc/sysconfig/iptables     编辑完 sudo service iptables restart

-A INPUT -p tcp -m tcp --dport 5990 -j -ACCEPT

具体操作

Ⅰ tailf logs/mmall.log        可选访问一些线上地址打印个几行。

Ⅱ IDEA > tomcat remote 填写 host 域名或ip 和 端口

============================================================================

《处理回调大致过程以实际项目为例》   natapp

① 【项目下回调】复制  natapp供给url  到  setNotifyUrl方法上。     url末尾添加 /order/alipay_callback.do

② 【DEMO下产生一笔订单】运行Main 生成二维码   ,  拿沙箱钱包扫。

③ 【项目下】trade_status 字段      等待交易       付款成功。

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

Good ! 进入支付宝对接集成开发

① 拷贝DEMO项目 zfbinfo.properties 到项目下resources。

② 拷贝 lib (将上传到服务器上) 放到   webapp/WEB-INF/lib   ,  除了4个采用拷贝 使用 pom.xml  。

配置给服务器编译参数

 <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-</encoding>
<compilerArguments>
<extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>

③ 拷贝 com.alipay.demo.trade  包括两个类  ,  project structure >  modules >depencies > 增加 jar

④ 运行下 MAIN   确认 运行没问题,那拷贝就没问题, 可以集成了。

……………………………………………………………………………………………………………………………………………………………………………………………………………………6

正式开发

pay 接口

【生成二维码,并存到图片服务器】,// 业务【当面付2.0生成支付二维码】 = trade_precreate

① 组装数据       围绕 接口返回数据 orderNo ,qrPath 。(篇幅过长直接看代码)

② 主要工作 : 集成 DEMO ,结合开发者沙箱数据

===========================================    alipay_callback接口      ===============================================

alipay_callback接口      (支付宝按我们设置的callback地址返回 request数据,【第一步】就要自己解析。【第二步验证签名】)

【回调验证】签名、金额、订单号、订单状态、交易状态、商户id

【过滤掉重复的通知】返回成功之类的东西

【验证并确保可接受异步通知是支付宝发出】boolean AlipaySignature.rsaCheckV2(

【回调请求的返回】商户必须给支付宝返回 success 7个字符,否则支付宝不断地重发通知直到超过24小时22分之后...(通知间隔频率 25小时完成8次通知)

【避免支付宝重复通知和数据校验 => 授权回调】

【阅读文档】异步返回结果的验签部分

【验签API怎么用】AlipaySignature       注意入参

params requestParams

publicKey  对应 支付宝公钥 ()

charset 默认是utf-8

signType 对应zfbinfo.properties的sign_type

 public static boolean rsaCheckV2(Map<String, String> params, String publicKey,
String charset,String signType) throws AlipayApiException {
String sign = params.get("sign");
String content = getSignCheckContentV2(params); return rsaCheck(content, sign, publicKey, charset,signType);
}

===================================      Test   ============================================

【虚拟机服务器准备】nginx  +  vsftpd        上传的二维码图片 ,返回qrPath

【桌面系统准备】 switchhost    image.xxx.com   映射到 localhost  ,使得 qrPath 可以访问

【natapp准备】

命令提示符   natapp.exe -authtoken=xxx

得到的 域名 拷贝粘贴到 alipay.callback.url 

【接口测试数据  未支付的订单号】从 mysql 拿一个,支付status小于20的。(数据是事先填充的 。先开发支付模块  后开发订单模块)

主要测试   pay.do 和 query_order_pay_status.do 接口。

alipay_callback.do  回调测试记录

核对字段名称

直接设个断点    事先安排好要看的日志。

   

DUMP4 企业级电商项目 —— 对接支付宝扫码支付的更多相关文章

  1. 记录:c#实现微信,支付宝扫码支付(一)

    因为公司系统业务需要,这几天了解了一下微信和支付宝扫码支付的接口,并用c#实现了微信和支付宝扫码支付的功能. 微信支付分为6种支付模式:1.付款码支付,2.native支付,3.jsapi支付,4.a ...

  2. DUMP 3.8 企业级电商项目 支付宝之类

    ① 沙箱登录:https://openhome.alipay.com/platform/appDaily.htm 获得一个 使用环境描述 APPID.授权回调地址.沙箱钱包哪里下载之类的 ② 沙箱环境 ...

  3. Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式

    史诗级Java/JavaWeb学习资源免费分享 欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回 ...

  4. Java从零到企业级电商项目实战

    欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回复关键字免费领取)回复关键字:"电商项 ...

  5. Spring使用支付宝扫码支付

    前一段一直在研究支付宝的扫码支付,不得不说,支付宝的文档写的真是一个烂(起码在下刚开始看的时候是mengbi的).文档上面的示例和demo里面的示例长的完全不一样.往往文档上面的例子很简单,而demo ...

  6. .NET Core2.0 环境下MVC模式的支付宝扫码支付接口-沙箱环境开发测试

    所有配置以及相关信息均可以从PC支付中获取 使用的生成二维码的组件名为QRCoder,该组件引用了一个第三方实现的System.Drawing类库,和支付宝官网类似 当面付SDK为Alipay.Aop ...

  7. PHP PC端支付宝扫码支付

    前面的文章已经描述过在蚂蚁金服开放平台创建应用签约等流程,详见:PHP App端支付宝支付,这里就不多说了,剩下的分两步,第一步是支付前的准备工作,也就是整合支付类文件,我已经整合好可以直接用,代码开 ...

  8. DUMP2 企业级电商项目

    正常设计数据库表,按照数据流向. ~~闭环核心业务 [1用户]登录 =>浏览[2分类]+浏览[3商品]=>加入[4购物车]=>结算[5订单]+[6收货地址]=>[7支付] [购 ...

  9. DUMP 5 企业级电商项目

    [订单模块] 创建订单 商品信息  订单列表  订单详情 取消订单 订单列表  订单搜素  订单详情  订单发货 [创建订单]  购物车勾选商品 涉及 Cart Product  => 一个商品 ...

随机推荐

  1. Zookeeper集群为什么要是单数

    (原) 在zookeeper集群中,会有三种角色,leader. follower. observer分别对应着总统.议员.观察者. 半数以上投票通过:可以这样理解.客户端的增删改操作无论访问到了哪台 ...

  2. Linux运维期中架构(50台集群)

    一.期中架构 二.期中架构-前端部分 三.第三阶段作业-期中架构

  3. CF786B Legacy(线段树优化建图)

    嘟嘟嘟 省选Day1T2不仅考了字符串,还考了线段树优化建图.当时不会,现在赶快学一下. 线段树能优化的图就是像这道题一样,一个点像一个区间的点连边,或一个区间像一个点连边.一个个连就是\(O(n ^ ...

  4. VUE中 style scoped 修改原有样式

    作用域CSS 当<style>标记具有该scoped属性时,其CSS将仅应用于当前组件的元素.这类似于Shadow DOM中的样式封装.它有一些警告,但不需要任何polyfill.通过使用 ...

  5. OpenCV__cv::Mat::step

    step[0]是矩阵中一行元素的字节数 step[1]是矩阵中一个元素的字节数(elemSize) step1 = step / elemSize1,elemSize1是元素的每个通道所占的字节数 s ...

  6. SpringCloud学习笔记:SpringCloud简介(1)

    1. 微服务 微服务具有的特点: ◊ 按照业务划分服务 ◊ 每个微服务都有独立的基础组件,如:数据库.缓存等,且运行在独立的进程中: ◊ 微服务之间的通讯通过HTTP协议或者消息组件,具有容错能力: ...

  7. Magento 2 Plugin - Interceptor - Magento 2插件 - 拦截器-插件开发

    Magento 2 Plugin - Interceptor - Magento 2插件 - 拦截器 Magento 2 Plugin is a technical plugin for your b ...

  8. 省市区JSON

    行政编码 ViewBag.CssLinks = ""; 行政编码 中国和韩国行政编码选择.数据来自json文件,但在前端通过json对象调用. 注意本地方式,是将json文件作为对 ...

  9. 栈&队列

    队列部分 普通队列 举个形象的例子:排队买票. 有一列人在排队买票,前面来的人买完票就离开,后面来的人需要站在最后--依次类推. 在计算机中,数据结构队列有一个头指针和尾指针,头指针加一就代表有一个数 ...

  10. macOS Mojave待机耗电大

    这很有可能是待机时依然链接网络导致的.如果不需要待机时链接网络可以执行 sudo pmset -a tcpkeepalive 0 恢复则执行 sudo pmset -a tcpkeepalive 1