day17【前台】支付案例
day17【前台】支付案例
1、支付宝开放平台
1.1、首页网址
- 首页网址
https://open.alipay.com/
1.2、文档中心
- 看这些
1.3、创建应用
- 开发时暂时使用沙箱环境
1.4、配置应用
- 沙箱环境暂不考虑
1.5、配置秘钥
1.5.1、关于加密
1、对称加密
- 加密过程与解密过程对称,即如果黑客截获密文并知道加密过程就能够反推出明文
2、非对称加密
- 加密过程与解密过程非对称:
- 发送方用公钥加密明文,接收方使用私钥解密密文,得到明文,私钥与公钥成对出现
- 私钥加密的密文必须使用公钥解密
- 公钥加密的密文必须使用私钥解密
1.5.2、支付宝秘钥
- 调用关系捋清楚:
- 商户应用会调用支付宝支付接口
- 支付宝也会调用我们提供的商户支付接口
- 所以:
- 支付宝需要知道我们商户的公钥
- 我们也需要知道支付宝的公钥
- 秘钥、公钥关系捋清楚:
- 在支付宝开放平台的应用中 :
- 设置商户公钥
- 获取支付宝公钥
- 在我们的程序中设置:
- 支付宝公钥
- 商户私钥
- 在支付宝开放平台的应用中 :
1.5.3、生成秘钥
1、下载工具
- 下载秘钥生成工具
2、安装工具
- 注意:安装路径千万不要有空格
3、生成秘钥
1.6、支付流程
- 支付流程如下:
- 用户下单,调用商户系统,商户系统调用支付宝接口
- 支付宝接口直接将登录页面返回给用户(不经过商户系统)
- 用户输入账户、密码进行登录(不经过商户系统)
- 用户确认支付(不经过商户系统)
- 用户支付之后,剩下的就是商户系统与支付宝接口之间的相互调用啦~~~
1.7、内网穿透
1.7.1、内网穿透原理
- 我们现在在内网开发环境下, 需要让外网的支付宝来调用内网中的项目。 如果不采用特殊处理这种情况是访问不到的。
- 内网穿透外网服务器–>内网穿透客户端–>内网应用(内网服务器)
- 内网穿透外网服务器:有人专门就是做这种服务器滴
- 内网穿透客户端:需要安装在我们的电脑上,外网服务器首先找到内网穿透客户端,然后内网穿透客户端再来访问我们的内网应用
1.7.2、NATAPP工具
- 网址:https://natapp.cn/
1.7.3、NATAPP文档
- 文档汇总
- 一分钟快速上手
1.7.4、实名认证
- 需要完成实名认证才能使用
1.7.5、创建隧道
- 购买免费隧道
- 点击免费购买
- 呐~
1.7.6、下载客户端
- 下载
NATAPP
客户端,解压出来是一个.exe
文件,运行之后是个小黑窗,不过我们需要先创建配置文件,才能运行
1.7.7、创建配置文件
- 在运行客户端程序之前,我们需要先创建配置文件,指定一些参数
- 在客户端工具的同级目录下,创建配置文件,所需的参数去隧道页面复制
#将本文件放置于natapp同级目录 程序将读取 [default] 段
#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
#命令行参数 -config= 可以指定任意config.ini文件
[default]
authtoken=<填入你的authtoken> #对应一条隧道的authtoken
clienttoken= #对应客户端的clienttoken,将会忽略authtoken,若无请留空,
log=stdout #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none
loglevel=DEBUG #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG
http_proxy= #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空
- 上面的配置也就只需要这一个
authtoken
参数
1.7.8、启动NATAPP
- 双击客户端工具即可启动
NATAPP
,不过每次生成的域名都是不一样滴
1.7.9、启动Tomcat
- 修改
Tomcat
端口号为80
端口
- 启动
Tomcat
1.7.10、测试内网穿透
- 访问:
http://gysn2b.natappfree.cc/
2、支付示例
2.1、下载demo
- 下载地址:https://opendocs.alipay.com/open/270/106291/
2.2、导入demo
2.2.1、导入工程
- 由于是
Eclipse
工程,不是Maven
工程,我们选择导入Existing Project
- 导入已有工程,将其复制到工作区
2.2.2、工程报错解决
1、报错原因
- 没有找到
javax.servlet.http.HttpServlet
这个类
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
2、配置Tomcat运行环境
- 右击工程,选择
Properties
- 设置【目标运行环境】为
Tomcat 8.0
2.2.3、工程目录
2.3、沙箱环境
2.3.1、进入沙箱环境
2.3.2、获取APPID和支付宝网关
2.3.3、获取支付宝公钥
- 先设置商户公钥
- 得到支付宝公钥
2.4、修改配置
- 修改支付接口的相关配置
- 配置
APPID
- 配置商户私钥
- 配置支付宝公钥
- 配置内网穿透地址
- 配置支付宝网关
- 配置
/* **类名:AlipayConfig*功能:基础配置类*详细:设置帐户有关信息及返回路径*修改日期:2017-04-05*说明:*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。*/public class AlipayConfig {//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号(使用沙箱环境的APPID)public static String app_id = "<填入你的APPID>";// 商户私钥,您的PKCS8格式RSA2私钥public static String merchant_private_key = "<填入你的商户私钥>";// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。public static String alipay_public_key = "<填入字支付宝公钥>";// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问// 工程公网访问地址使用内网穿透客户端提供的域名public static String notify_url = "http://35aj75.natappfree.cc/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问// 工程公网访问地址使用内网穿透客户端提供的域名public static String return_url = "http://35aj75.natappfree.cc/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";// 签名方式public static String sign_type = "RSA2";// 字符编码格式public static String charset = "utf-8";// 支付宝网关(正式环境)// public static String gatewayUrl = "https://openapi.alipay.com/gateway.do";// 支付宝网关(沙箱环境)public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";// 日志路径public static String log_path = "D:\\";//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑/** * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)* @param sWord 要写入日志里的文本内容*/public static void logResult(String sWord) {FileWriter writer = null;try {writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");writer.write(sWord);} catch (Exception e) {e.printStackTrace();} finally {if (writer != null) {try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}
}
2.5、启动demo
2.5.1、修改Tomcat配置
HTTP
端口号修改为80
端口,因为我们的隧道端口号为80
端口
2.5.2、测试
- 访问:
http://localhost/alipay.trade.page.pay-JAVA-UTF-8/
- 草。。。
- 问题原因:https://blog.csdn.net/weixin_40652498/article/details/104201892
- 开发的时候,必然要打开这三个页面
- 沙箱开发平台
- 我的系统开发请求支付页面
- 请求支付宝系统扣款
- 用自己的支付宝账号登录了
1
,开发的网站打开2
页面,在2
中跳转到3
页面请求扣款,可能存在检测操作,在检测的时候,检测到我1
账号的存在,所以认为是异常,所以给我跳转到了钓鱼提醒页面 - 反正我换个浏览器就解决了问题
- 开发的时候,必然要打开这三个页面
- 订单页面
- 登录账户进行付款
- 执行付款
- 额,不知道为啥,一直无法跳转至成功页面
- 支付成功后进行跳转时,内网穿透工具也会报错
- 干啊,买家的钱确实扣除成功了,商家的钱也涨了。。。难道是沙箱环境在维护???【交易查询】接口也显示
trade_status: "TRADE_SUCCESS"
day17【前台】支付案例相关推荐
- 一个支付案例,学会策略模式!
点击关注公众号,Java干货及时送达 作者 | 叁滴水 来源 | https://blog.csdn.net/qq_30285985/ 前言 在开发时,总会遇到支付的需求,但是支付的方式有很多,支付宝 ...
- 基于python-django框架的支付宝支付案例
目录 @ 一. 开发前的准备 1. 必须了解的知识 SDK:软件开发工具包,可以为开发者提供快速开发的工具 沙箱环境:也就是测试环境 支付宝支付金额的精度:小数点后两位(面试) 支付宝用的什么加密方式 ...
- maven支付宝支付案例
maven支付宝支付案例 文章目录 maven支付宝支付案例 一.配置环境 二.使用步骤 1.创建个mven项目 2.去支付宝开放平台复制demo 3.测试 一.配置环境 1.进入支付宝开放平台申请沙 ...
- 史上最详细的RocketMq 下单支付案例 分享
1. 案例介绍 1.1 业务分析 模拟电商网站购物场景中的[下单]和[支付]业务 1)下单 用户请求订单系统下单 订单系统通过RPC调用订单服务下单 订单服务调用优惠券服务,扣减优惠券 订单服务调用调 ...
- java银联在线支付开发_银联在线支付案例代码
[实例简介] 银联在线支付的测试案例代码 [实例截图] [核心代码] PayOnLine └── PayOnLine ├── src │ ├── acp_sdk.properties │ └─ ...
- MUI 支付案例(支付宝/微信)
首先说明一下,本文借鉴了多位博主的文章,所以会看到很多一样的代码. 写这篇博客主要目的是为了便于后期查看(不好之处,敬请留言吐槽),案例经本人测试,是可以使用的. 先上效果图 前端HTML代码: 1 ...
- 敏捷软件开发之薪水支付案例
项目的描述 第一步:获取来自与客户交谈之后的用户素材. 有些雇员是钟点员工. 有些雇员完全以月薪进行支付. 同时,对于一些带薪雇员,会根据他们的销售情况,支付给一定数量的酬金. 雇员可以选择支付方式. ...
- Android(java)学习笔记176: 远程服务的应用场景(移动支付案例)
一. 移动支付: 用户需要在移动终端提交账号.密码以及金额等数据 到 远端服务器.然后远端服务器匹配这些信息,进行逻辑判断,进而完成交易,返回交易成功或失败的信息给移动终端.用户提交账号. ...
- 支付宝沙箱环境-Demo支付案例
1. 支付宝开放平台网址 首页:https://open.alipay.com 文档中心首页:https://docs.open.alipay.com 文档分类网址:https://docs.open ...
最新文章
- c++ 测试串口速率_Raspberry Pi Zero W:串口(UART)的配置和使用
- 互联网职场就像一场《鱿鱼游戏》
- 云付认证已通过可以支付吗_海科融通丨刷新支付日常问题【附交易操作步奏】...
- c语言十六进制字符串转整数,C语言-提取字符串中的十六进制数字并转换为一个十进制整数输出...
- 背包九讲-第三讲 多重背包
- 【数学建模】基于matlab计划生育政策调整对人口数量、结构及其影响的研究【含Matlab源码 749期】
- jieba库词频统计_jieba库的使用与词频统计
- Java界面设计GUI
- 搜索算法的感悟——解空间
- Linux服务器遇到攻击怎么办?用这些方法封禁IP
- bmp格式如何转换成png格式
- Top K Frequent Elements
- 二、C++反作弊对抗实战 (进阶篇 —— 4.遍历进程模块(暴力扫描整个内存找出被断链的))
- LeetCode 871. 最低加油次数
- 【解决】npm ERR A complete log of this run can be found in npm ERR
- [源码解析] PyTorch 流水线并行实现 (1)--基础知识
- Secret Milking Machine POJ - 2455
- 短视频社交小程序开发
- 《海盗来了》疯狂游戏,如何用数据抢占小游戏市场
- 马斯洛理论与个人发展
热门文章
- 2021年中国再生纱市场趋势报告、技术动态创新及2027年市场预测
- 2021-2025年中国车轮运动防护产品行业市场供需与战略研究报告
- 船舶照明行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- html 字体显示倒影,用CSS3的box-reflect设置文字倒影效果的方法讲解
- PHP 照相 滤镜,PHP GIF / PNG True Colorize滤镜,可保留亮度和Alpha
- 怎么处理table 与 form绑定的问题(现象:点击取消后 修改的值还是在table显示)
- java 数据类型及作用域、数据类型转换、运算符、流程控制
- 对比,还原真实的GPU池化
- 如何避免大规模线上故障?
- 日本「AI 鱼脸识别」项目,每分钟识别 100 条,有望让渔民不再“摸鱼”