`
独善其身008
  • 浏览: 171374 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

在线支付net 接口

阅读更多
支付宝的接口调用很不方便,以下代码实现了虚拟交易和实物交易。
解决方案中有三个项目以及NDoc生成的文档,简单的序列图:CommonAliPay,封装的支付宝接口。
TestAli,asp.net的测试项目
TestCommonAliPay,Nunit的测试项目。
调用方法:
1、引入CommonAliPay.dll
2、实现支付宝服务接口的方法调用方式:
AliPay ap = new AliPay();
        string key = "";//填写自己的key
        string partner = "";//填写自己的Partner
        StandardGoods bp = new StandardGoods("trade_create_by_buyer", partner, key, "MD5", "卡2", Guid.NewGuid().ToString(), 2.551m, 1, "hao_ding2000@yahoo.com.cn", "hao_ding2000@yahoo.com.cn"
            , "EMS", 25.00m, "BUYER_PAY","1");
           bp.Notify_Url = "http://203.86.79.185/ali/notify.aspx";
ap.CreateStandardTrade("https://www.alipay.com/cooperate/gateway.do", bp, this);上面是通用的调用方式。
下面是只支持虚拟货物的方式:
string key = "";//填写自己的key
        string partner = "";//填写自己的Partner
        AliPay ap = new AliPay();
        DigitalGoods bp = new DigitalGoods("create_digital_goods_trade_p", partner, key, "MD5", "卡2", Guid.NewGuid().ToString(), 2.551m, 1, "hao_ding2000@yahoo.com.cn", "hao_ding2000@yahoo.com.cn");
        bp.Notify_Url = "http://203.86.79.185/ali/notify.aspx";
        ap.CreateDigitalTrade("https://www.alipay.com/cooperate/gateway.do", bp, this);3、实现支付宝通知接口方法的调用(支持虚拟和实物):
protected void Page_Load(object sender, EventArgs e)
    {
        string key = "";//填写自己的key
        string partner = "";//填写自己的Partner
         AliPay ap = new AliPay();
         string notifyid = Request.Form["notify_id"];
         Verify v = new Verify("notify_verify", partner, notifyid);
        ap.WaitSellerSendGoods+=new AliPay.ProcessNotifyEventHandler(ap_WaitSellerSendGoods);
        ap.WaitBuyerPay += new AliPay.ProcessNotifyEventHandler(ap_WaitBuyerPay);
        ap.ProcessNotify(this, "https://www.alipay.com/cooperate/gateway.do",key,v, "utf-8");
    }

    void ap_WaitBuyerPay(object sender, NotifyEventArgs e)
    {
        // //加入自己的处理逻辑
        Log4net.log.Error("wait buyer pay fire");
    }

  
    private void ap_WaitSellerSendGoods(object sender, NotifyEventArgs e)
    {
        //加入自己的处理逻辑
        Log4net.log.Error("WaitSellerSendGoods fire");
    }支付宝的交易状态都被定义成了类似名称的事件。
部分源代码解析:
1、解析Forms集合到NotifyEventArgs类,因为后面此类的数据要用来做MD5Sign,所以所有值类型,不能存在初始值,如:int的0等。因此用Nullable范型。
   private NotifyEventArgs ParseNotify(NameValueCollection nv, object obj)
        {
            PropertyInfo[] propertyInfos = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);

            foreach (PropertyInfo pi in propertyInfos)
            {
                string v = nv.Get(pi.Name.ToLower());
                if (v != null)
                {
                    if (pi.PropertyType == typeof(string))
                    {
                        pi.SetValue(obj, v, null);
                    }
                    else if (pi.PropertyType == typeof(int?))
                    {
                        pi.SetValue(obj, int.Parse(v), null);
                    }
                    else if (pi.PropertyType == typeof(decimal?))
                    {
                        pi.SetValue(obj, decimal.Parse(v), null);
                    }
                    else if (pi.PropertyType == typeof(DateTime?))
                    {

                        pi.SetValue(obj, DateTime.Parse(v), null);
                    }
                    else if (pi.PropertyType == typeof(bool))
                    {
                        pi.SetValue(obj, bool.Parse(v), null);
                    }
                    else
                    {
                        //转型失败会抛出异常
                        pi.SetValue(obj, v, null);
                    }
                }
            }
            return (NotifyEventArgs)obj;

        }
2、从类型中获取排序后的参数
/**//// <summary>
        /// 获取排序后的参数
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        private SortedList<string,string> GetParam(object obj)
        {
            PropertyInfo[] propertyInfos = obj.GetType().GetProperties(BindingFlags.Public|BindingFlags.Instance);         
            SortedList<string, string> sortedList = new SortedList<string, string>(StringComparer.CurrentCultureIgnoreCase);
            foreach (PropertyInfo pi in propertyInfos)
            {

                if (pi.GetValue(obj, null) != null)
                {
                    if (pi.Name == "Sign" || pi.Name == "Sign_Type")
                    {
                        continue;
                    }
                    sortedList.Add(pi.Name.ToLower(), pi.GetValue(obj, null).ToString());
                }
            }
            return sortedList;
                   
        }3、从SortedList中产生参数
private string GetUrlParam(SortedList<string, string> sortedList,bool isEncode)
        {
            StringBuilder param = new StringBuilder();
            StringBuilder encodeParam = new StringBuilder();
            if (isEncode == false)
            {

                foreach (KeyValuePair<string, string> kvp in sortedList)
                {
                    string t = string.Format("{0}={1}", kvp.Key, kvp.Value);
                    param.Append(t + "&");
                }
                return param.ToString().TrimEnd('&');
            }
            else
            {
                foreach (KeyValuePair<string, string> kvp in sortedList)
                {
                     string et = string.Format("{0}={1}", HttpUtility.UrlEncode(kvp.Key), HttpUtility.UrlEncode(kvp.Value));
                     encodeParam.Append(et + "&");
                }
                return encodeParam.ToString().TrimEnd('&');
            }
        }

分享到:
评论

相关推荐

    网银在线支付接口代码包括(.net,java,asp接口等)

    在本压缩包中,提供了多种编程语言实现的网银在线支付接口代码,包括.NET、Java和ASP。这些接口主要用于连接银行系统,完成支付授权、交易确认、订单状态更新等一系列流程。 1. **.NET接口**:.NET是一种广泛使用的...

    支付宝在线支付接口(含文档)

    支付宝在线支付接口是一种广泛应用于电子商务网站的技术,使得商家可以接受来自支付宝用户的支付。这个压缩包包含了一套完整的集成指南和多种编程语言的示例代码,旨在帮助开发者快速地将支付宝接口整合到自己的网站...

    农行支付接口api

    农行支付接口API是银行与商户系统之间进行支付交互的关键技术,主要服务于web应用和移动APP的支付场景。本文将详细解析农行支付接口API在ASP.NET、Java、PHP等不同编程语言中的实现,以及如何利用提供的demo进行支付...

    net中主流在线支付接口文档和示例(包括:Paypal,支付宝,财付通)

    在.NET开发环境中,集成在线支付接口是电子商务应用的关键部分,以确保用户能够便捷地完成交易。本资源包包含了关于PayPal、支付宝和财付通这三大主流在线支付平台的接口文档和示例代码,这对于.NET开发者来说是非常...

    淘宝支付宝接口 淘宝支付宝接口

    net03_gbk(aspx).rar 淘宝支付宝接口

    农业银行支付接口demo .net版

    通过这个.NET版的农业银行支付接口demo,开发者可以全面了解和掌握农行支付系统的集成过程,为实际的电商、零售或其他需要在线支付的业务提供可靠的技术支持。在实际开发中,还需要根据具体业务需求和银行的最新规则...

    ASP.NET农行支付接口B2C

    ASP.NET农行支付接口B2C是针对农业银行(农行)在线支付功能的一个开发框架,主要用于电商(B2C,Business to Consumer)场景。这个接口允许商家网站与农业银行的支付系统进行交互,实现商品购买、退款等一系列交易...

    微信/支付宝 H5支付接口(C#版demo)

    微信/支付宝 H5支付接口(C#版demo)

    网银在线支付接口,支持asp/jsp/net2.0/php语言

    综上所述,“网银在线支付接口,支持asp/jsp/net2.0/php语言”的实现涉及了多方面的技术知识,包括Web开发、服务器端脚本、支付流程处理、以及B2C商业模式的理解。开发者需要具备这些技能,才能有效地设计和实现一个...

    支付宝即时到帐接口

    我们是正规合法注册的公司,是我们自己和支付宝签约后,为了方便更多的网友能便捷使用支付宝在线支付接口而开发的,并非赢利产品。付款是直接到达的您所设置的支付宝帐户的。 6、如果两种方式都设置,就要判断交易...

    net3.5网上支付接口(源代码)修正版

    【标题】"net3.5网上支付接口(源代码)修正版" 提供的是一个基于ASP.NET 3.5框架的网上支付系统接口的源代码。这个修正版可能是在原有基础上进行了错误修复、功能优化或者安全性提升,以适应更广泛的支付场景需求。...

    net易宝支付接口一点点资料

    在IT行业中,支付接口是电子商务和在线服务的重要组成部分,它使得商家能够接受并处理来自客户的电子支付。"net易宝支付接口一点点资料"这个资源集合可能是关于如何在.NET环境中集成易宝支付接口的一些教程、文档...

    .NET C# asp.net 微信网页扫码支付完整接口及Demo

    1. **微信支付API**:微信支付为开发者提供了丰富的API接口,如统一下单、订单查询、退款申请等。这些API需要通过HTTPS请求发送到微信支付服务器,以进行支付相关的业务操作。 2. **C#编程语言**:C#是.NET框架的...

    网银在线支付接口SDK 支持 php asp net2.0 jsp

    网银在线接口SDK 支持 php asp net2.0 jsp 本压缩包包含商户开通网银在线支付服务所需的文档资料,请仔细保存。按照以下步骤即可开通网上支付服务。 1.安装调试接口 如果您拥有自己的程序员团队 请将压缩包内...

    支付宝API接口开发相关文档以及 C# .net php实例

    支付宝API接口开发是在线支付和电子商务领域中的一个重要环节,它允许开发者通过编程方式与支付宝系统进行交互,实现各种支付功能。以下是对标题、描述及标签所包含知识点的详细解释: 1. **支付宝API**:支付宝...

    支付宝接口(.net2.0)

    支付宝接口在.NET 2.0环境下的应用是电商和在线支付系统开发中的重要环节,它为开发者提供了与支付宝平台交互的桥梁。这个接口程序是由支付宝官方提供的,确保了其安全性和可靠性,使得开发者能够集成到自己的在线...

    icbc工行B2C在线支付php_java_net等demo及接口测试等

    这个压缩包文件包含了针对PHP、Java和.NET平台的工行B2C在线支付的代码示例和接口测试工具,帮助开发者快速理解和应用这些接口。 首先,我们来看PHP的相关内容。PHP是一种广泛使用的服务器端脚本语言,尤其在Web...

    .NET C# 【微信支付】API对应的SDK WxPayAPI_CS_v3 调试通过与 微信公众号支付接口文档V3.3.7.pdf

    里面有 word配置说明 和【微信支付】微信公众号支付接口文档V3.3.7.pdf 。开发过程很多不懂。本身是小白,现在提供给小白一样的人,能顺利通过。在微信里打开 http://www.XXXX.com.cn/example/JsApiPayPage.aspx 。...

    c#asp.net支付平台多途径支付接口

    2.银行卡在线支付支持国内60 余种银行卡(信用卡、储蓄卡、借记卡等)在线支付。 3.全国声讯电话支付支持全国所有省份固定电话、小灵通、中国移动、中国联通手机, 开通移动、联通、电信、网通多个声讯热线号码。 4....

    c#及asp_net支付宝接口代码

    在IT行业中,集成支付接口是电子商务网站不可或缺的一部分,而支付宝作为中国最大的第三方支付平台,其API接口被广泛应用。本文将详细解析使用C#和ASP.NET实现支付宝接口代码的相关知识点。 首先,我们需要理解C#和...

Global site tag (gtag.js) - Google Analytics