JavaはどうやってAlipayコンピュータ決済を実現しますか?servletバージョンに基づきます。


この文章は主にJavaがどのように支払いを実現するかを紹介しています。Servletのバージョンに基づいて支払います。ここでは例示的なコードで紹介されています。皆さんの学習や仕事に対して一定の参考となる学習価値があります。必要な友達は以下のように参照してください。
前期準備:
アリ金融開放プラットフォームは登録操作を行う。

私のオープンプラットフォームに入ります。

サンドボックスを上に見つけて、サンドボックス(ネットワークプログラミング仮想実行環境)に入ります。

ここのRSA 2鍵の設定では、すでに設定されていますので、アリペイ公開鍵があります。
RSA 2鍵の生成については、以下のように動作することができる。

作成後のツールフォルダでは、自分が生成した公開鍵と秘密鍵のペアを確認することができます。

秘密鍵は保留されています。公開鍵は開発者プラットフォームRSA 2に設定すればいいです。
公式デモは、いくつかのjarカバンと参考になるものが必要ですから、DEMOを持つのは便利です。

必要なjarパッケージのパスは以下の通りです。

インスタンス作成:
工具はここで使っていますが、これはあまり影響がありません。
ウェブプロジェクトを新規作成


プロジェクトに必要なクラスは以下の通りです。

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(Alipay公開鍵の位置を確認する上で)、Alipay公開鍵を支払い、自分の秘密鍵を添付してください。
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");
  }
}
Order Servlet.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に展開する。
http://localhost:8080/alipay-demo/order/confirmページが表示されます。この要求を通じてAlipayのインターフェースにジャンプしました。

沙箱の環境のをダウンロードして宝APPを支払ってコードをスキャンしてテストすることができます。
こちらは右をクリックして口座に登録してお支払いします。

アカウントとパスワードは沙箱のプラットフォームで個人のアカウントを調べられます。

その後ログインしてお支払いします。正常にお支払い成功ページに遷移しました。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。