자바 는 어떻게 알 리 페 이 컴퓨터 결 제 를 servlet 버 전 으로 실현 합 니까?

이 글 은 자바 가 알 리 페 이 컴퓨터 결 제 를 어떻게 실현 하 는 지 servlet 버 전 을 바탕 으로 하 는 지 를 소개 했다.글 에서 예시 코드 를 통 해 소개 한 것 은 매우 상세 하고 여러분 의 학습 이나 업무 에 대해 어느 정도 참고 학습 가 치 를 가지 기 때문에 필요 한 친 구 는 참고 할 수 있다.
초기 준비:
로그 인 작업 진행

내 오픈 플랫폼 에 들 어 와.

위 에서 샌 드 박스 를 찾 아 샌 드 박스 에 들 어 갑 니 다.

이곳 의 RSA 2 키 설정 에서 저 는 이미 설정 을 했 기 때문에 알 리 페 이 공개 키 가 있 습 니 다.(공개 키 는 대외 적 으로 공개 되 고 비밀 키 는 자신 이 보유 한 구체 적 인 설명 이 많 지 않 습 니 다)
RSA 2 키 생 성에 대해 서 는 다음 작업 을 참고 하 십시오.

생 성 후 도구 폴 더 에서 다음 경 로 를 통 해 자신 이 생 성 한 공개 키 와 비밀 키 한 쌍 을 볼 수 있 습 니 다.

비밀 키 를 유지 하고 공개 키 를 개발 자 플랫폼 RSA 2 에 설정 하면 됩 니 다.
4.567915.우 리 는 jar 가방 과 참고 류 가 필요 하기 때문에 DEMO 를 가 져 가 는 것 이 매우 편리 하 다.

필요 한 jar 패키지 경 로 는 다음 과 같 습 니 다.

인 스 턴 스 작성:
도 구 는 제 가 여기 서 쓰 는 것 은 eclipse 입 니 다.이 영향 은 크 지 않 습 니 다~
새 웹 항목


프로젝트 에 필요 한 종 류 는 다음 과 같다.

AlipayConfig.java

package cn.taosir.demo;

public class AlipayConfig {
  //               http://       ,   ?id=123       
  public static String return_url = "http://localhost:8080/success.jsp";
  //              http://       ,   ?id=123       ,          
  public static String notify_url = "http://localhost:8080/notify";
  //   ID,  APPID,        APPID       
  public static String app_id = "";
  //      ,    :https://openhome.alipay.com/platform/keyManage.htm   APPID       。
  public static String alipay_public_key = "";
  //     ,  PKCS8  RSA2  
  public static String merchant_private_key = "";
  //     
  public static String sign_type = "RSA2";
  //       
  public static String charset = "utf-8";
  //      
  public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
}
APPID(알 리 페 이 공개 키 위 치 를 확인 하 는 위),알 리 페 이 공개 키,자신의 비밀 키,맞 추 는 것 을 기억 합 니 다.
NoitfyServlet.java

package cn.taosir.demo;

import java.io.IOException;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/notify")
public class NotifyServlet extends HttpServlet{
  @Override
  protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("             ――");
    Map<String,String[]> parameterMap=request.getParameterMap();
    System.out.println(parameterMap);
    //       success
    response.getWriter().write("success");
  }
}
OrderServlet.java

package cn.taosir.demo;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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;

@WebServlet("/order/confirm")
public class OrderServlet extends HttpServlet{
  @Override
  protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("    OrderServlet   ");
    String title = "   ";
    String total = "666666";
    String message = "            ";
    //     
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
    String orderSn = simpleDateFormat.format(Calendar.getInstance().getTime());
    //        
    //      AlipayClient
    AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id,
        AlipayConfig.merchant_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 = orderSn;
    //    ,  
    String total_amount = total;
    //    ,  
    String subject = title;
    //    ,  
    String body = message;
    alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\"," + "\"total_amount\":\""
        + total_amount + "\"," + "\"subject\":\"" + subject + "\"," + "\"body\":\"" + body + "\","
        + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
    //   BizContent          ,            timeout_express     
    //alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\"," 
    //    + "\"total_amount\":\""+ total_amount +"\"," 
    //    + "\"subject\":\""+ subject +"\"," 
    //    + "\"body\":\""+ body +"\"," 
    //    + "\"timeout_express\":\"10m\"," 
    //    + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
    //       【       API  -alipay.trade.page.pay-    】  
    AlipayTradePagePayResponse alipayResponse = null;
    try {
      alipayResponse=alipayClient.pageExecute(alipayRequest);
      System.out.println(alipayResponse.getBody());
       System.out.println(alipayResponse.getMsg());
    } catch (AlipayApiException e) {
      e.printStackTrace();
    }
    response.setContentType("text/html;charset=UTF-8");
    response.getWriter().write(alipayResponse.getBody());
  }
}
이로써 큰 성 과 를 거두다
테스트 시작 하 겠 습 니 다.
프로젝트 를 tomcat 에 배치 하여 run 합 니 다.
http://localhost:8080/alipay-demo/order/confirm 에서 페이지 가 이 요청 을 통 해 알 리 페 이의 인터페이스 로 이동 하 는 것 을 볼 수 있 습 니 다.

샌 드 박스 환경의 알 리 페 이 앱 을 다운로드 하면 스 캔 테스트 를 할 수 있 습 니 다.
여기 오른쪽 계 좌 를 클릭 하여 지불 합 니 다.

계 정과 비밀 번 호 는 샌 드 박스 플랫폼 에서 개인 계 정 을 볼 수 있 습 니 다.

이후 로그 인하 면 결제 가 되 고 정상적으로 결제 성공 페이지 로 넘 어 갑 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기