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【前台】支付案例相关推荐

  1. 一个支付案例,学会策略模式!

    点击关注公众号,Java干货及时送达 作者 | 叁滴水 来源 | https://blog.csdn.net/qq_30285985/ 前言 在开发时,总会遇到支付的需求,但是支付的方式有很多,支付宝 ...

  2. 基于python-django框架的支付宝支付案例

    目录 @ 一. 开发前的准备 1. 必须了解的知识 SDK:软件开发工具包,可以为开发者提供快速开发的工具 沙箱环境:也就是测试环境 支付宝支付金额的精度:小数点后两位(面试) 支付宝用的什么加密方式 ...

  3. maven支付宝支付案例

    maven支付宝支付案例 文章目录 maven支付宝支付案例 一.配置环境 二.使用步骤 1.创建个mven项目 2.去支付宝开放平台复制demo 3.测试 一.配置环境 1.进入支付宝开放平台申请沙 ...

  4. 史上最详细的RocketMq 下单支付案例 分享

    1. 案例介绍 1.1 业务分析 模拟电商网站购物场景中的[下单]和[支付]业务 1)下单 用户请求订单系统下单 订单系统通过RPC调用订单服务下单 订单服务调用优惠券服务,扣减优惠券 订单服务调用调 ...

  5. java银联在线支付开发_银联在线支付案例代码

    [实例简介] 银联在线支付的测试案例代码 [实例截图] [核心代码] PayOnLine └── PayOnLine ├── src │   ├── acp_sdk.properties │   └─ ...

  6. MUI 支付案例(支付宝/微信)

    首先说明一下,本文借鉴了多位博主的文章,所以会看到很多一样的代码. 写这篇博客主要目的是为了便于后期查看(不好之处,敬请留言吐槽),案例经本人测试,是可以使用的. 先上效果图 前端HTML代码: 1 ...

  7. 敏捷软件开发之薪水支付案例

    项目的描述 第一步:获取来自与客户交谈之后的用户素材. 有些雇员是钟点员工. 有些雇员完全以月薪进行支付. 同时,对于一些带薪雇员,会根据他们的销售情况,支付给一定数量的酬金. 雇员可以选择支付方式. ...

  8. Android(java)学习笔记176: 远程服务的应用场景(移动支付案例)

    一. 移动支付:       用户需要在移动终端提交账号.密码以及金额等数据 到 远端服务器.然后远端服务器匹配这些信息,进行逻辑判断,进而完成交易,返回交易成功或失败的信息给移动终端.用户提交账号. ...

  9. 支付宝沙箱环境-Demo支付案例

    1. 支付宝开放平台网址 首页:https://open.alipay.com 文档中心首页:https://docs.open.alipay.com 文档分类网址:https://docs.open ...

最新文章

  1. c++ 测试串口速率_Raspberry Pi Zero W:串口(UART)的配置和使用
  2. 互联网职场就像一场《鱿鱼游戏》
  3. 云付认证已通过可以支付吗_海科融通丨刷新支付日常问题【附交易操作步奏】...
  4. c语言十六进制字符串转整数,C语言-提取字符串中的十六进制数字并转换为一个十进制整数输出...
  5. 背包九讲-第三讲 多重背包
  6. 【数学建模】基于matlab计划生育政策调整对人口数量、结构及其影响的研究【含Matlab源码 749期】
  7. jieba库词频统计_jieba库的使用与词频统计
  8. Java界面设计GUI
  9. 搜索算法的感悟——解空间
  10. Linux服务器遇到攻击怎么办?用这些方法封禁IP
  11. bmp格式如何转换成png格式
  12. Top K Frequent Elements
  13. 二、C++反作弊对抗实战 (进阶篇 —— 4.遍历进程模块(暴力扫描整个内存找出被断链的))
  14. LeetCode 871. 最低加油次数
  15. 【解决】npm ERR A complete log of this run can be found in npm ERR
  16. [源码解析] PyTorch 流水线并行实现 (1)--基础知识
  17. Secret Milking Machine POJ - 2455
  18. 短视频社交小程序开发
  19. 《海盗来了》疯狂游戏,如何用数据抢占小游戏市场
  20. 马斯洛理论与个人发展

热门文章

  1. 2021年中国再生纱市场趋势报告、技术动态创新及2027年市场预测
  2. 2021-2025年中国车轮运动防护产品行业市场供需与战略研究报告
  3. 船舶照明行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  4. html 字体显示倒影,用CSS3的box-reflect设置文字倒影效果的方法讲解
  5. PHP 照相 滤镜,PHP GIF / PNG True Colorize滤镜,可保留亮度和Alpha
  6. 怎么处理table 与 form绑定的问题(现象:点击取消后 修改的值还是在table显示)
  7. java 数据类型及作用域、数据类型转换、运算符、流程控制
  8. 对比,还原真实的GPU池化
  9. 如何避免大规模线上故障?
  10. 日本「AI 鱼脸识别」项目,每分钟识别 100 条,有望让渔民不再“摸鱼”