Beispiel #1
0
        /// <summary>
        /// 单笔转账到支付宝账户接口
        /// </summary>
        /// <param name="payeeAccount">收款方账户</param>
        /// <param name="realName">真实姓名</param>
        /// <param name="amount">转账金额</param>
        /// <param name="outBizNo">订单号</param>
        /// <returns></returns>
        public static string FundTrans(string payeeAccount, string realName, string amount, string outBizNo)
        {
            //https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer
            IAopClient client = new DefaultAopClient(ServerUrl, AppId, AppPrivateKey, "json", "1.0", SignType, AlipayPublicKey, Charset, false);
            AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();

            request.BizContent = "{" +
                                 "\"out_biz_no\":\"" + outBizNo + "\"," +
                                 "\"payee_type\":\"ALIPAY_LOGONID\"," +          //收款方账户类型。
                                 "\"payee_account\":\"" + payeeAccount + "\"," + //收款方账户。与payee_type配合使用。付款方和收款方不能是同一个账户。
                                 "\"amount\":\"" + amount + "\"," +              //转账金额,金额必须大于等于0.1元
                                 "\"payer_show_name\":\"上海晶歌文化传播有限公司\"," +       //付款方姓名
                                 "\"payee_real_name\":\"" + realName + "\"," +   //收款方真实姓名(最长支持100个英文/50个汉字)。 如果本参数不为空,则会校验该账户在支付宝登记的实名是否与收款方真实姓名一致。
                                 "\"remark\":\"退还押金\"" +                         //转账备注
                                 "  }";

            AlipayFundTransToaccountTransferResponse response = client.Execute(request);

            if (response.Code == "10000")
            {
                return("10000");
            }
            else
            {
                return(response.Body);
            }
        }
