关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

C#支付宝扫码支付代码完整版

发布时间:2020-08-08 09:39:45

支付宝工具类

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Security.Cryptography;

using System.Text;

using System.Web;

  

namespace ZK_ECommerce.Shop.pay.alipay

{

  public class AliPay

  {

  

    public static string GetMD5(string s, string _input_charset)

    {

  

      /// <summary>

      /// ASP兼容的MD5加密算法

      /// </summary>

  

      MD5 md5 = new MD5CryptoServiceProvider();

      byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).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();

    }

  

    public static string[] BubbleSort(string[] r)

    {

      /// <summary>

      /// 冒泡排序法

      /// </summary>

  

      int i, j; //交换标志 

      string temp;

  

      bool exchange;

  

      for (i = 0; i < r.Length; i++) //最多做R.Length-1趟排序 

      {

        exchange = false; //本趟排序开始前,交换标志应为假

  

        for (j = r.Length - 2; j >= i; j--)

        {

          if (System.String.CompareOrdinal(r[j + 1], r[j]) < 0) //交换条件

          {

            temp = r[j + 1];

            r[j + 1] = r[j];

            r[j] = temp;

  

            exchange = true; //发生了交换,故将交换标志置为真 

          }

        }

  

        if (!exchange) //本趟排序未发生交换,提前终止算法 

        {

          break;

        }

  

      }

      return r;

    }

  

    public string CreatUrl(

      string gateway,

      string service,

      string partner,

      string sign_type,

      string out_trade_no,

      string subject,

      string body,

      string payment_type,

      string total_fee,

      string show_url,

      string seller_email,

      string key,

      string return_url,

      string _input_charset,

      string notify_url,

      string extra_common_param = ""

      )

    {

      return CreatUrl(

      gateway,

      service,

      partner,

      sign_type,

      out_trade_no,

      subject,

      body,

      payment_type,

      total_fee,

      show_url,

      seller_email,

      key,

      return_url,

      _input_charset,

      notify_url,

      "",

      extra_common_param);

    }

  

  

  

    public string CreatUrl(

      string gateway,

      string service,

      string partner,

      string sign_type,

      string out_trade_no,

      string subject,

      string body,

      string payment_type,

      string total_fee,

      string show_url,

      string seller_email,

      string key,

      string return_url,

      string _input_charset,

      string notify_url,

      string token,

      string extra_common_param = ""

      )

    {

      /// <summary>

      ///2015111714:08:00

      /// </summary>

      int i;

      string[] Oristr;

      //构造数组;

      if (!string.IsNullOrEmpty(token))

      {

        if (extra_common_param == "COD2MOTOPAY")

        {

          Oristr = new[]{ 

          "service="+service, 

          "partner=" + partner, 

          "subject=" + subject, 

          "body=" + body, 

          "out_trade_no=" + out_trade_no, 

          "total_fee=" + total_fee, 

          "show_url=" + show_url, 

          "payment_type=" + payment_type, 

          "seller_email=" + seller_email, 

          "notify_url=" + notify_url,

          "_input_charset="+_input_charset,     

          "return_url=" + return_url,

          "token="+token,

          "extra_common_param="+extra_common_param

          };

        }

        else

        {

          Oristr = new[]{ 

          "service="+service, 

          "partner=" + partner, 

          "subject=" + subject, 

          "body=" + body, 

          "out_trade_no=" + out_trade_no, 

          "total_fee=" +total_fee, 

          "show_url=" + show_url, 

          "payment_type=" + payment_type, 

          "seller_email=" + seller_email, 

          "notify_url=" + notify_url,

          "_input_charset="+_input_charset,     

          "return_url=" + return_url,

          "token="+token

          };

        }

  

      }

      else

      {

        if (extra_common_param == "COD2MOTOPAY")

        {

          Oristr = new[]{ 

          "service="+service, 

          "partner=" + partner, 

          "subject=" + subject, 

          "body=" + body, 

          "out_trade_no=" + out_trade_no, 

          "total_fee="+total_fee, 

          "show_url=" + show_url, 

          "payment_type=" + payment_type, 

          "seller_email=" + seller_email, 

          "notify_url=" + notify_url,

          "_input_charset="+_input_charset,     

          "return_url=" + return_url,

          "extra_common_param="+extra_common_param

          };

        }

        else

        {

          Oristr = new[]{ 

          "service="+service, 

          "partner=" + partner, 

          "subject=" + subject, 

          "body=" + body, 

          "out_trade_no=" + out_trade_no, 

          "total_fee=" + total_fee, 

          "show_url=" + show_url, 

          "payment_type=" + payment_type, 

          "seller_email=" + seller_email, 

          "notify_url=" + notify_url,

          "_input_charset="+_input_charset,     

          "return_url=" + return_url

          };

        }

  

  

      }

      //进行排序;

      string[] Sortedstr = BubbleSort(Oristr);

  

  

      //构造待md5摘要字符串 ;

  

      StringBuilder prestr = new StringBuilder();

  

      for (i = 0; i < Sortedstr.Length; i++)

      {

        if (i == Sortedstr.Length - 1)

        {

          prestr.Append(Sortedstr[i]);

  

        }

        else

        {

  

          prestr.Append(Sortedstr[i] + "&");

        }

  

      }

  

      prestr.Append(key);

  

      //生成Md5摘要;

      string sign = GetMD5(prestr.ToString(), _input_charset);

  

      //构造支付Url

      char[] delimiterChars = { '=' };

      StringBuilder parameter = new StringBuilder();

      parameter.Append(gateway);

      for (i = 0; i < Sortedstr.Length; i++)

      {

  

        parameter.Append(Sortedstr[i].Split(delimiterChars)[0] + "=" + HttpUtility.UrlEncode(Sortedstr[i].Split(delimiterChars)[1]) + "&");

      }

  

      parameter.Append("sign=" + sign + "&sign_type=" + sign_type);

  

  

      //返回支付Url

      return parameter.ToString();

  

    }

  

