DUMP4 企业级电商项目 —— 对接支付宝扫码支付
【联调 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 企业级电商项目 —— 对接支付宝扫码支付的更多相关文章
- 记录:c#实现微信,支付宝扫码支付(一)
因为公司系统业务需要,这几天了解了一下微信和支付宝扫码支付的接口,并用c#实现了微信和支付宝扫码支付的功能. 微信支付分为6种支付模式:1.付款码支付,2.native支付,3.jsapi支付,4.a ...
- DUMP 3.8 企业级电商项目 支付宝之类
① 沙箱登录:https://openhome.alipay.com/platform/appDaily.htm 获得一个 使用环境描述 APPID.授权回调地址.沙箱钱包哪里下载之类的 ② 沙箱环境 ...
- Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式
史诗级Java/JavaWeb学习资源免费分享 欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回 ...
- Java从零到企业级电商项目实战
欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回复关键字免费领取)回复关键字:"电商项 ...
- Spring使用支付宝扫码支付
前一段一直在研究支付宝的扫码支付,不得不说,支付宝的文档写的真是一个烂(起码在下刚开始看的时候是mengbi的).文档上面的示例和demo里面的示例长的完全不一样.往往文档上面的例子很简单,而demo ...
- .NET Core2.0 环境下MVC模式的支付宝扫码支付接口-沙箱环境开发测试
所有配置以及相关信息均可以从PC支付中获取 使用的生成二维码的组件名为QRCoder,该组件引用了一个第三方实现的System.Drawing类库,和支付宝官网类似 当面付SDK为Alipay.Aop ...
- PHP PC端支付宝扫码支付
前面的文章已经描述过在蚂蚁金服开放平台创建应用签约等流程,详见:PHP App端支付宝支付,这里就不多说了,剩下的分两步,第一步是支付前的准备工作,也就是整合支付类文件,我已经整合好可以直接用,代码开 ...
- DUMP2 企业级电商项目
正常设计数据库表,按照数据流向. ~~闭环核心业务 [1用户]登录 =>浏览[2分类]+浏览[3商品]=>加入[4购物车]=>结算[5订单]+[6收货地址]=>[7支付] [购 ...
- DUMP 5 企业级电商项目
[订单模块] 创建订单 商品信息 订单列表 订单详情 取消订单 订单列表 订单搜素 订单详情 订单发货 [创建订单] 购物车勾选商品 涉及 Cart Product => 一个商品 ...
随机推荐
- php使用root用户启动
一般情况下,肯定是不推荐使用root用户启动php的 但是在某些服务器管理想使用WEB的方式来控制操作的话,那么就必须要使用root用户才有权限操作 1.修改配置文件php-fpm.conf的启动用户 ...
- Vue项目中的RSA加解密
前后端使用rsa加密: 一般是客户端初始化时访问登录服务时,服务端面动态生成一对RSA对,公钥传给客户端,客户端拿到后,用户输入密码后,点登录时用公钥加密返回给服务端,服务端用私钥解就行了 一.安装 ...
- laravel整理笔记(一)
安装laravel5.8.3需要的环境 PHP >= 7.1.3 PHP OpenSSL 扩展 PHP PDO 扩展 PHP Mbstring 扩展 PHP Tokenizer 扩展 PHP X ...
- web框架开发-快速认识Django中间件
中间件 中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出. 因为改变的是全局,所以需要谨慎实用,用不 ...
- Error:Execution failed for task ':app:processDebugManifest'. Manifest merger failed with multiple errors, see logs
这个异常在网上一搜会出现很多答案,也可能都对. 我都尝试过但是不符合我这边的要求,问题得不到解决.网上的说法是对的,jar包冲突.不过究竟是哪里冲突没办法判断. 最后尝试了一下在module的中没用的 ...
- 使用CompletableFuture优化你的代码执行效率
这篇文章详细讲解java8中CompletableFuture的特性,方法以及实例. 在java8以前,我们使用java的多线程编程,一般是通过Runnable中的run方法来完成,这种方式,有个很明 ...
- Docker镜像拉不下来?试试这些
DaoCloud 加速器1.0(永久免费) DaoCloud是国内第一家Dock Hub加速器提供商 注意,加速器 2.0 需要使用 DaoCloud 自己的云服务器才可以使用.官方宣称会继续支持加速 ...
- 类别不平衡问题和Softmax回归
目录 类别不平衡(class-imbalance) Softmax回归模型 类别不平衡(class-imbalance) 当不同类别的训练样本数目差别很大,则会对学习过程造成困扰.如有998个反例,但 ...
- 小程序——返回上个页面触发事件(onUnload)
//页面销毁前--上传被提交的数据 onUnload:function(){ var _this=this; let updateStatus = wx.getStorageSync('UpdateS ...
- System.nanoTime与System.currentTimeMillis的区别(转)
原文地址:http://blog.csdn.net/dliyuedong/article/details/8806868 平时产生随机数时我们经常拿时间做种子,比如用System.currentTim ...