`
海淀区注册个昵称真难
  • 浏览: 8228 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

实现支付宝Payto接口的C#.net方法

 
阅读更多

  实现支付宝Payto接口的C#.net方法支付宝现在这种支付方式比较多象网银在线等使用的方法都是url验证,就是通过url参数和一个这些url参数的md5编码来确认这个连接的正确性,支付宝在你购买成功后跳转自定义连接的时候会传2次过来,第一次是数据底层请求,第二次是web请求,而只有第一次有验证码,这个只能通过记录下来才看的到,因为两次请求间隔很小,如果光显示的话最后的结果是被第二次覆盖了的。所以在接收的时候就要设定接收条件,一种是没有notify_type参数的,一种是有的。

  我们先来看一下创建一个连接地址


t1=ConfigurationSettings.AppSettings["interface"];//
支付接口,就是给的一个连接地址
  t2=ConfigurationSettings.AppSettings["account"];//支付宝帐户你的帐户

  t3=ConfigurationSettings.AppSettings["password"];//安全校验码,设置的商家验证码

  t4="images/logo_zfbsmall.gif";//按钮图片地址

  t5="test";//悬停说明

  cmd="0001";//默认

  subject="item";//商品名称

  body="decrip";//描述

  order_no=;//定单号,用户自己生成,方便自己管理 prices=100;//价格0.01
50000.00
  rurl="http://www.xxx.com/";//商品展示网址

  types="1";//1:商品购买2:服务购买3:网络拍卖4:捐赠

  number="1";//购买数量

  transport="3";//1:平邮2:快递3:虚拟物品

  ordinary_fee="";//平邮运费

  express_fee="";//快递运费

  readonlys="true";//交易信息是否只读

  buyer_msg="";//买家给卖家的留言

  buyer="";//买家
Email
  buyer_name="";//买家姓名

  buyer_address="";//买家地址

  buyer_zipcode="";//买家邮编

  buyer_tel="";//买家电话号码

  buyer_mobile="";//买家手机号码

  partner=ConfigurationSettings.AppSettings["partenid"];//合作伙伴ID,这个是固定的

  上面就是要提供得基本信息,然后就是生成支付宝得连接,也就是给支付宝提供一条带验证的购买信息。


public string creatAlipayItemURL(string t1,string t2,string t3,string t4,string t5,string cmd,string subject,string body,string order_no,string prices,string rurl,string types,string number,string transport,string ordinary_fee,string express_fee,string readonlys,string buyer_msg,string buyer,string buyer_name,string buyer_address,string buyer_zipcode,string buyer_tel,string buyer_mobile,string partner)
  {
  
string itemURL,str2CreateAc,acCode;
  
string INTERFACE_URL,sellerEmail,keyCode,imgsrc,imgtitle,AlipayItemURL;
  //初始化各必要变量

  INTERFACE_URL=t1+t2;//支付接口

  sellerEmail=t2;//商户支付宝账户(改成你自己的
)
  keyCode=t3;//安全校验码(改成你自己的
)
  imgsrc=t4;//支付宝按钮图片

  imgtitle=t5;//按钮悬停说明

  
str2CreateAc="cmd" + cmd + "subject" + subject;
  
str2CreateAc=str2CreateAc + "body" + body;
  
str2CreateAc=str2CreateAc + "order_no" + order_no;
  
str2CreateAc=str2CreateAc + "price" + prices;
  
//str2CreateAc=str2CreateAc + "url" + rurl;
  
str2CreateAc=str2CreateAc + "type" + types;
  
str2CreateAc=str2CreateAc + "number" + number;
  
str2CreateAc=str2CreateAc + "transport" + transport;
  
/*str2CreateAc=str2CreateAc + "ordinary_fee" + ordinary_fee;
  
str2CreateAc=str2CreateAc + "express_fee" + express_fee;
  
str2CreateAc=str2CreateAc + "readonly" + readonlys;
  
str2CreateAc=str2CreateAc + "buyer_msg" + buyer_msg;*/
  
str2CreateAc=str2CreateAc + "seller" + sellerEmail;
  
/*str2CreateAc=str2CreateAc + "buyer" + buyer;
  
str2CreateAc=str2CreateAc + "buyer_name" + buyer_name;
  
str2CreateAc=str2CreateAc + "buyer_address" + buyer_address;
  
str2CreateAc=str2CreateAc + "buyer_zipcode" + buyer_zipcode;
  
str2CreateAc=str2CreateAc + "buyer_tel" + buyer_tel;
  
str2CreateAc=str2CreateAc + "buyer_mobile" + buyer_mobile;*/
  
str2CreateAc=str2CreateAc + "partner" + partner;
  
str2CreateAc=str2CreateAc + keyCode;
  
//acCode=FormsAuthentication.HashPasswordForStoringInConfigFile(str2CreateAc,"MD5");
  
acCode=this.GetMD5(str2CreateAc,"gb2312");
  
itemURL=INTERFACE_URL + "?cmd=" + cmd;
  
itemURL=itemURL + "&subject=" + HttpUtility.UrlEncode(subject);
  
itemURL=itemURL + "&body=" + HttpUtility.UrlEncode(body);
  
itemURL=itemURL + "&order_no=" + order_no;
  
itemURL=itemURL + "&price=" + prices;
  
//itemURL=itemURL + "&url=" + rurl;
  
itemURL=itemURL + "&type=" + types;
  
itemURL=itemURL + "&number=" + number;
  
itemURL=itemURL + "&transport=" + transport;
  
/*itemURL=itemURL + "&ordinary_fee=" + ordinary_fee;
  
itemURL=itemURL + "&express_fee=" + express_fee;
  
itemURL=itemURL + "&readonly=" + readonlys;
  
itemURL=itemURL + "&buyer_msg=" + HttpUtility.UrlEncode(buyer_msg);
  
itemURL=itemURL + "&buyer=" + HttpUtility.UrlEncode(buyer);
  
itemURL=itemURL + "&buyer_name=" + HttpUtility.UrlEncode(buyer_name);
  
itemURL=itemURL + "&buyer_address=" + HttpUtility.UrlEncode(buyer_address);
  
itemURL=itemURL + "&buyer_zipcode=" + buyer_zipcode;
  
itemURL=itemURL + "&buyer_tel=" + buyer_tel;
  
itemURL=itemURL + "&buyer_mobile=" + buyer_mobile;*/
  
itemURL=itemURL + "&partner=" + partner;
  
itemURL=itemURL + "&ac=" + acCode;
  
AlipayItemURL=itemURL;
  
return AlipayItemURL;
  }

  这个函数就是返回生成的地址,里面注释掉的看你自己需要可以添加进去,然后就是md5的问题,现在用默认的md5生成程序对中文的支持只限于GB2312,而支付宝使用的是GBK,虽然两个编码的内容GBK兼容GB2312但是毕竟两个编码方式不同,所以会产生错误,如果用英文或者数字不会有问题。上面下载里面带的一个md5.asp的算法支持中文。

  现在已经可以跳转到支付宝的页面了,而我们这边就要自己记录用户的信息已经生成的定单编号,这样在支付宝返回信息的时候来查询。在设定了返回地址后,我们就要看接收页面了。

stringmsg_id,order_no,gross,buyer_email,buyer_name,buyer_address,buyer_zipcode,buyer_tel,buyer_mobile,action,s_date,ac,notify_type;
  stringreturnTxt;//返回给支付宝通知接口的结果

  stringalipayNotifyURL;//支付宝查询接口
URL
  stringmyalipayEmail;//商户的支付宝
Email
  
stringResponseTxt="";
  
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.WebClientisClient=newSystem.Net.WebClient();
  
StreamisStream=isClient.OpenRead(alipayNotifyURL);
  
StreamReaderisReader=newStreamReader(isStream,System.Text.Encoding.GetEncoding("GB2312"));
  
ResponseTxt=isReader.ReadToEnd();
  if(action=="test")//测试商户网站URL是否正确安装

  
{
  
returnTxt="Y";
  
}
  elseif((action=="sendOff")&&(msg_id!=""))//发货通知

  
{
  
returnTxt="N";
  
if((ResponseTxt=="true")||(ResponseTxt=="false"))
  
{
  //更新数据在商户系统里的订单数据;如果已经发货,则将returnTxt置为Y,否则为
N
  
}
  
else
  
{
  //非法数据,不做更新

  
returnTxt="Error";
  
}
  
}
  
elseif((action=="sendOff")&&(notify_type=="web"))
  
{
  //检查是否已经付帐,并记录
}
  elseif((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);

分享到:
评论

相关推荐

    支付宝Payto接口的C#.net实现方法

    支付宝Payto接口的C#.net实现方法

    支付宝Payto接口的c#.net实现借鉴.pdf

    支付宝Payto接口的c#.net实现借鉴.pdf

    支付宝Payto接口的c#.net实现参考.pdf

    支付宝Payto接口的c#.net实现参考.pdf

    支付宝Payto接口的c#.net实现[定义].pdf

    支付宝Payto接口的c#.net实现[定义].pdf

    c#.net支付宝Payto接口

    c#.net支付宝Payto接口 /支付宝接口 在c# 中写法

    asp.net c#支付宝接口详细代码

     支付宝Payto接口的C#.net实现方法。支付宝现在这种支付方式比较多象网银在线等使用的方法都是url验证,就是通过url参数和一个这些url参数的md5编码来确认这个连接的正确性,支付宝在你购买成功后跳转自定义连接的...

    asp.net知识库

    在ASP.Net中两种利用CSS实现多界面的方法 如何在客户端调用服务端代码 页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值...

    php支付宝接口用法分析

    本文实例讲述了php支付宝接口用法。分享给大家供大家参考。具体分析如下: 现在流行的网站支持平台,支付宝当仁不让的老大了,现在我们就来告诉你如何使用支付宝api来做第三方支付,把支付宝放到自己网站来,代码如下: ...

    仿58同城Fang58com201317.rar

    │ │ Alipay_Payto.asp │ │ body.Fix │ │ CheckPass.asp │ │ class.asp │ │ class1.asp │ │ comindex.asp │ │ company.asp │ │ company1.asp │ │ company2.asp │ │ comrun.asp │ │ ContactUs....

    bankCommandLineAPP

    银行命令行应用程序界面 这是一个可帮助用户通过3种不同平台(IOS / Android... utils / operations / payTo.js utils / operations / topup.js src / config(包含应用程序配置和消息) 状态(存储用户,消息和登录

Global site tag (gtag.js) - Google Analytics