调用支付宝支付接口

 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("异步回调");
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java中调用支付宝支付接口,您可以使用支付宝开放平台的即时到账接口。首先,您需要在支付宝开放平台注册并获得相应的API密钥。接下来,您可以使用Spring MVC和MyBatis等框架进行开发。 具体的实现步骤如下: 1. 在您的Spring MVC项目中,使用支付宝开放平台提供的即时到账接口进行支付宝支付的集成。您可以使用支付宝提供的SDK或者API,根据文档中的指引进行配置和调用。 2. 在商品发起购买时,您可以调用支付宝接口,将用户的支付信息发送给支付宝,跳转到支付宝页面进行支付。 3. 支付宝会在用户完成支付后,通过回调通知您的系统支付状态的变更。您可以在接收到支付宝的回调通知后,更新订单状态或进行其他业务处理。 4. 您可以选择将支付功能单独封装为一个项目,然后在其他项目中调用支付接口,也可以将支付功能整合到您的项目中。为了方便维护,您可以将相关的类放到您的项目中,并引入相应的支付宝SDK或jar包。 总体来说,使用Java调用支付宝支付接口可以通过支付宝开放平台的即时到账接口实现,具体的实现步骤根据您的项目架构和需求可能会有所不同。但无论如何,您都需要注册支付宝开放平台账号并获取API密钥,然后根据支付宝提供的文档进行配置和调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值