码迷,mamicode.com
首页 > 其他好文 > 详细

使用封装的在线支付

时间:2014-10-15 17:54:51      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   os   使用   ar   strong   sp   div   

业务封装在 CRL.OnlinePay

创建表 CRL.OnlinePay.IPayHistory

配置账号参数

修改网站根目录/config/CustomSetting.config 填入账号等信息

支付宝USER=21212
支付宝KEY=4234234
支付宝EMAIL=234234
支付宝NotifyUrl=/charge/AlipayNotify
支付宝ReturnUrl=/charge/AlipayReturn
财富通KEY=sdfsdfsfd
财富通USER=asdfasdf
财富通NotifyUrl=/charge/TenpayNotify
财富通ReturnUrl=/charge/TenpayReturn
财富通CertFile=1313213
财富通PayPass=1313213

  

实现提交入口

string userId="001";//用户编号
decimal amount=100;//金额 CRL.OnlinePay.CompanyType companyType=CRL.OnlinePay.CompanyType CompanyType.支付宝;//调用接口类型 string orderId = DateTime.Now.ToString("yyMMddhhmmssff");//外部订单号 CRL.OnlinePay.ChargeService.Submit(userId, amount, "", CRL.OnlinePay.OrderType.充值, companyType, orderId, "");//提交支付请求,产生跳转

  

实现通知和跳转入口,以支付宝为例

//支付宝通知接收
public ActionResult AlipayNotify()
        {
            string result = CRL.OnlinePay.ChargeService.GetNotify(CRL.OnlinePay.CompanyType.支付宝, HttpContext.ApplicationInstance.Context);
            return Content(result);
        }
//支付宝返回跳转
        public ActionResult AlipayReturn()
        {
            string orderId = Request["out_trade_no"];
            var order = Aika.Core.Business.PayHistory.PayHistoryManage.Instance.GetOrder(orderId, CRL.OnlinePay.CompanyType.支付宝);
            if (order.OrderType == CRL.OnlinePay.OrderType.充值)
            {
                return RedirectToAction("ChargeSuccess", new { amount = order.Amount });
            }
            else
            {
                return Content("暂未实现");
            }
        }

  

在GLOBAL中实现支付订单确认回调

//在线支付回调 在上面通知收接时会触发此回调
            CRL.SettingConfig.OnlinePayConfirmOrder = (o) =>
            {
//在这里实现确认订单,充值或支付过程,根据CRL.OnlinePay.IPayHistory对象进行判断
//o.ProductOrderId 传入订单编号
//o.OrderId 支付订单编号
//o.OrderType 支付类型 var charge = Core.Business.Merchant.ManualChargeManage.Instance.QueryItem(b => b.OrderId == o.ProductOrderId);//找到业务对象 Core.Business.Merchant.ManualChargeManage.Instance.ConfirmManual(charge, out error)//确认操作,进行充值或确认订单 };

是不是很简单

CRL中只封装了支付宝和财付通接口,如需要其它类型,可按定义结构,实现CRL.OnlinePay.Company.CompanyBase 

使用封装的在线支付

标签:blog   http   io   os   使用   ar   strong   sp   div   

原文地址:http://www.cnblogs.com/hubro/p/4026454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!