这个官方的文档例子还是靠谱的,可能不太好调例子
好的博客还是很多的,不过我没怎么查,这个
https://docs.open.alipay.com/270/105899/
https://docs.open.alipay.com/58/103584
官方的
必须知道他需要什么东西,看过官方的文档与例子才行
这个跟微信也有相似:
首先配置文件
商户号,支付宝号,私匙,公匙,签名,网关,回调
controller
@RequestMapping(value="/pagePay",produces="application/json;charset=UTF-8")
public String pagePay(ForAlipay record){
JSONObject json = new JSONObject();
String form = alipayService.pagePay(record);
json.put("data", form);
return json.toJSONString();
}
service实现类:
@Override
public String pagePay(ForAlipay record) {
//支付页面接口对应的request
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
//在公共参数中设置回跳和通知地址
//return_url:买家支付成功后跳转的页面,仅当买家支付成功后跳转一次
//notify_url:异步通知,下单成功后,支付宝服务器通知商户服务,并把订单的状态通知给商户,商户根据返回的订单状态,修改网站订单的状态
alipayRequest.setReturnUrl(AlipayConfig.return_url);
alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
//TbOrderForm order = tbOrderFormMapper.selectByPrimaryKey(record.getOut_trade_no());
model.setOutTradeNo(record.getOut_trade_no());
model.setTotalAmount(100+"");
model.setSubject(record.getSubject());
model.setBody(record.getBody());
model.setProductCode("FAST_INSTANT_TRADE_PAY");
//自填
model.setBody("a");
model.setSubject("aa");
alipayRequest.setBizModel(model);
String form="";
try {
form = alipayClient.pageExecute(alipayRequest).getBody();
} catch (AlipayApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return form;
},
注意他的参数有几个不为空,不然报错setSubjec,他返回的是一个html页面,人家给画好了
支付成功调回调函数:
他比较有意思,异步通知,同步跳转,
买家付款成功后,如果接口中指定有return_url ,买家付完款后会跳到 return_url所在的页面,这个页面可以展示给客户看,这个页面只有付款成功才会跳转.
notify_url:服务器后台通知,这个页面是程序后台运行的(买家和卖家都看不到),买家付完款后,支付宝会调用notify_url这个页面所在的页面并把相应的参数传递到这个页面,这个页面根据支付宝传递过来的参数修改网站订单的状态,更新完订单后需要在页面上打印出一个success给支付宝,如果反馈给支付宝的不是success,支付宝会继续调用这个页面.
流程:买家付完款(trade_status=WAIT_SELLER_SEND_GOODS)--->支付宝通知notify_url---& gt;如果反馈给支付宝的是success(表示成功,这个状态下不再反馈,如果不是继续通知,一般第一次发送和第二次发送的时间间隔是3分钟)
剩下的过程,卖家发货,买家确认收货,交易成功都是这个流程
通知service
@RequestMapping(value = "/notifyU",produces = "application/json;charset=utf-8")
public String notifyU(HttpServletRequest req){
String notify = "";
try {
notify = alipayService.notify(req);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return notify;
}
/**
*
* @Title: returnU
* @Description: 支付宝同步跳转,支付成功后,获取支付宝get过来的信息,验签
* @author: chen
* @param: @param req
* @param: @return
* @return: String
* @throws
*/
@RequestMapping(value = "/returnU",produces = "application/json;charset=utf-8")
public String returnU(HttpServletRequest req){
JSONObject json = new JSONObject();
String returnU = "";
try {
returnU = alipayService.returnU(req);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
json.put("code", ResponseStatusCode.PAY_ERR);
json.put("msg", "支付失败");
}
if("success".equals(returnU)){
json.put("code", ResponseStatusCode.SUCC);
}else{
json.put("code", ResponseStatusCode.PAY_ERR);
json.put("msg", "支付失败");
}
return json.toJSONString();
}
/**
*
* @Title: wxNotify
* @Description: 微信支付通知
* @author: chen
* @param: @param req
* @param: @return
* @return: String
* @throws
*/
@RequestMapping(value = "/wxNotify",produces = "application/json;charset=utf-8")
public String wxNotify(HttpServletRequest req){
String notify = wXPayService.notify(req);
return notify;
}
具体的实现类,相信你可以搜到,太多了不记录了