请教在线支付功能 有谁做过在线支付的,最后是有源码,通过支付宝、paypal都可以。谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个函数就是返回生成的地址,里面注释掉的看你自己需要可以添加进去,然后就是md5码的问题,现在用默认的md5生成程序对中文的支持只限于GB2312,而支付宝使用的是GBK,虽然两个编码的内容GBK兼容GB2312但是毕竟两个编码方式不同,所以会产生错误,如果用英文或者数字不会有问题。上面下载里面带的一个md5.asp的算法支持中文。 现在已经可以跳转到支付宝的页面了,而我们这边就要自己记录用户的信息已经生成的定单编号,这样在支付宝返回信息的时候来查询。在设定了返回地址后,我们就要看接收页面了。string msg_id,order_no,gross,buyer_email,buyer_name,buyer_address,buyer_zipcode,buyer_tel,buyer_mobile,action,s_date,ac,notify_type; string returnTxt;//返回给支付宝通知接口的结果 string alipayNotifyURL;//支付宝查询接口URL string myalipayEmail;//商户的支付宝Email string ResponseTxt=""; returnTxt = "N"; alipayNotifyURL = ConfigurationSettings.AppSettings["interfaceback"];//支付宝查询接口地址 myalipayEmail = ConfigurationSettings.AppSettings["account"];//填写您的支付宝帐号 //检查支付宝通知接口传递过来的参数是否合法 msg_id = newop.DelStr(Request["msg_id"]); order_no = newop.DelStr(Request["order_no"]); gross = newop.DelStr(Request["gross"]); buyer_email = newop.DelStr(Request["buyer_email"]); buyer_name = newop.DelStr(Request["buyer_name"]); buyer_address = newop.DelStr(Request["buyer_address"]); buyer_zipcode = newop.DelStr(Request["buyer_zipcode"]); buyer_tel = newop.DelStr(Request["buyer_tel"]); buyer_mobile = newop.DelStr(Request["buyer_mobile"]); action = newop.DelStr(Request["action"]); s_date = newop.DelStr(Request["date"]); ac = newop.DelStr(Request["ac"]); notify_type = newop.DelStr(Request["notify_type"]); alipayNotifyURL = alipayNotifyURL + "msg_id=" + msg_id + "&email=" + myalipayEmail + "&order_no=" + order_no; System.Net.WebClient isClient= new System.Net.WebClient(); Stream isStream = isClient.OpenRead(alipayNotifyURL); StreamReader isReader = new StreamReader(isStream,System.Text.Encoding.GetEncoding("GB2312")); ResponseTxt = isReader.ReadToEnd();if(action == "test")//测试商户网站URL是否正确安装 { returnTxt = "Y"; } else if((action=="sendOff")&&(msg_id!=""))//发货通知 { returnTxt = "N"; if((ResponseTxt == "true")||(ResponseTxt == "false")) { //更新数据在商户系统里的订单数据;如果已经发货,则将returnTxt置为Y,否则为N } else { //非法数据,不做更新 returnTxt="Error"; } } else if((action=="sendOff")&&(notify_type=="web")) { //检查是否已经付帐,并记录 } else if((action=="checkOut")&&(msg_id!=""))//交易结束通知 { returnTxt = "Y"; if((ResponseTxt=="true")||(ResponseTxt == "false")) { //更新数据在商户系统里的订单数据;如果数据更新成功,则将returnTxt置为Y,否则为N //更新数据 //你的代码,更新你这边数据 returnTxt= "Y"; } else { //非法数据,不做更新 returnTxt = "Error"; } } else { returnTxt="Error"; } Response.Write(returnTxt);中间那段webclient是返回支付宝查询这个消息是不是支付宝发出的,这里也使用的是获取支付宝那里一个查询接口的结果,True或者False。这样就完成了整个支付的流程,而你需要做的就是记录用户买的数据,然后接受支付宝给你的信息并确认是否正确,而且是否已经购买或者已经发货,从而完成你的销售过程。接收页面做的标准就是在直接访问的情况下显示的结果只有N或者Y或者其他你设定的returnTxt的值,如果有其他内容将会不能实现功能。 支付宝现在的即时到帐功能还没有正式发布,请不要私自做,要不然会出现麻烦。 这个支付宝具体没还没有试过(网上的),paypal的话去申请帐号,然后生成代码,根据代码后台传递参数,这里给一些paypal参数参考:如果你使用paypal[国内贝宝]的即时付款通知,在paypal会在付款操作的自动返回url里POST一段参数给你,类似如下连接: http://www.leoneo.com/paypal/test.php?tx=x9E67578X9184704L&st=Completed&amt=0.01&cc=CNY&cm=&sig=FYR%2fc2Q3NTzO0R....etc 其中主要参数是 tx=tx=x9E67578X9184704L , 这是此次交易的标志ID,可以利用脚本来依照此ID获取当前交易的信息,发送查询后,paypal会返回一串格式化信息,通常有以下信息 mc_gross 交易收入 address_status 地址信息状态 paypal_address_id Paypal地址信息ID payer_id 付款人的Paypal ID tax 税收 address_street 通信地址 payment_date 交易时间 payment_status 交易状态 charset 语言编码 address_zip 邮编 first_name 付款人姓氏 address_country_code 国别 address_name 收件人姓名 custom 自定义值 payer_status 付款人账户状态 business 收款人Paypal账户 address_country 通信地址国家 address_city 通信地址城市 quantity 货物数量 payer_email 付款人email txn_id 交易ID payment_type 交易类型 last_name 付款人名 address_state 通信地址省份 receiver_email 收款人email address_owner 尚未公布/正式启用 receiver_id 收款人ID ebay_address_id 易趣用户地址ID txn_type 交易通告方式 item_name 货品名称 mc_currency 货币种类 item_number 货品编号 payment_gross 交易总额[只适用于美元情况] shipping 运送费 asp .net Textbox中一些特殊字符显示问题 swf 文件启动全屏属性后,如何让文件居中显示呢 盘古分词的搜索问题 .ascx文件修改后,网页里面没有改到呢 <%# 如何将aspx文件像ascx文件一样插入到一个aspx文件当中 asp.net中datalist显示图片不全。有些显示不出来。????? 大家要帮下我啊,帮我看看datagrid的问题好吗? ~。。~服务器调用ActiveX 控件出错,高手们,有解决办法吗???? 如何刷新datagrid的内容? 请问如何制做PDF文件? 连接mysql的问题,没分了,请大家帮帮忙~~谢谢了 .NET菜鸟关于FOR循环的问题?
现在已经可以跳转到支付宝的页面了,而我们这边就要自己记录用户的信息已经生成的定单编号,这样在支付宝返回信息的时候来查询。在设定了返回地址后,我们就要看接收页面了。
string msg_id,order_no,gross,buyer_email,buyer_name,buyer_address,buyer_zipcode,buyer_tel,buyer_mobile,action,s_date,ac,notify_type;
string returnTxt;//返回给支付宝通知接口的结果
string alipayNotifyURL;//支付宝查询接口URL
string myalipayEmail;//商户的支付宝Email
string ResponseTxt="";
returnTxt = "N";
alipayNotifyURL = ConfigurationSettings.AppSettings["interfaceback"];//支付宝查询接口地址
myalipayEmail = ConfigurationSettings.AppSettings["account"];//填写您的支付宝帐号
//检查支付宝通知接口传递过来的参数是否合法
msg_id = newop.DelStr(Request["msg_id"]);
order_no = newop.DelStr(Request["order_no"]);
gross = newop.DelStr(Request["gross"]);
buyer_email = newop.DelStr(Request["buyer_email"]);
buyer_name = newop.DelStr(Request["buyer_name"]);
buyer_address = newop.DelStr(Request["buyer_address"]);
buyer_zipcode = newop.DelStr(Request["buyer_zipcode"]);
buyer_tel = newop.DelStr(Request["buyer_tel"]);
buyer_mobile = newop.DelStr(Request["buyer_mobile"]);
action = newop.DelStr(Request["action"]);
s_date = newop.DelStr(Request["date"]);
ac = newop.DelStr(Request["ac"]);
notify_type = newop.DelStr(Request["notify_type"]); alipayNotifyURL = alipayNotifyURL + "msg_id=" + msg_id + "&email=" + myalipayEmail + "&order_no=" + order_no;
System.Net.WebClient isClient= new System.Net.WebClient();
Stream isStream = isClient.OpenRead(alipayNotifyURL);
StreamReader isReader = new StreamReader(isStream,System.Text.Encoding.GetEncoding("GB2312"));
ResponseTxt = isReader.ReadToEnd();if(action == "test")//测试商户网站URL是否正确安装
{
returnTxt = "Y";
}
else if((action=="sendOff")&&(msg_id!=""))//发货通知
{
returnTxt = "N";
if((ResponseTxt == "true")||(ResponseTxt == "false"))
{
//更新数据在商户系统里的订单数据;如果已经发货,则将returnTxt置为Y,否则为N
}
else
{
//非法数据,不做更新
returnTxt="Error";
}
}
else if((action=="sendOff")&&(notify_type=="web"))
{
//检查是否已经付帐,并记录 }
else if((action=="checkOut")&&(msg_id!=""))//交易结束通知
{
returnTxt = "Y";
if((ResponseTxt=="true")||(ResponseTxt == "false"))
{
//更新数据在商户系统里的订单数据;如果数据更新成功,则将returnTxt置为Y,否则为N
//更新数据
//你的代码,更新你这边数据
returnTxt= "Y";
}
else
{
//非法数据,不做更新
returnTxt = "Error";
}
}
else
{
returnTxt="Error";
}
Response.Write(returnTxt);
中间那段webclient是返回支付宝查询这个消息是不是支付宝发出的,这里也使用的是获取支付宝那里一个查询接口的结果,True或者False。
这样就完成了整个支付的流程,而你需要做的就是记录用户买的数据,然后接受支付宝给你的信息并确认是否正确,而且是否已经购买或者已经发货,从而完成你的销售过程。接收页面做的标准就是在直接访问的情况下显示的结果只有N或者Y或者其他你设定的returnTxt的值,如果有其他内容将会不能实现功能。
支付宝现在的即时到帐功能还没有正式发布,请不要私自做,要不然会出现麻烦。
这里给一些paypal参数参考:
如果你使用paypal[国内贝宝]的即时付款通知,在paypal会在付款操作的自动返回url里POST一段参数给你,类似如下连接: http://www.leoneo.com/paypal/test.php?tx=x9E67578X9184704L&st=Completed&amt=0.01&cc=CNY&cm=&sig=FYR%2fc2Q3NTzO0R....etc
其中主要参数是 tx=tx=x9E67578X9184704L , 这是此次交易的标志ID,可以利用脚本来依照此ID获取当前交易的信息,发送查询后,paypal会返回一串格式化信息,通常有以下信息 mc_gross 交易收入
address_status 地址信息状态
paypal_address_id Paypal地址信息ID
payer_id 付款人的Paypal ID
tax 税收
address_street 通信地址
payment_date 交易时间
payment_status 交易状态
charset 语言编码
address_zip 邮编
first_name 付款人姓氏
address_country_code 国别
address_name 收件人姓名
custom 自定义值
payer_status 付款人账户状态
business 收款人Paypal账户
address_country 通信地址国家
address_city 通信地址城市
quantity 货物数量
payer_email 付款人email
txn_id 交易ID
payment_type 交易类型
last_name 付款人名
address_state 通信地址省份
receiver_email 收款人email
address_owner 尚未公布/正式启用
receiver_id 收款人ID
ebay_address_id 易趣用户地址ID
txn_type 交易通告方式
item_name 货品名称
mc_currency 货币种类
item_number 货品编号
payment_gross 交易总额[只适用于美元情况]
shipping 运送费