java 支付宝支付实例

引入依赖包

		<dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>4.6.0.ALL</version>
        </dependency>

实现代码


public AlipayTradePayResponse alipayTradePay(String tradeNo, String subject, String storeId, BigDecimal totalAmount) {
        final CertAlipayRequest certAlipayRequest = certAlipayRequest();
        final AlipayTradePayResponse alipayTradePayResponse;
        try {
            final AlipayTradePayRequest request = new AlipayTradePayRequest();
            AlipayTradePayModel alipayTradePayModel = new AlipayTradePayModel();
			//商户订单号
            alipayTradePayModel.setOutTradeNo(tradeNo);
			//商品标题/交易标题/订单标题/订单关键字
            alipayTradePayModel.setSubject(subject);
			//门店
            alipayTradePayModel.setStoreId(storeId);
			//订单总金额
            alipayTradePayModel.setTotalAmount(String.format("%.2f", totalAmount.doubleValue()));
			//该笔订单允许的最晚付款时间,逾期将关闭交易
            alipayTradePayModel.setTimeoutExpress("10m");
            request.setBizModel(alipayTradePayModel);
            final AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
            alipayTradePayResponse = alipayClient.certificateExecute(request);
            log.info("支付宝支付结果:" + JsonUtils.toJson(alipayTradePayResponse));
        } catch (AlipayApiException e) {
            e.printStackTrace();
            throw new BaseResultException(ResultEnum.UNKNOWN_ERROR);
        }
}

//获得初始化的AlipayClient

private CertAlipayRequest certAlipayRequest() {
        final CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
        certAlipayRequest.setAppId(aliAppId);
		//商户的私钥
        certAlipayRequest.setPrivateKey(aliPayAppPrivateKey);
        certAlipayRequest.setFormat("JSON");
        certAlipayRequest.setCharset(AlipayConstants.CHARSET_UTF8);
		//支付宝的公钥
        certAlipayRequest.setSignType(AlipayConstants.SIGN_TYPE_RSA2);
		//设置支付宝公钥证书路径
        certAlipayRequest.setAlipayPublicCertPath(aliPayPublicCertPath);
		//设置支付宝根证书路径
        certAlipayRequest.setRootCertPath(aliPayRootCertPath);
		//设置应用公钥证书路径
        certAlipayRequest.setCertPath(aliAppPublicCertPath);
        return certAlipayRequest;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Java实现支付宝支付的示例代码,基于Alipay SDK,实现了生成订单、调用支付接口、接收支付回调通知等功能: ```java import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayTradePagePayRequest; import com.alipay.api.response.AlipayTradePagePayResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class AlipayUtil { // 支付宝网关 private static final String GATEWAY_URL = "https://openapi.alipay.com/gateway.do"; // 应用ID private static final String APP_ID = "your_app_id"; // 商户私钥 private static final String PRIVATE_KEY = "your_private_key"; // 支付宝公钥 private static final String PUBLIC_KEY = "your_public_key"; // 编码格式 private static final String CHARSET = "UTF-8"; // 支付宝返回的格式 private static final String FORMAT = "json"; // 签名类型 private static final String SIGN_TYPE = "RSA2"; // 异步通知地址 private static final String NOTIFY_URL = "your_notify_url"; /** * 生成订单并调用支付宝支付接口 * * @param request HTTP请求对象 * @param response HTTP响应对象 * @param orderNo 订单号 * @param amount 金额 * @throws IOException */ public static void pay(HttpServletRequest request, HttpServletResponse response, String orderNo, String amount) throws IOException { try { AlipayClient client = new DefaultAlipayClient(GATEWAY_URL, APP_ID, PRIVATE_KEY, FORMAT, CHARSET, PUBLIC_KEY, SIGN_TYPE); AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); alipayRequest.setReturnUrl("your_return_url"); alipayRequest.setNotifyUrl(NOTIFY_URL); alipayRequest.setBizContent("{\"out_trade_no\":\"" + orderNo + "\"," + "\"total_amount\":\"" + amount + "\"," + "\"subject\":\"商品名称\"," + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"); AlipayTradePagePayResponse alipayResponse = client.pageExecute(alipayRequest); response.setContentType("text/html;charset=UTF-8"); response.getWriter().write(alipayResponse.getBody()); } catch (AlipayApiException e) { e.printStackTrace(); response.getWriter().write(e.getErrMsg()); } } /** * 处理支付宝支付回调通知 * * @param request HTTP请求对象 * @return 支付结果 */ public static String handleNotify(HttpServletRequest request) { // TODO 处理支付宝支付回调通知,包括验签、更新订单状态等操作 return "success"; } } ``` 在这个示例中,首先定义了一些常量,包括支付宝网关、应用ID、商户私钥、支付宝公钥等。然后实现了两个方法,一个是生成订单并调用支付宝支付接口,另一个是处理支付宝支付回调通知。 在`pay`方法中,首先创建了一个AlipayClient实例,用于调用支付宝API。然后创建了一个AlipayTradePagePayRequest对象,并设置了返回地址、异步通知地址以及订单信息。最后调用了pageExecute方法,生成支付页面的HTML代码,并将其写入HTTP响应中返回给浏览器。 在`handleNotify`方法中,可以根据支付宝支付回调通知中的信息,进行验签、更新订单状态等操作,最后返回"success"表示处理成功。 需要注意的是,这个示例中并没有实现订单信息的数据库存储、订单状态的更新等功能,这些需要根据具体业务需求进行实现。另外,也需要注意支付过程中可能出现的异常情况,如支付超时、支付失败等,进行相应的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值