Beispiel #1
0
 public PayController(IRechargeService rechargeService, ICustomerService customer, AlipayService alipayService, IConfiguration configuration)
 {
     _rechargeService = rechargeService;
     _customer        = customer;
     _alipayService   = alipayService;
     _configuration   = configuration;
 }
Beispiel #2
0
 public AliReturnController(IRechargeService rechargeService, IBalanceService balanceService, RedisHelper redisHelper, ICustomerService customerService, AlipayService alipayService, IConfiguration configuration)
 {
     _rechargeService = rechargeService;
     _balanceService  = balanceService;
     _redisHelper     = redisHelper;
     _customerService = customerService;
     _alipayService   = alipayService;
     _configuration   = configuration;
 }
Beispiel #3
0
 public DefatultAlipayHelper(
     AlipayF2FService alipayF2FService,
     AlipayService alipayService,
     IOptions <FTFConfig> fTFConfigOptions
     )
 {
     _alipayF2FService = alipayF2FService;
     _alipayService    = alipayService;
     _fTFConfig        = fTFConfigOptions.Value;
 }
Beispiel #4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////////////
        AlipayConfig con           = new AlipayConfig();
        string       partner       = con.Partner;
        string       key           = con.Key;
        string       input_charset = con.Input_charset;
        string       sign_type     = con.Sign_type;

        ////////////////////////////////////////////////////////////////////////////////////////////////////

        ///////////////////////请求参数/////////////////////////////////////////////////////////////////////
        //--------------必填参数--------------
        //支付宝交易号。它是登陆支付宝网站在交易管理中查询得到,一般以8位日期开头的纯数字(如:20100419XXXXXXXXXX)
        string trade_no = Request.Form["trade_no"];

        //物流公司名称
        string logistics_name = Request.Form["logistics_name"];

        //物流发货单号
        string invoice_no = Request.Form["invoice_no"];

        //物流发货时的运输类型,三个值可选:POST(平邮)、EXPRESS(快递)、EMS(EMS)
        string transport_type = Request.Form["transport_type"];

        //--------------选填参数--------------
        //卖家本地电脑IP地址
        string seller_ip = "";

        /////////////////////////////////////////////////////////////////////////////////////////////////////

        //构造请求函数
        AlipayService aliService = new AlipayService(
            partner,
            trade_no,
            logistics_name,
            invoice_no,
            transport_type,
            seller_ip,
            key,
            input_charset,
            sign_type);

        string sHtmlText = aliService.Build_Form();

        Response.Write(sHtmlText);
    }
Beispiel #5
0
 public H5PayController(AlipayService alipayService)
 {
     _alipayService = alipayService;
 }
Beispiel #6
0
        /// <summary>
        /// 支付宝生成接口URL
        /// </summary>
        /// <param name="orderNo">订单号</param>
        /// <param name="subject_in">订单名称</param>
        /// <param name="body_in">订单描述</param>
        /// <param name="price_in">金额</param>
        /// <returns></returns>
        public string GetPayUrlByZFB(string orderNo, string subject_in, string body_in, decimal price_in)
        {
            ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的///////////////////////////
            string partner       = AlipayParameters.Partner;                                                         //合作身份者ID
            string key           = AlipayParameters.Key;                                                             //安全检验码
            string seller_email  = AlipayParameters.Seller_mailer;                                                   //签约支付宝账号或卖家支付宝帐户
            string input_charset = AlipayParameters.Input_Charset;                                                   //字符编码格式 目前支持 gbk 或 utf-8
            string notify_url    = AlipayParameters.DomainPath + "/TicketsCenter/alipay/repurchase/notify_url.aspx"; //交易过程中服务器通知的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数
            string return_url    = Domain.UserBackCenter + "/TicketsCenter/alipay/repurchase/Return_url.aspx";       //付完款后跳转的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数
            string show_url      = "";                                                                               //Domain.UserBackCenter + "/TicketsCenter/alipay/repurchase/MyOrder.aspx";                     //网站商品的展示地址,不允许加?id=123这类自定义参数
            string sign_type     = AlipayParameters.SignType;                                                        //加密方式 不需修改
            string antiphishing  = "0";                                                                              //防钓鱼功能开关,'0'表示该功能关闭,'1'表示该功能开启。默认为关闭
            //一旦开启,就无法关闭,根据商家自身网站情况请慎重选择是否开启。
            //申请开通方法:联系我们的客户经理或拨打商户服务电话0571-88158090,帮忙申请开通
            //若要使用防钓鱼功能,建议使用POST方式请求数据

            ////////////////////////////////////////////////////////////////////////////////////////////////////

            ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得////////////////////////////////
            //必填参数
            string out_trade_no = orderNo;                 //请与贵网站订单系统中的唯一订单号匹配
            string subject      = subject_in;              //订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
            string body         = body_in;                 //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
            string total_fee    = price_in.ToString("F2"); //订单总金额,显示在支付宝收银台里的“应付总额”里


            //扩展功能参数——网银提前
            //string paymethod = "bankPay";                                   //默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付)
            //string defaultbank = "CMB";                                     //默认网银代号,代号列表见http://club.alipay.com/read.php?tid=8681379
            //zxb 修改 此处暂不需要网银提前功能
            string paymethod   = "directPay";
            string defaultbank = "";

            //扩展功能参数——防钓鱼
            string encrypt_key     = "";                                    //防钓鱼时间戳,初始值
            string exter_invoke_ip = "";                                    //客户端的IP地址,初始值

            if (antiphishing == "1")
            {
                encrypt_key     = AlipayFunction.Query_timestamp(partner);
                exter_invoke_ip = "";                                       //获取客户端的IP地址,建议:编写获取客户端IP地址的程序
            }

            //扩展功能参数——其他
            string extra_common_param = "";                //自定义参数,可存放任何内容(除=、&等特殊字符外),不会显示在页面上
            string buyer_email        = "";                //默认买家支付宝账号

            //扩展功能参数——分润(若要使用,请按照注释要求的格式赋值)
            string royalty_type       = "";                             //提成类型,该值为固定值:10,不需要修改
            string royalty_parameters = "";
            //提成信息集,与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条
            //提成信息集格式为:收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2
            //如:
            //royalty_type = "10";
            //royalty_parameters = "[email protected]^0.01^分润备注一|[email protected]^0.01^分润备注二";

            //扩展功能参数——自定义超时(若要使用,请按照注释要求的格式赋值)
            //该功能默认不开通,需联系客户经理咨询
            string it_b_pay = "";  //超时时间,不填默认是15天。八个值可选:1h(1小时),2h(2小时),3h(3小时),1d(1天),3d(3天),7d(7天),15d(15天),1c(当天)

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            //构造请求函数
            AlipayService aliService = new AlipayService(partner, seller_email, return_url, notify_url, show_url, out_trade_no, subject, body, total_fee, paymethod, defaultbank, encrypt_key, exter_invoke_ip, extra_common_param, buyer_email, royalty_type, royalty_parameters, it_b_pay, key, input_charset, sign_type);

            //GET方式传递
            return(aliService.Create_url());
        }
