支付宝H5支付接入实战:Java一站式解决方案

关注我的公众号:【编程朝花夕拾】,可获取首发内容。

01 引言

支付产品千千万,作为领军产品的当属微信和支付宝。支付产品的接入常用的场景越来越多,同一个产品,又分很多场景的支付场景。以支付宝为例,支付的产品包括当面付、APP支付、手机网站支付等,每一种产品都对应不同的支付场景。

刚好这段时间因为业务需要接入支付宝的H5支付,整理一下分享给大家。

02 H5支付介绍

2.1 产品介绍

H5支付在支付宝产品内部叫手机网站支付,是支付宝面向移动端网页场景提供的支付解决方案。用户在使用手机浏览器访问商户网页时,可通过调用支付宝客户端或跳转到支付宝网页完成支付。相比传统的PC端支付,H5支付更适合移动端用户,提供更流畅的支付体验。

简单来讲就是再没有支付宝生态的环境下的一种支付方式,也叫支付宝外支付。

2.2 角色介绍

支付宝的开放业务存在三种角色类型:

  • **开发者角色:**需要开发者账号,一般登录支付宝 开放平台 完成应用开发相关操作。
  • **商家角色:**需要商家账号,一般登录 商家服务平台 开通支付服务并完成商家经营相关操作。
  • **服务商角色:**需要服务商账号,一般登录服务商平台 完成协助商家开通产品等操作。

作为公司直连产品,主要就是两个角色:开发者和商家

同时不同的角色需要进入不同的平台设置。商家也就是收款方,一般就是公司需要申请收款账号。开发者也就是开发人员需要配置API属性,使用的账号可以直接使用商家的账号即可。

03 H5支付接入-开放平台

H5支付的接入官方文档介绍的相当详细,但是开发平台和商家平台来回跳可能会将人绕晕,我们将逐步拆解。

官方文档贴心的提供了检测小工具,如上图。

官方接入文档:opendocs.alipay.com/open/203/10...

3.1 开放平台创建应用

首先需要开发者在开放平台创建 网页/移动应用。

创建完成之后等待官方审核,一般一个工作日之内完成审核。

3.2 开放平台配置应用

我们需要关注的配置有接口加签方式、接口内容加密方式以及openid配置管理。

接口加签方式

接口加签必填选项,用于防止数据篡改,保障应用和支付宝交互的安全性

需要接入官方秘钥工具生成即可。

官方统一工具地址:opendocs.alipay.com/common/02ki...

最终我们生成的秘钥文件包括:应用公钥和私钥

还有一个支付宝公钥:

其中支付宝公钥和应用私钥参与代码逻辑。

接口内容加密方式

这个选填项,用于加 / 解密 OpenAPI bizContent 报文内容,可大幅提升接口内容传输的安全性。

openid配置管理

openid配置管理是新版默认开启的参数。低版本支付宝服务端 SDK 不支持获取 openid,在使用 openid 开发接入前,请先确保使用的 SDK 符合版本要求:

开发语言 SDK版本要求
Java 4.35.37 及以上的版本
.NET 4.7.144 及以上的版本
PHP 4.19.30 及以上的版本
PYTHON 3.6.528 及以上的版本

否则会出现不支持的提示:

到这里,开发平台基本就配置好了。

3.3 应用APPID

这里的APPID需要和商家后台绑定。

3.4 开放平台

开放平台是独立的平台。

开放平台地址:openhome.alipay.com/

04 H5支付接入-商家平台

商家平台地址:b.alipay.com/page/home

4.1 绑定APPID

登录 商家平台 > 账号中心 > 绑定 > APPID绑定 ,点击 添加绑定

然后添加绑定关系:

这里的APPID就是开放平台的APPID

4.2 开通产品

这里的我已经开通过了,没有开通话需要开通支付产品。开通过程中,如果网站的主体和商家后台的主体不一致需要授权。授权函如下图:

到这里就完成了支付宝H5支付的所有配置,下来就到了编码环节了。

05 Java代码

Java代码是非常简单的,只需要复制官方文档的代码即可,使用适合自己的参数即可,这里不再赘述。

代码示例地址:opendocs.alipay.com/open/29ae8c...

这里简单的说以配置的代码:

java 复制代码
private static AlipayConfig getAlipayConfig() {
    String privateKey  = "<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->";
    String alipayPublicKey = "<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->";
    AlipayConfig alipayConfig = new AlipayConfig();
    alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
    alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
    alipayConfig.setPrivateKey(privateKey);
    alipayConfig.setFormat("json");
    alipayConfig.setAlipayPublicKey(alipayPublicKey);
    alipayConfig.setCharset("UTF-8");
    alipayConfig.setSignType("RSA2");
    return alipayConfig;
}

这里的配置是初始化支付宝客户端需要的参数,其中privateKeyalipayPublicKey就是开放平台生成的应用私钥和应用公钥。

这里的APPID就是应用的APPID

06 小结

对接下来无论支付宝和微信,都需要一个载体去连接商户号(商家后台),然后通过关联的方式打通支付渠道。

支付宝的产品中有一个指定买家付款的功能,可以杜绝三方付款。而微信只能用到指定的行业如金融、保险等,需要额外申请。

相关推荐
黎雁·泠崖1 分钟前
Java面向对象:对象数组核心+综合实战
java·开发语言
Mr.LJie6 分钟前
记录使用iText7合并PDF文件、PDF发票、PDF火车票
java·pdf
野生技术架构师8 分钟前
2026最新最全Java 面试题大全(整理版)2000+ 面试题附答案详解
java·开发语言
小北方城市网13 分钟前
SpringBoot 集成 MinIO 实战(对象存储):实现高效文件管理
java·spring boot·redis·分布式·后端·python·缓存
Solar202518 分钟前
工程材料企业数据采集系统十大解决方案深度解析:从技术挑战到架构实践
java·大数据·运维·服务器·架构
又是忙碌的一天19 分钟前
SpringMVC的处理流程
java·mvc
黎雁·泠崖21 分钟前
Java分支循环与数组核心知识总结篇
java·c语言·开发语言
程序员泠零澪回家种桔子23 分钟前
RAG自查询:让AI精准检索的秘密武器
人工智能·后端·算法
派大鑫wink24 分钟前
【Day36】EL 表达式与 JSTL 标签库:简化 JSP 开发
java·开发语言·jsp
Li_yizYa27 分钟前
谈谈Java集合中的fail-fast和fail-safe
java·开发语言