<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    IT人生
    專注于java相關技術.
    posts - 53,comments - 87,trackbacks - 0

    index.jsp

    <%@ page contentType="text/html;charset=gb2312"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <body >

    <br>
    <a href="<%=gateway.payment.payment.CreateUrl()%>"><img src="images/alipay_bwrx.gif" border="0"></a>

    </body>
    </html>

    alipay_notify.jsp
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.util.*"%>

    <%request.setCharacterEncoding("gb2312");
       String partner = ""; //partner合作伙伴id(必須填寫)
       String privateKey = ""; //partner 的對應交易安全校驗碼(必須填寫)
       String alipayNotifyURL = "      + "&partner="
         + partner
         + "&notify_id="
         + request.getParameter("notify_id");

       //獲取支付寶ATN返回結果,true是正確的訂單信息,false 是無效的
       //如果你的服務器不支持https訪問的話,需要用老的接口查詢地址了,論壇上會公布
       String responseTxt = gateway.checkURL.checkURL
         .check(alipayNotifyURL);

       Map params = new HashMap();
       //獲得POST 過來參數(shù)設置到新的params中
       Map requestParams = request.getParameterMap();
       for (Iterator 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 = valueStr + values[i];
        }
        params.put(name, valueStr);
       }
       
       String mysign = com.alipay.util.SignatureHelper.sign(params, privateKey);
       
       //out.println(mysign+"-----"+request.getParameter("sign"));
       if (mysign.equals(request.getParameter("sign")) || responseTxt.equals("true")  ){
        
        out.println("success");
      }
      %>

    retrun_url.jsp
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.util.*"%>

    <%request.setCharacterEncoding("gb2312");
       //String partner = ""; //partner合作伙伴id(必須填寫)
       String privateKey = ""; //partner 的對應交易安全校驗碼(必須填寫)
      // String alipayNotifyURL = "
       //  + "&partner="
       //  + partner
       //  + "&notify_id="
       //  + request.getParameter("notify_id");

       //獲取支付寶ATN返回結果,true是正確的訂單信息,false 是無效的
       //String responseTxt = gateway.checkURL.checkURL
       //  .check(alipayNotifyURL);
                //由于return url的返回通知,notifyid為空,無法到服務器查詢真假,所以只要比對簽名就好
       
       
       Map params = new HashMap();
       //獲得POST 過來參數(shù)設置到新的params中
       Map requestParams = request.getParameterMap();
       for (Iterator 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 = valueStr + values[i];
        }
        params.put(name, valueStr);
       }
       
       String mysign = com.alipay.util.SignatureHelper_return.sign(params, privateKey);
       
       //out.println(mysign+"-----"+request.getParameter("sign"));
       if (mysign.equals(request.getParameter("sign"))  ){
        
        
        if (request.getParameter("trade_status").equalsIgnoreCase("TRADE_FINISHED")){
                // 可以做重定向,也可以用來虛擬物品發(fā)貨
        }
        
      }

      %>


    SignatureHelper.java
    package com.alipay.util;

    import gateway.md5.Md5Encrypt;

    import java.util.ArrayList;

    import java.util.Collections;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;

    public class SignatureHelper {

     public static String sign(Map params, String privateKey) {
      Properties properties = new Properties();

      for (Iterator iter = params.keySet().iterator(); iter.hasNext();) {
       String name = (String) iter.next();
       Object value = params.get(name);
       if (value == null) {
        continue;
       }

       if (name == null || name.equalsIgnoreCase("sign")
         || name.equalsIgnoreCase("sign_type")) {
        continue;
       }

       properties.setProperty(name, value.toString());
      }

      String content = getSignatureContent(properties);
      return sign(content, privateKey);
     }

     @SuppressWarnings("unchecked")
     public static String getSignatureContent(Properties properties) {
      StringBuffer content = new StringBuffer();
      List keys = new ArrayList(properties.keySet());
      Collections.sort(keys);

      for (int i = 0; i < keys.size(); i++) {
       String key = (String) keys.get(i);
       String value = properties.getProperty(key);
       content.append((i == 0 ? "" : "&") + key + "=" + value);
      }

      return content.toString();
     }

     public static String sign(String content, String privateKey) {
      if (privateKey == null) {
       return null;
      }
      String signBefore = content + privateKey;
      // System.out.print(Md5Encrypt.md5(signBefore));
      return Md5Encrypt.md5(signBefore);

     }
    }


    SignatureHelper_return.java
    package com.alipay.util;

    import gateway.md5.Md5Encrypt;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;

    public class SignatureHelper_return {

     public static String sign(Map params, String privateKey) {
      Properties properties = new Properties();

      for (Iterator iter = params.keySet().iterator(); iter.hasNext();) {
       String name = (String) iter.next();
       Object value = params.get(name);
       if (value == null) {
        continue;
       }

       if ( name.equalsIgnoreCase("sign")
         || name.equalsIgnoreCase("sign_type")) {
        continue;
       }

       properties.setProperty(name, value.toString());
      }

      String content = getSignatureContent(properties);
      return sign(content, privateKey);
     }

     @SuppressWarnings("unchecked")
     public static String getSignatureContent(Properties properties) {
      StringBuffer content = new StringBuffer();
      List keys = new ArrayList(properties.keySet());
      Collections.sort(keys);

      for (int i = 0; i < keys.size(); i++) {
       String key = (String) keys.get(i);
       String value = properties.getProperty(key);
       content.append((i == 0 ? "" : "&") + key + "=" + value);
      }

      return content.toString();
     }

     public static String sign(String content, String privateKey) {
      if (privateKey == null) {
       return null;
      }
      String signBefore = content + privateKey;
      // System.out.print(Md5Encrypt.md5(signBefore));
      return Md5Encrypt.md5(signBefore);

     }
     
     
     
    }


    checkURL.java
     
    package gateway.checkURL;
    import java.net.*;
    import java.io.*;


    public class checkURL {
        /**
         * 對字符串進行MD5加密
      * @param myUrl
         *
         * @param url
         *
         * @return 獲取url內(nèi)容
         */
      public static String check(String urlvalue ) {
     
       String inputLine = "";
      try
      {
       URL url = new URL(urlvalue);
       
       HttpURLConnection urlConnection  = (HttpURLConnection)url.openConnection();
       
       BufferedReader in  = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
      
       String stTemp = "";
             while((stTemp = in.readLine()) != null)
             {
                System.out.println(stTemp);
                inputLine = inputLine + stTemp;
             }
      }
      catch(Exception e)
      {
       e.printStackTrace();
      }
      return inputLine;
     }


      }

    Md5Encrypt.java
    /**
     * Alipay.com Inc. Copyright (c) 2004-2005 All Rights Reserved.
     *
     * <p>
     * Created on 2005-7-9
     * </p>
     */
     package gateway.md5;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;

    /**
     * MD5加密算法
     */
    public class Md5Encrypt {
        /**
         * 對字符串進行MD5加密
         *
         * @param text 明文
         *
         * @return 密文
         */
        public static String md5(String text) {
            MessageDigest msgDigest = null;

            try {
                msgDigest = MessageDigest.getInstance("MD5");
            } catch (NoSuchAlgorithmException e) {
                throw new IllegalStateException("System doesn't support MD5 algorithm.");
            }

            msgDigest.update(text.getBytes());

            byte[] bytes = msgDigest.digest();

            byte   tb;
            char   low;
            char   high;
            char   tmpChar;

            String md5Str = new String();

            for (int i = 0; i < bytes.length; i++) {
                tb = bytes[i];

                tmpChar = (char) ((tb >>> 4) & 0x000f);

                if (tmpChar >= 10) {
                    high = (char) (('a' + tmpChar) - 10);
                } else {
                    high = (char) ('0' + tmpChar);
                }

                md5Str += high;
                tmpChar = (char) (tb & 0x000f);

                if (tmpChar >= 10) {
                    low = (char) (('a' + tmpChar) - 10);
                } else {
                    low = (char) ('0' + tmpChar);
                }

                md5Str += low;
            }

            return md5Str;
        }
    }


    payment.java
    package gateway.payment;

    import java.util.*;


    public class payment {
     
     
      

     public static String CreateUrl()
          {  
     
        Date out_trade_no=new Date();
        String paygateway    = "
        String service = "create_direct_pay_by_user";
        String partner   = "";  //partner合作伙伴ID(必填)
        String sign_type       =   "MD5";
        String subject = "訂單號:" + out_trade_no;  //subject  商品名稱
        String body = "交易地點總價包含郵費";  //body   商品描述
        String price      = "100";    //price   商品單價   0.01~50000.00
        String show_url        =   "
        String quantity        =   "1";
        String payment_type    =   "1";
        String logistics_type  =   "EXPRESS";//logistic為物流信息
        String logistics_fee   =   "2";
        String logistics_payment  =   "SELLER_PAY";
        String logistics_type_1  =   "EMS";
        String logistics_fee_1   =   "4";
        String logistics_payment_1  =   "SELLER_PAY";
        String seller_email    =    "";             //賣家賬號(必填)
        String key             =    "";              //partner賬戶的支付寶安全校驗碼(必填)
        String notify_url      =    "

       
      
        String[] Oristr ={ "service="+service, "partner=" + partner, "subject=" + subject, "body=" + body, "out_trade_no=" + out_trade_no, "price=" + price, "show_url=" + show_url, "quantity=" + quantity, "payment_type=" + payment_type, "logistics_type=" + logistics_type, "logistics_fee=" + logistics_fee, "logistics_payment=" + logistics_payment, "logistics_type_1=" + logistics_type_1, "logistics_fee_1=" + logistics_fee_1, "logistics_payment_1=" + logistics_payment_1, "seller_email=" + seller_email, "notify_url=" + notify_url };
                   
            Arrays.sort(Oristr);//Sorts the specified array of objects into ascending order
                         //according to the natural ordering of its elements.
          
              String prestr="";
             
              for (int i = 0; i < Oristr.length; i++)
                 {
                     if (i==Oristr.length-1)
                     {
                         prestr = prestr + Oristr[i] ;
                     }
                     else
                     {
                         prestr = prestr + Oristr[i] + "&";
                     }
                     
                 }

               prestr = prestr + key;

                 //生成Md5摘要;
                 String sign = gateway.md5.Md5Encrypt.md5(prestr);
                
                 //構造支付Url;
                 String parameter = "";
                 parameter = parameter + paygateway;
                 for (int i = 0; i < Oristr.length; i++)
                 {
                     parameter = parameter + Oristr[i] + "&";              
                 }

                 parameter = parameter + "sign=" + sign + "&sign_type=" + sign_type;

                 //返回支付Url;
                 return parameter;

       
     
          }
    }

    注意:
    包的位置,
    參數(shù)排序是以字母的排序排的

    轉(zhuǎn)自:http://www.tkk7.com/etlan/archive/2006/06/30/55990.html



    減肥瘦身品總匯     值得信賴*脈脈美妝*正品現(xiàn)貨謝絕講價     〓深港商盟〓名品歐衣坊(美國休閑品牌AF系列)     QQ三國游戲幣及道具專賣店     小臉紅紅的瘦身旗艦店
    posted on 2009-05-02 23:53 龍華城 閱讀(791) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 亚洲国产美女在线观看| 美女被免费视频网站a| 四虎www免费人成| 美女被免费视频网站| 久久91亚洲精品中文字幕| 成年美女黄网站色大免费视频| 一级做a爰性色毛片免费| 亚洲精品国产情侣av在线| 国产一卡二卡≡卡四卡免费乱码| 成全在线观看免费观看大全| 中文字幕乱码亚洲无线三区 | 亚洲免费一级视频| 激情无码亚洲一区二区三区| 亚洲精品蜜桃久久久久久| 国产美女在线精品免费观看| 伊人免费在线观看高清版| 亚洲自偷自偷在线成人网站传媒| 亚洲精品中文字幕无码蜜桃| 日韩精品无码人妻免费视频 | 国产精品亚洲mnbav网站 | 色在线亚洲视频www| 亚洲中文字幕无码爆乳av中文 | 国外成人免费高清激情视频 | 久久乐国产精品亚洲综合| 性xxxxx免费视频播放| 中文字幕在线免费视频| 亚洲精华国产精华精华液网站 | 中国极品美軳免费观看| 亚洲日本成本人观看| 久久亚洲私人国产精品vA | 久久精品国产亚洲av日韩| 久久久久亚洲av成人无码电影| 午夜免费福利在线| 1000部羞羞禁止免费观看视频| 久久国产精品免费一区二区三区| 亚洲精品伦理熟女国产一区二区 | 亚洲三级在线观看| 亚洲经典在线观看| 亚洲AV日韩AV永久无码绿巨人 | 一级日本高清视频免费观看| 亚洲精品无码中文久久字幕|