科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件支付宝Payto接口的C#.net实现方法

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

支付宝现在这种支付方式比较多象网银在线等使用的方法都是url验证,就是通过url参数和一个这些url参数的md5编码来确认这个连接的正确性……

作者:octverve 来源:CSDN 2007年11月17日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
这个函数就是返回生成的地址,里面注释掉的看你自己需要可以添加进去,然后就是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);

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章