支付宝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 小结

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

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

相关推荐
悟空码字2 小时前
SpringBoot读取Excel文件,一场与“表格怪兽”的搏斗记
java·spring boot·后端
摇滚侠2 小时前
Java 零基础全套视频教程,日期时间 API,笔记147-148
java·开发语言·笔记
Goboy2 小时前
如果2025的我是强化学习,那最终奖励会是什么?
人工智能·程序员·trae
不惑_2 小时前
Windows安装Java
java·开发语言·windows
程序员侠客行2 小时前
Mybatis的Executor和缓存体系
java·后端·架构·mybatis
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 基于Java的化学实验室信息管理系统为例,包含答辩的问题和答案
java·开发语言
带刺的坐椅2 小时前
通用流程编排框架,Solon Flow v3.8.0 隆重发布
java·solon·flowable·flow·drools
小王师傅662 小时前
【轻松入门SpringBoot】actuator健康检查(中)
java·spring boot·spring
咕噜咕噜啦啦2 小时前
Java速通(应用程序)
java·开发语言