世界因你而精彩  
          日歷
          <2013年8月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567
          統計
          • 隨筆 - 169
          • 文章 - 1
          • 評論 - 138
          • 引用 - 0

          導航

          常用鏈接

          留言簿(9)

          隨筆分類(163)

          隨筆檔案(154)

          文章檔案(1)

          新聞檔案(1)

          相冊

          收藏夾(1)

          個人雜雜

          友情鏈接

          自學考試

          資料搜索

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 359436
          • 排名 - 153

          最新評論

          閱讀排行榜

          評論排行榜

           

          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 過來參數設置到新的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 過來參數設置到新的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")){
          ??????????? //?可以做重定向,也可以用來虛擬物品發貨
          ????}
          ????
          ??}

          ??%>


          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內容
          ???? */
          ? 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;

          ???
          ?
          ????? }
          }

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

          資料由支付寶轉載:
          下載地址:
          http://www.blive.cn/liuz/download/new_jsp_xuni.rar

          posted on 2006-06-30 16:56 張秀蘭 閱讀(14047) 評論(6)  編輯  收藏
          評論:
          • # re: 支付寶在線支付接口  姜利陽 Posted @ 2007-08-28 01:05
            不錯!  回復  更多評論   

          • # re: 支付寶在線支付接口  ball Posted @ 2008-01-06 19:12
            這種東西安全嗎??  回復  更多評論   

          • # re: 支付寶在線支付接口  張秀蘭 Posted @ 2008-01-07 08:49
            @ball
            支付寶安全做得挺好的,安全  回復  更多評論   

          • # re: 支付寶在線支付接口  謝小強 Posted @ 2013-05-22 17:04
            盛維支付接口,安全、穩定,為游戲平臺、商城、IDC等各行各業接入在線支付接口。T+0 T+1結算方式,超低費率,是您值得信賴的選擇!聯系QQ:274718474  回復  更多評論   

          • # re: 支付寶在線支付接口  謝小強 Posted @ 2013-06-04 15:57
            第三方支付首選—盛維支付,低費率、速到賬、資金不凍結。聯系QQ:274718474  回復  更多評論   

          • # re: 支付寶在線支付接口  閆泉 Posted @ 2013-08-06 13:44
            爆頭王在線支付  回復  更多評論   

          • # re: 支付寶在線支付接口[未登錄]  張強 Posted @ 2014-04-14 08:36
            請求申請一個支付寶支付接口  回復  更多評論   


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


          網站導航:
           
           
          Copyright © 張秀蘭 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 扬中市| 郧西县| 白水县| 恩平市| 沁水县| 文安县| 石林| 商洛市| 洛隆县| 龙海市| 富锦市| 通州区| 来凤县| 阿巴嘎旗| 新沂市| 怀柔区| 昌江| 丹东市| 田林县| 台中市| 德惠市| 万源市| 和政县| 闽清县| 横峰县| 壤塘县| 县级市| 平遥县| 宝坻区| 文安县| 新竹市| 龙陵县| 巴青县| 天柱县| 垫江县| 嘉定区| 新民市| 布拖县| 龙游县| 贵阳市| 泰顺县|