BeeCloud.BCPay.BCOfflinePayByChannel C# (CSharp) Метод

BCOfflinePayByChannel() публичный статический Метод

微信支付宝扫码/被扫支付
public static BCOfflinePayByChannel ( BCBill bill ) : BCBill
bill BeeCloud.Model.BCBill
Результат BeeCloud.Model.BCBill
        public static BCBill BCOfflinePayByChannel(BCBill bill)
        {
            string payUrl = "";

            if (bill.channel.ToString().Contains("SCAN"))
            {
                payUrl = BCPrivateUtil.getHost() + BCConstants.version + BCConstants.offlineBillURL;
            }
            else
            {
                payUrl = BCPrivateUtil.getHost() + BCConstants.version + BCConstants.billURL;
            }

            long timestamp = BCUtil.GetTimeStamp(DateTime.Now);

            JsonData data = new JsonData();

            data["app_id"] = BCCache.Instance.appId;
            data["app_sign"] = BCPrivateUtil.getAppSignature(BCCache.Instance.appId, BCCache.Instance.appSecret, timestamp.ToString());
            data["timestamp"] = timestamp;
            data["channel"] = bill.channel;
            data["total_fee"] = bill.totalFee;
            data["bill_no"] = bill.billNo;
            data["title"] = bill.title;

            if (bill.authCode != null)
            {
                data["auth_code"] = bill.authCode;
            }

            if (bill.optional != null && bill.optional.Count > 0)
            {
                data["optional"] = new JsonData();
                foreach (string key in bill.optional.Keys)
                {
                    data["optional"][key] = bill.optional[key];
                }
            }

            string paraString = data.ToJson();

            try
            {
                HttpWebResponse response = BCPrivateUtil.CreatePostHttpResponse(payUrl, paraString, BCCache.Instance.networkTimeout);

                string respString = BCPrivateUtil.GetResponseString(response);

                JsonData responseData = JsonMapper.ToObject(respString);

                if (bill.channel == "BC_ALI_QRCODE")
                {
                    if (responseData["result_code"].ToString() == "0")
                    {
                        bill.id = responseData["id"].ToString();
                        bill.codeURL = responseData["code_url"].ToString();
                        return bill;
                    }
                    else
                    {
                        var ex = new BCException(responseData["err_detail"].ToString());
                        throw ex;
                    }
                }
                if (bill.channel == "BC_ALI_SCAN" || bill.channel == "BC_WX_SCAN")
                {
                    if (responseData["result_code"].ToString() == "0")
                    {
                        bill.id = responseData["id"].ToString();
                        bill.result = (bool)responseData["pay_result"];
                        return bill;
                    }
                    else
                    {
                        var ex = new BCException(responseData["err_detail"].ToString());
                        throw ex;
                    }
                }
                return bill;
            }
            catch (Exception e)
            {
                var ex = new BCException(e.Message);
                throw ex;
            }
        }