Beispiel #7
0
 public PayController(IWebHostEnvironment hostingEnvironment,
                      AlipayService alipayService)
 {
     _hostingEnvironment = hostingEnvironment;
     _alipayService      = alipayService;
 }
Beispiel #8
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的///////////////////////////
        AlipayConfig con           = new AlipayConfig();
        string       partner       = con.Partner;
        string       key           = con.Key;
        string       seller_email  = con.Seller_email;
        string       input_charset = con.Input_charset;
        string       notify_url    = con.Notify_url;
        string       return_url    = con.Return_url;
        string       show_url      = con.Show_url;
        string       sign_type     = con.Sign_type;

        ////////////////////////////////////////////////////////////////////////////////////////////////////

        ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得////////////////////////////////
        //必填参数
        string out_trade_no = DateTime.Now.ToString("yyyyMMddHHmmss");  //请与贵网站订单系统中的唯一订单号匹配
        string subject      = Request.Form["aliorder"];                 //订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
        string body         = Request.Form["alibody"];                  //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
        string price        = Request.Form["alimoney"];                 //订单总金额,显示在支付宝收银台里的“商品单价”里

        string logistics_fee     = "0.00";                              //物流费用,即运费。
        string logistics_type    = "EXPRESS";                           //物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
        string logistics_payment = "SELLER_PAY";                        //物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)

        string quantity = "1";                                          //商品数量,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品。

        //扩展参数——买家收货信息(推荐作为必填)
        //该功能作用在于买家已经在商户网站的下单流程中填过一次收货信息,而不需要买家在支付宝的付款流程中再次填写收货信息。
        //若要使用该功能,请至少保证receive_name、receive_address有值
        //收货信息格式请严格按照姓名、地址、邮编、电话、手机的格式填写
        string receive_name    = "收货人姓名";                                   //收货人姓名,如:张三
        string receive_address = "收货人地址";                                   //收货人地址,如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号
        string receive_zip     = "123456";                                  //收货人邮编,如:123456
        string receive_phone   = "0571-81234567";                           //收货人电话号码,如:0571-81234567
        string receive_mobile  = "13312341234";                             //收货人手机号码,如:13312341234

        //扩展参数——第二组物流方式
        //物流方式是三个为一组成组出现。若要使用,三个参数都需要填上数据;若不使用,三个参数都需要为空
        //有了第一组物流方式,才能有第二组物流方式,且不能与第一个物流方式中的物流类型相同,
        //即logistics_type="EXPRESS",那么logistics_type_1就必须在剩下的两个值(POST、EMS)中选择
        string logistics_fee_1     = "";                                                //物流费用,即运费。
        string logistics_type_1    = "";                                                //物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
        string logistics_payment_1 = "";                                                //物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)

        //扩展参数——第三组物流方式
        //物流方式是三个为一组成组出现。若要使用,三个参数都需要填上数据;若不使用,三个参数都需要为空
        //有了第一组物流方式和第二组物流方式,才能有第三组物流方式,且不能与第一组物流方式和第二组物流方式中的物流类型相同,
        //即logistics_type="EXPRESS"、logistics_type_1="EMS",那么logistics_type_2就只能选择"POST"
        string logistics_fee_2     = "";                                                //物流费用,即运费。
        string logistics_type_2    = "";                                                //物流类型,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
        string logistics_payment_2 = "";                                                //物流支付方式,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)

        //扩展功能参数——其他
        string buyer_email = "";                                                        //默认买家支付宝账号
        string discount    = "";                                                        //折扣,是具体的金额,而不是百分比。若要使用打折,请使用负数,并保证小数点最多两位数

        /////////////////////////////////////////////////////////////////////////////////////////////////////

        //构造请求函数,无需修改
        AlipayService aliService = new AlipayService(
            partner,
            seller_email,
            return_url,
            notify_url,
            show_url,
            out_trade_no,
            subject,
            body,
            price,
            logistics_fee,
            logistics_type,
            logistics_payment,
            quantity,
            receive_name,
            receive_address,
            receive_zip,
            receive_phone,
            receive_mobile,
            logistics_fee_1,
            logistics_type_1,
            logistics_payment_1,
            logistics_fee_2,
            logistics_type_2,
            logistics_payment_2,
            buyer_email,
            discount,
            key,
            input_charset,
            sign_type);
        string sHtmlText = aliService.Build_Form();

        //打印页面
        lbOut_trade_no.Text = out_trade_no;
        lbTotal_fee.Text    = price;
        lbButton.Text       = sHtmlText;
    }
 public AlipayHandler(IOptionsMonitor <AlipayOptions> options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock, AlipayService alipayService)
     : base(options, logger, encoder, clock)
 {
     _alipayService = alipayService;
 }
