当前位置:网站首页 > Java基础 > 正文

java支付宝接口教程



在App内集成支付宝支付。APP调用支付宝提供的SDK,SDK再调用支付宝APP内的支付模块。如果用户已安装支付宝APP,商家APP会跳转到支付宝中完成支付,支付完后跳回到商家APP内。如果用户没有安装支付宝APP,商家APP内会调起支付宝网页支付收银台,用户登录支付宝账户,支付完后展示支付结果。

1. 创建应用并获取APPID

2. 添加App支付功能

从我的应用列表点击应用对应的查看详情按钮进入

添加完成后,若应用状态为开发中状态,只能在沙箱环境下进行调试。应用申请上线后,会同时申请此列表的功能,接口即生效。

3. 签约

在功能列表中点击签约,签约后才能正常使用,签约前可使用沙箱模式进行调试。

以上的步骤可以交给公司相关人员进行申请,开发人员请看下面


1. 支付宝密钥处理体系

所以需要获取到应用公钥、应用私钥以及支付宝公钥:

应用公钥
由商户自己生成的RSA公钥(与应用私钥必须匹配),商户需上传应用公钥到支付宝开放平台,以便支付宝使用该公钥验证该交易是否是商户发起的。

应用私钥
由商户自己生成的RSA私钥(与应用公钥必须匹配),商户开发者使用应用私钥对请求字符串进行加签。

支付宝公钥
支付宝的RSA公钥,商户使用该公钥验证该结果是否是支付宝返回的。


2. 获取密钥和密钥配置

注:使用密钥生成工具生成密钥时,要注意密钥格式,如果服务端使用.Net或其他非java语言,一定要选PKCS1(非JAVA适用),否则后面要凉凉。密钥长度建议选择2048。


使用App支付功能需要在原生中实现,这里以Android为例。接入移动支付需要集成两个SDK,分别是客户端的SDK和服务端的SDK。

注:为何需要两个SDK?因为客户端不能含有敏感信息,包括密钥、APPID等,这些东西都必须从服务端获取,包括加签验签过程,所以还需要集成一个服务端给APP调用。


集成方法:https://docs.open.alipay.com/204//

(1)发起支付请求

支付宝SDK中提供了一个PayTask类,使用其payV2方法即可发起支付请求。

 

所以发起支付请求的重点在于获取orderInfo,也就是从服务端获取加签结果,加签过程不允许在客户端进行,否则可能被反编译,造成严重的后果。所以加签过程请看下面服务端(.Net)SDK集成的第(1)条。


(2)支付回调

调用支付宝支付后,将会收到同步通知和异步通知。如果过程中取消支付则只会收到同步通知。

同步通知:支付宝sdk对商户的请求支付数据处理完成后,会将结果同步反馈给app端。在支付回调中即可获取支付结果信息。
异步通知: 对于App支付产生的交易,支付宝会根据原始支付API中传入的异步通知地址notify_url,通过POST请求的形式将支付结果作为参数通知到商户系统。

注: 手机端同步通知有可能存在获取不到的情况,如手机关机,应用crash等情况,所以手机端同步回调只作为支付结果提示。真正的支付成功逻辑将在支付宝异步通知(服务端)中做处理,请看下面服务端(.Net)SDK集成的第(2)条。

so,手机端只做同步通知处理,如下:

 

result就是返回的同步回调结果,里面的resultStatus是支付状态码,如果是9000则支付成功。

 

如果使用混合开发(h5+mui+原生),还需跳转至mui页面,则可使用js回调函数将同步通知传入mui端进行后续处理,如:

 

集成方法:https://docs.open.alipay.com/54//

为了便于支付宝异步接口调用,这里服务端将使用webApi,服务端主要工作为加签、验签(异步通知验证)以及更改订单支付状态。

(1)加签

核心步骤:

 

如果觉得密钥放在代码中不够安全的话,建议将密钥存储为pem文件,执行加签过程时从文件中读出,做法如下:


① 生成pem文件

pem文件是有格式的,就像这样

-----BEGIN RSA PRIVATE KEY----- MIIEogIBAjayyr4gU38hr/EYnXdbEfbaGkdVnvf6Y+9zWkkiPcNq-----这里是密钥内容 -----END RSA PRIVATE KEY----- 

生成pem文件需要使用openssl.exe这个可执行文件,当然也可以copy个pem文件替换下里面的密钥内容,不过这样有可能会导致格式乱了。openssl.exe在密钥生成工具的openssl的bin目录下,双击即可打开。 openssl.png

生成应用私钥pem文件,输入命令:genrsa -out rsa_private_key.pem 2048

private_key_command.png
private_key_pem.png


生成应用公钥pem文件,输入命令:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

public_key_command.png
public_key_pem.png

支付宝公钥需要上传应用公钥获取,如果不使用pem文件,代码中直接放上支付宝公钥就行,如果要使用pem文件,可以将应用公钥的pem文件复制一份,将密钥内容换成支付宝公钥的,格式如下。

 

注:上面密钥的格式默认为PKCS1的,如果使用PKCS8(Java适用)别忘记执行转码命令,否则也要凉凉的。如果使用沙箱模式请将密钥换成沙箱版进行测试。


② 从pem文件中读取密钥

首先获取存放密钥文件的路径,为了防止出现意外,可获取文件的绝对路径,如下:

 

获取到文件路径后传入IAopClient的构造函数中,并将最后一个参数置为true即可。

 

(2) 验签

 

这个接口地址便是加签过程中传入的异步通知地址notify_url


 
 

验签结果返回一个bool值,如果验签成功返回true,否则false。


 

注:如果在改变订单支付状态时需要的某些参数无法获取,可以将其拼接在加签过程中某些不是很必要的参数里,支付宝将在异步通知中返回。








以上便是支付宝支付的实现步骤,包括了移动端(原生)和服务端(.Net)。Demo已上传至GitHub,有兴趣的可以下载:


原创不易,转载请注明:https://www.cnblogs.com/xch-yang/p/10336922.html


























  • 上一篇: java658教程
  • 下一篇: java数据结构视频教程
  • 版权声明


    相关文章:

  • java658教程2026-01-16 21:34:04
  • java后续修改教程2026-01-16 21:34:04
  • java的简单教程2026-01-16 21:34:04
  • 程序开发教程java2026-01-16 21:34:04
  • java制作dll教程2026-01-16 21:34:04
  • java数据结构视频教程2026-01-16 21:34:04
  • java底层使用教程2026-01-16 21:34:04
  • java switch使用教程2026-01-16 21:34:04
  • java教程全集视频2026-01-16 21:34:04
  • mac自学java教程2026-01-16 21:34:04