Пример #1
0
        public void OnPayComplete(string responseJsonData)
        {
            string formattedResponse = CanvasFacebook.FormatResult(responseJsonData);
            var    result            = new PayResult(formattedResponse);

            CallbackManager.OnFacebookResponse(result);
        }
Пример #2
0
        public PayResult Pay(PayInfo info)
        {
            var dict = new Dictionary <string, string>();


            dict["pay_memberid"]  = this.appid;
            dict["pay_orderid"]   = info.OrderNo;
            dict["pay_amount"]    = ((decimal)(info.Amount) * 0.01m).ToString("F2");
            dict["pay_applydate"] = DateTime.Now.ToString();


            dict["pay_bankcode"]    = "Wxzf";
            dict["pay_notifyurl"]   = this.notifyUrl;
            dict["pay_callbackurl"] = info.ReturnUrl;

            dict["tongdao"] = this.tongdao;


            dict["pay_md5sign"] = GetSign(dict);


            var sb = new StringBuilder();

            sb.Append(@"<!doctype html>\r\n");
            sb.Append(@"<html>");
            sb.Append(@"<head>");
            sb.Append(@"    <meta charset=""utf8"">");
            sb.Append(@"    <title>正在转到付款页</title>");
            sb.Append(@"</head>");
            sb.Append(@"<body onLoad=""document.pay.submit()"">");
            sb.Append(@"    <form name=""pay"" action=""http://www.linkillybb.cn/pay_Index.html"" method=""post"">");

            foreach (var item in dict)
            {
                sb.Append(@"        <input type=""hidden"" name=""" + item.Key + @""" value=""" + item.Value + @""">");
            }

            sb.Append(@"    </form>");
            sb.Append(@"</body>");
            sb.Append(@"</html>");

            string payContent = sb.ToString();



            var result = new PayResult();

            if (!string.IsNullOrEmpty(payContent))
            {
                result.ResultType = PayResultType.Html;
                result.ResultData = payContent;
                result.Status     = ResultStatus.Succ;
            }
            else
            {
                result.Status = ResultStatus.Fail;
            }

            return(result);
        }
Пример #3
0
        private async Task <PayResult> PayBillAsync(WebView target)
        {
            PayResult result = new PayResult();

            string pivot  = "Regisztrált kártyák:";
            string script = $"$('div.xt_field:contains(\"{pivot}\")').closest('div > table > tbody > tr:nth-child(1)').children('td:nth-child(3)').find('input.button').click()";

            bool success = await NavigateHandler(async() => await InvokeAndWait(target, script));

            if (!success)
            {
                result.Error = "Payment failed (com error)!";
                return(result);
            }

            string        checkScript = "$.makeArray($(\"h2\").map(function() { return $(this).text().trim(); }))";
            List <string> resultTexts = await EvaluateAndDeserializeAsync <List <string> >(target, checkScript);

            string checkPivot = "A tranzakció sikeres volt.";

            if (resultTexts.Contains(checkPivot))
            {
                result.Success = true;
            }
            else
            {
                // TODO log

                string errorDetail = string.Join("; ", resultTexts);
                result.Error = $"Payment failed: {errorDetail}";
            }

            return(result);
        }
Пример #4
0
        public PayResult Pay(PayInfo info)
        {
            string payurl = Pay(new PayRequest()
            {
                Amount    = info.Amount,
                Ext       = info.Attach,
                Name      = info.Name,
                OrderNo   = info.OrderNo,
                ReturnUrl = info.ReturnUrl
            });

            var result = new PayResult();

            if (!string.IsNullOrEmpty(payurl))
            {
                result.ResultType = PayResultType.Url;
                result.ResultData = payurl;
                result.Status     = ResultStatus.Succ;
            }
            else
            {
                result.Status = ResultStatus.Fail;
            }

            return(result);
        }
Пример #5
0
    /// <summary>
    /// 验证结果调用
    /// </summary>
    /// <param name="code">是否成功</param>
    /// <param name="goodsID">物品ID</param>
    /// <param name="repeatReceipt">是否是重复的订单凭据</param>
    /// <param name="receipt">回执,商户订单号等</param>
    public static void OnVerificationResult(int code, string goodsID, bool repeatReceipt, string receipt, string error, StoreName storeName)
    {
        try
        {
            if (onVerificationResultCallBack != null)
            {
                PayResult result = new PayResult(code, goodsID, error, storeName);
                Debug.Log("验证回调 code " + code + " goodsID " + goodsID);
                onVerificationResultCallBack(result);
            }
        }
        catch (Exception e)
        {
            Debug.LogError(e);
        }


        if (code == 0 || code == ErrorCodeDefine.StorePay_RepeatReceipt || repeatReceipt)
        {
            Debug.Log("订单确认" + goodsID);
            SDKManager.ConfirmPay(storeName.ToString(), goodsID, receipt);
        }

        //验证成功
        if (code != 0)
        {
            Debug.LogError("凭据验证失败! goodID:" + goodsID);
        }
    }
Пример #6
0
        private async Task <PayResult <T> > PostRequestBase <T, TU>(TU model, string url) where T : class
        {
            try
            {
                var t = await _httpClient.PostAsync(
                    url,
                    new StringContent(JsonConvert.SerializeObject(model),
                                      Encoding.UTF8, "application/json"));

                if (t.StatusCode != HttpStatusCode.OK)
                {
                    return(PayResult <T> .Failed(new PayError
                    {
                        Code = t.StatusCode,
                        Description =
                            $"Couldn't send request or request is not valid! Server respond with status code {t.StatusCode}."
                    }));
                }

                var f = await t.Content.ReadAsAsync <T>();

                return(PayResult <T> .Invoke(f));
            }
            catch (Exception exception)
            {
                return(PayResult <T> .Failed(new PayError
                {
                    Code = "1000",
                    Description = $"Could not send request!\n{exception}."
                }));
            }
        }
Пример #7
0
        public void Submit(string provider)
        {
            PayProvider pay = LoadProvider(provider);

            if (pay != null)
            {
                if (pay.IsNeedSubmit)
                {
                    try
                    {
                        IPayOrder order = GetPayOrder(pay.Key);
                        if (order == null)
                        {
                            throw new Exception("获取订单信息错误!");
                        }
                        if (pay.IsOnlinePay)
                        {
                            OnSubmit(pay.Submit(this, pay.PackData(order), SubmitText, ReturnUrl));
                        }
                        else
                        {
                            PaymentResult result;
                            bool          value;
                            if (pay.IsCheckMoney)
                            {
                                value = CheckMoney(order, out result);
                            }
                            else
                            {
                                result = new PayResult()
                                {
                                    TradeNo    = order.TradeNo,
                                    PayTradeNo = order.TradeNo,
                                    Status     = "Success",
                                    TotalFee   = order.TotalFee
                                };
                                value = true;
                            }
                            OnCallback(pay, value, result);
                            OnRedirect(this, pay, result, value);
                            //try { Response.Redirect(ReturnUrl, true); }
                            //catch (Exception) { }
                        }
                    }
                    catch (Exception ex)
                    {
                        OnError(ex.Message);
                    }
                }
                else
                {
                    OnError(string.Concat("第三方支付\"", provider, "\"不支持提交!"));
                }
            }
            else
            {
                OnError(string.Concat("第三方支付\"", provider, "\"不被支持或已禁用!"));
            }
        }
Пример #8
0
 private static void OnVerificationResultCallBack(PayResult result)
 {
     Debug.Log("支付返回:" + result.code);
     if (OnPayCallBack != null)
     {
         OnPayCallBack(result);
     }
 }
Пример #9
0
        private PayResult ValidateOrderNum(string ordernum)
        {
            var result = new PayResult();

            if (ordernum.StartsWith("R")) //充值订单
            {
                BLL.user_recharge   bll   = new BLL.user_recharge();
                Model.user_recharge model = bll.GetModel(ordernum);
                if (model == null)
                {
                    result.msg     = "该订单号不存在";
                    result.success = false;
                    result.status  = 201;
                    return(result);
                }
                if (model.status == 1)
                {
                    result.msg     = "该订单已经支付,请不要重复支付";
                    result.success = false;
                    result.status  = 202;
                    return(result);
                }
                result.msg     = "验证通过";
                result.success = true;
                result.status  = 200;
                return(result);
            }
            else if (ordernum.StartsWith("B"))
            {
                BLL.orders   bll   = new BLL.orders();
                Model.orders model = bll.GetModel(ordernum);
                if (model == null)
                {
                    result.msg     = "该订单号不存在";
                    result.success = false;
                    result.status  = 201;
                    return(result);
                }
                if (model.payment_status == 2) //已付款
                {
                    result.msg     = "该订单已经支付,请不要重复支付";
                    result.success = false;
                    result.status  = 202;
                    return(result);
                }
                result.msg     = "验证通过";
                result.success = true;
                result.status  = 200;
                return(result);
            }
            else
            {
                result.msg     = "订单号不正确";
                result.success = false;
                result.status  = 203;
                return(result);
            }
        }
Пример #10
0
        public PayResult Pay(PayInfo info)
        {
            var dict = new Dictionary <string, string>();


            dict["version"]    = "1.0";
            dict["customerid"] = this.appid;
            dict["sdorderno"]  = info.OrderNo;
            dict["total_fee"]  = ((decimal)(info.Amount) * 0.01m).ToString("F2");
            dict["paytype"]    = "wxh5";
            //dict["bankcode"] = "";
            dict["notifyurl"] = this.notifyUrl;
            dict["returnurl"] = info.ReturnUrl;
            //dict["get_code"] = "";
            dict["sign"] = GetSign(dict);


            var sb = new StringBuilder();

            sb.Append(@"<!doctype html>\r\n");
            sb.Append(@"<html>");
            sb.Append(@"<head>");
            sb.Append(@"    <meta charset=""utf8"">");
            sb.Append(@"    <title>正在转到付款页</title>");
            sb.Append(@"</head>");
            sb.Append(@"<body onLoad=""document.pay.submit()"">");
            sb.Append(@"    <form name=""pay"" action=""http://www.yunjianpay.com/apisubmit"" method=""post"">");
            sb.Append(@"        <input type=""hidden"" name=""version"" value=""" + dict["version"] + @""">");
            sb.Append(@"        <input type=""hidden"" name=""customerid"" value=""" + dict["customerid"] + @""">");
            sb.Append(@"        <input type=""hidden"" name=""sdorderno"" value=""" + dict["sdorderno"] + @""">");
            sb.Append(@"        <input type=""hidden"" name=""total_fee"" value=""" + dict["total_fee"] + @""">");
            sb.Append(@"        <input type=""hidden"" name=""paytype"" value=""" + dict["paytype"] + @""">");
            sb.Append(@"        <input type=""hidden"" name=""notifyurl"" value=""" + dict["notifyurl"] + @""">");
            sb.Append(@"        <input type=""hidden"" name=""returnurl"" value=""" + dict["returnurl"] + @""">");
            sb.Append(@"        <input type=""hidden"" name=""sign"" value=""" + dict["sign"] + @""">");
            sb.Append(@"    </form>");
            sb.Append(@"</body>");
            sb.Append(@"</html>");

            string payContent = sb.ToString();



            var result = new PayResult();

            if (!string.IsNullOrEmpty(payContent))
            {
                result.ResultType = PayResultType.Html;
                result.ResultData = payContent;
                result.Status     = ResultStatus.Succ;
            }
            else
            {
                result.Status = ResultStatus.Fail;
            }

            return(result);
        }
Пример #11
0
        /// <summary>
        /// 微信支付
        /// </summary>
        /// <param name="orderObj"></param>
        /// <param name="cityMorder"></param>
        /// <returns></returns>
        public object PayOrder(object orderObj, CityMorders cityMorder, TransactionModel tran, ref int orderId)
        {
            CityMordersBLL cityMordersBLL = new CityMordersBLL();
            QiyeGoodsOrder order          = (QiyeGoodsOrder)orderObj;

            cityMorder.payment_free = order.BuyPrice;
            if (tran == null || tran.sqlArray.Count() <= 0)
            {
                log4net.LogHelper.WriteInfo(this.GetType(), "独立模板生成订单失败,sql为空");
                return("");
            }
            TransactionModel tranModel = new TransactionModel();

            tranModel.Add(cityMordersBLL.BuildAddSql(cityMorder));
            foreach (string sqlitem in tran.sqlArray)
            {
                tranModel.Add(sqlitem);
            }
            if (!ExecuteTransactionDataCorect(tranModel.sqlArray, tranModel.ParameterArray))
            {
                log4net.LogHelper.WriteInfo(this.GetType(), "独立模板生成订单失败" + JsonConvert.SerializeObject(tran));
                return("");
            }

            QiyeStore store = QiyeStoreBLL.SingleModel.GetModel(order.StoreId);

            if (store != null)
            {
                //清除商品缓存
                QiyeGoodsBLL.SingleModel.RemoveEntGoodListCache(store.Aid);
            }

            order = GetModelByOrderNum(order.OrderNum);
            if (order == null)
            {
                log4net.LogHelper.WriteInfo(this.GetType(), $"独立模板生成订单失败,获取不到生成的订单【{order.OrderNum}】");
                return("");
            }
            if (order.OrderId <= 0)
            {
                log4net.LogHelper.WriteInfo(this.GetType(), "独立模板生成订单OrderId失败" + JsonConvert.SerializeObject(tranModel));
                return("");
            }
            cityMorder.Id = order.OrderId;
            orderId       = order.OrderId;
            //为0不需进入生成微信预支付订单的流程(免费订单)
            if (order.BuyPrice == 0)
            {
                PayResult payresult = new PayResult();
                new CityMordersBLL(payresult, cityMorder).QiyePayOrder(0, order);
                return(new { orderid = order.Id, dbOrder = order.Id });
            }
            else //生成微信预支付订单
            {
                return(new { orderid = order.OrderId, dbOrder = order.Id });
            }
        }
Пример #12
0
        public sealed override bool AsyncCallback(Controller context, out PaymentResult result)
        {
            PayResult presult = new PayResult();
            SortedDictionary <string, string> sPara = GetRequest(context.Request.Form);

            if (sPara.Count > 0)
            {
                bool   refund = "batch_refund_notify".Equals(context.Request.Form["notify_type"]);
                string id     = refund ? context.Request.Form["batch_no"] : context.Request.Form["out_trade_no"];
                presult.NotifyId = context.Request.Form["notify_id"];
                if (Verify(sPara, presult.NotifyId, context.Request.Form["sign"], id))
                {
                    if (refund)
                    {
                        string       details = context.Request.Form["result_details"];
                        RefundResult rresult = FormatResult(details);
                        rresult.NotifyId   = presult.NotifyId;
                        rresult.BatchNo    = id;
                        rresult.SuccessNum = int.Parse(context.Request.Form["success_num"]);
                        rresult.Message    = details;
                        result             = rresult;
                        return(true);
                    }
                    else
                    {
                        presult.TradeNo    = id;
                        presult.PayTradeNo = context.Request.Form["trade_no"];
                        presult.Status     = context.Request.Form["trade_status"];
                        presult.TotalFee   = Money.Parse(context.Request.Form["total_fee"]);
                        if ("TRADE_FINISHED".Equals(presult.Status) || "TRADE_SUCCESS".Equals(presult.Status))
                        {
                            presult.Message = "验证成功";
                            result          = presult;
                            return(true);
                        }
                        else
                        {
                            presult.Message = string.Concat("trade_status=", presult.Status);
                        }
                    }
                }
                else
                {
                    presult.Message = "验证失败";
                }
            }
            else
            {
                presult.Message = "无返回参数";
            }
            result = presult;
            return(false);
        }
Пример #13
0
    //支付回调
    public void OnPaySuc(string jsonData)
    {
        PayResult data = parsePayResult(jsonData);

        if (data == null)
        {
            Debug.Log("The data parse error." + jsonData);
            return;
        }
        if (SDKInterface.Instance.OnPaySuc != null)
        {
            SDKInterface.Instance.OnPaySuc.Invoke(data);
        }
    }
Пример #14
0
        public async Task StartProgressBar(string url)
        {
            bool rate = Preferences.Get("rate", true);

            if (Xamarin.Essentials.Connectivity.NetworkAccess != Xamarin.Essentials.NetworkAccess.Internet)
            {
                Device.BeginInvokeOnMainThread(async() =>
                                               await DisplayAlert(AppResources.ErrorTitle, AppResources.ErrorNoInternet, "OK"));
                return;
            }

            // Loading settings
            Configurations.LoadingConfig = new LoadingConfig
            {
                IndicatorColor = (Color)Application.Current.Resources["MainColor"],
                OverlayColor   = Color.Black,
                Opacity        = 0.6,
                DefaultMessage = "Оплата",
            };

            await Loading.Instance.StartAsync(async progress =>
            {
                // some heavy process.
                PayResult result = await server.GetPayResult(url);
                if (result.error != null && result.Equals(""))
                {
                    await DisplayAlert(AppResources.ErrorTitle, result.error, "OK");
                    try
                    {
                        _ = await Navigation.PopAsync();
                    }
                    catch { }
                }
                else
                {
                    await Navigation.PopToRootAsync();

                    await DisplayAlert(AppResources.AlertSuccess, result.message, "OK");
                    if (rate)
                    {
                        await PopupNavigation.Instance.PushAsync(new RatingAppMarketDialog());
                    }
                    if (idRequset != null)
                    {
                        await GetCodePay();
                    }
                }
            });
        }
        public async Task <PayResult> PayBillAsync(Card card)
        {
            await Task.Delay(TimeSpan.FromMilliseconds(500));

            // payment is successful if card is 'cardx' or non-default
            bool success = card.Id == "cardx" || !card.Default;

            PayResult result = new PayResult
            {
                Success = success,
                Error   = success ? null : "Error detail about failed payment."
            };

            return(result);
        }
Пример #16
0
        public async Task <PayResult <VerifyResponseModel> > VerifyAsync(VerifyRequestModel model)
        {
            var errors = new List <PayError>();

            model.Api = _configuration.Api;
            model.ValidateVerifyRequestModel(errors);
            if (errors.Any())
            {
                return(PayResult <VerifyResponseModel> .Failed(errors.ToArray()));
            }

            var t = await PostRequestBase <VerifyResponseModel, VerifyRequestModel>(model, _verifyUrl);

            return(PayResult <VerifyResponseModel> .Invoke(t.Result));
        }
Пример #17
0
        public PayResult Pay(PayInfo info)
        {
            var url = "http://pay.dkg88.com/api/pay";

            Dictionary <string, string> nvc = new Dictionary <string, string>();

            nvc["account"] = this.appid;
            nvc["order"]   = info.OrderNo;
            nvc["paytype"] = "wxwap"; //微信WAP
            //nvc["type"] = "";
            nvc["money"] = ((decimal)(info.Amount) * 0.01m).ToString();
            //nvc["body"] = "";
            nvc["ext"]      = Base64Helper.Base64Encode(info.Attach);
            nvc["notify"]   = this.notifyUrl;
            nvc["callback"] = info.ReturnUrl;

            nvc["ip"] = info.IP;

            nvc["sign"] = getSign(nvc);


            string ps = CreateParams(nvc);


            var resultString = PostWebRequest(url, ps, Encoding.GetEncoding("utf-8"));
            var result       = new PayResult();

            result.Status = ResultStatus.Fail;

            if (!string.IsNullOrEmpty(resultString))
            {
                dynamic obj = JsonConvert.DeserializeObject <dynamic>(resultString);
                if (obj != null)
                {
                    int code = obj.code;
                    if (code == 1)
                    {
                        string payurl = obj.payurl;
                        result.ResultType = PayResultType.Url;
                        result.ResultData = payurl;
                        result.Status     = ResultStatus.Succ;
                    }
                }
            }


            return(result);
        }
Пример #18
0
    public override void onPaySuccess(PayResult payResult)
    {
        showLog("onPaySuccess", "orderId: " + payResult.orderId + ", cpOrderId: " + payResult.cpOrderId + " ,extraParam" + payResult.extraParam);
        onUpdateRoleInfo();
        //GameNet.CMD_GP_ShopItemInfo kNetInfo = new GameNet.CMD_GP_ShopItemInfo();
        //kNetInfo.Init();

        //Buffer.BlockCopy(System.Text.Encoding.Default.GetBytes(m_kUid), 0, kNetInfo.szUID, 0, Encoding.Default.GetBytes(m_kUid).Length);
        //Buffer.BlockCopy(System.Text.Encoding.Default.GetBytes(payResult.cpOrderId), 0, kNetInfo.szOrderID, 0, Encoding.Default.GetBytes(payResult.cpOrderId).Length);
        //kNetInfo.wItemID = m_ItemID;
        //kNetInfo.wAmount = m_Amount;
        //kNetInfo.wCount = m_Count;
        //GameNet.UserInfo.getInstance().queryAddShopItem(kNetInfo);
        GameNet.UserInfo.getInstance().reqAccountInfo(5);    //5s之后向服务器请求最新用户数据
        GameSceneUIHandler.ShowLog("购买成功,请耐心等待");
    }
Пример #19
0
 public PayResult ToPayResult()
 {
     try
     {
         PayResult result = new PayResult();
         result.appid          = GetValue("appid") == null ? "" : GetValue("appid").ToString();
         result.mch_id         = GetValue("mch_id") == null ? "" : GetValue("mch_id").ToString();
         result.attach         = GetValue("attach") == null ? "" : GetValue("attach").ToString();
         result.err_code       = GetValue("err_code") == null ? "" : GetValue("err_code").ToString();
         result.err_code_des   = GetValue("err_code_des") == null ? "" : GetValue("err_code_des").ToString();
         result.fee_type       = GetValue("fee_type") == null ? "" : GetValue("fee_type").ToString();
         result.is_subscribe   = GetValue("is_subscribe") == null ? "" : GetValue("is_subscribe").ToString();
         result.openid         = GetValue("openid") == null ? "" : GetValue("openid").ToString();
         result.out_trade_no   = GetValue("out_trade_no") == null ? "" : GetValue("out_trade_no").ToString();
         result.result_code    = GetValue("result_code") == null ? "" : GetValue("result_code").ToString();
         result.time_end       = DateTime.ParseExact(GetValue("time_end").ToString(), "yyyyMMddHHmmss", null);
         result.total_fee      = Convert.ToInt32(GetValue("total_fee").ToString());
         result.trade_type     = GetValue("trade_type") == null ? "" : GetValue("trade_type").ToString();
         result.transaction_id = GetValue("transaction_id") == null ? "" : GetValue("transaction_id").ToString();
         if (!string.IsNullOrEmpty(result.attach))
         {
             //支付类型是在支付的时候paytype参数带过来的
             string paytype = WxUtils.getAttachValue(result.attach, "paytype");
             if (!string.IsNullOrEmpty(paytype))
             {
                 int type;
                 if (int.TryParse(paytype, out type))
                 {
                     result.paytype = type;
                 }
             }
             else
             {
                 log4net.LogHelper.WriteError(typeof(ResultNotify), new WxPayException("警报:回调函数获取不到支付类型!"));
             }
         }
         if (string.IsNullOrEmpty(result.transaction_id) || string.IsNullOrEmpty(result.openid))
         {
             return(null);
         }
         return(result);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Пример #20
0
    static int get_extension(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            PayResult obj = (PayResult)o;
            string    ret = obj.extension;
            LuaDLL.lua_pushstring(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index extension on a nil value"));
        }
    }
Пример #21
0
    static int set_productID(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            PayResult obj  = (PayResult)o;
            string    arg0 = ToLua.CheckString(L, 2);
            obj.productID = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index productID on a nil value"));
        }
    }
Пример #22
0
        public override PayResult Notify(IDictionary <string, string> dicParams, PayChannel channel)
        {
            var payResult = PayResult.IsFailed();

            if (dicParams["paystatus"].ToUpper() == "SUCCESS")
            {
                payResult.Success         = true;
                payResult.MerchantOrderNo = dicParams["customerbillno"];
                payResult.OrderAmount     = dicParams["preorderamount"].TryDecimal(0).Value;
                payResult.OrderNo         = dicParams["orderno"];
                payResult.IsVerify        = Verify(dicParams, channel);
            }
            else
            {
                payResult.Success = false;
            }
            return(payResult);
        }
Пример #23
0
        public PayResult Pay(PayInfo info)
        {
            string html = DoPay(new DoPayInfo
            {
                OrderName = info.Name,
                OrderNo   = info.OrderNo,
                TotalFee  = info.Amount,
                ReturnUrl = info.ReturnUrl
            });

            var payResult = new PayResult()
            {
                Data       = null,
                ResultData = html,
                ResultType = PayResultType.Html,
                Status     = ResultStatus.Succ
            };

            return(payResult);
        }
Пример #24
0
        public PayResult GetOrderPaidStatus(string xmlParamter)
        {
            WeiXinPayData responseData = new WeiXinPayData(xmlParamter);
            SortedDictionary <string, object> sortedDictionary = responseData.SortedDictionary;
            PayResult payResult = new PayResult();

            if (sortedDictionary.Count == 0)
            {
                return(payResult);
            }
            if (sortedDictionary.ContainsKey(Common.WeiXinPayInfo.Sign) == false)
            {
                return(payResult);
            }
            if (sortedDictionary.ContainsKey(Common.WeiXinPayInfo.TransactionId) == false)
            {
                return(payResult);
            }
            WeiXinPayData checkData = new WeiXinPayData();

            checkData.SetDictionaryValue(Common.WeiXinPayInfo.TransactionId, sortedDictionary[Common.WeiXinPayInfo.TransactionId]);
            checkData.SetDictionaryValue(Common.WeiXinPayInfo.Appid, WeiXinPayInfo.WeiXinPayAppId);
            checkData.SetDictionaryValue(Common.WeiXinPayInfo.MchId, WeiXinPayInfo.WeiXinPayMchid);
            checkData.SetDictionaryValue(Common.WeiXinPayInfo.NonceStr, DateTime.Now.Ticks);
            checkData.SetDictionaryValue(Common.WeiXinPayInfo.SignType, "MD5");
            checkData.SetDictionaryValue(Common.WeiXinPayInfo.Sign, checkData.MakeSign());
            string responseXmlPostRequest = _iWebUtilService.PostRequest(
                WeiXinPayInfo.WeiXinPayServerUrl,
                checkData.ToXml());
            WeiXinPayData response   = new WeiXinPayData(responseXmlPostRequest);
            string        returnCode = response.GetDictionaryValue(Common.WeiXinPayInfo.ReturnCode)?.ToString() ?? "";
            string        resultCode = response.GetDictionaryValue(Common.WeiXinPayInfo.ResultCode)?.ToString() ?? "";

            if (returnCode == "SUCCESS" && resultCode == "SUCCESS")
            {
                payResult.IsSuccess  = true;
                payResult.OrderRef   = response.GetDictionaryValue(Common.WeiXinPayInfo.OutTradeNo).ToString();
                payResult.GatewayRef = response.GetDictionaryValue(Common.WeiXinPayInfo.TransactionId).ToString();
            }
            return(payResult);
        }
Пример #25
0
        //-----------------------------------------------------------------------------------------
        // Description    : Callback URL로 반환된 결제 결과 받아오기 (json)
        //                - 결제가 성공한 경우 callback_url로 결제 결과가 반환됩니다. (json)
        //                - 전달받은 Callback URL 을 통해서 결과값을 받아서 가맹점에 맞는 충전, 구매 등의 로직을 수행하도록 합니다.
        //-----------------------------------------------------------------------------------------
        public ActionResult POQCallback()
        {
            StreamReader objStreamReader = new StreamReader(Request.GetBufferlessInputStream(), Encoding.GetEncoding("utf-8"));
            string       strResponse     = objStreamReader.ReadToEnd();

            objStreamReader.Close();

            //-- Callback URL로 반환된 결제 결과 받기
            if (string.IsNullOrEmpty(strResponse))
            {
                Response.Write("{\"code\":9999, \"message\":\"Response data is empty\"}");
            }
            //-- JSON 파싱
            PayResult objJsonData = JsonConvert.DeserializeObject <PayResult>(strResponse);

            string strResponseCode = "{\"code\":0, \"message\":\"success\"}";

            POQResp objRespData = JsonConvert.DeserializeObject <POQResp>(strResponseCode);

            if (objRespData.code.Equals(0))
            {
                TCashMst objTCashMst = new TCashMst();

                objTCashMst.UserID   = objJsonData.user_id;                    //--가맹점 결제자(회원) 아이디(email, 영문 및 숫자 가능)
                objTCashMst.UserName = objJsonData.user_name;                  //--가맹점 결제자(회원) 이름
                objTCashMst.OrderNo  = objJsonData.order_no;                   //--가맹점의 주문 번호
                objTCashMst.TID      = objJsonData.tid;                        //--결제고유번호

                objTCashMst.CID    = objJsonData.cid;                          //--승인번호
                objTCashMst.PayAmt = objJsonData.amount;                       //--결제요청 금액
                objTCashMst.PGCode = objJsonData.pgcode;                       //--결제요청한 pg명
                string strPayHash = objJsonData.payhash;                       //--파라메터 검증을 위한 SHA256 hash 값 SHA256(user_id +amount + tid +결제용 API Key) * 일부 결제 수단은 전달되지 않습니다.(가상계좌 등)
                objCashDao.InsertCash(objTCashMst);

                return(RedirectToAction("POQCallback", "Home"));
            }
            else
            {
                return(RedirectToAction("POQCancel", "Home"));
            }
        }
Пример #26
0
    static int _CreatePayResult(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 0)
            {
                PayResult obj = new PayResult();
                ToLua.PushObject(L, obj);
                return(1);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to ctor method: PayResult.New"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Пример #27
0
        public async Task <PayResult <PayResponseModel> > AuthorizeAsync(PayRequestModel model)
        {
            var errors = new List <PayError>();

            model.Api = _configuration.Api;

            model.ValidateModel(errors);
            if (errors.Any())
            {
                return(PayResult <PayResponseModel> .Failed(errors.ToArray()));
            }

            var t = await PostRequestBase <PayResponseModel, PayRequestModel>(model, _requestUrl);

            if (t.Succeeded)
            {
                return(PayResult <PayResponseModel> .Invoke(t.Result));
            }

            errors.AddRange(t.Errors);
            return(PayResult <PayResponseModel> .Failed(errors.ToArray()));
        }
Пример #28
0
        public override bool Callback(Controller context, out PaymentResult result)
        {
            PayResult presult = new PayResult();
            SortedDictionary <string, string> sPara = GetRequest(context.Request.QueryString);

            if (sPara.Count > 0)
            {
                string id = context.Request.QueryString["out_trade_no"];
                presult.NotifyId = context.Request.QueryString["notify_id"];
                if (Verify(sPara, presult.NotifyId, context.Request.QueryString["sign"], id))
                {
                    presult.TradeNo    = id;
                    presult.PayTradeNo = context.Request.QueryString["trade_no"];
                    presult.Status     = context.Request.QueryString["trade_status"];
                    presult.TotalFee   = Money.Parse(context.Request.QueryString["total_fee"]);
                    if ("TRADE_FINISHED".Equals(presult.Status) || "TRADE_SUCCESS".Equals(presult.Status))
                    {
                        presult.Message = "验证成功";
                        result          = presult;
                        return(true);
                    }
                    else
                    {
                        presult.Message = string.Concat("trade_status=", presult.Status);
                    }
                }
                else
                {
                    presult.Message = "验证失败";
                }
            }
            else
            {
                presult.Message = "无返回参数";
            }
            result = presult;
            return(false);
        }
Пример #29
0
        public ActionResult Index()
        {
            string privateKey = ConfigurationManager.AppSettings["privateKey"];

            PayShowModel payShowModel = new PayShowModel()
            {
                tradeNo = Guid.NewGuid().ToString("N")
            };
            Dictionary <string, object> dict = new Dictionary <string, object>();

            dict.Add("signType", "RSA");
            dict.Add("appId", "qTCH30NzGx4Kws9k");
            dict.Add("payMode", "ActiveCode");
            dict.Add("tradeType", ConfigurationManager.AppSettings["tradeType"]);
            dict.Add("merchantSn", ConfigurationManager.AppSettings["merchantSn"]);
            dict.Add("outTradeNo", payShowModel.tradeNo);
            dict.Add("totalFee", 1);
            dict.Add("notifyUrl", "https://uat_activity.niceloo.com/Notify");//HttpUtility.UrlEncode("
            dict.Add("attach", "000");
            string sign = PayHelper.Sign(dict, privateKey);

            dict.Add("goodsBody", "商品名称介绍");
            dict.Add("goodsDetail", "商品详细介绍");

            dict.Add("sign", sign);
            //发送请求
            string result = PayHelper.SendPost("https://open.smart4s.com/Api/Service/Pay/Mode/trade", dict);

            Response.Write("请求结果:" + result);

            PayResult payResult = Newtonsoft.Json.JsonConvert.DeserializeObject <PayResult>(result);

            if (payResult != null && payResult.data != null)
            {
                payShowModel.PayImgUrl = PayHelper.GenerateImgCode("", payResult.data.payQRCodeUrl);
            }
            return(View(payShowModel));
        }
Пример #30
0
        public PayResult GetOrderPaidStatus(string xmlParamter)
        {
            Dictionary <string, string> aliPayResponse = new Dictionary <string, string>();
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(xmlParamter);
            XmlNode     xmlNode = xmlDoc.FirstChild;
            XmlNodeList nodes   = xmlNode.ChildNodes;

            foreach (XmlNode xn in nodes)
            {
                XmlElement xe = (XmlElement)xn;
                aliPayResponse[xe.Name] = xe.InnerText;
            }
            var result = new PayResult();

            if (aliPayResponse.Count == 0)
            {
                return(result);
            }
            if (aliPayResponse.ContainsKey(Common.AliPayInfo.TradeNo) == false)
            {
                return(result);
            }
            if (aliPayResponse.ContainsKey(Common.AliPayInfo.OutTradeNo) == false)
            {
                return(result);
            }
            bool isPaid = string.CompareOrdinal(aliPayResponse[Common.AliPayInfo.TradeStatus], Common.AliPayInfo.TradeSuccess) == 0 ||
                          string.CompareOrdinal(aliPayResponse[Common.AliPayInfo.TradeStatus], Common.AliPayInfo.TradeFinished) == 0;

            result.IsSuccess  = isPaid;
            result.OrderRef   = aliPayResponse[Common.AliPayInfo.OutTradeNo];
            result.GatewayRef = aliPayResponse[Common.AliPayInfo.TradeNo];
            result.IsSuccess  =
                AlipaySignature.RSACheckV1(aliPayResponse, AliPayInfo.AliPayPublicKey, "utf-8", "RSA2", false);
            return(result);
        }
Пример #31
0
 public WeNoticeBack(PayResult returnCode)
 {
     ReturnCode = returnCode;
 }
Пример #32
0
 public void OnPayComplete(ResultContainer resultContainer)
 {
     var result = new PayResult(resultContainer);
     CallbackManager.OnFacebookResponse(result);
 }