springboot+支付宝条码支付开发详解

Posted java-bhp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot+支付宝条码支付开发详解相关的知识,希望对你有一定的参考价值。

背景:项目原有乐刷聚合支付,无法参加支付宝、微信等支付机构的官方活动

需求:增加原生支付(支付宝条码支付)

 

方法:

  一、官方文档:https://docs.open.alipay.com/194/106039

 

  二、没有真实企业账号的可以使用沙箱环境:https://docs.open.alipay.com/200/105311

 

  三、两种方法实现:

 

    (一)基于支付宝标准SDKalipay-sdk-java

 

      1pom文件中添加SDK依赖

 

        地址:https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java

 

      2配置支付宝参数

        在系统常量类里追加(我这里配的是沙箱参数,就直接写在实现类里)

        技术图片

 

      3.实现代码

        

技术图片
  1 package com.bhp.aaa.bbb.service;
  2 
  3 import com.alibaba.fastjson.JSONObject;
  4 import com.alipay.api.AlipayApiException;
  5 import com.alipay.api.AlipayClient;
  6 import com.alipay.api.DefaultAlipayClient;
  7 import com.alipay.api.request.AlipayTradeCancelRequest;
  8 import com.alipay.api.request.AlipayTradePayRequest;
  9 import com.alipay.api.request.AlipayTradeQueryRequest;
 10 import com.alipay.api.request.AlipayTradeRefundRequest;
 11 import com.alipay.api.response.AlipayTradeCancelResponse;
 12 import com.alipay.api.response.AlipayTradePayResponse;
 13 import com.alipay.api.response.AlipayTradeQueryResponse;
 14 import com.alipay.api.response.AlipayTradeRefundResponse;
 15 import com.google.common.collect.ImmutableMap;
 16 import org.springframework.beans.factory.annotation.Autowired;
 17 import org.springframework.stereotype.Service;
 18 import org.wustrive.java.core.request.ViewResult;
 19 import org.wustrive.java.dao.jdbc.dao.BaseDao;
 20 
 21 import javax.servlet.http.HttpServletRequest;
 22 import java.util.Map;
 23 
 24 @Service
 25 public class AlipayService1 
 26     // 正式
 27     /*private static String gateway = SysConstants.Alipay.gateway;
 28     private static String appId = SysConstants.Alipay.app_id;
 29     private static String privateKey = SysConstants.Alipay.app_private_key;
 30     private static String publicKey = SysConstants.Alipay.alipay_public_key;*/
 31 
 32     // 沙箱
 33     //网关
 34     private static String gateway = "https://openapi.alipaydev.com/gateway.do";
 35     //应用ID
 36     private static String appId = "你自己的APPID";
 37     //应用秘钥
 38     private static String privateKey = "你自己的应用秘钥";
 39     //支付宝公钥
 40     private static String publicKey = "你自己的支付宝公钥";
 41 
 42     @Autowired
 43     private BaseDao baseDao;
 44     
 45     // 初始化一个统一的客户端
 46     AlipayClient alipayClient = new DefaultAlipayClient(gateway,appId,privateKey,"json","utf-8",publicKey,"RSA2");
 47 
 48     // 发起支付
 49     public  ViewResult alipayPay(AppUser appUser, String outTradeNo, String payMoney, String authCode)
 50         
 51         ViewResult viewResult = ViewResult.newInstance();
 52         String sql = "SELECT short_name FROM sys_merchants WHERE id=:merchantsId";
 53         String short_name =  baseDao.queryForString(sql, ImmutableMap.of("merchantsId",appUser.getMerchantsId()));
 54 
 55         JSONObject data = new JSONObject();
 56         data.put("out_trade_no",outTradeNo);
 57         data.put("scene","bar_code");
 58         data.put("auth_code",authCode);
 59         data.put("subject",short_name+"消费");
 60         data.put("store_id",appUser.getShopId());
 61         data.put("total_amount",payMoney);
 62 
 63         AlipayTradePayRequest request = new AlipayTradePayRequest();
 64         //request.setNotifyUrl(notifyUrl);
 65         request.setBizContent(data.toJSONString());
 66         try 
 67             AlipayTradePayResponse response = alipayClient.execute(request);
 68             if(response.isSuccess())
 69                 viewResult.success(response.getBody());
 70              else 
 71                 viewResult.fail(response.getBody());
 72             
 73          catch (AlipayApiException e) 
 74             viewResult.fail(e);
 75             e.printStackTrace();
 76         finally 
 77             return viewResult;
 78         
 79     
 80 
 81     // 发起查询
 82     public ViewResult alipayQuery(String trade_no )
 83         ViewResult viewResult = ViewResult.newInstance();
 84         JSONObject data = new JSONObject();
 85         data.put("trade_no",trade_no);
 86         AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
 87         request.setBizContent(data.toJSONString());
 88         try 
 89             AlipayTradeQueryResponse response = alipayClient.execute(request);
 90             if(response.isSuccess())
 91                 viewResult.success(response.getBody());
 92              else 
 93                 viewResult.fail(response.getBody());
 94             
 95          catch (AlipayApiException e) 
 96             viewResult.fail(e);
 97             e.printStackTrace();
 98          finally 
 99             return viewResult;
100         
101     
102 
103     // 发起撤销
104     public ViewResult alipayCancel(String trade_no)
105         ViewResult viewResult = ViewResult.newInstance();
106         JSONObject data = new JSONObject();
107         data.put("trade_no",trade_no);
108         AlipayTradeCancelRequest request = new AlipayTradeCancelRequest();
109         request.setBizContent(data.toJSONString());
110         try 
111             AlipayTradeCancelResponse response = alipayClient.execute(request);
112             if(response.isSuccess())
113                 viewResult.success(response.getBody());
114              else 
115                 viewResult.fail(response.getBody());
116             
117          catch (AlipayApiException e) 
118             viewResult.fail(e);
119             e.printStackTrace();
120          finally 
121             return viewResult;
122         
123     
124 
125     // 发起退款
126     public ViewResult alipayRefund(String trade_no,String refund_amount)
127         ViewResult viewResult = ViewResult.newInstance();
128         JSONObject data = new JSONObject();
129         data.put("trade_no",trade_no);
130         data.put("refund_amount",refund_amount);
131         AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
132         request.setBizContent(data.toJSONString());
133         try 
134             AlipayTradeRefundResponse response = alipayClient.execute(request);
135             if(response.isSuccess())
136                 viewResult.success(response.getBody());
137              else 
138                 viewResult.fail(response.getBody());
139             
140          catch (AlipayApiException e) 
141             viewResult.fail(e);
142             e.printStackTrace();
143          finally 
144             return viewResult;
145         
146     
147 
148 
149 
150 
151 
支付宝条码支付方法(一)

 

 未完,待续……

 

 

 

 

 

以上是关于springboot+支付宝条码支付开发详解的主要内容,如果未能解决你的问题,请参考以下文章

支付宝支付开发—当面付条码支付和扫码支付

支付宝支付开发—当面付条码支付和扫码支付

支付宝支付开发—当面付条码支付和扫码支付

支付宝支付开发——当面付条码支付和扫码支付

支付宝支付开发——当面付条码支付和扫码支付

支付宝支付开发——当面付