Beispiel #2
0
        /// <summary>
        /// O2O转账
        /// </summary>
        /// <param name="initedTrans">已初始化的Transfer对象</param>
        /// <returns></returns>
        public ETransferAmount O2OTransferHandler(ETransferAmount initedTransfer, EAliPayApplication app, EAliPayApplication subApp)
        {
            try
            {
                AlipayFundTransToaccountTransferResponse res = null;

                string TransferId = "";

                res = DoTransferAmount(initedTransfer.TransferTarget,
                                       subApp,
                                       initedTransfer.TargetAccount,
                                       initedTransfer.TransferAmount.ToString("0.00"),
                                       PayTargetMode.AliPayAccount, out TransferId);
                initedTransfer.TransferId = TransferId;
                if (res.Code == "10000")
                {
                    initedTransfer.TransferStatus = TransferStatus.Success;
                }
                else
                {
                    initedTransfer.TransferStatus = TransferStatus.Failure;
                    initedTransfer.Log           += string.Format("[Transfer to {2}] SubCode:{0};Submsg:{1}", res.SubCode, res.SubMsg, initedTransfer.TransferTarget.ToString());
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(initedTransfer);
        }
Beispiel #3
0
        // public bool

        /// <summary>
        /// 通过转账验证账户
        /// </summary>
        /// <returns></returns>
        public OutAPIResult TestAccountByTransfer(string AliPayAccount, EAliPayApplication app)
        {
            OutAPIResult result = new OutAPIResult();
            string       tId;

            try
            {
                AlipayFundTransToaccountTransferResponse res = DoTransferAmount(TransferTarget.User,
                                                                                app, AliPayAccount, "0.1",
                                                                                PayTargetMode.AliPayAccount,
                                                                                out tId, null, "账户校验");
                if (res.Code != "10000")
                {
                    result.IsSuccess = false;
                    result.ErrorMsg  = res.Msg + "--" + res.SubMsg;
                }

                return(result);
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.ErrorMsg  = ex.Message;
            }

            return(result);
        }
Beispiel #4
0
        public AlipayFundTransToaccountTransferResponse TransferAmount(string toUserAliPayAccount, string userOpenId, double amount)
        {
            EAliPayApplication app          = StaticDataSrv.GetAliPayApplication();
            IAopClient         aliyapClient = new DefaultAopClient("https://openapi.alipay.com/gateway.do", app.AppId,
                                                                   app.Merchant_Private_Key, "json", "1.0", "RSA2", app.Merchant_Public_key, "GBK", false);

            AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();

            var TransferId = EduCodeGenerator.TransferOrderNo();

            AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();

            model.Amount        = amount.ToString("0.00");
            model.OutBizNo      = TransferId;
            model.PayeeType     = "ALIPAY_LOGONID";
            model.PayeeAccount  = toUserAliPayAccount;
            model.PayerShowName = "云艺书院奖励金";
            request.SetBizModel(model);
            AlipayFundTransToaccountTransferResponse response = aliyapClient.Execute(request);



            return(response);

            //if (PayTargetMode == PayTargetMode.AliPayAccount)
            //    model.PayeeType = "ALIPAY_LOGONID";
            //else
            //    model.PayeeType = "ALIPAY_USERID";

            //model.PayeeAccount = toAliPayAccount;
            //if (!string.IsNullOrEmpty(ShowName))
            //{
            //    model.PayerShowName = ShowName;
            //}
            //else
            //{
            //    string profix = "";
            //    if (target == TransferTarget.ParentAgent)
            //        profix = "(上级佣金)";
            //    else if (target == TransferTarget.Agent)
            //        profix = "(代理费)";
            //    else if (target == TransferTarget.User)
            //        profix = "(打款)";
            //    else if (target == TransferTarget.L3Agent)
            //        profix = "(三级)";
            //    else if (target == TransferTarget.MidStore)
            //        profix = "(码商)";
            //    model.PayerShowName = profix + "服务费";
            //}

            //if (order != null)
            //    model.Remark = string.Format("#{0}-订单金额:{1}-订单ID:{2}", order.AgentName, order.TotalAmount, order.OrderNo);

            //request.SetBizModel(model);

            //AlipayFundTransToaccountTransferResponse response = aliyapClient.Execute(request);

            //return response;
        }
Beispiel #5
0
        public void Run(ToaccountTransfer toaccountTransfer)
        {
            IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", "app_id", "merchant_private_key", "json", "1.0", "RSA2", "alipay_public_key", "GBK", false);
            AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
            var bizContent = "{";

            bizContent += $"\"out_biz_no\":\"{toaccountTransfer.out_biz_no}\",";
            bizContent += $"\"payee_type\":\"{(toaccountTransfer.payee_type== "ALIPAY_USERID"? "ALIPAY_USERID":"ALIPAY_LOGONID")}\",";
            bizContent += $"\"payee_account\":\"{toaccountTransfer.payee_account}\",";
            bizContent += $"\"amount\":\"{toaccountTransfer.amount}\",";
            bizContent += $"\"payer_show_name\":\"{toaccountTransfer.payer_show_name}\",";
            bizContent += $"\"payee_real_name\":\"{toaccountTransfer.payee_real_name}\",";
            bizContent += $"\"remark\":\"{toaccountTransfer.remark}\",";
            bizContent += "  }";

            request.BizContent = bizContent;
            AlipayFundTransToaccountTransferResponse response = client.Execute(request);

            Console.WriteLine(response.Body);
        }
Beispiel #6
0
        /// <summary>
        /// 支付宝单笔转账(蚂蚁金服)
        /// </summary>
        /// <param name="fundTransToaccountTransferInfo">转账信息</param>
        /// <param name="config">config</param>
        /// <returns>转账结果</returns>
        public static FundTransToaccountTransferInfoResult FundTransToAccountTransfer(FundTransToaccountTransferInfo fundTransToaccountTransferInfo, SdkPay.Config config)
        {
            const string url           = SdkPay.Config.ServerUrl;
            string       appId         = config.GetAppId();
            string       privateKeyPem = config.GetPrivateKeyPem();
            const string format        = SdkPay.Config.Format;
            const string version       = SdkPay.Config.Version;
            const string signType      = SdkPay.Config.SignType;
            string       publicKeyPem  = config.GetPublicKeyPemAliPay();
            const string charset       = SdkPay.Config.Charset;
            IAopClient   client        = new DefaultAopClient(url, appId, privateKeyPem, format, version, signType, publicKeyPem, charset, false);
            var          request       = new AlipayFundTransToaccountTransferRequest();
            AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel
            {
                OutBizNo      = fundTransToaccountTransferInfo.OutBizNo,
                PayeeAccount  = fundTransToaccountTransferInfo.PayeeAccount,
                Amount        = fundTransToaccountTransferInfo.Amount,
                PayeeRealName = fundTransToaccountTransferInfo.PayeeRealName,
                Remark        = fundTransToaccountTransferInfo.Remark
            };

            request.SetBizModel(model);
            AlipayFundTransToaccountTransferResponse response = client.Execute(request);
            FundTransToaccountTransferInfoResult     result   = new FundTransToaccountTransferInfoResult();

            result.Body = response.Body;
            if (response.Code == "10000")
            {
                result.IsSuccess = true;
                result.Message   = response.Msg;
                result.OrderId   = response.OrderId;
                result.PayDate   = Convert.ToDateTime(response.PayDate);
            }
            else
            {
                result.IsSuccess = false;
                result.Message   = $"{response.Msg}-{response.SubMsg}";
            }
            return(result);
        }
Beispiel #7
0
        public ActionResult TX(string userids)
        {
            var usermodel  = db.tb_userinfos.FirstOrDefault(s => s.UserID == userids);
            int thisdaystr = DateTime.Now.Day;

            if (usermodel == null)
            {
                return(Json(Comm.ToJsonResult("nofind", "用户不存在"), JsonRequestBehavior.AllowGet));
            }
            else if (thisdaystr != 10)
            {
                return(Json(Comm.ToJsonResult("noday", "每月10号为提现日"), JsonRequestBehavior.AllowGet));
            }
            else
            {
                string     appid             = AliPayConfig.appid;                //appid
                string     app_private_key   = AliPayConfig.app_private_key;      //私钥
                string     alipay_public_key = AliPayConfig.app_public_key;       //公钥
                string     charset           = "utf-8";
                string     out_biz_no        = AliPayConfig.GenerateOutTradeNo(); //订单号
                IAopClient client            = new DefaultAopClient("https://openapi.alipay.com/gateway.do", appid, app_private_key.Trim(), "json", "1.0", "RSA2", alipay_public_key.Trim(), charset, false);
                AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
                string  timestr       = DateTime.Now.AddMonths(-1).Month.ToString();
                decimal txamount      = usermodel.Balance;
                string  alipayaccount = usermodel.AliAccount;
                string  aliusername   = usermodel.AliUserName;
                //如果余额不足
                if (txamount <= 0)
                {
                    return(Json(Comm.ToJsonResult("nobalance", "余额不足"), JsonRequestBehavior.AllowGet));
                }
                //如果没绑定支付宝账号
                else if (string.IsNullOrWhiteSpace(alipayaccount))
                {
                    return(Json(Comm.ToJsonResult("noaccount", "未绑定支付宝"), JsonRequestBehavior.AllowGet));
                }
                else
                {
                    string remarkstr = timestr + "月佣金提现";
                    request.BizContent = "{" +
                                         "\"out_biz_no\":\"" + out_biz_no + "\"," +
                                         "\"payee_type\":\"ALIPAY_LOGONID\"," +
                                         "\"payee_account\":\"" + alipayaccount + "\"," +
                                         "\"amount\":\"" + txamount.ToString() + "\"," +
                                         "\"payer_show_name\":\"RP云购佣金提现\"," +
                                         "\"payee_real_name\":\"" + aliusername + "\"," +
                                         "\"remark\":\"" + remarkstr + "\"" +
                                         "  }";
                    AlipayFundTransToaccountTransferResponse response = client.Execute(request);
                    var    jsondataformain = Newtonsoft.Json.JsonConvert.DeserializeObject(response.Body) as JContainer;//转json格式
                    string signstr         = jsondataformain.SelectToken("sign").ToString();
                    string s   = jsondataformain.SelectToken("alipay_fund_trans_toaccount_transfer_response").ToString();
                    var    js  = Newtonsoft.Json.JsonConvert.DeserializeObject(s) as JContainer;
                    string msg = js.SelectToken("msg").ToString();
                    if (msg.Equals("Success"))
                    {
                        string rout_biz_no = js.SelectToken("out_biz_no").ToString();
                        string order_id    = js.SelectToken("order_id").ToString();
                        string pay_date    = js.SelectToken("pay_date").ToString();
                        //保存提现记录
                        Withdrawcash wmodel = new Withdrawcash();
                        wmodel.AliAccount = alipayaccount;
                        wmodel.order_id   = order_id;
                        wmodel.out_biz_no = rout_biz_no;
                        wmodel.pay_date   = pay_date;
                        wmodel.signstr    = signstr;
                        wmodel.txamount   = txamount;
                        wmodel.txmonth    = timestr;
                        wmodel.Userid     = usermodel.ID;
                        wmodel.UserName   = usermodel.UserName;
                        db.Withdrawcash.Add(wmodel);
                        usermodel.Balance = 0;
                        db.SaveChanges();
                        return(Json(Comm.ToJsonResult("Success", "提现成功"), JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(Json(Comm.ToJsonResult("txfail", "提现失败"), JsonRequestBehavior.AllowGet));
                    }
                }
            }
        }
Beispiel #8
0
    protected void Page_Load(object sender, EventArgs e)
    {
        var type   = Request.RequestType.ToUpper();
        var result = new ResponseResult()
        {
            Status  = "FAILED",
            Msg     = "",
            Amount  = 0,
            OrderNo = ""
        };

        if (type.Equals("POST"))
        {
            var logMsg    = bool.Parse(ConfigurationManager.AppSettings["LogMsg"].ToString());
            var startTime = int.Parse(ConfigurationManager.AppSettings["StartTime"].ToString());
            var endTime   = int.Parse(ConfigurationManager.AppSettings["EndTime"].ToString());
            var ip        = Request.ServerVariables.Get("Remote_Addr").ToString();
            if (logMsg)
            {
                Logger.Log(ip);
            }

            var turnOn = bool.Parse(ConfigurationManager.AppSettings["AllowPayTo"].ToString());

            if (turnOn)
            {
                var sql = string.Format("select COUNT(*) from Merchant where IPAddress=N'{0}'", ip);

                if (DataAccess.ExecuteScalar <int>(sql) == 1)
                {
                    if (DateTime.Now.Hour < startTime || DateTime.Now.Hour >= endTime)
                    {
                        Logger.Log("Channel turn on from " + startTime + ":00 to " + endTime + ":00");
                        result.Msg = "通道开启时间为 " + startTime + ":00 到 " + endTime + ":00";
                    }
                    else
                    {
                        try
                        {
                            var requestStr = ReadStream(Request.InputStream);

                            if (logMsg)
                            {
                                Logger.Log(requestStr);
                            }

                            var orderNo  = string.Empty;
                            var account  = string.Empty;
                            var amount   = string.Empty;
                            var showName = string.Empty;
                            var realName = string.Empty;
                            var remark   = string.Empty;
                            var key      = string.Empty;

                            try
                            {
                                JObject obj = (JObject)JsonConvert.DeserializeObject(requestStr);
                                orderNo  = obj["orderNo"].ToString();
                                account  = obj["account"].ToString();
                                amount   = obj["amount"].ToString();
                                showName = obj["showName"].ToString();
                                realName = obj["realName"].ToString();
                                remark   = obj["remark"].ToString();
                                key      = obj["key"].ToString();
                            }
                            catch (JsonReaderException)
                            {
                                orderNo  = Request.Form["orderNo"];
                                account  = Request.Form["account"];
                                amount   = Request.Form["amount"];
                                showName = Request.Form["showName"];
                                realName = Request.Form["realName"];
                                remark   = Request.Form["remark"];
                                key      = Request.Form["key"];
                            }

                            if (DataAccess.ExecuteScalar <int>(string.Format("select count(*) from Merchant where MerchantKey='{0}'", key)) == 0)
                            {
                                result.Msg = "无效的商户秘钥";
                            }
                            else if (DataAccess.ExecuteScalar <int>(string.Format("select count(*) from Merchant where MerchantKey='{0}' and ChannelStatus='开通'", key)) == 0)
                            {
                                result.Msg = "商户通道关闭";
                            }
                            else if (DataAccess.ExecuteScalar <int>(string.Format("select count(*) from Merchant where MerchantKey='{0}' and IPAddress='{1}'", key, ip)) == 0)
                            {
                                result.Msg = string.Format("商户秘钥和IP地址{0}不匹配", ip);
                            }
                            else
                            {
                                var totalInSum    = double.Parse(DataAccess.ExecuteScalar <decimal>(string.Format("SELECT SUM(amount) FROM Orders where CaseStatus=N'付款成功' and MerchantId in(select Id from Merchant where MerchantKey='{0}')", key)).ToString());
                                var totalOutSum   = double.Parse(DataAccess.ExecuteScalar <decimal>(string.Format("select SUM(amount) from PayOrders where CaseStatus=N'付款成功' and MerchantId in(select Id from Merchant where MerchantKey='{0}')", key)).ToString());
                                var totalOutCount = double.Parse(DataAccess.ExecuteScalar <int>(string.Format("select count(*) from PayOrders where CaseStatus=N'付款成功' and MerchantId in(select Id from Merchant where MerchantKey='{0}')", key)).ToString());
                                var actualBalance = totalInSum * 0.97 - totalOutSum - totalOutCount * 3;
                                int balance       = 0;

                                var balanceConfig = ConfigurationManager.AppSettings["Balance"];

                                if (!string.IsNullOrEmpty(balanceConfig))
                                {
                                    balance = int.Parse(balanceConfig);
                                }
                                //totalOut = totalOut + double.Parse(amount);

                                if (actualBalance - double.Parse(amount) > balance)
                                {
                                    var aliAccount      = Config.PayAccounts[new Random().Next() % Config.PayAccounts.Count];
                                    var alipayPublicKey = string.Format(Config.alipay_public_key, aliAccount.AppName);

                                    float a = 0;
                                    if (float.TryParse(amount, out a))
                                    {
                                        IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", aliAccount.AppId, string.Format(Config.merchant_private_key, aliAccount.AppName), "json", "1.0", aliAccount.SignType, alipayPublicKey, Config.charset, true);
                                        AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
                                        request.BizContent = "{" +
                                                             "\"out_biz_no\":\"" + orderNo + "\"," +
                                                             "\"payee_type\":\"ALIPAY_LOGONID\"," +
                                                             "\"payee_account\":\"" + account + "\"," +
                                                             "\"amount\":\"" + amount + "\"," +
                                                             "\"payer_show_name\":\"" + showName + "\"," +
                                                             "\"payee_real_name\":\"" + realName + "\"," +
                                                             "\"remark\":\"" + remark + "\"" +
                                                             "  }";

                                        AlipayFundTransToaccountTransferResponse response = client.Execute(request);

                                        try
                                        {
                                            JObject retObj = (JObject)JsonConvert.DeserializeObject(response.Body);
                                            var     code   = retObj["alipay_fund_trans_toaccount_transfer_response"]["code"].ToString();

                                            AddNewOrder(new PayOrder()
                                            {
                                                OrderNo    = orderNo,
                                                Account    = account,
                                                RealName   = realName,
                                                Amount     = amount,
                                                ShowName   = showName,
                                                Remark     = remark,
                                                CaseStatus = code == "10000" ? "付款成功" : "付款失败",
                                                Response   = response.Body,
                                                Key        = key
                                            });

                                            if (code == "10000")
                                            {
                                                result.Status = "SUCCESS";
                                                result.Msg    = "支付成功";
                                            }
                                            else
                                            {
                                                var msg = retObj["alipay_fund_trans_toaccount_transfer_response"]["sub_msg"];

                                                if (msg != null)
                                                {
                                                    result.Msg = msg.ToString();
                                                }
                                                else
                                                {
                                                    result.Msg = "支付失败";
                                                }

                                                result.Status = "FAILED";
                                            }

                                            result.Amount  = float.Parse(amount);
                                            result.OrderNo = orderNo;
                                        }
                                        catch (Exception ex)
                                        {
                                            result.Msg = "服务器异常";
                                            Logger.Log("Response Body:" + response.Body);
                                            Logger.Log("Exception:" + ex.ToString());
                                        }
                                    }
                                    else
                                    {
                                        result.Msg = "Amount参数格式错误";
                                    }
                                }
                                else
                                {
                                    Logger.Log("余额沉淀'" + actualBalance + "'不足以支付'" + amount + "'");
                                    Logger.Log("totalInSum:" + totalInSum);
                                    Logger.Log("totalOutSum:" + totalOutSum);
                                    Logger.Log("totalOutCount:" + totalOutCount);
                                    Logger.Log("actualBalance:" + actualBalance);
                                    Logger.Log("key:" + key);

                                    result.Msg = "总收入扣除手续费小于总支出";
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Logger.Log("Exception:" + ex.ToString());
                            result.Msg = "服务器异常";
                        }
                    }
                }
                else
                {
                    result.Msg = "未授权的IP地址";
                }
            }
            else
            {
                result.Msg = "支付通道维护中...";
            }
        }
        else
        {
            result.Msg = "请发POST请求";
        }

        Response.ContentType = "application/json; charset=utf-8";
        Response.Write(JsonConvert.SerializeObject(result));
    }
Beispiel #9
0
        /// <summary>
        /// 转账
        /// </summary>
        /// <param name="target">转帐方向</param>
        /// <param name="app">支付宝App</param>
        /// <param name="ui">转账对象</param>
        /// <param name="order">根据订单获取转账金额</param>
        /// <param name="accessToken"></param>
        /// <param name="GlobalConfig">获取是否微信转账配置</param>
        /// <returns></returns>
        public ETransferAmount TransferHandler(TransferTarget target, EAliPayApplication app, EAliPayApplication subApp, EUserInfo ui, ref EOrderInfo order, float AmountNotInOrder = 0, string accessToken = null, EGlobalConfig GlobalConfig = null)
        {
            string          TransferId = "";
            ETransferAmount transfer   = null;
            AlipayFundTransToaccountTransferResponse res = null;
            string        AliPayAccount  = null;
            float         TransferAmount = 0;
            PayTargetMode PayTargetMode  = PayTargetMode.AliPayAccount;

            switch (target)
            {
            case TransferTarget.Agent:
                AliPayAccount  = ui.AliPayAccount;
                TransferAmount = order.RateAmount;
                break;

            case TransferTarget.L3Agent:
                AliPayAccount  = ui.AliPayAccount;
                TransferAmount = order.L3CommissionAmount;
                break;

            case TransferTarget.ParentAgent:
                AliPayAccount  = ui.AliPayAccount;
                TransferAmount = order.ParentCommissionAmount;
                break;

            case TransferTarget.User:
                if (string.IsNullOrEmpty(order.BuyerAliPayAccount))
                {
                    AliPayAccount = order.BuyerAliPayId;
                    PayTargetMode = PayTargetMode.AliPayId;
                }
                else
                {
                    AliPayAccount = order.BuyerAliPayAccount;
                }

                TransferAmount = order.BuyerTransferAmount;
                break;

            case TransferTarget.MidStore:
                AliPayAccount  = ui.AliPayAccount;
                TransferAmount = AmountNotInOrder;
                break;
            }
            if (target == TransferTarget.User)
            {
                res = DoTransferAmount(target, subApp, AliPayAccount, TransferAmount.ToString("0.00"), PayTargetMode, out TransferId, order);
                //if (res.Code == "40004" && res.SubCode == "PAYER_BALANCE_NOT_ENOUGH")
                //{
                //    string tid;
                //    Random r = new Random();
                //    int num = r.Next(11890, 15588);
                //    AlipayFundTransToaccountTransferResponse response = DoTransferAmount(TransferTarget.Internal,app, "*****@*****.**", num.ToString("0.00"), PayTargetMode.AliPayAccount, out tid);
                //    if(response.Code == "10000")
                //    {
                //        res = DoTransferAmount(target, subApp, AliPayAccount, TransferAmount.ToString("0.00"), PayTargetMode, out TransferId, order);
                //    }
                //}
            }
            else
            {
                res = DoTransferAmount(target, app, AliPayAccount, TransferAmount.ToString("0.00"), PayTargetMode, out TransferId, order);
            }

            transfer = ETransferAmount.Init(target, TransferId, TransferAmount, AliPayAccount, order, ui);
            transfer.AliPayOrderId = res.OrderId;

            if (res.Code == "10000")
            {
                //转账记录开始
                transfer.TransferStatus = TransferStatus.Success;
            }
            else
            {
                transfer.TransferStatus = TransferStatus.Failure;
                transfer.Log           += string.Format("[Transfer to {2}] SubCode:{0};Submsg:{1}", res.SubCode, res.SubMsg, target.ToString());

                order.LogRemark  += "【转账错误】" + string.Format("[Transfer to {2}] SubCode:{0};Submsg:{1}", res.SubCode, res.SubMsg, target.ToString());
                order.OrderStatus = IQBCore.IQBPay.BaseEnum.OrderStatus.Exception;
            }
            return(transfer);
        }
Beispiel #10
0
        public AlipayFundTransToaccountTransferResponse DoTransferAmount(TransferTarget target,
                                                                         EAliPayApplication app,
                                                                         string toAliPayAccount,
                                                                         string Amount,
                                                                         PayTargetMode PayTargetMode,
                                                                         out string TransferId,
                                                                         EOrderInfo order = null,
                                                                         string ShowName  = null)
        {
            IAopClient aliyapClient = new DefaultAopClient("https://openapi.alipay.com/gateway.do", app.AppId,
                                                           app.Merchant_Private_Key, "json", "1.0", "RSA2", app.Merchant_Public_key, "GBK", false);

            AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();

            TransferId = StringHelper.GenerateTransferNo(target);
            AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();

            model.Amount   = Amount;
            model.OutBizNo = TransferId;
            if (PayTargetMode == PayTargetMode.AliPayAccount)
            {
                model.PayeeType = "ALIPAY_LOGONID";
            }
            else
            {
                model.PayeeType = "ALIPAY_USERID";
            }

            model.PayeeAccount = toAliPayAccount;
            if (!string.IsNullOrEmpty(ShowName))
            {
                model.PayerShowName = ShowName;
            }
            else
            {
                string profix = "";
                if (target == TransferTarget.ParentAgent)
                {
                    profix = "(上级佣金)";
                }
                else if (target == TransferTarget.Agent)
                {
                    profix = "(代理费)";
                }
                else if (target == TransferTarget.User)
                {
                    profix = "(打款)";
                }
                else if (target == TransferTarget.L3Agent)
                {
                    profix = "(三级)";
                }
                else if (target == TransferTarget.MidStore)
                {
                    profix = "(码商)";
                }
                model.PayerShowName = profix + "服务费";
            }

            if (order != null)
            {
                model.Remark = string.Format("#{0}-订单金额:{1}-订单ID:{2}", order.AgentName, order.TotalAmount, order.OrderNo);
            }

            request.SetBizModel(model);

            AlipayFundTransToaccountTransferResponse response = aliyapClient.Execute(request);

            return(response);
        }