Beispiel #10
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的///////////////////////////
        AlipayConfig con           = new AlipayConfig();
        string       partner       = con.Partner;
        string       key           = con.Key;
        string       seller_email  = con.Seller_email;
        string       input_charset = con.Input_charset;
        string       notify_url    = con.Notify_url;
        string       return_url    = con.Return_url;
        string       show_url      = con.Show_url;
        string       sign_type     = con.Sign_type;

        ////////////////////////////////////////////////////////////////////////////////////////////////////

        ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得////////////////////////////////
        //必填参数
        string orderID  = "";
        string priceSum = "";

        if (Request.Cookies["OrderNumberInfo"] != null)
        {
            orderID  = Request.Cookies["OrderNumberInfo"]["OrderNumber"].ToString();
            priceSum = Convert.ToSingle(Request.Cookies["OrderNumberInfo"]["SumMoney"].ToString()).ToString();
        }

        string out_trade_no = orderID;                  // DateTime.Now.ToString("yyyyMMddHHmmss");  //请与贵网站订单系统中的唯一订单号匹配
        string subject      = Request.Form["aliorder"]; //订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
        string body         = Request.Form["alibody"];  //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
        string total_fee    = Request.Form["alimoney"]; //订单总金额,显示在支付宝收银台里的“应付总额”里

        //扩展功能参数——默认支付方式
        string paymethod   = "";                                        //默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付),初始值
        string defaultbank = "";                                        //默认网银代号,代号列表见http://club.alipay.com/read.php?tid=8681379 初始值
        string pay_mode    = Request.Form["pay_bank"];

        if (pay_mode == "directPay")
        {
            paymethod = "directPay";
        }
        else
        {
            paymethod   = "bankPay";
            defaultbank = pay_mode;
        }


        //扩展功能参数——防钓鱼
        //请慎重选择是否开启防钓鱼功能
        //exter_invoke_ip、anti_phishing_key一旦被设置过,那么它们就会成为必填参数
        //建议使用POST方式请求数据
        string anti_phishing_key = "";                                  //防钓鱼时间戳
        string exter_invoke_ip   = "";                                  //获取客户端的IP地址,建议:编写获取客户端IP地址的程序
        //如:
        //exter_invoke_ip = "";
        //anti_phishing_key = AlipayFunction.Query_timestamp(partner);  //获取防钓鱼时间戳函数

        //扩展功能参数——其他
        string extra_common_param = "";                                 //自定义参数,可存放任何内容(除=、&等特殊字符外),不会显示在页面上
        string buyer_email        = "";                                 //默认买家支付宝账号

        //扩展功能参数——分润(若要使用,请按照注释要求的格式赋值)
        string royalty_type       = "";                             //提成类型,该值为固定值:10,不需要修改
        string royalty_parameters = "";
        //提成信息集,与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条
        //各分润金额的总和须小于等于total_fee
        //提成信息集格式为:收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2
        //如:
        //royalty_type = "10";
        //royalty_parameters = "[email protected]^0.01^分润备注一|[email protected]^0.01^分润备注二";

        /////////////////////////////////////////////////////////////////////////////////////////////////////

        //构造请求函数,无需修改
        AlipayService aliService = new AlipayService(partner, seller_email, return_url, notify_url, show_url, out_trade_no, subject, body, total_fee, paymethod, defaultbank, anti_phishing_key, exter_invoke_ip, extra_common_param, buyer_email, royalty_type, royalty_parameters, key, input_charset, sign_type);
        string        sHtmlText  = aliService.Build_Form();

        //打印页面
        lbOut_trade_no.Text = out_trade_no;
        lbTotal_fee.Text    = total_fee;
        lbButton.Text       = sHtmlText;
    }
