using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.Text;
public
partial
class
pay : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
Encoding gb2312 = Encoding.GetEncoding(
"gb2312"
);
Response.ContentEncoding = gb2312;
Request.ContentEncoding = gb2312;
}
protected
void
ImageButton1_Click(
object
sender, ImageClickEventArgs e)
{
if
(Request.Cookies[FormsAuthentication.FormsCookieName] !=
null
)
{
Vlike_DB_read a =
new
Vlike_DB_read();
string
zfb_ddh = a.get_zfb_id(Membership.GetUser().UserName, Convert.ToInt32(DropDownList1.SelectedValue));
Response.Redirect(img(
"0001"
,
"包月"
,
"影视包月 10元/月"
, zfb_ddh,
"10.00"
, Membership.GetUser().UserName.ToUpper(), DropDownList1.SelectedValue));
}
else
{
Response.Write(
"<script type="
text/javascript
">alert("
请先登陆!
");</script>"
);
}
}
private
string
img(
string
strcmd,
string
strSub,
string
strSubinfo,
string
strid,
string
strMoney,
string
strUser,
string
strNum)
{
string
strAc =
""
;
//卖家支付宝安全校验码
string
strCmd = strcmd;
//命令字
string
strSubject = strSub;
//商品名
string
strBody = strSubinfo;
//商品描述
string
strOrder_no = strid;
//商户订单号
string
strPrice = strMoney;
//商品单价 0.01~50000.00
string
strType =
"2"
;
//type支付类型 1:商品购买2:服务购买3:网络拍卖4:捐赠
string
strNumber = strNum;
//购买数量
string
strTransport =
"3"
;
//发货方式 1:平邮2:快递3:虚拟物品
string
strOrdinary_fee =
""
;
//平邮运费
string
strExpress_fee =
""
;
//快递运费
string
strReadOnly =
"true"
;
//交易信息是否只读
string
strBuyer_msg =
""
;
//买家给卖家的留言
string
strBuyer =
""
;
//买家EMAIL
string
strBuyer_name = strUser;
//买家姓名
string
strBuyer_address =
""
;
//买家地址
string
strBuyer_zipcode =
""
;
//买家邮编
string
strBuyer_tel =
""
;
//买家电话号码
string
strBuyer_mobile =
""
;
//买家手机号码
string
strPartner =
""
;
//合作伙伴ID 保留字段
return
CreatUrl(strsellerEmail, strAc, INTERFACE_URL, strCmd, strSubject, strBody,
strOrder_no, strPrice, rurl, strType, strNumber, strTransport,
strOrdinary_fee, strExpress_fee, strReadOnly, strBuyer_msg, strBuyer,
strBuyer_name, strBuyer_address, strBuyer_zipcode, strBuyer_tel,
strBuyer_mobile, strPartner);
}
private
string
CreatUrl(
string
strsellerEmail,
string
strAc,
string
INTERFACE_URL,
string
strCmd,
string
strSubject,
string
strBody,
string
strOrder_no,
string
strPrice,
string
rurl,
string
strType,
string
strNumber,
string
strTransport,
string
strOrdinary_fee,
string
strExpress_fee,
string
strReadOnly,
string
strBuyer_msg,
string
strBuyer,
string
strBuyer_name,
string
strBuyer_address,
string
strBuyer_zipcode,
string
strBuyer_tel,
string
strBuyer_mobile,
string
strPartner)
{
//以下参数值不能留空
string
str2CreateAc =
""
;
str2CreateAc +=
"cmd"
+ strCmd +
"subject"
+ strSubject;
str2CreateAc +=
"body"
+ strBody;
str2CreateAc +=
"order_no"
+ strOrder_no;
str2CreateAc +=
"price"
+ strPrice;
str2CreateAc +=
"url"
+ rurl;
str2CreateAc +=
"type"
+ strType;
str2CreateAc +=
"number"
+ strNumber;
str2CreateAc +=
"transport"
+ strTransport;
str2CreateAc +=
"ordinary_fee"
+ strOrdinary_fee;
str2CreateAc +=
"express_fee"
+ strExpress_fee;
str2CreateAc +=
"readonly"
+ strReadOnly;
str2CreateAc +=
"buyer_msg"
+ strBuyer_msg;
str2CreateAc +=
"seller"
+ strsellerEmail;
str2CreateAc +=
"buyer"
+ strBuyer;
str2CreateAc +=
"buyer_name"
+ strBuyer_name;
str2CreateAc +=
"buyer_address"
+ strBuyer_address;
str2CreateAc +=
"buyer_zipcode"
+ strBuyer_zipcode;
str2CreateAc +=
"buyer_tel"
+ strBuyer_tel;
str2CreateAc +=
"buyer_mobile"
+ strBuyer_mobile;
str2CreateAc +=
"partner"
+ strPartner;
str2CreateAc += strAc;
string
acCode = GetMD5(str2CreateAc);
string
parameter =
""
;
parameter += INTERFACE_URL + strsellerEmail +
"?cmd="
+ strCmd;
parameter +=
"&subject="
+ Server.UrlEncode(strSubject);
parameter +=
"&body="
+ Server.UrlEncode(strBody);
parameter +=
"&order_no="
+ strOrder_no;
parameter +=
"&url="
+ rurl;
parameter +=
"&price="
+ strPrice;
parameter +=
"&type="
+ strType;
parameter +=
"&number="
+ strNumber;
parameter +=
"&transport="
+ strTransport;
parameter +=
"&ordinary_fee="
+ strOrdinary_fee;
parameter +=
"&express_fee="
+ strExpress_fee;
parameter +=
"&readonly="
+ strReadOnly;
parameter +=
"&buyer_msg="
+ strBuyer_msg;
parameter +=
"&buyer="
+ strBuyer;
parameter +=
"&buyer_name="
+ Server.UrlEncode(strBuyer_name);
parameter +=
"&buyer_address="
+ strBuyer_address;
parameter +=
"&buyer_zipcode="
+ strBuyer_zipcode;
parameter +=
"&buyer_tel="
+ strBuyer_tel;
parameter +=
"&buyer_mobile="
+ strBuyer_mobile;
parameter +=
"&partner="
+ strPartner;
parameter +=
"&ac="
+ acCode;
return
parameter;
}
private
static
string
GetMD5(
string
s)
{
System.Security.Cryptography.MD5 md5 =
new
System.Security.Cryptography.MD5CryptoServiceProvider();
byte
[] t = md5.ComputeHash(System.Text.Encoding.GetEncoding(
"gb2312"
).GetBytes(s));
System.Text.StringBuilder sb =
new
System.Text.StringBuilder(32);
for
(
int
i = 0; i < t.Length; i++)
{
sb.Append(t[i].ToString(
"x"
).PadLeft(2,
"0"
));
}
return
sb.ToString();
}
}
接收支付宝信息并进行相应操作
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
|
<%@ Page Language=
"C#"
%>
<%@ Import Namespace=
"System.Data.SqlClient"
%>
<%@ Import Namespace=
"System.Data"
%>
<%@ Import Namespace=
"System.Web"
%>
<%@ Import Namespace=
"System.IO"
%>
<%@ Import Namespace=
"System.Net"
%>
<%@ Import Namespace=
"System.Text"
%>
<%@ Import Namespace=
"System.Security.Cryptography"
%>
<script type=
"text/C#"
runat=
"server"
>
private
string
returnTxt =
"N"
;
//返回给支付宝通知接口的结果
private
string
constPaySecurityCode =
""
;
//码
private
SqlConnection conn =
new
SqlConnection();
private
string
GetMD5(
string
s)
{
System.Security.Cryptography.MD5 md5 =
new
System.Security.Cryptography.MD5CryptoServiceProvider();
byte
[] t = md5.ComputeHash(System.Text.Encoding.GetEncoding(
"gb2312"
).GetBytes(s));
StringBuilder sb =
new
StringBuilder(32);
for
(
int
i = 0; i < t.Length; i++)
{
sb.Append(t[i].ToString(
"x"
).PadLeft(2,
"0"
));
}
return
sb.ToString();
}
private
String Get_Http(String a_strUrl,
int
timeout)
{
string
strResult;
try
{
System.Net.HttpWebRequest myReq = (System.Net.HttpWebRequest) System.Net.HttpWebRequest.Create(a_strUrl);
myReq.Timeout = timeout;
System.Net.HttpWebResponse HttpWResp = (System.Net.HttpWebResponse) myReq.GetResponse();
Stream myStream = HttpWResp.GetResponseStream();
StreamReader sr =
new
StreamReader(myStream, System.Text.Encoding.Default);
System.Text.StringBuilder strBuilder =
new
System.Text.StringBuilder();
while
(-1 != sr.Peek())
{
strBuilder.Append(sr.ReadLine() +
"\r\n"
);
}
strResult = strBuilder.ToString();
}
catch
(Exception exp)
{
strResult =
"错误:"
+ exp.Message;
}
return
strResult;
}
public
void
send(
string
sql)
{
string
dbconn =
"data source=127.0.0.1;UID=Cm;PWD=fallenangel;database=text"
;
conn =
new
SqlConnection(dbconn);
conn.Open();
SqlCommand cmd =
new
SqlCommand(sql, conn);
int
aa = cmd.ExecuteNonQuery();
conn.Close();
}
private
void
Page_Load(
object
sender, System.EventArgs e)
{
//检查支付宝通知接口传递过来的参数是否合法
string
msg_id = System.Web.HttpContext.Current.Request[
"msg_id"
];
string
order_no = System.Web.HttpContext.Current.Request[
"order_no"
];
string
gross = System.Web.HttpContext.Current.Request[
"gross"
];
string
buyer_email = System.Web.HttpContext.Current.Request[
"buyer_email"
];
string
buyer_name = System.Web.HttpContext.Current.Request[
"buyer_name"
];
string
buyer_address = System.Web.HttpContext.Current.Request[
"buyer_address"
];
string
buyer_zipcode = System.Web.HttpContext.Current.Request[
"buyer_zipcode"
];
string
buyer_tel = System.Web.HttpContext.Current.Request[
"buyer_tel"
];
string
buyer_mobile = System.Web.HttpContext.Current.Request[
"buyer_mobile"
];
string
action = System.Web.HttpContext.Current.Request[
"action"
];
string
s_date = System.Web.HttpContext.Current.Request[
"date"
];
string
ac = System.Web.HttpContext.Current.Request[
"ac"
];
string
notify_type = System.Web.HttpContext.Current.Request[
"notify_type"
];
alipayNotifyURL = alipayNotifyURL +
"msg_id="
+ msg_id +
"&email="
+ myalipayEmail +
"&order_no="
+ order_no;
//获取支付宝ATN返回结果,true和false都是正确的订单信息,invalid 是无效的
string
responseTxt = Get_Http(alipayNotifyURL, 120000);
string
Str =
"msg_id"
+ msg_id +
"order_no"
+ order_no +
"gross"
+ gross +
"buyer_email"
+ buyer_email +
"buyer_name"
+ buyer_name +
"buyer_address"
+ buyer_address +
"buyer_zipcode"
+ buyer_zipcode +
"buyer_tel"
+ buyer_tel +
"buyer_mobile"
+ buyer_mobile +
"action"
+ action +
"date"
+ s_date + constPaySecurityCode;
string
ac_code = GetMD5(Str);
if
(action ==
"test"
)
//支付宝接口测试是否有效
{
returnTxt =
"Y"
;
}
if
(action ==
"sendOff"
)
//发货通知
{
if
(responseTxt.Substring(0, 4) ==
"true"
|| responseTxt.Substring(0, 4) ==
"fals"
)
//ATN,验证消息是否支付宝发过来
{
if
(ac_code == ac)
//验证消息是否被修改
{
//数据库操作
}
}
}
if
(action ==
"checkOut"
)
//交易完成通知
{
returnTxt =
"N"
;
if
(responseTxt.Substring(0, 4) ==
"true"
|| responseTxt.Substring(0, 4) ==
"fals"
)
//ATN,验证消息是否支付宝发过来
{
if
(ac_code == ac)
//验证消息是否被修改
{
//数据库操作
}
}
}
System.Web.HttpContext.Current.Response.Write(returnTxt);
}
</script>
|