国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Java實現(xiàn)支付寶之第三方支付寶即時到賬支付功能

Java實現(xiàn)支付寶之第三方支付寶即時到賬支付功能

2020-05-25 12:11bestlove13141516 JAVA教程

這篇文章主要介紹了Java實現(xiàn)支付寶之第三方支付寶即時到賬支付功能的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

alipay 的幾個內(nèi)核功能文件:

AlipayFunction.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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 {
/**
* 功能:生成簽名結(jié)果
* @param sArray 要簽名的數(shù)組
* @param key 安全校驗碼
* @return 簽名結(jié)果字符串
*/
public static String BuildMysign(Map sArray, String key) {
String prestr = CreateLinkString(sArray); //把數(shù)組所有元素,按照“參數(shù)=參數(shù)值”的模式用“&”字符拼接成字符串
prestr = prestr + key; //把拼接后的字符串再與安全校驗碼直接連接起來
String mysign = Md5Encrypt.md5(prestr);
return mysign;
}
/**
* 功能:除去數(shù)組中的空值和簽名參數(shù)
* @param sArray 簽名參數(shù)組
* @return 去掉空值與簽名參數(shù)后的新簽名參數(shù)組
*/
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;
}
/**
* 功能:把數(shù)組所有元素排序,并按照“參數(shù)=參數(shù)值”的模式用“&”字符拼接成字符串
* @param params 需要排序并參與字符拼接的參數(shù)組
* @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;
}
/**
* 功能:寫日志,方便測試(看網(wǎng)站需求,也可以改成把記錄存入數(shù)據(jù)庫)
* @param sWord 要寫入日志里的文本內(nèi)容
*/
public static void LogResult(String sWord){
// 該文件存在于和應(yīng)用服務(wù)器 啟動文件同一目錄下,文件名是alipay log加服務(wù)器時間
try {
FileWriter writer = new FileWriter("D:\\alipay_log" + System.currentTimeMillis() + ".txt");
writer.write(sWord);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 功能:用于防釣魚,調(diào)用接口query_timestamp來獲取時間戳的處理函數(shù)
* 注意:遠(yuǎn)程解析XML出錯,與服務(wù)器是否支持SSL等配置有關(guān)
* @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")) {
// 判斷是否有成功標(biāo)示
List<Node> nodeList1 = doc.selectNodes("//response/timestamp/*");
for (Node node1 : nodeList1) {
buf1.append(node1.getText());
}
}
}
return buf1.toString();
}
}