Beispiel #11
0
        /// <param name="OrderNo">订单编号</param>
        /// <param name="planeInfo">航班信息(用户显示订单详细信息)</param>
        /// <param name="TotalAmount">总金额</param>
        /// <param name="SupplierCId">供应商公司编号</param>
        private void ShowCgSPayType(string OrderNo, decimal TotalAmount, string planeInfo, string SupplierCId, string OrderId)
        {
            //判断用户绑定的支付帐户信息 是否已经成功加入支付圈
            EyouSoft.IBLL.TicketStructure.ITicketCompanyAccount bll =
                EyouSoft.BLL.TicketStructure.TicketCompanyAccount.CreateInstance();

            //当前只能判断支付宝接口的帐户
            IList <EyouSoft.Model.TicketStructure.TicketCompanyAccount> accountList =
                bll.GetTicketCompanyAccountList(SupplierCId);

            if (accountList != null && accountList.Count > 0)
            {
                foreach (EyouSoft.Model.TicketStructure.TicketCompanyAccount account in accountList)
                {
                    if (account.InterfaceType == EyouSoft.Model.TicketStructure.TicketAccountType.支付宝)
                    {
                        if (account.IsSign)//已经签约
                        {
                            divPayType.Visible = true;
                            #region 支付配置
                            ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的///////////////////////////
                            string partner       = AlipayParameters.Partner;                                                                 //合作身份者ID
                            string key           = AlipayParameters.Key;                                                                     //安全检验码
                            string seller_email  = AlipayParameters.Seller_mailer;                                                           //签约支付宝账号或卖家支付宝帐户
                            string input_charset = AlipayParameters.Input_Charset;                                                           //字符编码格式 目前支持 gbk 或 utf-8
                            string notify_url    = AlipayParameters.DomainPath + "/AirTickets/alipay/directpay/notify_url.aspx";             //交易过程中服务器通知的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数
                            string return_url    = Domain.UserPublicCenter + "/AirTickets/alipay/directpay/Return_url.aspx";                 //付完款后跳转的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数
                            string show_url      = Domain.UserPublicCenter + "/AirTickets/OrderManage/OrderDetails.aspx?OrderId=" + OrderId; //网站商品的展示地址,不允许加?id=123这类自定义参数
                            string sign_type     = AlipayParameters.SignType;                                                                //加密方式 不需修改
                            string antiphishing  = "0";                                                                                      //防钓鱼功能开关,'0'表示该功能关闭,'1'表示该功能开启。默认为关闭
                            //一旦开启,就无法关闭,根据商家自身网站情况请慎重选择是否开启。
                            //申请开通方法:联系我们的客户经理或拨打商户服务电话0571-88158090,帮忙申请开通
                            //若要使用防钓鱼功能,建议使用POST方式请求数据

                            ////////////////////////////////////////////////////////////////////////////////////////////////////

                            ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得////////////////////////////////
                            //必填参数
                            string out_trade_no = OrderNo;                            //请与贵网站订单系统中的唯一订单号匹配
                            string subject      = "同业114机票平台(订单号:" + OrderNo + ")";   //订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
                            string body         = "订单号:" + OrderNo + "/" + planeInfo; //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
                            string total_fee    = Utils.GetMoney(TotalAmount);        //订单总金额,显示在支付宝收银台里的“应付总额”里


                            //扩展功能参数——网银提前
                            //string paymethod = "bankPay";                                   //默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付)
                            //string defaultbank = "CMB";                                     //默认网银代号,代号列表见http://club.alipay.com/read.php?tid=8681379
                            //zxb 修改 此处暂不需要网银提前功能
                            string paymethod   = "directPay";
                            string defaultbank = "";

                            //扩展功能参数——防钓鱼
                            string encrypt_key     = "";                                    //防钓鱼时间戳,初始值
                            string exter_invoke_ip = "";                                    //客户端的IP地址,初始值
                            if (antiphishing == "1")
                            {
                                encrypt_key     = AlipayFunction.Query_timestamp(partner);
                                exter_invoke_ip = "";                                       //获取客户端的IP地址,建议:编写获取客户端IP地址的程序
                            }

                            //扩展功能参数——其他
                            string extra_common_param = "";                //自定义参数,可存放任何内容(除=、&等特殊字符外),不会显示在页面上
                            string buyer_email        = "";                //默认买家支付宝账号

                            //扩展功能参数——分润(若要使用,请按照注释要求的格式赋值)
                            string royalty_type       = "";                             //提成类型,该值为固定值:10,不需要修改
                            string royalty_parameters = "";
                            //提成信息集,与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条
                            //提成信息集格式为:收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2
                            //如:
                            //royalty_type = "10";
                            //royalty_parameters = "[email protected]^0.01^分润备注一|[email protected]^0.01^分润备注二";

                            //扩展功能参数——自定义超时(若要使用,请按照注释要求的格式赋值)
                            //该功能默认不开通,需联系客户经理咨询
                            string it_b_pay = "";  //超时时间,不填默认是15天。八个值可选:1h(1小时),2h(2小时),3h(3小时),1d(1天),3d(3天),7d(7天),15d(15天),1c(当天)

                            /////////////////////////////////////////////////////////////////////////////////////////////////////

                            //构造请求函数
                            AlipayService aliService = new AlipayService(partner, seller_email, return_url, notify_url, show_url, out_trade_no, subject, body, total_fee, paymethod, defaultbank, encrypt_key, exter_invoke_ip, extra_common_param, buyer_email, royalty_type, royalty_parameters, it_b_pay, key, input_charset, sign_type);

                            //GET方式传递
                            string url = aliService.Create_url();
                            PayHtmlText += "<a href=" + url + " onclick=\"return OrderDetails.InsertAccount('2');\"><img border='0' src='" + Domain.ServerComponents + "/images/jipiao/alipay.jpg' /></a>" + "&nbsp;&nbsp;&nbsp;";

                            #endregion
                        }
                    }
                    if (account.InterfaceType == EyouSoft.Model.TicketStructure.TicketAccountType.财付通)
                    {
                        if (account.IsSign) //供应商已经签约财付通
                        {
                            divPayType.Visible = true;
                            #region 财付通支付配置
                            //商户号
                            string bargainor_id = TenpayParameters.Bargainor_ID;
                            //密钥
                            string key1 = TenpayParameters.Key;

                            //当前时间 yyyyMMdd
                            string date = DateTime.Now.ToString("yyyyMMdd");
                            ////生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一
                            string strReq = "" + DateTime.Now.ToString("HHmmss") + TenpayUtil.BuildRandomStr(4);

                            ////商户订单号,不超过32位,财付通只做记录,不保证唯一性
                            //string sp_billno = strReq;

                            // 财付通交易单号,规则为:10位商户号+8位时间(YYYYmmdd)+10位流水号 ,商户根据自己情况调整,只要保证唯一及符合规则就行
                            string transaction_id = bargainor_id + date + strReq;


                            //创建PayRequestHandler实例
                            PayRequestHandler reqHandler = new PayRequestHandler(Context);
                            //初始化
                            reqHandler.init();
                            //设置密钥
                            reqHandler.setKey(key1);
                            //-----------------------------
                            //设置支付参数
                            //-----------------------------
                            reqHandler.setParameter("bargainor_id", bargainor_id);                                                               //商户号
                            reqHandler.setParameter("sp_billno", OrderNo);                                                                       //商家订单号
                            reqHandler.setParameter("transaction_id", transaction_id);                                                           //财付通交易单号
                            reqHandler.setParameter("return_url", TenpayParameters.DomainPath + "/AirTickets/tenpay/directpay/Return_url.aspx"); //支付通知url
                            reqHandler.setParameter("desc", string.Format("同业114机票平台(订单号:{0})", OrderNo));                                       //商品名称
                            reqHandler.setParameter("total_fee", Utils.GetMoney(TotalAmount * 100));                                             //商品金额,以分为单
                            reqHandler.setParameter("cs", TenpayParameters.Input_Charset);                                                       //设置编码
                            //用户的公网ip,测试时填写127.0.0.1,只能支持10分以下交易
                            reqHandler.setParameter("spbill_create_ip", Page.Request.UserHostAddress);

                            //获取请求带参数的url
                            string requestUrl = reqHandler.getRequestURL();

                            //Get的实现方式
                            string a_link = "<a  onclick=\"return OrderDetails.InsertAccount('1')\" href=\"" + requestUrl + "\"><img border='0' src='" + Domain.ServerComponents + "/images/jipiao/cft.jpg'  /></a>";
                            PayHtmlText += a_link + "&nbsp;&nbsp;&nbsp;";
                            #endregion
                        }
                    }
                }
            }
        }
