亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

支付寶接口(剛完成,應該是目前最好的了)

2019-11-18 16:55:37
字體:
來源:轉載
供稿:網友

支付寶的接口調用很不方便,剛做好一個封裝,實現了虛擬交易和實物交易。
解決方案中有三個項目以及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 = "        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 = "        ap.CreateDigitalTrade("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, "    }

    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('&');
            }
 
        }
下載地址:
http://www.49028c.com/Files/bluewater/CommonAliPay.rar


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区高清在线观看| 亚洲国产一区二区三区在线观看| 久久影视三级福利片| 欧美成年人网站| 国产欧美日韩亚洲精品| 欧美夜福利tv在线| 欧美亚洲成人xxx| 久久99精品久久久久久琪琪| 日韩精品免费在线播放| 91精品国产自产在线老师啪| 日韩欧美在线一区| 狠狠综合久久av一区二区小说| 国产福利成人在线| 久久久国产精品视频| 国语自产精品视频在线看抢先版图片| 日韩精品中文字| 日韩中文有码在线视频| 精品国内产的精品视频在线观看| 亚洲精品国产美女| 91爱视频在线| 在线精品播放av| 国产精品日韩欧美综合| 国产精品视频男人的天堂| 欧日韩不卡在线视频| 国产精品久久久久久久一区探花| 欧美国产日韩一区二区在线观看| 日韩美女福利视频| 午夜精品一区二区三区在线视频| 精品国产乱码久久久久久虫虫漫画| 日韩有码在线观看| 欧美极品少妇xxxxx| 一区二区三区美女xx视频| 欧美日韩国产在线播放| 午夜精品一区二区三区在线视| 国产日产欧美a一级在线| 亚洲久久久久久久久久久| 午夜精品久久久久久久久久久久| 国产日韩精品电影| 国产一级揄自揄精品视频| 中文字幕一精品亚洲无线一区| 亚洲三级黄色在线观看| 欧美大片免费观看| 亚洲欧美综合精品久久成人| 色偷偷88888欧美精品久久久| 色七七影院综合| 美日韩精品免费观看视频| 欧美天堂在线观看| 日韩有码在线视频| 亚洲情综合五月天| 国产精品久久av| 国产精品丝袜高跟| 久久久久久久久久久免费精品| 欧美日韩亚洲成人| 美女扒开尿口让男人操亚洲视频网站| 欧美成人免费播放| 国产成人极品视频| 中文字幕国产日韩| 亚洲欧美综合区自拍另类| 欧美中文字幕精品| 亚洲电影免费观看高清完整版| 成人精品网站在线观看| 97久久精品人搡人人玩| 国产成人精品av在线| 亚洲第一区第一页| 亚洲免费人成在线视频观看| 亚洲美女精品成人在线视频| 国产精品第二页| 国语自产精品视频在线看抢先版图片| 另类视频在线观看| 欧美日韩精品中文字幕| 中文字幕日韩欧美| 狠狠色狠狠色综合日日五| 国产精品国模在线| 91免费综合在线| 色多多国产成人永久免费网站| 国产成人精品免费久久久久| 性欧美激情精品| 91精品久久久久久久久久另类| 国产精品一区二区三区久久久| 精品无码久久久久久国产| www.久久草.com| 最近2019中文字幕大全第二页| 91精品国产成人www| 欧美视频在线免费看| 亚洲精品videossex少妇| 午夜精品久久久久久久99热| 国产日韩中文在线| 日韩视频免费大全中文字幕| 日韩欧美极品在线观看| 国产成人精品综合久久久| 日韩久久免费视频| 久久精品2019中文字幕| 久青草国产97香蕉在线视频| 久久久精品视频在线观看| 日韩av免费观影| 国产91精品不卡视频| 日韩高清电影好看的电视剧电影| 日韩免费电影在线观看| 国产丝袜一区二区三区| 国产成人精品久久二区二区| 性欧美xxxx视频在线观看| 欧美精品久久久久久久| 九九精品在线观看| 国产精品一区二区久久国产| 久久999免费视频| 亚洲电影免费观看高清完整版在线观看| 中文字幕一区电影| 91精品中文在线| 久久久精品国产一区二区| 国产精品一区二区三区免费视频| 岛国av一区二区| 最近2019年好看中文字幕视频| 欧美韩国理论所午夜片917电影| 亚洲视频在线观看视频| 色狠狠av一区二区三区香蕉蜜桃| 日韩av免费在线观看| 国产精品久久一| 国产精品久久久久久久久久久新郎| 亚洲天堂色网站| 麻豆成人在线看| 久久久国产精彩视频美女艺术照福利| 国精产品一区一区三区有限在线| 久久久久久久久久久久av| 亚洲欧美国产另类| 少妇高潮久久77777| 亚洲国产精品女人久久久| 日韩黄色在线免费观看| 久久精品一偷一偷国产| 日韩欧美亚洲综合| 日韩av黄色在线观看| 77777少妇光屁股久久一区| 大荫蒂欧美视频另类xxxx| 国产精品亚洲精品| 亚洲精品www久久久| 欧美激情一二区| 欧美一区二区视频97| 国产精品久久久久久久一区探花| 欧美裸体xxxx极品少妇| 精品久久久久久| 福利二区91精品bt7086| 亚洲第一男人av| yellow中文字幕久久| 国产一区二区色| 亚洲第一国产精品| 91亚洲精品久久久久久久久久久久| 欧美黑人狂野猛交老妇| 欧美刺激性大交免费视频| 超碰97人人做人人爱少妇| 最近2019年中文视频免费在线观看| 91av在线国产| 高跟丝袜欧美一区| 亚洲日本成人女熟在线观看| 中文字幕日韩精品有码视频| 91欧美精品午夜性色福利在线| 动漫精品一区二区| 欧美精品videosex极品1| 九九九热精品免费视频观看网站| 久久久精品国产| 97视频在线免费观看| 亚洲变态欧美另类捆绑| 国产欧美精品日韩精品| 成人黄色大片在线免费观看| 亚洲精品乱码久久久久久金桔影视| 亚洲女人被黑人巨大进入al|