springbootの実装では、アリペイのインターフェイスを呼び出します

pom.xmlにアリペイ依存関係を追加します。1.

< 依存性> 
        < のgroupId > com.alipay.sdk </ のgroupId > 
        < たartifactId > Alipayの-SDK-Javaの</ たartifactId > 
        < バージョン> 4.8.10.ALL </ バージョン> 
  </ 依存>

application.properties内のアクセス静的リソースを追加します。2.

#設定された静的リソースへのアクセス・パス
spring.resources.static-場所=クラスパス:/テンプレート/、クラスパス:/静的/
server.port = 8080

3. [追加設定のクラス、キーや商人Alipayの公共を追加し、内部の生成を行って、アリペイオープンプラットフォーム開発のアシスタントをダウンロードする必要性が存在しますが、Baiduのを理解していない、チュートリアルがたくさんある、私は長いほど、書き込みにここで繰り返すことはしません埋めるために、私はこの効果を見ることができます

  注:アリペイサンドボックステスト環境アリペイゲートウェイ:「https://openapi.alipaydev.com/gateway.do」。

              実際の開発環境アリペイゲートウェイ「https://openapi.alipay.com/gateway.do」; div要素の少ない、そしてより多くの何もありません

輸入java.io.FileWriter;
インポートにjava.io.IOException;

パブリック クラスAlipayConfigInfo {
     // ここ↓↓↓↓↓↓↓↓↓↓あなたの基本的な情報を設定してください↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

    // アプリケーションID、あなたのAPPID、アカウントを受信の両方あなたのAPPID対応アリペイアカウント
    のパブリック 静的な文字列=「20,161,015,006,942 *を」APP_IDを; // 例:2016082600317257
     // 商人秘密鍵、秘密鍵RSA2あなたPKCS8形式
    のパブリック 静的の文字列= merchant_private_key "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCbcNwhjRT7nXICPZOpgobihEVSxHwiGLcXUr3FurHJDxLARgX5Fg5O99WjS95 ******** Xjoyqrtz4Um6CTdn9Zbgc =" ;
     // アリペイパブリックビューアドレス:https://openhome.alipay.com/platform/keyManage.htm 
    // APPID下に対応アリペイ公共。
    公共の 静的な文字列alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgzd570gh8Yw / 7UdG5yYUur5FxXYrqaYyfP0h9TI / Y7z8jIzAHlrYlWLJ6Y9qBr + ********************** hDAQAB M0FisXl4";
     // HTTPのサーバー非同期通知ページパスニーズを:// ?ID = 123個の、このようなカスタムパラメータを追加することはできません完全なパス形式がアクセスできるネットワークの外でなければなりません
    / **
     ページにユーザーを返さないこのページを返すとき*、あなただけのアドレスコントローラで書かれて実行されます
     * / 
    公共の 静的な文字列notify_url =「HTTP://2ky69**4.zicp.vip:44622 / notify_url.html」;
     // HTTPにページジャンプ同期予告ページパスニーズを:// フルパス形式を追加することはできませんか? IDこれらのカスタムパラメータは、ネットワーク外でなければなりません= 123がアクセスすることができます
    / **
     *このページは、ページを参照するには、ユーザーが支払うあるユーザーページを返すように同期され、上記notify_urlは非同期に動作して事業を返された、ありがとうございました
     *あなたがあなたの母親の表情を読んで、または数回読んで、またはAlipayのサードパーティインターフェイスAPIに行くことができない場合は、直接使用するAPIを取る見ていない、ピットの場合ネットワークの外部IPを使用するように、他人のせいにしていないが推奨されるアクセスすることができますピーナッツの殻、ネットワークの浸透
     * / 
    公共の 静的な文字列return_url = "HTTP://2ky69**64.zicp.vip:44622 / return_url.html" ;
     // 署名方法
    のパブリック 静的の文字列sign_type = "RSA2" ;
     // 文字エンコーディング形式
    のパブリック 静的の文字列の文字セット=「UTF-8」;
     // アリペイゲートウェイ
    のパブリック 静的な文字列GatewayUrl =「https://openapi.alipaydev.com/gateway.do」;
     // あなたはDドライブでこのファイルを作成するか、エラーになりますログアドレス、
    パブリック 静的の文字列開き、log_path =「D:/ログ/」;
     // ↑↑↑↑↑↑↑↑↑↑ここにあなたの基本的な情報を設定してください↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

    / **
     *ログ、便利なテストを書く(あなたは、データベースに保存されたレコードを変更することができ、ウェブサイトのニーズを参照してください)
     *
     * @param 
     *テキストコンテンツ内のログに書き込むために、
     * / 
    パブリック 静的 ボイドlogResult(文字列剣){
        FileWriterライター = nullをしてみてください{
            ライター = 新しいてFileWriter(開き、log_path + "alipay_log_"
                    +のSystem.currentTimeMillis()+ ".txtファイル" )。
            writer.write(剣)。
        } キャッチ(例外e){
            e.printStackTrace();
        } 最後に{
             場合(ライター!= nullの){
                 試み{
                    writer.close();
                } キャッチ(IOExceptionを電子){
                    e.printStackTrace();
                }
            }
        }
    }
}

 

そのコントローラにメソッドを追加4.

輸入com.alipay.api.AlipayClient;
輸入com.alipay.api.DefaultAlipayClient;
輸入com.alipay.api.request.AlipayTradePagePayRequest;
輸入com.woniu.config.AlipayConfigInfo;
輸入org.springframework.stereotype.Controller;
輸入org.springframework.ui.Model;
輸入org.springframework.web.bind.annotation.RequestMapping。

インポートのjavax.servlet.http.HttpServletResponse;
輸入てjava.io.PrintWriter;
輸入java.text.SimpleDateFormatの。
輸入java.util.Date;

@コントローラ
パブリック クラスAlipayIumpSum {
     / **
     *有料アリペイインタフェースへのクイックコール
     * @paramのモデル、ID、債務、
     * @return オブジェクト
      * / 
    @RequestMapping( "alipaySum" のパブリックオブジェクトalipayIumpSum(モデルモデル、文字列WIDout_trade_no、文字WIDsubject、文字WIDtotal_amount、文字列WIDbody、
                                HttpServletResponseの応答)
            スロー例外{
        System.out.println( "リクエストが来る" + WIDtotal_amount)。
        支払債務のString = WIDout_trade_no;
         // オーダーの名前は、必要な(数でなければなりません) 
        文字列の件名= WIDsubject;
         // 支払額が必要な 
        文字列をtotal_fee = WIDtotal_amount;
         // 商品の説明を空にすることができます 
        文字列本体= WIDbody;
         // GET初期化alipayClient 
        alipayClient alipayClient = 新新DefaultAlipayClient(AlipayConfigInfo.gatewayUrl、AlipayConfigInfo.app_id、
                AlipayConfigInfo.merchant_private_key、 "JSON" 、AlipayConfigInfo.charset、
                AlipayConfigInfo.alipay_public_key、AlipayConfigInfo.sign_type)。
        //はリクエストパラメータ設定 
        AlipayTradePagePayRequest alipayRequest = 新新)AlipayTradePagePayRequestを(;
        alipayRequest.setReturnUrl(AlipayConfigInfo.return_url)。
        alipayRequest.setNotifyUrl(AlipayConfigInfo.no​​tify_url)。
        SDFのSimpleDateFormat = 新しい新しいてSimpleDateFormat( "yyyyMMddHHmmssSSSを" );
         // 商人の注文番号、商人のウェブサイトのためのシステムのユニークな注文番号、必要な 
        out_trade_no = sdf.format(文字列を新しい新しいA日付());
         // 支払額は、必要な 
        文字列TOTAL_AMOUNTをpayables.replace =( ""、 "" );
        alipayRequest.setBizContent( "{\" out_trade_no \ "\" "+ out_trade_no + "\"、" + "\" TOTAL_AMOUNT \ "\" "+ TOTAL_AMOUNT
                 + "\"、" + "\"被験者\ ": \ "" +対象+ "\"、 "+ "\"ボディ\ ":\"" +ボディ+ "\"、」
                + "\" PRODUCT_CODE \ ":\" FAST_INSTANT_TRADE_PAY \ "}" )。
        // 请求 
        文字列結果= alipayClient.pageExecute(alipayRequest).getBody();
        // System.out.printlnは(結果);
        // EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)。
        AlipayConfigInfo.logResult(結果)。// 记录支付日志 
        response.setContentType( "text / htmlの、文字セット= GBK" )。
        PrintWriterアウト = response.getWriter()。
        out.print(結果)。
        リターン ヌル
    }
}

テストpage.htmlを書く5。

<!DOCTYPE HTML>
<HTML LANG = "EN">
<ヘッド>
    <メタ文字セット= "UTF-8">
    <タイトル>アリペイテスト</ TITLE>
    <スクリプトSRC = "JS / jqueryの-1.10.2.min.js"> </ SCRIPT>
</ head>の
<身体>
<フォーム名= alipayment ID = "formDiv" アクション= "alipaySum">
    <DIV ID = "body1" クラス = "ショー"名前= "divcontent">
        <DL クラス = "コンテンツ">
            <Dtの>量:</ DT>
            <DD>
                <入力されたID = "WIDout_trade_no" NAME = "WIDout_trade_no" />
            </ DD>
            <時間のクラス = "one_line">
            <Dtと>注文名:</ DT>
            <DD>
                <入力されたID = "WIDsubject" NAME = "WIDsubject" />
            </ DD>
            <時間のクラス = "one_line">
            <Dtと>注:</ DT>
            <DD>
                <入力されたID = "WIDtotal_amount" NAME = "WIDtotal_amount" />
            </ DD>
            <時間のクラス = "one_line">
            <Dtと>製品の説明:</ DT>
            <DD>
                <入力されたID = "WIDbody" NAME = "WIDbody" />
            </ DD>
            <時間のクラス = "one_line">
            <DT> </ DT>
            <DD ID = "BTN-DD">
                        <スパンクラス = "新しい-BTN-ログイン-SP">
                            <ボタンクラス =「新しい-BTN-ログイン」タイプ=「提出」
                                    スタイル =「テキスト整列:センター;」ID = "BTN">付款</ボタン>
                        </ span>の
                <スパンクラス =「ノート・ヘルプ」>あなたは「支払い」ボタンをクリックすると、操作の回数に同意するものとします。</ span>の
            </ DD>
        </ dlで>
    </ div>
</フォーム>
<! - <スクリプト> 
    $( "#btn" ).click(関数(){
        VARダ = $( "#formDiv" ).serialize();
        ($ .post "alipaySum"、ダ、 "JSON" 
    })
</ SCRIPT>  - >
</ BODY>
</ HTML>

6.支払いページのreturn_url.htmlに成功したリターン

<!DOCTYPE HTML>
<HTML LANG = "EN">
<ヘッド>
    <メタ文字セット= "UTF-8">
    <タイトル>タイトル</ TITLE>
</ head>の
<身体>
このページの記述に成功し、支払いを確認した場合
</ BODY>
</ HTML>

7.アクセスアドレスます。http:// localhost:8080 / page.html、支払いを選択し、あなたは一般的なプロセスを理解します

  注:サンドボックス環境は、サンドボックスのアカウントとパスワードを使用する必要があり、あなたのサンドボックスのテスト環境でのアカウントのサンドボックスのアカウント情報を見ることができ、2次元コードの失敗を表示します2次元コードをスキャンするために、実際のP​​ayPalのアプリの量を設定するのは自由です

おすすめ

転載: www.cnblogs.com/nukill/p/11853730.html