Beispiel #12
0
        public ActionResult Index(int orderid)
        {
            Inpinke_Order model = DBOrderBLL.GetOrderByID(orderid);

            if (model == null)
            {
                ViewBag.Msg = "对不起,没有找到您要支付的订单,请尝试重新登录下单。";
                return(View("error"));
            }

            //必填参数//
            //请与贵网站订单系统中的唯一订单号匹配
            string out_trade_no = model.OrderCode;
            //订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
            string subject = "Inpinke-印品客印品";
            //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
            string body = "您在Inpinke-印品客网站定制印刷的" + model.Inpinke_Order_Products.Count() + "件印品";
            //订单总金额,显示在支付宝收银台里的“应付总额”里
            string total_fee = model.TotalPrice.ToString();

            //扩展功能参数——默认支付方式//

            //默认支付方式,代码见“即时到帐接口”技术文档
            string paymethod = "";
            //默认网银代号,代号列表见“即时到帐接口”技术文档“附录”→“银行列表”
            string defaultbank = "";

            //扩展功能参数——防钓鱼//

            //防钓鱼时间戳
            string anti_phishing_key = "";
            //获取客户端的IP地址,建议:编写获取客户端IP地址的程序
            string exter_invoke_ip = "";
            //注意:
            //请慎重选择是否开启防钓鱼功能
            //exter_invoke_ip、anti_phishing_key一旦被设置过,那么它们就会成为必填参数
            //建议使用POST方式请求数据
            //示例:
            //exter_invoke_ip = "";
            //Service aliQuery_timestamp = new Service();
            //anti_phishing_key = aliQuery_timestamp.Query_timestamp();               //获取防钓鱼时间戳函数

            //扩展功能参数——其他//

            //商品展示地址,要用http:// 格式的完整路径,不允许加?id=123这类自定义参数
            string show_url = AlipayConfig.Show_Url;
            //自定义参数,可存放任何内容(除=、&等特殊字符外),不会显示在页面上
            string extra_common_param = "";
            //默认买家支付宝账号
            string buyer_email = "";

            //扩展功能参数——分润(若要使用,请按照注释要求的格式赋值)//

            //提成类型,该值为固定值:10,不需要修改
            string royalty_type = "";
            //提成信息集
            string royalty_parameters = "";
            //注意:
            //与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条
            //各分润金额的总和须小于等于total_fee
            //提成信息集格式为:收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2
            //示例:
            //royalty_type = "10";
            //royalty_parameters = "[email protected]^0.01^分润备注一|[email protected]^0.01^分润备注二";
            //构造即时到帐接口表单提交HTML数据,无需修改
            //把请求参数打包成数组
            SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();

            sParaTemp.Add("payment_type", "1");
            sParaTemp.Add("show_url", show_url);
            sParaTemp.Add("out_trade_no", out_trade_no);
            sParaTemp.Add("subject", subject);
            sParaTemp.Add("body", body);
            sParaTemp.Add("total_fee", total_fee);
            sParaTemp.Add("paymethod", paymethod);
            sParaTemp.Add("defaultbank", defaultbank);
            sParaTemp.Add("anti_phishing_key", anti_phishing_key);
            sParaTemp.Add("exter_invoke_ip", exter_invoke_ip);
            sParaTemp.Add("extra_common_param", extra_common_param);
            sParaTemp.Add("buyer_email", buyer_email);
            sParaTemp.Add("royalty_type", royalty_type);
            sParaTemp.Add("royalty_parameters", royalty_parameters);

            AlipayService ali       = new AlipayService();
            string        sHtmlText = ali.Create_direct_pay_by_user(sParaTemp);

            return(Content(sHtmlText));
        }
 public FTFPayController(IHostingEnvironment hostingEnvironment, AlipayF2FService alipayF2FService, AlipayService alipayService)
 {
     _hostingEnvironment = hostingEnvironment;
     _alipayF2FService   = alipayF2FService;
     _alipayService      = alipayService;
 }
