SpringBoot下如何实现支付宝接口的使用
这篇文章主要介绍了SpringBoot下如何实现支付宝接口的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
前期准备:
参考之前写过的支付宝接口引入servlet版本
Jar包引入:
net.guerlab sdk-alipay-starter ${alipay.version}
参考版本:1.0.3
关于application的配置:
sdk: alipay: dev:true//true沙箱//false正式 sign-type:RSA2//验签方式 app-id://APPID private-key://私钥 alipay-public-key://支付宝公钥
Controller的处理
支付请求的处理
@RequestMapping(value="/alipay/{orderId}/{money}/{subject}",method=RequestMethod.GET) publicvoidpay(@PathVariableStringorderId,@PathVariableStringmoney,@PathVariableintsubject,HttpServletResponseresponse)throwsAlipayApiException,IOException{ JSONObjectdata=newJSONObject(); //订单号,必填 data.put("out_trade_no",orderId); //PC支付FAST_INSTANT_TRADE_PAY,APP支付QUICK_MSECURITY_PAY,移动H5支付QUICK_WAP_PAY data.put("product_code","FAST_INSTANT_TRADE_PAY"); //付款金额,必填 data.put("total_amount",money); //订单描述,必填 if(subject==0) data.put("subject","充值业务"); //该笔订单允许的最晚付款时间,逾期将关闭交易 //data.put("timeout_express",""); //公共校验参数 //data.put("passback_params",""); //PC支付 AlipayTradePagePayRequestrequest=newAlipayTradePagePayRequest(); //APP支付 //AlipayTradeAppPayRequestrequest=newAlipayTradeAppPayRequest(); //移动H5支付 //AlipayTradeWapPayRequestrequest=newAlipayTradeWapPayRequest(); //异步通知地址 request.setNotifyUrl("http://localhost:8765/pay/alipay/notify"); //同步通知地址 request.setReturnUrl("http://localhost:8765/pay/alipay/returnHandler"); //业务参数 request.setBizContent(data.toJSONString()); AlipayTradePagePayResponsealipayResponse=client.pageExecute(request); response.setContentType("text/html;charset=UTF-8"); response.getWriter().write(alipayResponse.getBody()); }
这里我传了三个参数作为示范,可以视情况自行修改,切记,如果支付方式有所变换,client.?Execute要@RequestMapping(value="alipay/notify",method=RequestMethod.POST)
@ResponseBody publicJSONObjectnotify(HttpServletRequestrequest)throwsAlipayApiException,UnsupportedEncodingException{ //获取支付宝POST过来反馈信息 Mapmaps=newHashMap (); Map requestParams=request.getParameterMap(); for(Iterator iter=requestParams.keySet().iterator();iter.hasNext();){ Stringname=(String)iter.next(); String[]values=(String[])requestParams.get(name); StringvalueStr=""; for(inti=0;i maps=request.getParameterMap(); //for(Entry map:maps.entrySet()){ //System.out.println(map.getKey()+"下的值------------"); //String[]value=map.getValue(); //for(Stringstring:value){ //System.out.println(string); //} //} StringorderId=maps.get("out_trade_no")[0];//获取订单号 //进行相应的业务处理returnActionHelper.responseOk(); }
异步回调为post,同步回调为get,这里因为异步回调地址必须是公网可以访问的,所以使用同步接口先行进行判断处理,正常业务下以异步回调为准来判断。
取消同步回调中的注解可以清楚的在控制台看到所有的参数!
支付账号和密码自行在沙箱账号中查询即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。