导入依赖:
<!-- 支付宝支付 -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.0.0</version>
</dependency>
<!-- http请求-->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.29</version>
</dependency>
支付宝支付配置类:AlipayConfig:
@Configuration
public class AlipayConfig {
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号,开发时使用沙箱提供的APPID,生产环境改成自己的APPID
public static String APP_ID = "2021000119614251";
// 商户私钥,您的PKCS8格式RSA2私钥
public static String APP_PRIVATE_KEY = "MIIEvgIBAD*****Q5gyFf9NgL";
// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
public static String ALIPAY_PUBLIC_KEY = "MIIBIjAN****QIDAQAB";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问(其实就是支付成功后返回的页面)
public static String return_url = "http://localhost:8080/index/returnUrl";
public static String notify_url = "http://localhost:8080/index/notifyUrl";
// 签名方式
public static String sign_type = "RSA2";
// 字符编码格式
public static String CHARSET = "utf-8";
// 支付宝网关,这是沙箱的网关
// public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
controller层:
/**
* web 订单支付
*/
@GetMapping("getPagePay")
public void getPagePay(HttpServletResponse httpResponse) throws Exception {
// /** 模仿数据库,从后台调数据*/
// AliPayBean biz_content=new AliPayBean();
// String body = biz_content.getBody();
// String out_trade_no = biz_content.getOut_trade_no();
// String subject = biz_content.getSubject();
// String total_amout = biz_content.getTotal_amout();
// String product_code = biz_content.getProduct_code();
// String timeout_express = biz_content.getTimeout_express();
logger.info("商户订单号为{},订单名称为{},付款金额为{},商品描述{}", out_trade_no, subject, total_amout, body);
//
// biz_content.setOut_trade_no(out_trade_no);
// biz_content.setSubject(subject);
// biz_content.setTotal_amout(total_amout);
// biz_content.setProduct_code(product_code);
// biz_content.setBody(body);
// biz_content.setTimeout_express(timeout_express);
// System.out.println(biz_content);
alipayService.webPagePay(httpResponse);
// System.out.println(pay);
// Map<Object, Object> pays = new HashMap<>();
// pays.put("pay", pay);
}
service层:
@Override
public void webPagePay( HttpServletResponse httpResponse) throws Exception {
/**
* 调取支付宝接口 web端支付
*/
DefaultAlipayClient alipayClient = new DefaultAlipayClient(
AlipayConfig.gatewayUrl, AlipayConfig.APP_ID, AlipayConfig.APP_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 out_trade_no = "46341274627163538275";
String total_amount="99.00";
String subject = "冰敦敦";
String body ="这是一个冬奥吉祥物";
alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\","
+ "\"total_amount\":\"" + total_amount + "\","
+ "\"subject\":\"" + subject + "\","
+ "\"body\":\"" + body + "\","
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
/**转换格式*/
String form = "";
try {
form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
} catch (AlipayApiException e) {
e.printStackTrace();
}
httpResponse.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
httpResponse.getWriter().flush();
httpResponse.getWriter().close();
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/105114.html