Beispiel #14
0
        /// <summary>
        /// 获取支付链接
        /// </summary>
        /// <param name="payWhich">支付方式</param>
        /// <param name="orderNo">订单号</param>
        /// <param name="totol">金额</param>
        /// <returns></returns>
        protected string GetPayUrl(string payWhich, string orderNo, decimal total, string freightType)
        {
            string url = "";

            switch (payWhich)//2-支付宝,1-财付通,3-工行,4-建行,5-农行,6-招行,7-其它
            {
            case "2":
                ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的///////////////////////////
                string partner       = AlipayParameters.Partner;                                                     //合作身份者ID
                string key           = AlipayParameters.Key;                                                         //安全检验码
                string seller_email  = AlipayParameters.Seller_mailer;                                               //签约支付宝账号或卖家支付宝帐户
                string input_charset = AlipayParameters.Input_Charset;                                               //字符编码格式 目前支持 gbk 或 utf-8
                string notify_url    = AlipayParameters.DomainPath + "/AirTickets/alipay/directpay/notify_url.aspx"; //交易过程中服务器通知的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数
                string return_url    = Domain.UserPublicCenter + "/AirTickets/alipay/directpay/Return_url.aspx";     //付完款后跳转的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数
                string show_url      = Domain.UserPublicCenter + "/AirTickets/alipay/directpay/MyOrder.aspx";        //网站商品的展示地址,不允许加?id=123这类自定义参数
                string sign_type     = AlipayParameters.SignType;                                                    //加密方式 不需修改
                string antiphishing  = "0";                                                                          //防钓鱼功能开关,'0'表示该功能关闭,'1'表示该功能开启。默认为关闭
                //一旦开启,就无法关闭,根据商家自身网站情况请慎重选择是否开启。
                //申请开通方法:联系我们的客户经理或拨打商户服务电话0571-88158090,帮忙申请开通
                //若要使用防钓鱼功能,建议使用POST方式请求数据

                ////////////////////////////////////////////////////////////////////////////////////////////////////

                ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得////////////////////////////////
                //必填参数
                string CgsPayInfo = "";
                if (freightType == "1")
                {
                    CgsPayInfo = "航班信息(单程):" + Utils.GetFormValue("leaveTime") + "/" + Utils.GetFormValue("homeCityName") + "至" + Utils.GetFormValue("destCityName");
                }
                else if (freightType == "2")
                {
                    CgsPayInfo = "航班信息(往返程):去程" + Utils.GetFormValue("leaveTime") + "/" + Utils.GetFormValue("homeCityName") + "至" + Utils.GetFormValue("destCityName") + ";" + " 回程" + Utils.GetFormValue("returnTime") + "/" + Utils.GetFormValue("destCityName") + "至" + Utils.GetFormValue("homeCityName");
                }
                string out_trade_no = orderNo;                             //DateTime.Now.ToString("yyyyMMddHHmmss");;  //请与贵网站订单系统中的唯一订单号匹配
                string subject      = "同业114机票平台(订单号:" + orderNo + ")";    //订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
                string body         = "订单号:" + orderNo + "/" + CgsPayInfo; //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
                string total_fee    = Utils.GetMoney(total);               //订单总金额,显示在支付宝收银台里的“应付总额”里


                //扩展功能参数——网银提前
                //string paymethod = "bankPay";                                   //默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付)
                //string defaultbank = "CMB";                                     //默认网银代号,代号列表见http://club.alipay.com/read.php?tid=8681379
                //zxb 修改 此处暂不需要网银提前功能
                string paymethod   = "directPay";
                string defaultbank = "";

                //扩展功能参数——防钓鱼
                string encrypt_key     = "";                                    //防钓鱼时间戳,初始值
                string exter_invoke_ip = "";                                    //客户端的IP地址,初始值
                if (antiphishing == "1")
                {
                    encrypt_key     = AlipayFunction.Query_timestamp(partner);
                    exter_invoke_ip = "";                                       //获取客户端的IP地址,建议:编写获取客户端IP地址的程序
                }

                //扩展功能参数——其他
                string extra_common_param = "";                //自定义参数,可存放任何内容(除=、&等特殊字符外),不会显示在页面上
                string buyer_email        = "";                //默认买家支付宝账号

                //扩展功能参数——分润(若要使用,请按照注释要求的格式赋值)
                string royalty_type       = "";                             //提成类型,该值为固定值:10,不需要修改
                string royalty_parameters = "";
                //提成信息集,与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条
                //提成信息集格式为:收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2
                //如:
                //royalty_type = "10";
                //royalty_parameters = "[email protected]^0.01^分润备注一|[email protected]^0.01^分润备注二";

                //扩展功能参数——自定义超时(若要使用,请按照注释要求的格式赋值)
                //该功能默认不开通,需联系客户经理咨询
                string it_b_pay = "";  //超时时间,不填默认是15天。八个值可选:1h(1小时),2h(2小时),3h(3小时),1d(1天),3d(3天),7d(7天),15d(15天),1c(当天)

                /////////////////////////////////////////////////////////////////////////////////////////////////////

                //构造请求函数
                AlipayService aliService = new AlipayService(partner, seller_email, return_url, notify_url, show_url, out_trade_no, subject, body, total_fee, paymethod, defaultbank, encrypt_key, exter_invoke_ip, extra_common_param, buyer_email, royalty_type, royalty_parameters, it_b_pay, key, input_charset, sign_type);
                //GET方式传递
                url = aliService.Create_url();
                break;

            case "1":
                //商户号
                string bargainor_id = TenpayParameters.Bargainor_ID;
                //密钥
                string key1 = TenpayParameters.Key;

                //当前时间 yyyyMMdd
                string date = DateTime.Now.ToString("yyyyMMdd");
                ////生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一
                string strReq = "" + DateTime.Now.ToString("HHmmss") + TenpayUtil.BuildRandomStr(4);

                ////商户订单号,不超过32位,财付通只做记录,不保证唯一性
                //string sp_billno = strReq;

                // 财付通交易单号,规则为:10位商户号+8位时间(YYYYmmdd)+10位流水号 ,商户根据自己情况调整,只要保证唯一及符合规则就行
                string transaction_id = bargainor_id + date + strReq;


                //创建PayRequestHandler实例
                PayRequestHandler reqHandler = new PayRequestHandler(Context);
                //初始化
                reqHandler.init();
                //设置密钥
                reqHandler.setKey(key1);
                //-----------------------------
                //设置支付参数
                //-----------------------------
                reqHandler.setParameter("bargainor_id", bargainor_id);                                                               //商户号
                reqHandler.setParameter("sp_billno", orderNo);                                                                       //商家订单号
                reqHandler.setParameter("transaction_id", transaction_id);                                                           //财付通交易单号
                reqHandler.setParameter("return_url", TenpayParameters.DomainPath + "/AirTickets/tenpay/directpay/Return_url.aspx"); //支付通知url
                reqHandler.setParameter("desc", string.Format("同业114机票平台(订单号:{0})", orderNo));                                       //商品名称
                reqHandler.setParameter("total_fee", Utils.GetMoney(total * 100));                                                   //商品金额,以分为单
                reqHandler.setParameter("cs", TenpayParameters.Input_Charset);                                                       //设置编码
                //用户的公网ip,测试时填写127.0.0.1,只能支持10分以下交易
                reqHandler.setParameter("spbill_create_ip", Page.Request.UserHostAddress);
                //获取请求带参数的url
                url = reqHandler.getRequestURL();
                break;
            }
            return(url);
        }
