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

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

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

相关推荐
点光4 小时前
使用Sentinel作为Spring Boot应用限流组件
后端
不要秃头啊4 小时前
别再谈提效了:AI 时代的开发范式本质变了
前端·后端·程序员
有志5 小时前
Java 项目添加慢 SQL 查询工具实践
后端
jonjia5 小时前
引入新维度化解权衡难题
程序员
jonjia5 小时前
优秀的工程师如何打破规则
程序员
jonjia5 小时前
在大厂交付大型项目的策略
程序员
jonjia5 小时前
RFC 与设计文档
程序员
jonjia5 小时前
为什么你(或任何人)应该成为一名研发经理?
程序员
jonjia5 小时前
管理技术质量 (Manage Technical Quality)
程序员
jonjia5 小时前
大厂软件工程师职业发展路径
程序员