1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > SpringBoot整合支付宝付款(沙箱环境)

SpringBoot整合支付宝付款(沙箱环境)

时间:2019-02-18 09:21:12

相关推荐

SpringBoot整合支付宝付款(沙箱环境)

由于最近的一个SpringBoot项目中需要整合支付宝付款,所以将过程整理在此,方便查阅。测试前提需要一个支付宝提供的沙箱环境,如果你还没有这种测试账号,可以看姊妹篇获得支付宝沙箱账号

一、引入依赖

<dependency><groupId>com.github.1991wangliang</groupId><artifactId>alipay-api</artifactId><version>1.0.0</version></dependency>

二、AliPayConfig配置类

该类作为AliPay的配置类,其中包含的信息已注释在其中,都可以在支付宝开放平台中找到,其中的notify_url与return _url字段是用于支付后的回调接口,这里就简单以百度为例。在实际的操作中我是做了一个内网映射,如果有感兴趣的小伙伴可以看我的另一篇文章《五分钟免费获得自己的永久域名,免费!永久!》。

package com.lsnu.travel.config;import org.ponent;/*** AliPay配置** @author Jenson* @since /9/5 14:12**/public class AliPayConfig {//商品appIdpublic static String APPID="";//生成的私钥public static String RSA_PRIVATE_KEY="";//服务器异步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,且需要公网地址(这里以百度为例)public static String notify_url="";public static String return_url="";//请求网关地址public static String URL="";//编码public static String CHARSET="";public static String FORMAT="json";//支付宝公钥public static String ALIPAY_PUBLIC_KEY="";//RSA2public static String SIGNTYPE="RSA2";}

三、前端页面

写了一个简单的表单,用于付款提交。

<!DOCTYPE html><html lang="en" xmlns:th=""><head><meta charset="UTF-8"/><title>Title</title></head><body><form th:action="@{/pay}" method="post">单号:<input type="text" name="out_trade_no"/><br/>名称:<input type="text" name="subject"/><br/>金额:<input type="text" name="total_amount"/><br/>描述(可为空):<input type="text" name="body"/><br/>超时(秒可为空):<input type="text" name="time_out_express"/><br/>产品码:<input type="text" name="product_code"/><br/><br/><input type="submit" value="付款"></form></body></html>

四、后端代码

这里只是做了简单地测试功能,没有像失败补偿机制,幂等性等等很详细的步骤。

@Autowiredprivate AliPayConfig aliPayConfig;@PostMapping("/pay")public String pay(String out_trade_no,String subject,String total_amount,String body,String time_out_express,String product_code) throws AlipayApiException {//1.封装Rsa签名方式AlipayClient client = new DefaultAlipayClient(aliPayConfig.URL,aliPayConfig.APPID, aliPayConfig.RSA_PRIVATE_KEY,aliPayConfig.FORMAT, aliPayConfig.CHARSET,aliPayConfig.ALIPAY_PUBLIC_KEY, aliPayConfig.SIGNTYPE);//2.创建Request请求AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();//封装传入参数AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();model.setOutTradeNo(out_trade_no); //订单号model.setBody(body); //描述model.setProductCode(product_code); //商品码model.setSubject(subject); //主题model.setTotalAmount(total_amount); //价格model.setTimeoutExpress(time_out_express); //超时时间//设置请求参数request.setBizModel(model);//设置异步回调地址request.setNotifyUrl(aliPayConfig.notify_url);//设置同步回调地址request.setReturnUrl(aliPayConfig.return_url);//生成表单String form = client.pageExecute(request).getBody();//如果支付失败的补偿机制log.info("确认订单[{}]付款成功",out_trade_no);//修改订单状态 ...return form;}

五、测试过程

进入index.html,输入相关数据后,点击浏览器付款就行。

然后选择我们申请的沙箱账号登录。

然后按照平常步骤操作就好,成功后会得到下面的结果

再次到沙箱中查看具体的账号信息,发现159.02已经从买家账户划到了商家账户中:

不过沙箱环境不是特别稳定,过程可能出现付款失败,多试几次就好。

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