Beispiel #15
0
        /// <summary>
        /// ����ʹ��֧������ʱ���ʽӿڵ�ַ
        /// </summary>
        /// <param name="out_trade_no">��վ�ڲ�ʹ�ý���Ψһ����</param>
        /// <param name="subject">���׶������� ��:��Ʒ001</param>
        /// <param name="body">��������</param>
        /// <param name="price">����</param>
        /// <param name="total_fee">�����ܽ��</param>
        /// <param name="return_url">�û����ѳɹ��󷵻ص�ַ</param>
        /// <param name="notify_url">֧�����ʺ�֪ͨʱ��������Ϣ��վ��ʹ�õ�ַ</param>
        /// <returns></returns>
        public string CreatDirectPayUrl(
             string out_trade_no,
             string subject,
             string body,
             string total_fee,
             string return_url,
             string notify_url
             )
        {
            ///////////////////////���²�������Ҫ���õ�������ò��������ú󲻻���ĵ�///////////////////////////
            string partner = "2088002797726242";                                     //���������ID
            string key = "k2zawv6e5g5p0zaenrv9obvqc2kt5977";                         //��ȫ������
            string seller_email = "*****@*****.**";                             //ǩԼ֧�����˺Ż����֧�����ʻ�
            string input_charset = "utf-8";                                          //�ַ������ʽ Ŀǰ֧�� gb2312 �� utf-8
            //string notify_url = "http://www.xxx.com/js_vs2005_utf8/notify_url.aspx"; //���׹����з�����֪ͨ��ҳ�� Ҫ�� http://��ʽ������·�����������?id=123�����Զ������
            //string return_url = "http://*****:*****@126.com^0.01^����עһ|[email protected]^0.01^����ע��";

            //��չ���ܲ��������Զ��峬ʱ(��Ҫʹ�ã��밴��ע��Ҫ��ĸ�ʽ��ֵ)
            //�ù���Ĭ�ϲ���ͨ������ϵ�ͻ�������ѯ
            string it_b_pay = "";  //��ʱʱ�䣬����Ĭ����15�졣�˸�ֵ��ѡ��1h(1Сʱ),2h(2Сʱ),3h(3Сʱ),1d(1��),3d(3��),7d(7��),15d(15��),1c(����)

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            //����������
            AlipayService aliService = new AlipayService(
                partner,
                seller_email,
                return_url,
                notify_url,
                show_url,
                out_trade_no,
                subject,
                body,
                total_fee,
                paymethod,
                defaultbank,
                encrypt_key,
                exter_invoke_ip,
                extra_common_param,
                buyer_email,
                royalty_type,
                royalty_parameters,
                it_b_pay,
                key,
                input_charset,
                sign_type);

            //GET��ʽ����
            string url = aliService.Create_url();

            //POST��ʽ���ݣ��õ����ܽ���ַ�������POST��ʽ���ݣ���������Ǿ�ע��ȥ���
            //string sHtmlText = aliService.Build_postform();

            return url;
        }
