使用的是MVC框架
private final static String APP_ID = "********";
private final static String APP_PRIVATE_KEY = "********************";
private final static String ALIPAY_PUBLIC_KEY = "*******************";
private final static String CHARSET ="utf-8";
@Controller
@RequestMapping(value = "/App")
public class AppKey
{
/**
* 返回类型
*/
MessageModel messageModel;
/**
*IOS支付宝支付
*/
@ResponseBody
@RequestMapping(value = "/pay", produces="text/html;charset=UTF-8;")
public String pay(String orderId,float actualPay) {
messageModel = new MessageModel();
String signOrderUrl = "";
//实例化客户端
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(orderId);
model.setTimeoutExpress("30m");
model.setTotalAmount("0.01");
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());//就是orderStrng 可以直接给客户端请求,无需再做处理。
signOrderUrl = response.getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
messageModel.setStatus("1");
messageModel.setMessage("Success");
messageModel.setData(signOrderUrl);
return JSONUtil.object2JSON(messageModel);
}
}