AlipayNotify.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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 {
/**
* *功能:根據(jù)反饋回來的信息,生成簽名結(jié)果
* @param Params 通知返回來的參數(shù)數(shù)組
* @param key 安全校驗碼
* @return 生成的簽名結(jié)果
*/
public static String GetMysign(Map Params, String key){
Map sParaNew = AlipayFunction.ParaFilter(Params);//過濾空值、sign與sign_type參數(shù)
String mysign = AlipayFunction.BuildMysign(sParaNew, key);//獲得簽名結(jié)果
return mysign;
}
/**
* *功能:獲取遠(yuǎn)程服務(wù)器ATN結(jié)果,驗證返回URL
* @param notify_id 通知校驗ID
* @return 服務(wù)器ATN結(jié)果
* 驗證結(jié)果集:
* invalid命令參數(shù)不對 出現(xiàn)這個錯誤,請檢測返回處理中partner和key是否為空
* true 返回正確信息
* false 請檢查防火墻或者是服務(wù)器阻止端口問題以及驗證時間是否超過一分鐘
*/
public static String Verify(String notify_id){
//獲取遠(yuǎn)程服務(wù)器ATN結(jié)果,驗證是否是支付寶服務(wù)器發(fā)來的請求
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;
}
/**
* *功能:獲取遠(yuǎn)程服務(wù)器ATN結(jié)果
* @param urlvalue 指定URL路徑地址
* @return 服務(wù)器ATN結(jié)果
* 驗證結(jié)果集:
* invalid命令參數(shù)不對 出現(xiàn)這個錯誤,請檢測返回處理中partner和key是否為空
* true 返回正確信息
* false 請檢查防火墻或者是服務(wù)器阻止端口問題以及驗證時間是否超過一分鐘
*/
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package com.test.util.alipay;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AlipayService {
/**
* 功能:構(gòu)造表單提交HTML
* @param partner 合作身份者ID
* @param seller_email 簽約支付寶賬號或賣家支付寶帳戶
* @param return_url 付完款后跳轉(zhuǎn)的頁面 要用 以http開頭格式的完整路徑,不允許加?id=123這類自定義參數(shù)
* @param notify_url 交易過程中服務(wù)器通知的頁面 要用 以http開格式的完整路徑,不允許加?id=123這類自定義參數(shù)
* @param show_url 網(wǎng)站商品的展示地址,不允許加?id=123這類自定義參數(shù)
* @param out_trade_no 請與貴網(wǎng)站訂單系統(tǒng)中的唯一訂單號匹配
* @param subject 訂單名稱,顯示在支付寶收銀臺里的“商品名稱”里,顯示在支付寶的交易管理的“商品名稱”的列表里。
* @param body 訂單描述、訂單詳細(xì)、訂單備注,顯示在支付寶收銀臺里的“商品描述”里
* @param total_fee 訂單總金額,顯示在支付寶收銀臺里的“應(yīng)付總額”里
* @param paymethod 默認(rèn)支付方式,四個值可選:bankPay(網(wǎng)銀); cartoon(卡通); directPay(余額); CASH(網(wǎng)點支付)
* @param defaultbank 默認(rèn)網(wǎng)銀代號,代號列表見club.alipay.com/read.php?tid=8681379
* @param encrypt_key 防釣魚時間戳
* @param exter_invoke_ip 買家本地電腦的IP地址
* @param extra_common_param 自定義參數(shù),可存放任何內(nèi)容(除等特殊字符外),不會顯示在頁面上
* @param buyer_email 默認(rèn)買家支付寶賬號
* @param royalty_type 提成類型,該值為固定值:10,不需要修改
* @param royalty_parameters 提成信息集,與需要結(jié)合商戶網(wǎng)站自身情況動態(tài)獲取每筆交易的各分潤收款賬號、各分潤金額、各分潤說明。最多只能設(shè)置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); //除去數(shù)組中的空值和簽名參數(shù)
String mysign = AlipayFunction.BuildMysign(sParaNew, key);//生成簽名結(jié)果
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=\"支付寶確認(rèn)付款\"></form>");
sbHtml.append("<script>document.forms['alipaysubmit'].submit();</script>");
return sbHtml.toString();
}
}

Md5Encrypt.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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
* 說明:
* 以下代碼只是為了方便商戶測試而提供的樣例代碼,商戶可以根據(jù)自己網(wǎng)站的需要,按照技術(shù)文檔編寫,并非一定要使用該代碼。
* 該代碼僅供學(xué)習(xí)和研究支付寶接口使用,只是提供一個
* */
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' };
/**
* 對字符串進(jìn)行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,回調(diào)連接地址等一些設(shè)置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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.訪問支付寶商戶服務(wù)中心(b.alipay.com),然后用您的簽約支付寶賬號登陸.
// 2.訪問“技術(shù)服務(wù)”→“下載技術(shù)集成文檔”(https://b.alipay.com/support/helperApply.htm?action=selfIntegration)
// 3.在“自助集成幫助”中,點擊“合作者身份(Partner ID)查詢”、“安全校驗碼(Key)查詢”
// ↓↓↓↓↓↓↓↓↓↓請在這里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 合作身份者ID,以2088開頭由16位純數(shù)字組成的字符串
public static String it_b_pay = "1h";
public static String partner = "2088601003079118";
public static String service = "create_direct_pay_by_user";
// 交易安全檢驗碼,由數(shù)字和字母組成的32位字符串
public static String key = "zxcdvxgksaam2zjrmv5cv0p4jqesaioh";
// 簽約支付寶賬號或賣家收款支付寶帳戶
public static String seller_email = "test@yahoo.com.cn";
// 讀配置文件
// notify_url 交易過程中服務(wù)器通知的頁面 要用 http://格式的完整路徑,不允許加?id=123這類自定義參數(shù)
public static String notify_url ="http:www.xxx.com/projectName/alipayTrade.action";
// 付完款后跳轉(zhuǎn)的頁面 要用 http://格式的完整路徑,不允許加?id=123這類自定義參數(shù)
// return_url的域名不能寫成http://localhost/js_jsp_utf8/return_url.jsp,否則會導(dǎo)致return_url執(zhí)行無效
//public static String return_url = "http:www.xxx.com/projectName/alipayTrade.action";
// 網(wǎng)站商品的展示地址,不允許加?id=123這類自定義參數(shù)
public static String show_url = "http://www.alipay.com";
// 收款方名稱,如:公司名稱、網(wǎng)站名稱、收款人姓名等
public static String mainname = "收款方名稱";
// ↑↑↑↑↑↑↑↑↑↑請在這里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
// 字符編碼格式 目前支持 gbk 或 utf-8
public static String input_charset = "UTF-8";
// 簽名方式 不需修改
public static String sign_type = "MD5";
// 訪問模式,根據(jù)自己的服務(wù)器是否支持ssl訪問,若支持請選擇https;若不支持請選擇http
public static String transport = "http";
}

下面是一個簡單的應(yīng)用流程:

從JSP調(diào)用的就不說了,因為這也就只是傳給后臺你要買的東西是什么,價格多少等一些參數(shù)。
這里介紹一下后臺處理的:

PaymentAction.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* 獲取支付寶交易訂單號
* @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", "商品名稱");
//這里省略了將此次訂單信息存到數(shù)據(jù)庫的流程

alipay.jsp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<%@page import="com.test.constants.AlipayConfig"%>
<%@page import="com.test.util.alipay.UtilDate"%>
<%@page import="com.test.util.alipay.AlipayService"%>
<%
/*
功能:設(shè)置商品有關(guān)信息(入口頁)
*詳細(xì):該頁面是接口入口頁面,生成支付時的URL
*版本:3.1
*日期:2010-11-01
*說明:
*以下代碼只是為了方便商戶測試而提供的樣例代碼,商戶可以根據(jù)自己網(wǎng)站的需要,按照技術(shù)文檔編寫,并非一定要使用該代碼。
*該代碼僅供學(xué)習(xí)和研究支付寶接口使用,只是提供一個參考。
*************************注意*****************
如果您在接口集成過程中遇到問題,
您可以到商戶服務(wù)中心(https://b.alipay.com/support/helperApply.htm?action=consultationApply),提交申請集成協(xié)助,我們會有專業(yè)的技術(shù)工程師主動聯(lián)系您協(xié)助解決,
您也可以到支付寶論壇(http://club.alipay.com/read-htm-tid-8681712.html)尋找相關(guān)解決方案
要傳遞的參數(shù)要么不允許為空,要么就不要出現(xiàn)在數(shù)組與隱藏控件或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') + '.google-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;
///////////////////////////////////////////////////////////////////////////////////
//以下參數(shù)是需要通過下單時的訂單數(shù)據(jù)傳入進(jìn)來獲得
//必填參數(shù)
String out_trade_no = (String)request.getAttribute("out_trade_no");//請與貴網(wǎng)站訂單系統(tǒng)中的唯一訂單號匹配
//訂單名稱,顯示在支付寶收銀臺里的“商品名稱”里,顯示在支付寶的交易管理的“商品名稱”的列表里。
String subject = (String)request.getAttribute("subject");
//訂單描述、訂單詳細(xì)、訂單備注,顯示在支付寶收銀臺里的“商品描述”里
String body = (String)request.getAttribute("body");
//訂單總金額,顯示在支付寶收銀臺里的“應(yīng)付總額”里
String total_fee = (String)request.getAttribute("totalMoney");
//擴(kuò)展功能參數(shù)——默認(rèn)支付方式
// String pay_mode = request.getParameter("pay_bank");
String paymethod = ""; //默認(rèn)支付方式,四個值可選:bankPay(網(wǎng)銀); cartoon(卡通); directPay(余額); CASH(網(wǎng)點支付)
String defaultbank = ""; //默認(rèn)網(wǎng)銀代號,代號列表見http://club.alipay.com/read.php?tid=8681379
/*if(pay_mode.equals("directPay")){
paymethod = "directPay";
}
else{
paymethod = "bankPay";
defaultbank = pay_mode;
}*/
//擴(kuò)展功能參數(shù)——防釣魚
//請慎重選擇是否開啟防釣魚功能
//exter_invoke_ip、anti_phishing_key一旦被設(shè)置過,那么它們就會成為必填參數(shù)
//開啟防釣魚功能后,服務(wù)器、本機(jī)電腦必須支持遠(yuǎn)程XML解析,請配置好該環(huán)境。
//建議使用POST方式請求數(shù)據(jù)
String anti_phishing_key = ""; //防釣魚時間戳
String exter_invoke_ip= ""; //獲取客戶端的IP地址,建議:編寫獲取客戶端IP地址的程序
//如:
//anti_phishing_key = AlipayFunction.query_timestamp(partner); //獲取防釣魚時間戳函數(shù)
//exter_invoke_ip = "202.1.1.1";
//擴(kuò)展功能參數(shù)——其他
String extra_common_param = ""; //自定義參數(shù),可存放任何內(nèi)容(除=、&等特殊字符外),不會顯示在頁面上
String buyer_email = "137672927"; //默認(rèn)買家支付寶賬號
String extend_param = "";
//擴(kuò)展功能參數(shù)——分潤(若要使用,請按照注釋要求的格式賦值)
String royalty_type = ""; //提成類型,該值為固定值:10,不需要修改
String royalty_parameters ="";
//提成信息集,與需要結(jié)合商戶網(wǎng)站自身情況動態(tài)獲取每筆交易的各分潤收款賬號、各分潤金額、各分潤說明。最多只能設(shè)置10條
//各分潤金額的總和須小于等于total_fee
//提成信息集格式為:收款方Email_1^金額1^備注1|收款方Email_2^金額2^備注2
//如:
//royalty_type = "10"
//royalty_parameters = "111@126.com^0.01^分潤備注一|222@126.com^0.01^分潤備注二"
//之前設(shè)置的1h將返回
//錯誤描述: 抱歉,商戶沒有開通自定義超時權(quán)限,請聯(lián)系您的商家。
//錯誤代碼: SELF_TIMEOUT_NOT_SUPPORT
it_b_pay="";
//構(gòu)造函數(shù),生成請求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">訂單確認(rèn)</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>

支付寶回調(diào)的接口:AlipayNotify.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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方法
………………………………………………………………
// 處理支付寶傳過來的參數(shù)信息
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) {
//這里省去了處理訂單邏輯代碼……………………
}
}
//回調(diào)成功之后,給支付寶返回一個 "success" 字符就可以了
return SUCCESS;
}
return "failure";
}
}