Beispiel #16
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的////////////////////////////
        AlipayConfig con = new AlipayConfig();
        string partner = con.Partner;
        string key = con.Key;
        string input_charset = con.Input_charset;
        string sign_type = con.Sign_type;

        ////////////////////////////////////////////////////////////////////////////////////////////////////

        ///////////////////////请求参数/////////////////////////////////////////////////////////////////////
        //--------------必填参数--------------
        //支付宝交易号。它是登陆支付宝网站在交易管理中查询得到,一般以8位日期开头的纯数字(如:20100419XXXXXXXXXX) 
        string trade_no = Request.Form["trade_no"];

        //物流公司名称
        string logistics_name = Request.Form["logistics_name"];

        //物流发货单号
        string invoice_no = Request.Form["invoice_no"];

        //物流发货时的运输类型,三个值可选:POST(平邮)、EXPRESS(快递)、EMS(EMS)
        string transport_type = Request.Form["transport_type"];

        //--------------选填参数--------------
        //卖家本地电脑IP地址
        string seller_ip = "";

        /////////////////////////////////////////////////////////////////////////////////////////////////////

        //构造请求函数
        AlipayService aliService = new AlipayService(
            partner,
            trade_no,
            logistics_name,
            invoice_no,
            transport_type,
            seller_ip,
            key,
            input_charset,
            sign_type);

        /***********************无XML远程解析***********************/
        //string sHtmlText = aliService.Build_Form();
        //Response.Write(sHtmlText);
        //Response.End();


        /***********************含XML远程解析***********************/
        //注意:远程解析XML出错,与IIS服务器配置有关
        string url = aliService.Create_url();

        XmlTextReader Reader = new XmlTextReader(url);
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(Reader);

        //解析XML,获取XML返回的数据,如:请求处理是否成功、商家网站唯一订单号、支付宝交易号、发货时间等
        string nodeIs_success = xmlDoc.SelectSingleNode("/alipay/is_success").InnerText;
        string nodeOut_trade_no = "";
        string nodeTrade_no = "";
        string nodeTrade_status = "";
        string nodeLast_modified_time = "";
        string nodeError = "";

        if (nodeIs_success == "T")
        {
            nodeOut_trade_no = xmlDoc.SelectSingleNode("/alipay/response/tradeBase/out_trade_no").InnerText;
            nodeTrade_no = xmlDoc.SelectSingleNode("/alipay/request").ChildNodes[2].InnerText;
            nodeTrade_status = xmlDoc.SelectSingleNode("/alipay/response/tradeBase/trade_status").InnerText;
            nodeLast_modified_time = xmlDoc.SelectSingleNode("/alipay/response/tradeBase/last_modified_time").InnerText;
        }
        else
        {
            nodeError = xmlDoc.SelectSingleNode("/alipay/error").InnerText;
        }

        //打印页面
        StringBuilder sbHtml = new StringBuilder();
        sbHtml.Append("<table align=center width=350 cellpadding=5 cellspacing=0>");
        sbHtml.Append("<tr><td align=center class=font_title colspan=2>XML返回</td></tr>");
        sbHtml.Append("<tr><td class=font_content align=right>请求处理是否成功:</td><td class=font_content align=left>" + nodeIs_success + "</td></tr>");
        if (nodeIs_success == "T")
        {
            sbHtml.Append("<tr><td class=font_content align=right>商户网站订单号:</td><td class=font_content align=left>" + nodeOut_trade_no + "</td></tr>");
            sbHtml.Append("<tr><td class=font_content align=right>支付宝交易号:</td><td class=font_content align=left>" + nodeTrade_no + "</td></tr>");
            sbHtml.Append("<tr><td class=font_content align=right>交易状态:</td><td class=font_content align=left>" + nodeTrade_status + "</td></tr>");
            sbHtml.Append("<tr><td class=font_content align=right>发货时间等:</td><td class=font_content align=left>" + nodeLast_modified_time + "</td></tr>");
        }
        else
        {
            sbHtml.Append("<tr><td class=font_content align=right>错误:</td><td class=font_content align=left>" + nodeError + "</td></tr>");
        }
        sbHtml.Append("</table>");

        LblXml.Text = sbHtml.ToString();

        ////////////////////////////////////////////////////////////////////////////////////////////////////
        //请在此处编写商户发货成功后的业务逻辑程序代码,以便把商户网站里的该笔订单与支付宝的订单信息同步。

        ///////////////////////////////////////////////////////////////////////////////////////////////////
    }
Beispiel #17
0
        public void PaymentTransactionTest()
        {
            if (string.IsNullOrEmpty(_alipayOptions.PrivateKey) || string.IsNullOrEmpty(_alipayOptions.AlipayPublicKey))
            {
                return;
            }

            var alipay     = new AlipayService(_alipayOptions);
            var tradeModel = new AlipayOrderModel {
                Amount  = 0.1m,
                OrderNo = OrderIdGen.New(),
                Subject = "UnitTest"
            };
            var paymentUrl = alipay.GenerateAlipayPaymentUrl(tradeModel).DesktopPagePaymentUrl;

            //Payment url is opened up in the default browser
            Process.Start(new ProcessStartInfo(paymentUrl)
            {
                UseShellExecute = true
            });

            ////////////////////////////////////////////////////////////////////////////////////////
            ///// THIS TEST REQUIRES MANUAL OPERATION, USE DEBUG MODE AND SET BREAK POINT HERE /////
            ////////////////////////////////////////////////////////////////////////////////////////

            //Open the url in browser
            //Pay manually in the opened page, then continue
            var queryResult = alipay.QueryOrder(tradeModel.OrderNo);

            Assert.AreEqual(tradeModel.Amount, queryResult.Data.Amount);

            var remainedAmount = tradeModel.Amount;

            //Refund 0.01
            var refundAmount    = 0.01m;
            var refundRequestNo = OrderIdGen.New();
            var refundResult    = alipay.Refund(tradeModel.OrderNo, refundRequestNo, refundAmount, "Test");

            Assert.IsTrue(refundResult.Ok);
            Assert.AreEqual(refundAmount, refundResult.Data.RefundAmount);

            remainedAmount -= refundAmount;

            //Query refund 0.01
            var queryRefundResult = alipay.QueryRefund(tradeModel.OrderNo, refundRequestNo);

            Assert.AreEqual(refundAmount, queryRefundResult.Data.RefundAmount);

            //Refund another 0.01
            var refundAmount2    = 0.01m;
            var refundRequestNo2 = OrderIdGen.New();
            var refundResult2    = alipay.Refund(tradeModel.OrderNo, refundRequestNo2, refundAmount2, "Test");

            Assert.IsTrue(refundResult2.Ok);
            Assert.AreEqual(refundAmount2, refundResult2.Data.RefundAmount);
            Assert.AreEqual(refundAmount + refundAmount2, refundResult2.Data.AggregatedRefundAmount);

            remainedAmount -= refundAmount2;

            //Query another refund 0.01
            var queryRefundResult2 = alipay.QueryRefund(tradeModel.OrderNo, refundRequestNo2);

            Assert.AreEqual(refundAmount2, queryRefundResult2.Data.RefundAmount);

            //Expected failure refund
            var refundAmount3 = tradeModel.Amount;
            var refundResult3 = alipay.Refund(tradeModel.OrderNo, OrderIdGen.New(), refundAmount3, "Test");

            Assert.IsFalse(refundResult3.Ok);
            Assert.IsNotNull(refundResult3.Message);

            //Refund all remained amount
            var refundResult4 = alipay.Refund(tradeModel.OrderNo, OrderIdGen.New(), remainedAmount, "Test");

            Assert.IsTrue(refundResult4.Ok);
            Assert.AreEqual(tradeModel.Amount, refundResult4.Data.AggregatedRefundAmount);
        }