您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

搞定支付宝网页支付,实战来了

时间:2021-04-25 12:41:00  来源:  作者:叁滴水

作者:叁滴水
 

前言

了解了支付宝秘钥设置的原理之后,可更加快速地进行开发支付宝支付。在此示例一下支付宝支付较为简单的场景——电脑网站支付。

这个场景对于后端开发者是比较友好的,官方的demo中已经提供了html页面,只需要进行简单的配置即可运行。

一、电脑网站支付

1.1 沙箱环境配置

搞定支付宝网页支付,实战来了

 

登录支付宝,进入控制台进入沙箱环境。

搞定支付宝网页支付,实战来了

 

进入之后配置沙箱环境秘钥。由上图可见,用来计算签名的RSA加密是必须要配置的,开发者要下载支付宝开发工具获取一对RSA秘钥,另外选填部分的应用网关授权地址容易搞混,解释如下:

应用网关

用于接收由支付宝服务器通知 主要用于:

1、生活号被动通知

2、口碑门店的被动通知

3、单笔转账到支付宝账户

4、现金红包

5、以及其他部分产品和订阅消息

授权回调地址

顾名思义仅用于授权接口主要用于:

1、第三方应用授权

2、用户信息授权

3、以及其他涉及授权的产品(如商户会员卡)

不管是授权回调地址还是应用网关都是需要传入http或是https开头的网页地址。更详细的说明可查看支付宝官方。

AES加密在选填部分。可见在对接支付宝时,官方并不强制要求使用AES加密,可以根据自己的实际情况自行选择是否使用AES加密。

1.2、demo加载

1.2.1、idea直接添加

至今官方提供的demo还是比较古老的一种方式,是采用的Eclipse开发工具编写的,里面有一些简单的jsp页面,只需要下载即可。

搞定支付宝网页支付,实战来了

 

现在开发工具基本都换成了idea,也可以通过idea直接打开eclipse工程。另外,关注公众号JAVA技术栈,在后台回复:激活码,可以获取我写的获取正版 IDEA 激活码的方式,很多人都获取到了。

搞定支付宝网页支付,实战来了

 


搞定支付宝网页支付,实战来了

 

1.2.2、maven添加

现在大部分都是maven工程,我的idea中javaee都没有,很是尴尬,因此,我选择直接转换成springboot工程。Spring Boot 基础教程就不介绍了,系列教程可以看这里:https://github.com/javastacks/spring-boot-best-practice

将jsp代码和java配置类复制到一个纯净的springboot工程中,结构大概如此,webApp是需要自己新建的,将原有工程的类和jsp复制进来即可。

搞定支付宝网页支付,实战来了

 

pom文件中添加对jsp的支持,另外打包时将默认的jar包改成war包,war包对jsp更加友好,配置示例如下。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.2.5.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
 </parent>
 <groupId>com.example</groupId>
 <artifactId>alipay</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>alipay</name>
 <packaging>war</packaging>
 <description>Demo project for Spring Boot</description>
 <properties>
  <java.version>8</java.version>
 </properties>
 <dependencies>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
  </dependency>
  
<!--  添加支持jsp-->
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
  </dependency>
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
  </dependency>
  <!-- Tomcat的支持-->
  <dependency>
   <groupId>org.apache.tomcat.embed</groupId>
   <artifactId>tomcat-embed-jasper</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <scope>provided</scope>   <!-- 编译时依赖  运行是不需要此包 -->
  </dependency>
 </dependencies>

 <build>
  <finalName>${project.artifactId}</finalName>
  <plugins>
   <plugin>   <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
   </plugin>
   <!-- 添加war 插件 -->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
     <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
   </plugin>
  </plugins>
  
 </build>
</project>

在官方提供的demo中,有3个包需要进行添加。

因为是测试,而且依赖的代码写在了jsp中,不影响打包,索性可以直接先打包,然后将3个jar复制到服务器的lib目录。

搞定支付宝网页支付,实战来了

 


搞定支付宝网页支付,实战来了

 

1.3、参数配置

demo中提供了一个配置类AlipayConfig.java。

这里需要将沙箱环境提供的参数配置上。

// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "";

// 商户私钥,您的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://{服务器ip}/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";

// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String return_url = "http://{服务器ip}/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.alipaydev.com/gateway.do";

// 日志路径
public static String log_path = "/";
  1. app_id 应用id。每个应用都有自己的唯一标示。这个参数在支付宝、微信等许多开放平台都有出现。
  2. merchant_private_keyalipay_public_key这是用来计算签名的秘钥。
  3. notify_url 这个是用来接收支付宝回调通知的接口地址,这个接口需要进行幂等处理。
  4. return_url 配置支付成功之后跳转的页面地址。
  5. sign_type 签名方式,这个就默认的RSA2加密即可。一般不需要修改。
  6. gatewayUrl 支付宝网关,这个在app配置的时候官方提供了,复制下来即可。

1.4、启动工程

配置完成之后即可启动工程,进入首页index.jsp。

我的路径是/alipay/index.jsp,大家参考下。

搞定支付宝网页支付,实战来了

 

官方的demo中提供了付款、交易查询、退款、退款查询、交易关闭等功能。开发者可自行选择调试。

另外沙箱环境是一套独立的支付宝环境,需要下载官方提供的沙箱支付宝app(只有Android/ target=_blank class=infotextkey>安卓)。

搞定支付宝网页支付,实战来了

 

点击付款功能的支付按钮,即可跳入支付页面,支付完成之后会自行跳转到配置的return_url地址。

搞定支付宝网页支付,实战来了

 

注:有时候会提示存在钓鱼风险提示页面。只需要关闭浏览器,只打开支付入口页面index.jsp,不要打开其他的支付宝页面就解决了。



Tags:网页支付   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
了解了支付宝秘钥设置的原理之后,可更加快速地进行开发支付宝支付。在此示例一下支付宝支付较为简单的场景——电脑网站支付。...【详细内容】
2021-04-25  Tags: 网页支付  点击:(258)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的&emsp;&emsp;程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条