搜索 
 设为首页 加入收藏
当前位置>>首页-学院-.Net
来源: 作者: 日期:2009-06-05 11:14 网友评论:0条 点击:17
  由于项目需要用到在线冲值功能所以需要调用支付宝接口。说真的支付宝接口提供的dome真是有点烂…那代码对于可扩展性就更加不用说。所以自己花时间搞了一个不过真是把我搞到头晕,花了很长时间才扩展完成并调试调用(幸好自己有调试环境)。相信这功能对大家有用共享出来。

为了方便扩展制定支付宝回调接口

    public interface IReturnHandler

    {

        /// <summary>

        /// 处理Returl_url回调请求

        /// </summary>

        /// <param name="properties">支付宝相关参数</param>

        /// <param name="customs">自定义参数</param>

        void Return(System.Collections.Specialized.NameValueCollection properties, IList<string> customs);

        /// <summary>

        /// 处理Notify_url回调请求

        /// </summary>

        /// <param name="properties">支付宝相关参数</param>

        /// <param name="customs">自定义参数</param>

        void Notify(System.Collections.Specialized.NameValueCollection properties, IList<string> customs);

        /// <summary>

        /// 支付宝处理错误回调请求

        /// </summary>

        /// <param name="properties">支付宝相关参数</param>

        /// <param name="customs">自定义参数</param>

        /// <param name="responsetext">结果内容</param>

        void OnError(System.Collections.Specialized.NameValueCollection properties, IList<string> customs,string responsetext);

        /// <summary>

        /// 合作商ID

        /// </summary>

        string Partner

        {

            get;

        }

        /// <summary>

        /// 加密Key

        /// </summary>

        string Key

        {

            get;

        }

       /// <summary>

       /// 卖家邮件地址

       /// </summary>

        string Seller_Email

        {

            get;

        }

    }

重新实现AliPay

    /// <summary>

    /// 支付宝虚拟货币支付

    /// </summary>

    public class AliPay

    {

        /// <summary>

        /// 构造虚拟货币支付对象

        /// </summary>

        /// <param name="subject">商品名称</param>

        /// <param name="body">商品描述</param>

        /// <param name="total_fee">总金额</param>

        public AliPay(string subject, string body, decimal total_fee

            ,string returnurl)

        {

            Gateway = Untity.Service_Ulr;

            Service = "create_direct_pay_by_user";

            Sing_Type = Untity.Sing_Type;

            Payment_Type = "1";

     

            Subject = subject;

            Body = body;

            Total_Fee = total_fee;

            Return_Url = returnurl;

            Notify_Url = returnurl;

        }

        public string Notify_Url

        {

            get;

            set;

        }

        public string Buyer_Id

        {

            get;

            set;

        }

       

        public void Execute<T>(params string[] customparams) where T:IReturnHandler,new()

        {

            System.DateTime currentTime = new System.DateTime();

            currentTime = System.DateTime.Now;

            string out_trade_no = currentTime.ToString("g");

            Out_Trade_No = out_trade_no.Replace("-", "");

            Out_Trade_No = Out_Trade_No.Replace(":", "");

            Out_Trade_No = Out_Trade_No.Replace(" ", "");

            //返回支付Url

            System.Web.HttpContext.Current.Response.Redirect(parameter.ToString());

 

        }

    }

Alipay的代码就贴部分出来,具体代码下载源码可以得到。

Execute方法是用调用支付宝接口,T泛型参数主要描述支付宝回调后用那个IReturnHandler的实现者来处理;customparams就是用户自定义的参数可以是多个,注意参数内容过多生成Returl_url过长会导致支付宝处理错误。


【发表评论 0条】
发表评论
最新评论:已有0位感兴趣的读者发表了看法

验证码:请输入前面图中的四位验证码,字母不区分大小写


网站简介 | 广告服务 | VIP资费标准 | 银行汇款帐号 | 网站地图 | 帮助 | 联系方式
地址:成都八宝街一号万和苑C座1203 电话:028-86272612 传真: 028-86272612
开源人网站版权所有  渝ICP备06004507号  建议使用1024*768分辨率