公共配置
引入包:
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.0.0</version>
</dependency>
Alipay几个重要的对象:
-
AlipayClient 接口
-
声明了调用各种请求的方法。
-
主要实现类:DefaultAlipayClient
-
实现类实现了接口中的各个方法
-
主要封装支付请求的公共参数,如请求网关,签名等信息。
-
主要方法:
- excute(AlipayRequest request):发起请求
- pageExcute(AlipayRequest request):网页支付的请求
-
-
AlipayRequest 接口
-
声明了一些参数的get 和 set 方法
-
主要实现类:AlipayTrade***Request
- 封装了各个请求的业务参数。
-
主要方法:
- setBizContent(String jsonContent):设置请求的业务参数
- setNotifyUrl(String url):设置异步通知的地址
- setReturnUrl(String url):设置同步通知的地址
-
-
AlipayResponse 类
-
声明了返回的 code,错误信息 和一些返回参数
-
主要子类:AlipayTrade***Response
- 提供了对各类请求的返回数据进行处理的方法
-
主要方法:
-
getSubCode:获取错误代码(官网上可对照,以ACQ开头)
-
getMsg:获取错误原因
-
getBody:获取返回内容,封装了响应内容
-
getParams:获取传入的请求业务参数
-
isSuccess:判断本次请求是否调用成功。是判断 subCode 是否为空
配置支付宝参数:
-
-
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String APP_ID = "20132101000652145";
// 商户私钥,您的PKCS8格式RSA2私钥
public static String MERCHANT_PRIVATE_KEY = "";
// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
public static String ALIPAY_PUBLIC_KEY = "";
/** * 异步通知,这里我们设计自己的后台代码 */
public static String notify_url = "http://127.0.0.1:8003/order/notifyUrl";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String return_url = "http://127.0.0.1:8003/order/returnUrl";
// 签名方式
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 SUBJECT = "我的订单";
使用流程(以电脑网站发起支付请求为例):
- 初始化一个 AlipayClient客户端
AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,APP_PRIVATE_KEY,FORMAT,CHARSET,ALIPAY_PUBLIC_KEY,SIGN_TYPE);
配置参数 | 示例值解释 | 获取方式/示例值 |
---|---|---|
URL | 支付宝网关(固定) | https://openapi.alipay.com/gateway.do |
APPID | APPID 即创建应用后生成 | 获取见上方创建应用 |
APP_PRIVATE_KEY | 开发者私钥,由开发者自己生成 | 获取见配置密钥 |
FORMAT | 参数返回格式,只支持 json;默认json | json(固定) |
CHARSET | 编码集,支持 GBK/UTF-8 | 开发者根据实际工程编码配置 |
ALIPAY_PUBLIC_KEY | 支付宝公钥,由支付宝生成 | 获取详见配置密钥 |
SIGN_TYPE | 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2;默认是 RSA | RSA2 |
- 声明发向支付宝的请求 request
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
//设置请求的同步返回地址
alipayRequest.setReturnUrl(AlipayConfig.return_url);
//设置请求的异步返回地址
alipayRequest.setReturnUrl(AlipayConfig.notify_url);
//设置业务请求参数,方式1(推荐)
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
model.setOutTradeNo("xxxxx");
model.setTotalAmount("33.2");
alipayRequest.setBizModel(model);
//设置业务请求参数 ,方式2
alipayRequest.setBizContent("{\"out_trade_no\":\"" + outTradeNo + "\","
+ "\"total_amount\":\"" + totalAmount + "\","
+ "\"subject\":\"" + subject + "\","
+ "\"body\":\"商品名称\","
+ "\"timeout_express\":\"90m\","
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");