SpringBootの下でどうやってAlipayインターフェースの使用を実現しますか?


この文章は主にSpringBootの下でAlipayインターフェースの使用を実現する方法を紹介しています。ここでは例示的なコードを通じて紹介されています。皆さんの学習や仕事に対して一定の参考となる学習価値があります。必要な友達は参考にしてください。
前期準備:
前に書いた支払宝インターフェースは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());
  }
ここで三つのパラメータをモデルとして伝えましたが、状況に応じて自分で修正できます。Execute要@Request Mapping(value=「alipad/notify」、method=Request Method.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として、ここでは非同期コールアドレスは公網でアクセスできるものでなければならないので、同期インターフェースを使って先に判断処理を行い、通常業務では非同期コールバックを基準に判断します。
同期コール中のコメントをキャンセルすると、すべてのパラメータがコンソールで確認できます。

アカウントとパスワードは自分で砂箱のアカウントで検索すればいいです。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。