开发项目使用到支付宝支付,研究了两天(包含账号等资源申请),终于跟app端调试完成,账号申请过程略过,这里主要讲的是统一下单接口,废话不说,上代码
以下是pom依赖
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.7.4.ALL</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.0.3</version>
</dependency>
以下是统一下单接口,下单的几个参数大概说一下来源
appid就是申请app账号的唯一标识
支付宝私钥,支付宝秘钥这个是需要通过安装“支付宝开放平台开发助手“生成的秘钥
剩下的几个参数都是固定值
@RequestMapping("/alipay")
@ResponseBody
public String getOrder(){
String APP_ID="";
//支付宝私钥
String APP_PRIVATE_KEY="";
String CHARSET="UTF-8";
//支付宝公钥
String ALIPAY_PUBLIC_KEY="";
//订单编号
String outtradeno=System.currentTimeMillis()+"";
//实例化客户端
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody("订单信息");
model.setSubject("App支付测试Java");
model.setOutTradeNo(outtradeno);
model.setTimeoutExpress("30m");
model.setTotalAmount("1");
model.setProductCode("QUICK_MSECURITY_PAY");
request.setBizModel(model);
request.setNotifyUrl("http://www.baidu.com");
try {
//这里和普通的接口调用不同,使用的是sdkExecute
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。
return response.getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return "";
}