service层:
import com.alipay.api.AlipayApiException;
import java.util.Map;
public interface PayService {
String AlipayTradePagePay(Map<String,String> content) throws AlipayApiException;
}
import com.alibaba.fastjson.JSON;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.stereotype.Service;
import com.alipay.api.AlipayApiException;
import com.louis.epay.alipay.service.PayService;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@Service
public class PayServiceImpl implements PayService {
/**
* AlipayTradePagePay 方法
* 说明:网页支付
* 创建人:yangkai
* @param content:
* @return java.lang.String
* @throws
*/
@Override
public String AlipayTradePagePay(Map<String,String> content) throws AlipayApiException {
Map<String,String> propertiesMap=new HashMap<>();
// 获得PathMatchingResourcePatternResolver对象
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
// 加载resource文件(也可以加载resources)
Resource resources = resolver.getResource("classpath:alipay.properties");
PropertiesFactoryBean config = new PropertiesFactoryBean();
config.setLocation(resources);
config.afterPropertiesSet();
Properties prop = config.getObject();
// 循环遍历所有得键值对并且存入集合
for (String key : prop.stringPropertyNames()) {
propertiesMap.put(key, (String) prop.get(key));
}
} catch (Exception e) {
new Exception("配置文件加载失败");
}
String gatewayUrl = propertiesMap.get("gatewayUrl");
String appId = propertiesMap.get("appId");
String privateKey = propertiesMap.get("privateKey");
String format = "json";
String charset = propertiesMap.get("charset");
String publicKey = propertiesMap.get("publicKey");
String signType = propertiesMap.get("signType");
String notifyUrl = propertiesMap.get("notifyUrl");
String returnUrl = propertiesMap.get("returnUrl");
AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, appId, privateKey, format, charset, publicKey, signType);
// 设置请求参数
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
// 服务器异步通知页面路径
alipayRequest.setNotifyUrl(notifyUrl);
// 页面跳转同步通知页面路径
alipayRequest.setReturnUrl(returnUrl);
// 封装参数
alipayRequest.setBizContent(JSON.toJSONString(content));
// 3、请求支付宝进行付款,并获取支付结果
String result = alipayClient.pageExecute(alipayRequest).getBody();
// 返回付款信息
return result;
}
}
controller层:
import com.louis.epay.alipay.bean.AlipayBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.alipay.api.AlipayApiException;
import com.louis.epay.alipay.service.PayService;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@RestController
@RequestMapping("Alipay")
public class AlipayController {
@Autowired
private PayService payService;
@PostMapping(value = "AlipayTradePagePay")
public String AlipayTradePagePay(String out_trade_no, String subject, String total_amount, String body) throws AlipayApiException {
// 封装请求支付信息
Map content=AlipayBean.AlipayTradePagePay(out_trade_no,total_amount,subject);
return payService.AlipayTradePagePay(content);
}
@RequestMapping("returnUrl")
public void returnUrl(HttpServletRequest request) {
System.out.println("同步回调");
}
@RequestMapping("notifyUrl")
@ResponseBody
public void notifyUrl(HttpServletRequest request) {
System.out.println("异步回调");
}
}