    public string CreatUrl_MissPayments(

                string gateway,

                string service,

                string partner,

                string sign_type,

                string out_trade_no,

                string key,

                string _input_charset

  

     )

    {

      /// <summary>

      /// created by sunzhizhi 2006.5.21,sunzhizhi@msn.com

      /// </summary>

      int i;

  

      //构造数组;

      string[] Oristr ={ 

        "service="+service, 

        "partner=" + partner,

        "out_trade_no=" + out_trade_no,   

        "_input_charset="+_input_charset     

  

        };

  

      //进行排序;

      string[] Sortedstr = BubbleSort(Oristr);

  

  

      //构造待md5摘要字符串 ;

  

      StringBuilder prestr = new StringBuilder();

  

      for (i = 0; i < Sortedstr.Length; i++)

      {

        if (i == Sortedstr.Length - 1)

        {

          prestr.Append(Sortedstr[i]);

  

        }

        else

        {

  

          prestr.Append(Sortedstr[i] + "&");

        }

  

      }

  

      prestr.Append(key);

  

      //生成Md5摘要;

      string sign = GetMD5(prestr.ToString(), _input_charset);

  

      //构造支付Url

      char[] delimiterChars = { '=' };

      StringBuilder parameter = new StringBuilder();

      parameter.Append(gateway);

      for (i = 0; i < Sortedstr.Length; i++)

      {

  

        parameter.Append(Sortedstr[i].Split(delimiterChars)[0] + "=" + HttpUtility.UrlEncode(Sortedstr[i].Split(delimiterChars)[1]) + "&");

      }

  

      parameter.Append("sign=" + sign + "&sign_type=" + sign_type);

  

  

      //返回支付Url

      return parameter.ToString();

  

    }

  

  

    public static string GetTranSign(string TranData)

    {

      if (string.IsNullOrWhiteSpace(TranData))

        return null;

      string sign = GetMD5(TranData + "alskdjfaow;fjel;asdjf", "utf-8");

      return sign;

    }

  

  }

}



相关阅读

云备份有哪些主要优点?初步认识什么是云备份?大数据采集与数据采集有什么区别?数据采集的定义是什么?云存储技术之集群存储云存储的相关性能要求关于“云”的相关基础认识云主机与虚拟主机有什么区别?IDC机房监控设备服务标准IDC机房服务维护内容IDC基本业务产品常识服务器的访问的速度由哪些因素决定?《手机卡顿 - 办法新招》关于服务器托管有些什么功能?服务器托管应该注意哪些事项?服务器的托管有哪些优势?服务器租用和服务器托管的相关基础知识三级分销中薪金报酬计划之矩阵制的缺陷三级分销商城搭建时需要掌握的技术Hadoop主要有下面几个优点云计算的数据组织结构云计算的部署模型关于块存储的特性及其优缺点面向对象存储(OOS)的特点及适合应用的类型云计算的三种类型云计算中文件系统操作和namespace的关系关于云计算的优势对于Namenode和Datanode的划分关于Hadoop HDFS的设计思想关于云服务的优缺点云服务的特点及其市场价值云计算的主要特征云服务的好处有哪些?什么是对象存储对象?云存储有哪些特点?云存储系统所具有的几大优势云数据库具有一些什么特性?关于云服务器的特点有哪些?云服务器的架构体系及其优势云南RTK网络应用常见的问题及解决办法关于前端开发的优化问题阿里云域名转入失败常见问题及处理方法关于云计算的概念计算机网络技术基础知识云计算的优点和缺点服务器搭建计算机网络安全常见的危险因素有哪些?什么是内容分发网络(CDN)?云南服务器搭建和数据备份,恢复云南云服务器的三大作用人工智能AI初认识云计算服务的6个优势云南服务器托管有哪些注意事项Tomcat的特点云计算的三个优点选取小程序服务商时的注意事项不同数据库的不同区别什么是VPS主机它的优势是什么?你知道5G的优点和缺点吗?云南三级分销商城开发的目的和对企业的价值云南网站优化的3个方面和网页的优化我们晋级拉!!!云南网站链接维护的具体方法云南网站应该如何做优化云南网站维护的主要内容云南云服务器和虚拟主机的操作区别云服务器部署和注意点云南服务网器托管应该选择怎样的机房云南虚拟建设网站主机的优点和缺点云服务器和物理服务器的区别云服务器有哪些优势C# List用法 List介绍C#和Java有什么不同PHP的优点和缺点智慧新餐饮和传统餐饮的区别云数据库对比传统数据库有哪些优点裸金属服务器是什么它的作用是什么白盒测试的特点js中添加scriptjs中[]、{}、()的用法和区别php 字符串的整型转换ipa如何安装到苹果手机邓白氏码是什么?iOS开发者账号到期续费教程在C#中有哪些引用类型和值类型小程序搭建时需要准备些什么云数据库对比传统数据库的优势什么样的企业适合SEMjs中的常见错误C#数据类型转换字符串与数值之间的转换C#的几种循环遍历方式物联网是什么它和互联网又有什么区别?云南网站建设时应该注意些什么云计算是什么?它能干些什么?展望未来5G会给我们的生活带来哪些影响C#常见的几种报错类别C#的学习流程有哪些dedecms 绑定二级域名的正确方法SEM是什么它和SEO之间是什么关系?云南新餐饮料模式是如何运行的?云南网站建设初期应该注意哪些问题
/template/Home/Zkeys/PC/Static