九江网站建设哪家公司好/海洋seo
首先我们把准备工作做好,再进行支付宝接口的集成
1.获取沙箱账号
获取沙箱账号
点击链接出现下图页面使用自己支付宝扫码登录
2.登录后进入下图页面
3.向下拉到下图页面
4.点击开发服务下的沙箱进入下图页面,点击红色标注处(密钥之后会使用,现在先取到)
5.下载支付宝获取密钥的工具,根据自己系统选择下载,我下载的Windows版本
6.下载完成后打开如下图,点击红圈标注部分得到应用私钥和应用公钥(应用私钥和应用公钥之后会用到)
7.回归到第四步的页面,点击红圈标注部分
8.进入如下页面(APPID和支付宝网关之后会用到),点击红圈标注处
9.按下图标注内容进行配置
10.点击保存设置后进入如下页面(支付宝公钥之后会用到)
以上十步需要整理的东西有:应用私钥,支付宝公钥,APPID和支付宝网关(注意:应用公钥不需要了),因为这些东西是往springboot项目集成是需要的。
此处插播一条
上述第九步点击下图红圈标注部分(卖家和买家信息之后会用到),还可以点击沙箱工具扫码在手机上下载一个沙箱版钱包,使用卖家账户登录
接下来将支付宝接口集成到项目中:
1.首先倒maven依赖
<dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-easysdk</artifactId><version>2.1.2</version></dependency><!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java --><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.10.140.ALL</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.7</version></dependency>
2.新建配置类(注意:将应用私钥,支付宝公钥,APPID和支付宝网关换成自己的)
public class AliPayConfig {//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// netapp映射的地址,,,根据自己的需要修改
// private static String neturl = "http://6dynnj.natappfree.cc";// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号 按照我文章图上的信息填写public static String app_id = "2021000117631591";// 商户私钥,您的PKCS8格式RSA2私钥 刚刚生成的私钥直接复制填写public static String merchant_private_key ="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCEeDgzdsHpzcRgQZJB1BXpdQLHmoSx2Pefzoh/75JdaVi+kg44PSbcdfDW0in8/PAnXCqnKzBZpC7I8n+CMuHaa0l8FPVWED5xMn/8EK66pOKYnrjbdcRCRKPykkmdLfCitpSapRgR0wHDq4VrEPKWmN+uXD08Vw/nhYkE9aaWHJkhqWFiwKGdtP3zvJ6x7zblaGUIRqU7LKqN6stJM7m6KpVQesg3PU3PGH0euax/ICmcdjVr8YEYBcS7ocfBe4KXiPPX/KHs0TtRao0gPwmL6saIiLiaIAScV8WFueu/nN9zWxkZvId2Z7iZSiKyQ8IRfxbSt0bapqeUYgpLPqQHAgMBAAECggEAGP1AxNyTShLKB8p217o1g/vR0WuhupcOZ3QjpdbAyqRT3GdbDVrj2NTa4Pt2dkYU26f0V+K61T42oSu1yA7nMjfo/eJKQbkAvoPjRt6yx3zRTi8q+iNmKYYfU2QrRN5ktZ0xvVaFit8+RvY1TfQ9fxFJqO+3kYlu86LqLShWC50FiQMoLw6l54XAawMVpHnSsXAskV/oWJmib0yyHvOYk5jB8E34IwS/lZeHUFVyJMNCh26GZL7HIKltYH0ZpwIoJiflZb7e0yCMXbTrcLIdrTw9ExAdlcSyjExVH/aTFWLBi1/I+6GdtLaeR+SdiRMMEkftoLW7Alo6xARA3ulGKQKBgQDOrhjdyNqcCwH32voKLc+oVj2Ql1aOP+aw+lrs/QMKD9vChhXIkUYDD2v2Ht97/1M7f+I/XvEHU2+sp9Ozsu2Z0qaJAWWl3B/FrA363sTRs0cMkr5M1JqZhuv55HyWIn0x+EbuKGcfE9E+mZm21Wj1lgkXWbZay4X1bcegzb1XnQKBgQCkFKvCpj5L2VEvSajT7gzle0qYHEcrE9UJ2nsHSLJSSyxbH7WE0J/quTtTDG0oUM7e22Qxnnw+ZFmBNVHVb9GeIn/nJkO7G4kx7c8uZOU+oX+rUGZ/HUAq7wMc8J2UULKdmIm2tLuRoGQt88jopjJtc4e5mB5k10v93vo5t0ZC8wKBgQDNTHxg2eHk/L4wwLB8qfLK6RdwaBPPa0Qw6g6lt9FsDkKiIGTE/SEJayk3qoUd+4pm4OoRPrK3LzcPzwloR8Tidi98igm5TkW1KeodF2l0T9u0bpNfaBRFipMef8sNqyanG1MBwNpmMV45C4R369a9lBJlwnR0DhR7rVeNsLBytQKBgHYS7fs32JKKgzKNRjGkF6G4FFjb2Jb2QZNCps/6D2DK+dNlQSGfY8TsoPVFdvPRGt0icbqHOw9G9WXWsdnvCqBKYVI8pfbqfNLyN+pB7vogC5iDVg7ZRMjgkJPtzufhHnfsQgW5j1TfX9f1m7lXh+hdf+kdv5l/mQ7Ku7R239fjAoGAeUSPvooU9wBf6x7ObYSrHXUw6AofpFU4vF3YVPZbtxtagvVvmtb7rB5jlDqm2ZHyOkPD33vnNVOzfbUoKWrjhMBH84NT2ymZzPzqTBeGKYuImPKnxdpz4Zw0e32AyPB0loBgutmaOsTbrX472SOEoYz6tW4BUMZCKhN0aouYZcA=";// 支付宝公钥,对应APPID下的支付宝公钥。 按照我文章图上的信息填写支付宝公钥,别填成商户公钥public static String alipay_public_key ="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhru+uX7u/BKCYg2otmGTCopdq6bot2VI5y7mB9V9D5dn0AvT7nc+AP67qCwrRhRkOqDCgxTqwYkfhE2qc2wV6jMSyVfdnIlHBYMadk0EbPTZjXVVQ8HAymCDIreylDOyAupjfWoF6wG4b7e7y3sdA6G/OVIieqMQUz9hTrDYevx+Jc4EOCbWuKxTlZ67OiWCv0cq0c+ABSOSHXGTac8LGyQLNJmsYfau7uPeqBvy7Uueon5HayM5T93NWe9wgx5yEQuZ6D/BWL7q8V5b5XYuQyl2pYiIlW5A1iKSQ2L1PnukD5lcHma8Xrvp8nNpF1a3z5CPeCitreWki/yvUw37zwIDAQAB";// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,其实就是你的一个支付完成后返回的页面URL
// public static String notify_url = neturl+"/alipay/notify_url";public static String notify_url ="http://www.baidu.com";// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,其实就是你的一个支付完成后返回的页面URL
// public static String return_url = neturl+"/alipay/return_url";public static String return_url ="http://www.baidu.com";// 签名方式public static String sign_type = "RSA2";// 字符编码格式public static String charset = "utf-8";// 支付宝网关public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
}
3.写测试接口
⑴controller类
@RestController
@RequestMapping("/payment")
public class PaymentController {@AutowiredAliPayService alipayService;@RequestMapping("/pay")public void payMent(HttpServletResponse response, HttpServletRequest request) {try {alipayService.aliPay(response, request);} catch (IOException e) {e.printStackTrace();}}
}
⑵service类
/*** 支付宝支付调用接口* @param response* @param request* @throws IOException*/void aliPay(HttpServletResponse response, HttpServletRequest request) throws IOException;}
在这里插入代码片
⑶实现类
@Service
@Slf4j
public class AlipayServiceImpl implements AliPayService{@Overridepublic void aliPay(HttpServletResponse response, HttpServletRequest request) throws IOException {response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();//获得初始化的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);//商户订单号,后台可以写一个工具类生成一个订单号,必填String order_number = new String(StringUtils.getStr());//付款金额,从前台获取,必填String total_amount = new String("201314");//订单名称,必填String subject = new String("臭猪张云婷");aliPayRequest.setBizContent("{\"out_trade_no\":\"" + order_number + "\","+ "\"total_amount\":\"" + total_amount + "\","+ "\"subject\":\"" + subject + "\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//请求String result = null;try {result = alipayClient.pageExecute(aliPayRequest).getBody();} catch (AlipayApiException e) {e.printStackTrace();}//输出out.println(result);log.info("返回结果={}",result);}
}
⑷这是我写的一个工具类,用于随机生成订单号。
public class StringUtils {public static String getStr(){int length=5;String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";Random random=new Random();StringBuffer sb=new StringBuffer();for(int i=0;i<length;i++){int number=random.nextInt(62);//charAt() 方法用于返回指定索引处的字符sb.append(str.charAt(number));}return sb.toString();}
}
3.运行项目,然后在浏览器输入http://localhost:项目端口/payment/pay,会跳转到下面页面
4.点击登录账户付款
(使用买家信息登录进行支付,支付前记得先回去充值),支付成功后卖家账户收到转账
啊终于写完了,一篇博客写了两个小时,累死宝宝了