程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java完成付出寶之第三方付出寶即時到賬付出功效

Java完成付出寶之第三方付出寶即時到賬付出功效

編輯:關於JAVA

Java完成付出寶之第三方付出寶即時到賬付出功效。本站提示廣大學習愛好者:(Java完成付出寶之第三方付出寶即時到賬付出功效)文章只能為提供參考,不一定能成為您想要的結果。以下是Java完成付出寶之第三方付出寶即時到賬付出功效正文


alipay 的幾個內核功效文件:

AlipayFunction.java

package com.test.util.alipay; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
import org.dom4j.Document; 
import org.dom4j.DocumentException; 
import org.dom4j.Node; 
import org.dom4j.io.SAXReader; 
public class AlipayFunction { 
/** 
* 功效:生成簽名成果 
* @param sArray 要簽名的數組 
* @param key 平安校驗碼 
* @return 簽名成果字符串 
*/ 
public static String BuildMysign(Map sArray, String key) { 
String prestr = CreateLinkString(sArray); //把數組一切元素,依照“參數=參數值”的形式用“&”字符拼接成字符串 
prestr = prestr + key; //把拼接後的字符串再與平安校驗碼直接銜接起來 
String mysign = Md5Encrypt.md5(prestr); 
return mysign; 
} 
/** 
* 功效:除去數組中的空值和簽名參數 
* @param sArray 簽名參數組 
* @return 去失落空值與簽名參數後的新簽名參數組 
*/ 
public static Map ParaFilter(Map sArray){ 
List keys = new ArrayList(sArray.keySet()); 
Map sArrayNew = new HashMap(); 
for(int i = 0; i < keys.size(); i++){ 
String key = (String) keys.get(i); 
String value = (String) sArray.get(key); 
if( value == null || value.equals("") || 
key.equalsIgnoreCase("sign") || key.equalsIgnoreCase("sign_type")){ 
continue; 
} 
sArrayNew.put(key, value); 
} 
return sArrayNew; 
} 
/** 
* 功效:把數組一切元素排序,並依照“參數=參數值”的形式用“&”字符拼接成字符串 
* @param params 須要排序並介入字符拼接的參數組 
* @return 拼接後字符串 
*/ 
public static String CreateLinkString(Map params){ 
List keys = new ArrayList(params.keySet()); 
Collections.sort(keys); 
String prestr = ""; 
for (int i = 0; i < keys.size(); i++) { 
String key = (String) keys.get(i); 
String value = (String) params.get(key); 
if (i == keys.size() - 1) {//拼接時,不包含最初一個&字符 
prestr = prestr + key + "=" + value; 
} else { 
prestr = prestr + key + "=" + value + "&"; 
} 
} 
return prestr; 
} 
/** 
* 功效:寫日記,便利測試(看網站需求,也能夠改成把記載存入數據庫) 
* @param sWord 要寫入日記裡的文本內容 
*/ 
public static void LogResult(String sWord){ 
// 該文件存在於和運用辦事器 啟動文件統一目次下,文件名是alipay log加辦事器時光 
try { 
FileWriter writer = new FileWriter("D:\\alipay_log" + System.currentTimeMillis() + ".txt"); 
writer.write(sWord); 
writer.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
} 
/** 
* 功效:用於防垂綸,挪用接口query_timestamp來獲得時光戳的處置函數 
* 留意:長途解析XML失足,與辦事器能否支撐SSL等設置裝備擺設有關 
* @param partner 協作身份者ID 
* @return 時光戳字符串 
* @throws IOException 
* @throws DocumentException 
* @throws MalformedURLException 
*/ 
public static String query_timestamp(String partner) 
throws MalformedURLException, DocumentException, IOException { 
String strUrl = "https://mapi.alipay.com/gateway.do?service=query_timestamp&partner="+partner; 
StringBuffer buf1 = new StringBuffer(); 
SAXReader reader = new SAXReader(); 
Document doc = reader.read(new URL(strUrl).openStream()); 
List<Node> nodeList = doc.selectNodes("//alipay/*"); 
for (Node node : nodeList) { 
// 截取部門不須要解析的信息 
if (node.getName().equals("is_success") 
&& node.getText().equals("T")) { 
// 斷定能否有勝利標示 
List<Node> nodeList1 = doc.selectNodes("//response/timestamp/*"); 
for (Node node1 : nodeList1) { 
buf1.append(node1.getText()); 
} 
} 
} 
return buf1.toString(); 
} 
} 

AlipayNotify.java

package com.test.util.alipay; 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.util.Map; 
import com.test.constants.AlipayConfig; 
public class AlipayNotify { 
/** 
* *功效:依據反應回來的信息,生成簽名成果 
* @param Params 告訴前往來的參數數組 
* @param key 平安校驗碼 
* @return 生成的簽名成果 
*/ 
public static String GetMysign(Map Params, String key){ 
Map sParaNew = AlipayFunction.ParaFilter(Params);//過濾空值、sign與sign_type參數 
String mysign = AlipayFunction.BuildMysign(sParaNew, key);//取得簽名成果 
return mysign; 
} 
/** 
* *功效:獲得長途辦事器ATN成果,驗證前往URL 
* @param notify_id 告訴校驗ID 
* @return 辦事器ATN成果 
* 驗證成果集: 
* invalid敕令參數纰謬 湧現這個毛病,請檢測前往處置中partner和key能否為空 
* true 前往准確信息 
* false 請檢討防火牆或許是辦事器阻攔端口成績和驗證時光能否跨越一分鐘 
*/ 
public static String Verify(String notify_id){ 
//獲得長途辦事器ATN成果,驗證能否是付出寶辦事器發來的要求 
String transport = AlipayConfig.transport; 
String partner = AlipayConfig.partner; 
String veryfy_url = ""; 
if(transport.equalsIgnoreCase("https")){ 
veryfy_url = "https://www.alipay.com/cooperate/gateway.do?service=notify_verify"; 
} else{ 
veryfy_url = "http://notify.alipay.com/trade/notify_query.do?"; 
} 
veryfy_url = veryfy_url + "&partner=" + partner + "¬ify_id=" + notify_id; 
String responseTxt = CheckUrl(veryfy_url); 
return responseTxt; 
} 
/** 
* *功效:獲得長途辦事器ATN成果 
* @param urlvalue 指定URL途徑地址 
* @return 辦事器ATN成果 
* 驗證成果集: 
* invalid敕令參數纰謬 湧現這個毛病,請檢測前往處置中partner和key能否為空 
* true 前往准確信息 
* false 請檢討防火牆或許是辦事器阻攔端口成績和驗證時光能否跨越一分鐘 
*/ 
public static String CheckUrl(String urlvalue){ 
String inputLine = ""; 
try { 
URL url = new URL(urlvalue); 
HttpURLConnection urlConnection = (HttpURLConnection) url 
.openConnection(); 
BufferedReader in = new BufferedReader(new InputStreamReader( 
urlConnection.getInputStream())); 
inputLine = in.readLine().toString(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
return inputLine; 
} 
} 

AlipayService.java

package com.test.util.alipay; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
public class AlipayService { 
/** 
* 功效:結構表單提交HTML 
* @param partner 協作身份者ID 
* @param seller_email 簽約付出寶賬號或賣家付出寶帳戶 
* @param return_url 付完款後跳轉的頁面 要用 以http開首格局的完全途徑,不許可加?id=123這類自界說參數 
* @param notify_url 生意業務進程中辦事器告訴的頁面 要用 以http開格局的完全途徑,不許可加?id=123這類自界說參數 
* @param show_url 網站商品的展現地址,不許可加?id=123這類自界說參數 
* @param out_trade_no 請與貴網站定單體系中的獨一定單號婚配 
* @param subject 定單稱號,顯示在付出寶收銀台裡的“商品稱號”裡,顯示在付出寶的生意業務治理的“商品稱號”的列內外。 
* @param body 定單描寫、定單具體、定單備注,顯示在付出寶收銀台裡的“商品描寫”裡 
* @param total_fee 定單總金額,顯示在付出寶收銀台裡的“敷衍總額”裡 
* @param paymethod 默許付出方法,四個值可選:bankPay(網銀); cartoon(卡通); directPay(余額); CASH(網點付出) 
* @param defaultbank 默許網銀代號,代號列表見club.alipay.com/read.php?tid=8681379 
* @param encrypt_key 防垂綸時光戳 
* @param exter_invoke_ip 買家當地電腦的IP地址 
* @param extra_common_param 自界說參數,可寄存任何內容(除等特別字符外),不會顯示在頁面上 
* @param buyer_email 默許買家付出寶賬號 
* @param royalty_type 提成類型,該值為固定值:10,不須要修正 
* @param royalty_parameters 提成信息集,與須要聯合商戶網站本身情形靜態獲得每筆生意業務的各分潤收款賬號、各分潤金額、各分潤解釋。最多只能設置10條 
* @param input_charset 字符編碼格局 今朝支撐 GBK 或 utf-8 
* @param key 平安校驗碼 
* @param sign_type 簽名方法 不需修正 
* @param key 平安校驗碼 
* @return 表單提交HTML文本 
*/ 
public static String BuildForm(String partner, 
String seller_email, 
String return_url, 
String notify_url, 
String show_url, 
String out_trade_no, 
String subject, 
String body, 
String total_fee, 
String paymethod, 
String defaultbank, 
String anti_phishing_key, 
String exter_invoke_ip, 
String extra_common_param, 
String buyer_email, 
String royalty_type, 
String royalty_parameters, 
String input_charset, 
String key, 
String sign_type, 
String it_b_pay){ 
Map sPara = new HashMap(); 
sPara.put("service","create_direct_pay_by_user"); 
sPara.put("payment_type","1"); 
sPara.put("partner", partner); 
sPara.put("seller_email", seller_email); 
sPara.put("return_url", return_url); 
sPara.put("notify_url", notify_url); 
sPara.put("_input_charset", input_charset); 
sPara.put("show_url", show_url); 
sPara.put("out_trade_no", out_trade_no); 
sPara.put("subject", subject); 
sPara.put("body", body); 
sPara.put("total_fee", total_fee); 
sPara.put("paymethod", paymethod); 
sPara.put("defaultbank", defaultbank); 
sPara.put("anti_phishing_key", anti_phishing_key); 
sPara.put("exter_invoke_ip", exter_invoke_ip); 
sPara.put("extra_common_param", extra_common_param); 
sPara.put("buyer_email", buyer_email); 
sPara.put("royalty_type", royalty_type); 
sPara.put("royalty_parameters", royalty_parameters); 
sPara.put("it_b_pay", it_b_pay); 
Map sParaNew = AlipayFunction.ParaFilter(sPara); //除去數組中的空值和簽名參數 
String mysign = AlipayFunction.BuildMysign(sParaNew, key);//生成簽名成果 
StringBuffer sbHtml = new StringBuffer(); 
List keys = new ArrayList(sParaNew.keySet()); 
String gateway = "https://www.alipay.com/cooperate/gateway.do?"; 
//GET方法傳遞 
//sbHtml.append("<form id=\"alipaysubmit\" name=\"alipaysubmit\" action=\"" + gateway + "_input_charset=" + input_charset + "\" method=\"get\">"); 
//POST方法傳遞(GET與POST二必選一) 
sbHtml.append("<form id=\"alipaysubmit\" name=\"alipaysubmit\" action=\"" + gateway + "_input_charset=" + input_charset + "\" method=\"post\">"); 
for (int i = 0; i < keys.size(); i++) { 
String name = (String) keys.get(i); 
String value = (String) sParaNew.get(name); 
sbHtml.append("<input type=\"hidden\" name=\"" + name + "\" value=\"" + value + "\"/>"); 
} 
sbHtml.append("<input type=\"hidden\" name=\"sign\" value=\"" + mysign + "\"/>"); 
sbHtml.append("<input type=\"hidden\" name=\"sign_type\" value=\"" + sign_type + "\"/>"); 
//submit按鈕控件請不要含有name屬性 
sbHtml.append("<input type=\"submit\" value=\"付出寶確認付款\"></form>"); 
sbHtml.append("<script>document.forms['alipaysubmit'].submit();</script>"); 
return sbHtml.toString(); 
} 
} 

Md5Encrypt.java

package com.test.util.alipay; 
import java.io.UnsupportedEncodingException; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 
import com.test.constants.AlipayConfig; 
/** 
* 功效:付出寶MD5加密處置焦點文件,不須要修正 
* 版本:3.1 
* 修正日期:2010-11-01 
* 解釋: 
* 以下代碼只是為了便利商戶測試而供給的樣例代碼,商戶可以依據本身網站的須要,依照技巧文檔編寫,並不是必定要應用該代碼。 
* 該代碼僅供進修和研討付出寶接口應用,只是供給一個 
* */ 
public class Md5Encrypt { 
/** 
* Used building output as Hex 
*/ 
private static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', 
'7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; 
/** 
* 對字符串停止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."); 
} 
try { 
msgDigest.update(text.getBytes(AlipayConfig.input_charset)); //留意改接口是依照指定編碼情勢簽名 
} catch (UnsupportedEncodingException e) { 
throw new IllegalStateException( 
"System doesn't support your EncodingException."); 
} 
byte[] bytes = msgDigest.digest(); 
String md5Str = new String(encodeHex(bytes)); 
return md5Str; 
} 
public static char[] encodeHex(byte[] data) { 
int l = data.length; 
char[] out = new char[l << 1]; 
// two characters form the hex value. 
for (int i = 0, j = 0; i < l; i++) { 
out[j++] = DIGITS[(0xF0 & data[i]) >>> 4]; 
out[j++] = DIGITS[0x0F & data[i]]; 
} 
return out; 
} 
} 

AlipayConfig.java這裡是對賬號,Key,回調銜接地址等一些設置

package com.test.constants; 
import java.util.Properties; 
import com.test.util.PropertiesUtil; 
public class AlipayConfig { 
private static AlipayConfig alconfig = null; 
private AlipayConfig(){ 
} 
public static AlipayConfig getInstance(){ 
if(alconfig==null){ 
alconfig = new AlipayConfig(); 
} 
return alconfig; 
} 
// 若何獲得平安校驗碼和協作身份者ID 
// 1.拜訪付出寶商戶辦事中間(b.alipay.com),然後用您的簽約付出寶賬號上岸. 
// 2.拜訪“技巧辦事”→“下載技巧集成文檔”(https://b.alipay.com/support/helperApply.htm?action=selfIntegration) 
// 3.在“自助集成贊助”中,點擊“協作者身份(Partner ID)查詢”、“平安校驗碼(Key)查詢” 
// ↓↓↓↓↓↓↓↓↓↓請在這裡設置裝備擺設您的根本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 
// 協作身份者ID,以2088開首由16位純數字構成的字符串 
public static String it_b_pay = "1h"; 
public static String partner = "2088601003079118"; 
public static String service = "create_direct_pay_by_user"; 
// 生意業務平安磨練碼,由數字和字母構成的32位字符串 
public static String key = "zxcdvxgksaam2zjrmv5cv0p4jqesaioh"; 
// 簽約付出寶賬號或賣家收款付出寶帳戶 
public static String seller_email = "[email protected]"; 
// 讀設置裝備擺設文件 
// notify_url 生意業務進程中辦事器告訴的頁面 要用 http://格局的完全途徑,不許可加?id=123這類自界說參數 
public static String notify_url ="http:www.xxx.com/projectName/alipayTrade.action"; 
// 付完款後跳轉的頁面 要用 http://格局的完全途徑,不許可加?id=123這類自界說參數 
// return_url的域名不克不及寫成http://localhost/js_jsp_utf8/return_url.jsp,不然會招致return_url履行有效 
//public static String return_url = "http:www.xxx.com/projectName/alipayTrade.action"; 
// 網站商品的展現地址,不許可加?id=123這類自界說參數 
public static String show_url = "http://www.alipay.com"; 
// 收款方稱號,如:公司稱號、網站稱號、收款人姓名等 
public static String mainname = "收款方稱號"; 
// ↑↑↑↑↑↑↑↑↑↑請在這裡設置裝備擺設您的根本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 
// 字符編碼格局 今朝支撐 gbk 或 utf-8 
public static String input_charset = "UTF-8"; 
// 簽名方法 不需修正 
public static String sign_type = "MD5"; 
// 拜訪形式,依據本身的辦事器能否支撐ssl拜訪,若支撐請選擇https;若不支撐請選擇http 
public static String transport = "http"; 
} 

上面是一個簡略的運用流程:

從JSP挪用的就不說了,由於這也就只是傳給後台你要買的器械是甚麼,價錢若干等一些參數。
這裡引見一下後台處置的:

PaymentAction.java

/** 
* 獲得付出寶生意業務定單號 
* @return 
*/ 
public synchronized static String getOrderNum(){ 
Date date=new Date(); 
DateFormat df=new SimpleDateFormat("yyyyMMddHHmmssSSS"); 
return df.format(date); 
} 
protected HttpServletRequest getRequest() { 
return ServletActionContext.getRequest(); 
} 
//付出寶生意業務定單號 
String orderNum = getOrderNum(); 
// 此次生意業務的總金額 
getRequest().setAttribute("totalMoney","0.01"); 
//此次生意業務的定單號 
getRequest().setAttribute("out_trade_no", orderNum); 
//商品稱號描寫 
getRequest().setAttribute("subject", "商品稱號"); 
//這裡省略了將此次定單信息存到數據庫的流程 

alipay.jsp

<%@page import="com.test.constants.AlipayConfig"%> 
<%@page import="com.test.util.alipay.UtilDate"%> 
<%@page import="com.test.util.alipay.AlipayService"%> 
<% 
/* 
功效:設置商品有關信息(進口頁) 
*具體:該頁面是接口進口頁面,生成付出時的URL 
*版本:3.1 
*日期:2010-11-01 
*解釋: 
*以下代碼只是為了便利商戶測試而供給的樣例代碼,商戶可以依據本身網站的須要,依照技巧文檔編寫,並不是必定要應用該代碼。 
*該代碼僅供進修和研討付出寶接口應用,只是供給一個參考。 
*************************留意***************** 
假如您在接口集成進程中碰到成績, 
您可以到商戶辦事中間(https://b.alipay.com/support/helperApply.htm?action=consultationApply),提交請求集成協助,我們會有專業的技巧工程師自動接洽您協助處理, 
您也能夠到付出寶服裝論壇t.vhao.net(http://club.alipay.com/read-htm-tid-8681712.html)尋覓相干處理計劃 
要傳遞的參數要末不許可為空,要末就不要湧現在數組與隱蔽控件或URL鏈接裡。 
********************************************** 
*/ 
%> 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>test</title> 
<link rel="SHORTCUT ICON" href="favicon.ico"> 
<meta name="keywords" content="" /> 
<meta name="description" content="" /> 
<style type="text/css"> 
.font_content{ 
font-family:"宋體"; 
font-size:14px; 
color:#FF6600; 
} 
.font_title{ 
font-family:"宋體"; 
font-size:16px; 
color:#FF0000; 
font-weight:bold; 
} 
table{ 
border: 1px solid #CCCCCC; 
} 
</style> 
<script type="text/javascript"> 
var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-25469955-1']); 
_gaq.push(['_trackPageview']); 
(function() { 
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.谷歌-analytics.com/ga.js'; 
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
})(); 
</script> 
</head> 
<% 
//request.setCharacterEncoding("UTF-8"); 
//AlipyConfig.java中設置裝備擺設信息(弗成以修正) 
String input_charset = AlipayConfig.getInstance().input_charset; 
String sign_type = AlipayConfig.getInstance().sign_type; 
String seller_email = AlipayConfig.getInstance().seller_email; 
String partner = AlipayConfig.getInstance().partner; 
String key = AlipayConfig.getInstance().key; 
String show_url = AlipayConfig.getInstance().show_url; 
String notify_url = AlipayConfig.getInstance().notify_url; 
String return_url = AlipayConfig.getInstance().return_url; 
String it_b_pay = AlipayConfig.getInstance().it_b_pay; 
/////////////////////////////////////////////////////////////////////////////////// 
//以下參數是須要經由過程下單時的定單數據傳入出去取得 
//必填參數 
String out_trade_no = (String)request.getAttribute("out_trade_no");//請與貴網站定單體系中的獨一定單號婚配 
//定單稱號,顯示在付出寶收銀台裡的“商品稱號”裡,顯示在付出寶的生意業務治理的“商品稱號”的列內外。 
String subject = (String)request.getAttribute("subject"); 
//定單描寫、定單具體、定單備注,顯示在付出寶收銀台裡的“商品描寫”裡 
String body = (String)request.getAttribute("body"); 
//定單總金額,顯示在付出寶收銀台裡的“敷衍總額”裡 
String total_fee = (String)request.getAttribute("totalMoney"); 
//擴大功效參數——默許付出方法 
// String pay_mode = request.getParameter("pay_bank"); 
String paymethod = ""; //默許付出方法,四個值可選:bankPay(網銀); cartoon(卡通); directPay(余額); CASH(網點付出) 
String defaultbank = ""; //默許網銀代號,代號列表見http://club.alipay.com/read.php?tid=8681379 
/*if(pay_mode.equals("directPay")){ 
paymethod = "directPay"; 
} 
else{ 
paymethod = "bankPay"; 
defaultbank = pay_mode; 
}*/ 
//擴大功效參數——防垂綸 
//請鄭重選擇能否開啟防垂綸功效 
//exter_invoke_ip、anti_phishing_key一旦被設置過,那末它們就會成為必填參數 
//開啟防垂綸功效後,辦事器、本電機腦必需支撐長途XML解析,請設置裝備擺設好該情況。 
//建議應用POST方法要求數據 
String anti_phishing_key = ""; //防垂綸時光戳 
String exter_invoke_ip= ""; //獲得客戶真個IP地址,建議:編寫獲得客戶端IP地址的法式 
//如: 
//anti_phishing_key = AlipayFunction.query_timestamp(partner); //獲得防垂綸時光戳函數 
//exter_invoke_ip = "202.1.1.1"; 
//擴大功效參數——其他 
String extra_common_param = ""; //自界說參數,可寄存任何內容(除=、&等特別字符外),不會顯示在頁面上 
String buyer_email = "137672927"; //默許買家付出寶賬號 
String extend_param = ""; 
//擴大功效參數——分潤(若要應用,請依照正文請求的格局賦值) 
String royalty_type = ""; //提成類型,該值為固定值:10,不須要修正 
String royalty_parameters =""; 
//提成信息集,與須要聯合商戶網站本身情形靜態獲得每筆生意業務的各分潤收款賬號、各分潤金額、各分潤解釋。最多只能設置10條 
//各分潤金額的總和須小於等於total_fee 
//提成信息集格局為:收款方Email_1^金額1^備注1|收款方Email_2^金額2^備注2 
//如: 
//royalty_type = "10" 
//royalty_parameters = "[email protected]^0.01^分潤備注一|[email protected]^0.01^分潤備注二" 
//之前設置的1h將前往 
//毛病描寫: 負疚,商戶沒有守舊自界說超時權限,請接洽您的商家。 
//毛病代碼: SELF_TIMEOUT_NOT_SUPPORT 
it_b_pay=""; 
//結構函數,生成要求URL 
String sHtmlText = AlipayService.BuildForm(partner,seller_email,return_url,notify_url,show_url,out_trade_no, 
subject,body,total_fee,paymethod,defaultbank,anti_phishing_key,exter_invoke_ip,extra_common_param,buyer_email, 
royalty_type,royalty_parameters,input_charset,key,sign_type,it_b_pay); 
%> 
<body> 
<table align="center" width="350" cellpadding="5" cellspacing="0"> 
<tr> 
<td align="center" class="font_title" colspan="2">定單確認</td> 
</tr> 
<tr> 
<td class="font_content" align="right">定單號:</td> 
<td class="font_content" align="left"><%=out_trade_no%></td> 
</tr> 
<tr> 
<td class="font_content" align="right">付款總金額:</td> 
<td class="font_content" align="left"><%=total_fee%></td> 
</tr> 
<tr> 
<td align="center" colspan="2"><%=sHtmlText%></td> 
</tr> 
</table> 
</body> 
</html> 

付出寶回調的接口:AlipayNotify.java

package com.test.action.payment; 
import java.util.Date; 
import java.util.List; 
import com.test.action.base.BaseAction; 
import com.test.dao.model.paymentcenter.OrderForm; 
import com.test.dao.model.paymentcenter.OrderList; 
import com.test.dao.model.paymentcenter.UserPurview; 
public class AlipayNotify extends BaseAction { 
private static final long serialVersionUID = 1L; 
private String buyer_email; 
private long buyer_id; 
private String exterface; 
private String is_success; 
private String notify_id; 
private String notify_time; 
private String notify_type; 
private String out_trade_no; 
private String payment_type; 
private String seller_email; 
private long seller_id; 
private String subject; 
private float total_fee; 
private String trade_no; 
private String trade_status; 
private String sign; 
private String sign_type; 
private OrderForm of; 
//……這裡省去了get和set辦法 
……………………………………………………………… 
// 處置付出寶傳過去的參數信息 
public String alipayTrade() throws Exception { 
if (this.is_success.equalsIgnoreCase("T") 
&& "TRADE_SUCCESS".equalsIgnoreCase(this.trade_status)) { 
of = (OrderForm) orderFormService 
.findOrderFormsByOut_trade_no(this.out_trade_no); 
if (of != null) { 
of.setTradeStatus(1); 
of.setTradeNo(this.trade_no); 
of.setNotifyTime(new Date()); 
orderFormService.updateOldModel(of); // 更新 
List<OrderList> orderList = orderListService 
.findOrderFormsByOutTradeNo(this.out_trade_no); 
for (OrderList ol : orderList) { 
//這裡省去了處置定單邏輯代碼…………………… 
} 
} 
//回調勝利以後,給付出寶前往一個 "success" 字符便可以了 
return SUCCESS; 
} 
return "failure"; 
} 
} 

就如許,付出寶的第三方即時到賬接口就算完成了。

以上所述是小編給年夜家引見的Java完成付出寶之第三方付出寶即時到賬付出功效,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved