SpringBoot 에서 알 리 페 이 인터페이스 사용 을 어떻게 실현 합 니까?

이 글 은 주로 SpringBoot 에서 알 리 페 이 인터페이스의 사용 을 어떻게 실현 하 는 지 소개 했다.글 에서 예시 코드 를 통 해 매우 상세 하 게 소개 되 었 고 여러분 의 학습 이나 업무 에 대해 어느 정도 참고 학습 가 치 를 가지 기 때문에 필요 한 친 구 는 참고 할 수 있다.
초기 준비:
전에 쓴 것 을 참고 하 세 요알 리 페 이 인터페이스 servlet 버 전 도입
Jar 가방 도입:

<!--     -->
    <dependency>
      <groupId>net.guerlab</groupId>
      <artifactId>sdk-alipay-starter</artifactId>
      <version>${alipay.version}</version>
    </dependency>
참고 버 전:1.0.3
응용 프로그램 설정:

sdk:
 alipay:
  dev: true //true   //false  
  sign-type: RSA2 //    
  app-id: //APPID
  private-key: //  
  alipay-public-key: //     
컨트롤 러 의 처리
지불 요청 처리

@RequestMapping(value="/alipay/{orderId}/{money}/{subject}",method=RequestMethod.GET)
  public void pay(@PathVariable String orderId,@PathVariable String money,@PathVariable int subject,HttpServletResponse response) throws AlipayApiException, IOException{
    JSONObject data=new JSONObject();
    //   ,  
    data.put("out_trade_no", orderId);
    //PC   FAST_INSTANT_TRADE_PAY, APP   QUICK_MSECURITY_PAY,   H5   QUICK_WAP_PAY
    data.put("product_code","FAST_INSTANT_TRADE_PAY");
    //    ,  
    data.put("total_amount", money);
    //    ,  
    if(subject==0)
      data.put("subject","    ");    
    //             ,       
    //data.put("timeout_express","");
    //      
    //data.put("passback_params","");
    //PC  
    AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
    //APP  
    //AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
    //  H5  
    //AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
    //      
    request.setNotifyUrl("http://localhost:8765/pay/alipay/notify");
    //      
    request.setReturnUrl("http://localhost:8765/pay/alipay/returnHandler");
    //    
    request.setBizContent(data.toJSONString());
    AlipayTradePagePayResponse alipayResponse=client.pageExecute(request);
    response.setContentType("text/html;charset=UTF-8");
    response.getWriter().write(alipayResponse.getBody());
  }
여기 서 저 는 세 개의 매개 변 수 를 시범 으로 전 달 했 습 니 다.상황 에 따라 스스로 수정 할 수 있 습 니 다.만약 에 지불 방식 이 바 뀌 면 client.?실행 하려 면@RequestMapping(value="alipay/notify",method=RequestMethod.POST)

@ResponseBody
  public JSONObject notify(HttpServletRequest request) throws AlipayApiException, UnsupportedEncodingException {
    //     POST       
    Map<String, String> maps = new HashMap<String, String>();
    Map<String, String[]> requestParams = request.getParameterMap();
    for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
      String name = (String) iter.next();
      String[] values = (String[]) requestParams.get(name);
      String valueStr = "";
      for (int i = 0; i < values.length; i++) {
        valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
      }
      //     ,            。
      //valueStr = new String(valueStr.getBytes("ISO-8859-1"),"utf-8");
      maps.put(name, valueStr);
    }
    //  SDK    
    boolean signVerified = AlipaySignature.rsaCheckV1(maps, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr4eu1yGt0mASOzTjIPCaRRkh+3LSr6hJGHN4ZSg00i96DD0zuo8FzL1md7ZET5dKTHgfcAg+ojNYWB30uU1fnDy9Xj1CW9GC/Ym0vbC1IfsWHN4WqobcyOdLtqU3c+SzCkLHkwV+5RP7mYnyiCpM00cZUv8NFRv/+L3epXnBRTvJhDYYtdaQf4hlQEGkbUKlXnfZxasRswuheNKjEkVziD4Bsk510qG1gefGosYspxDbSSHB8D/8Kdv/fi+0QoG3+uqqoIH8DosdoRjUrWwafd+0m8p+PMwQR4c1CHvvrEsmBADQAedb1W1peoZMk0hfTd4MoKRYsscSd7xkye57RwIDAQAB", "UTF-8", "RSA2");
    if (signVerified) { 
      // TODO       
      //      ,  success,                
      return ActionHelper.responseOk();
    }
    return ActionHelper.responseFailed("      ");
  }
  
  @RequestMapping(value="alipay/returnHandler",method=RequestMethod.GET)
  @ResponseBody
  public JSONObject returnHandler(HttpServletRequest request) {
    System.out.println("             ");
    Map<String, String[]> maps = request.getParameterMap();
//    for (Entry<String, String[]> map : maps.entrySet()) {
//      System.out.println(map.getKey()+"   ------------");
//      String[] value = map.getValue();
//      for (String string : value) {
//        System.out.println(string);
//      }
//    }
    String orderId = maps.get("out_trade_no")[0];//     
    //         return ActionHelper.responseOk();
  }
비동기 리 셋 은 post 이 고 동기 리 셋 은 get 입 니 다.여기 서 비동기 리 셋 주 소 는 반드시 네트워크 가 접근 할 수 있어 야 하기 때문에 동기 인터페이스 로 먼저 판단 처 리 를 하고 정상 적 인 업무 에서 비동기 리 셋 을 기준 으로 판단 합 니 다.
동기 반전 의 주 해 를 취소 하면 콘 솔 에서 모든 인 자 를 볼 수 있 습 니 다!

결제 계 정과 비밀 번 호 는 샌 드 박스 계 정 에서 스스로 조회 하면 된다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기