就這樣,支付寶的第三方即時到賬接口就算實現(xiàn)了。

以上所述是小編給大家介紹的Java實現(xiàn)支付寶之第三方支付寶即時到賬支付功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲欧美综合 | 中文字幕视频在线观看 | 91久久国产露脸精品国产护士 | 一级毛片观看 | 亚洲资源在线 | 欧美日韩中文字幕在线 | 九色视频网站 | 中文字幕在线视频第一页 | 欧美日韩国产一区二区三区不卡 | 成人在线小视频 | 综合久久久久 | 午夜欧美精品久久久久 | 成人免费毛片aaaaaa片 | 久久久免费视频看看 | 黄色一级片免费 | 99re6在线视频精品免费 | 久草福利资源 | 精品国产欧美一区二区三区成人 | 黄色免费观看 | 亚洲综合在线视频 | 在线欧美日韩 | 久久婷婷欧美 | 成人精品在线观看 | 一本色道久久综合狠狠躁的推荐 | 簧片av | 国产精品日日 | av中文在线 | 亚洲免费观看在线视频 | 韩国理论电影在线 | 欧美黄在线观看 | 欧美在线不卡视频 | 久久国产日韩 | 欧美片网站免费 | 国产综合精品 | 高清在线一区二区 | 久久精品2| 欧美xxxx黑人又粗又长 | 久久免费公开视频 | 在线a电影| 久久久久99精品国产片 | 欧美日韩一区二区在线观看 |