이제 도킹 결제가 필요한 프로젝트가 많습니다. 여기서는 도킹 Alipay H5 결제를 중심으로 설명하겠습니다
더 이상 헛소리는 그만하고 코드에 대해 이야기합시다
Alipay 공식 SDK 소개
<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk --> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-easysdk</artifactId> <version>2.2.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java --> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.10.124.ALL</version> </dependency>
결제 호출 메소드 작성
@RequestMapping("/test") public void doPost(HttpServletRequest httpRequest, HttpServletResponse httpResponse) throws ServletException, IOException { //商户号 String APP_ID=""; //私钥 String APP_PRIVATE_KEY=""; //编码 String CHARSET="UTF-8"; //公钥 String ALIPAY_PUBLIC_KEY=""; //我是沙箱环境 所有请求地址是沙箱版 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //获得初始化的AlipayClient AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的request //这里主要是设置回调 也就是支付成功之后你要做什么操作的地址 alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp"); alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");//在公共参数中设置回跳和通知地址 /** * @description: * @author: hwk * @date: 2022/6/14 16:34 * @param: out_trade_no 订单编号 * total_amount 付款金额 * subject 商品名称 * product_code 支付方式 如手机网站 pc网站 APP支付等 **/ JSONObject jsonObject = new JSONObject(); jsonObject.put("out_trade_no", "264484811515156"); jsonObject.put("total_amount", "66"); jsonObject.put("subject", "测试支付"); jsonObject.put("product_code", "QUICK_WAP_WAY"); alipayRequest.setBizContent(jsonObject.toJSONString()); String form=""; try { form = alipayClient.pageExecute(alipayRequest).getBody(); } catch (AlipayApiException e) { e.printStackTrace(); } //因为我不会写前端 所以直接输出测试 如果在正式环境中 建议直接return 返回的from表单 httpResponse.setContentType("text/html;charset=" + CHARSET); httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面 httpResponse.getWriter().flush(); httpResponse.getWriter().close(); } //支付回调 @RequestMapping("/test1") public void aliPayNotify() { Map<String, String> params = getAllRequestParam(request); String tradeStatus = params.get("trade_status"); if ("TRADE_SUCCESS".equals(tradeStatus)) { System.out.println("支付成功"); }else { System.out.println("支付失败"); } } private Map<String, String> getAllRequestParam(final HttpServletRequest request) { Map<String, String> res = new HashMap<>(8); Enumeration<?> temp = request.getParameterNames(); while (temp.hasMoreElements()) { String en = (String) temp.nextElement(); String value = request.getParameter(en); res.put(en, value); } return res; }
문자열 json을 사용하여 공식 결제를 받을 수 있습니다. 이것은 단지 데모입니다.
appid 공개키와 개인키를 제외하고
정상적인 결제에 필요한 매개변수는 상품ID 뿐입니다. 다른 후속 결제 호출) (필요한 경우) 구매자는
제품 세부 정보를 쿼리하고 해당 매개변수에 이를 설정하여 Alipay SDK를 호출하여 양식을 생성합니다
콜백에서 결제가 완료된 후 일부 작업을 수행할 수 있습니다.
예: 멤버십을 구매한 후 결제가 성공한 후 멤버십을 활성화하거나 갱신하세요.
결제를 시작하기 전에 생성된 주문은 미결제 상태여야 한다는 점을 기억하세요. .콜백에서는 사용자의 성공 여부를 판단합니다
있는 경우 주문 번호를 기준으로 사용자가 적극적으로 결제 성공 여부를 확인하는 것이 좋습니다. 성공하지 못한 경우 공식 인터페이스로 이동하여 결제가 성공했는지 확인합니다. 이 경우 콜백이 약간 느려질 수 있다는 장점이 있습니다. 결제가 성공하면 결제 실패가 발생하지 않습니다. 돌려받다
위 내용은 Alipay 결제 프로젝트로 Java 도킹을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!