1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Spring Boot 调用第三方支付接口(支付宝-沙箱)

Spring Boot 调用第三方支付接口(支付宝-沙箱)

时间:2021-02-24 22:33:54

相关推荐

Spring Boot 调用第三方支付接口(支付宝-沙箱)

Spring Boot 调用第三方支付接口(支付宝-沙箱)

各位大神,请轻喷!

一、准备工作

第一步准备工作:下载支付宝开放平台开发助手https://docs./291/105971#LDsXr(一路安装就行)

第二步准备工作:注册,用支付宝扫码注册沙箱,网址:/platform/appDaily.htm?tab=info

下面就要开始干活!!!!!!!!!

因为已经扫码注册过了,所以就直接进去根据图示往下操作

开发者中心=》研发服务

进入沙箱,在这里配置你的沙箱了,配置沙箱需要我们同时进行下一步操作,打开刚刚安装的支付宝开放平台开发助手,记住不要关闭页面

打开支付宝开放平台开发助手,依次按照步骤操作,可以新建文档保存复制的应用私钥和秘钥。注意一定要选择PAKCS8和2048

打开刚刚进入的网页

会弹出如下弹框,把公钥粘贴到红字的地方:

到这里就要打开我们的项目了,准备接入

二、项目

pom.xml中加入依赖

<!--整合支付宝支付--><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>3.1.0</version></dependency>

新建一个AlipayConfig

public class AlipayConfig {// ↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号public static String app_id = "APPID";//例:在沙箱网页中 信息部分中的必看部分10171308// 商户私钥,您的PKCS8格式RSA2私钥public static String merchant_private_key = "商户私钥,就是前面复制的";// 支付宝公钥,查看地址:/platform/keyManage.htm// 对应APPID下的支付宝公钥。public static String alipay_public_key = "公钥,就是前面复制的";// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问/*** 返回的时候此页面不会返回到用户页面,只会执行你写到控制器里的地址*/public static String notify_url = "你的服务器地址/项目名称/notifyUrl";// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问/*** 此页面是同步返回用户页面,也就是用户支付后看到的页面,上面的notify_url是异步返回商家操作,谢谢* 要是看不懂就找度娘,或者多读几遍,或者去看支付宝第三方接口API,不看API直接拿去就用,遇坑不怪别人*/public static String return_url = "你的服务器地址/项目名称/returnUrl";// 签名方式public static String sign_type = "RSA2";// 字符编码格式public static String charset = "utf-8";// 支付宝网关public static String gatewayUrl = "/gateway.do";// 日志地址//public static String log_path = "D:/logs/";// ↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑}

controller层代码

@Controller@RequestMapping("pay")public class PayController {@Autowiredprivate OrderService orderService;@Autowiredprivate RedisServer redisServer;@RequestMapping("/toPay")@ResponseBodypublic String toPay(String[] orderIds) throws Exception{Double sumMoney=0.0;for (String orderId : orderIds) {Order order=orderService.getOrder(orderId);sumMoney+=order.getOrdMoney();}String uuid = UuIdutil.getUUID().toString();byte[] serialize = SerializeUtil.serialize(orderIds);redisServer.setCacheValueForTime(uuid,serialize,1000*60*60*30);//获得初始化的AlipayClientAlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);//设置请求参数AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setReturnUrl(AlipayConfig.return_url);alipayRequest.setNotifyUrl(AlipayConfig.notify_url);try {alipayRequest.setBizContent("{\"out_trade_no\":\""+ uuid +"\","+ "\"total_amount\":\""+String.valueOf(sumMoney) +"\","+ "\"subject\":\""+ "测试支付" +"\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//请求String result;result = alipayClient.pageExecute(alipayRequest).getBody();//System.out.println("*********************\n返回结果为:"+result);return result;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();return null;}}@RequestMapping("returnUrl")public String returnUrl(HttpServletRequest request, HttpServletResponse response){Map<String, String[]> parameterMap = request.getParameterMap();String[] out_trade_nos = parameterMap.get("out_trade_no");String uuid = out_trade_nos[0];orderService.updateOrderInfo(uuid);return "redirect:/good/toPayFor";}@RequestMapping("notifyUrl")public String notifyUrl(HttpServletRequest request, HttpServletResponse response){Map<String, String[]> parameterMap = request.getParameterMap();for (String s : parameterMap.keySet()) {String[] strings = parameterMap.get(s);for (int i = 0; i < strings.length; i++) {System.out.println(s+":"+strings[i]);}}return "redirect:/good/toPayFor";}

再配上前台页面,我用的是Freemaker

<#if orderList?exists><#list orderList as order><tr id="product_id_1" align="center"><#if order.ordStatus==1><td><input type="checkbox" value="${order.ordId}" name="orderIds" checked/></td><#else><td></td></#if><td><a href="javaScript:showOrderDetail(${order.ordId})">${order.ordId}</a></td><#assign orderDetailList =order.orderDetailList /><td><#list orderDetailList as orderDetail>${orderDetail.goodName}<br/></#list></td><td class="price" id="price_id_1"><span>${order.ordMoney}</span></td><#if order.ordPayType==1><td>微信</td><#elseif order.ordPayType==2><td>支付宝</td><#elseif order.ordPayType==3><td>京东支付</td><#elseif order.ordPayType==4><td>银联</td></#if><td>${order.ordAdd}</td><td><#if order.ordStatus==1>未支付<#else>已支付</#if></td></tr></#list></#if></table><div class="button"><input type="submit" value="" /></div></form>

欢迎指导!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。