Ejemplo n.º 1
0
        // POST: api/BankSale
        public HttpResponseMessage Post([FromBody] SaleRequest saleRequest)
        {
            //json formatında data gelcek
            //formatlıcak
            //dbye token oluşturup kayıt atcak

            SaleResponse saleResponse = new SaleResponse();

            SalePersistence sp       = new SalePersistence();
            long            bankguid = 0;

            bankguid = sp.insertTransaction(saleRequest);

            //token algorihm

            string token_data = new Utilities().generateToken(saleRequest, bankguid.ToString());

            sp.updateTransactionTokenByGuid(token_data, bankguid);
            saleResponse.token_data = token_data;

            JObject payLoad = new JObject(
                new JProperty("error_code", "0000000"),
                new JProperty("error_desc", "Basarili"),
                new JProperty("token_data", saleResponse.token_data),
                new JProperty("bank_transaction_guid", bankguid)
                );

            return(new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(payLoad.ToString())
            });
        }
        // POST: api/GetTransactionDetail
        public JObject Post([FromBody] GetTransactionDetailRequest getTransactionDetailRequest)
        {
            //TODO qr string geldi,çözümle
            //yeni nesne classı transaction diye,
            //o nesneyle dbye git,bekliyor statulu kaydı bul dicez
            //response olarak sonucunu dön
            String error_code  = "";
            String error_desc  = "";
            string jsonRequest = "";

            try
            {
                jsonRequest = getTransactionDetailRequest.qr_string;
            }
            catch (Exception)
            {
                error_code = "1234567";
                error_desc = "Hatali QR";
                throw;
            }
            String[] getTokenData = jsonRequest.Split('=');


            String[] splitted = getTokenData[1].Split(':');
            long     guid     = Convert.ToInt64(splitted[3]);



            SalePersistence sp       = new SalePersistence();
            string          db_token = sp.selectTokenDataByGuid(guid);

            if (db_token == getTokenData[1])
            {
                error_code = "0000000";
                error_desc = "Basarili";
            }
            else
            {
                error_code = "1234567";
                error_desc = "Hata!!!";
            }

            JObject payLoad = new JObject(
                new JProperty("error_code", error_code),
                new JProperty("error_desc", error_desc),
                new JProperty("merchant_no", splitted[0]),
                new JProperty("terminal_no", splitted[1]),
                new JProperty("amount", splitted[2]),
                new JProperty("guid", guid.ToString())
                );


            return(payLoad);
        }
        // POST: api/CompleteTransaction

        public CompleteTransactionResponse Post([FromBody] CompleteTransactionRequest completeTransactionRequest)

        {
            SalePersistence sp = new SalePersistence();

            int result = sp.updateTransactionStatus(completeTransactionRequest);



            CompleteTransactionResponse completeTransactionResponse = new CompleteTransactionResponse();

            completeTransactionResponse.status = result.ToString();



            return(completeTransactionResponse);
        }
Ejemplo n.º 4
0
        // POST: api/Sale

        public async System.Threading.Tasks.Task <JObject> PostAsync([FromBody] SaleRequest saleRequest)

        {
            // Merchant Tableti tarafından POST edilen transaction bilgilerini al.

            // DB'ye bekleniyor statusunde kayıt at.

            // BankBE'ye aynı bilgileri POST'et.

            SalePersistence sp = new SalePersistence();

            long mrcguid = 0;

            mrcguid = sp.insertTransaction(saleRequest);



            using (HttpClient client = new HttpClient())

            {
                //string serviceUrl = "http://192.168.1.101:50461/api/BankSale";

                //string serviceUrl = "https://posnetict.yapikredi.com.tr/BankBE/api/BankSale";

                string serviceUrl = "http://zehraisilyilmaz.com/BankBE/api/BankSale";

                client.DefaultRequestHeaders.Clear();

                var username = "******";

                var password = "******";

                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{password}")));



                JObject payLoad = new JObject(

                    new JProperty("merchant_no", saleRequest.merchant_no),

                    new JProperty("terminal_no", saleRequest.terminal_no),

                    new JProperty("amount", saleRequest.amount),

                    new JProperty("merchant_transaction_guid", mrcguid)

                    );



                var httpContent = new StringContent(payLoad.ToString(), Encoding.UTF8, "application/json");



                using (HttpResponseMessage response = await client.PostAsync(serviceUrl, httpContent))

                {
                    try

                    {
                        response.EnsureSuccessStatusCode();

                        // Handle success
                    }

                    catch (HttpRequestException e)

                    {
                        // Handle failure
                    }

                    string responseBody = await response.Content.ReadAsStringAsync();

                    JObject json = JObject.Parse(responseBody);

                    //gelen response daki bank_transaction_guid i where guid i mrcguid olanla dbde update et,tokendatayıda update et şekerim



                    SaleResponse resp = new SaleResponse();

                    resp.token_data = json["token_data"].ToString();

                    resp.bank_transaction_guid = (long)json["bank_transaction_guid"];

                    sp.updateTransactionfromBank(mrcguid, resp);



                    JObject jsonResponse = new JObject(

                        new JProperty("token_data", resp.token_data)

                        );



                    return(jsonResponse);
                }
            }
        }
Ejemplo n.º 5
0
        // POST: api/DoTransaction
        public async System.Threading.Tasks.Task <JObject> Post([FromBody] DoTransactionRequest doTransactionRequest)
        {
            Utilities       util          = new Utilities();
            SalePersistence sp            = new SalePersistence();
            PosnetRequest   posnetRequest = sp.selectTransactionByGuid(Convert.ToInt64(doTransactionRequest.guid));

            //merchant,terminal,amount dbden çekip doldu.
            //ApiType,ApiVersion ,IsMailOrder,PaymentInstrumentType,currencycode obje oluşurken doldu.
            posnetRequest.ApiType                        = "JSON";
            posnetRequest.ApiVersion                     = "1.0.0.0";
            posnetRequest.IsMailOrder                    = "N";
            posnetRequest.PaymentInstrumentType          = "CARD";
            posnetRequest.CurrencyCode                   = "TL";
            posnetRequest.OrderId                        = "MPOS_" + doTransactionRequest.guid.PadLeft(19, '0');//üret
            posnetRequest.CardInformationData            = new CardInformationData();
            posnetRequest.CardInformationData.CardNo     = doTransactionRequest.card_no;
            posnetRequest.CardInformationData.Cvc2       = doTransactionRequest.cvc2;
            posnetRequest.CardInformationData.ExpireDate = doTransactionRequest.expire_date;
            posnetRequest.InstallmentCount               = doTransactionRequest.installment_num;

            if (doTransactionRequest.installment_num > 0)
            {
                posnetRequest.InstallmentType = "Y";
            }
            else
            {
                posnetRequest.InstallmentType = "N";
            }
            //Get values from WebConfig
            string encryptionKey = ConfigurationManager.AppSettings["EncryptionKey"].ToString();

            posnetRequest.MACParams = "MerchantNo:TerminalNo:CardNo:Cvc2:ExpireDate";
            string merchantNo = ConfigurationManager.AppSettings["MerchantNo"].ToString();
            string terminalNo = ConfigurationManager.AppSettings["TerminalNo"].ToString();
            string macCheck   = merchantNo.Trim() + terminalNo.Trim() + doTransactionRequest.card_no + doTransactionRequest.cvc2 + doTransactionRequest.expire_date + encryptionKey.Trim();//util.generateMac(posnetRequest) + encryptionKey.Trim();
            string k          = util.generateMac(posnetRequest) + encryptionKey.Trim();

            if (macCheck == k)
            {
                string a = ";";
            }
            var sha            = new SHA256CryptoServiceProvider();
            var hashedMacCheck = Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes(macCheck)));

            posnetRequest.MAC = hashedMacCheck;
            sha.Clear();
            //posnetRequest.MAC = util.generateMac(posnetRequest);
            //TripleDESCustom tripleDES = new TripleDESCustom();
            //string macString = util.generateMac(posnetRequest);
            //var EncHashMacString = tripleDES.Encrypt(encryptionKey, macString, CipherMode.CBC);
            //posnetRequest.MAC = EncHashMacString;


            ////abdullah abinin servisini çağır posnetRequest ile,responsu ile de gelsin
            using (HttpClient client = new HttpClient())
            {
                string serviceUrl         = "https://posnetict.yapikredi.com.tr/MerchantService/MerchantJSONAPI.svc/Sale";
                string serviceUrlMerchant = "https://posnetict.yapikredi.com.tr/MerchantBE/api/CompleteTransaction";
                client.DefaultRequestHeaders.Clear();
                var username = "******";
                var password = "******";
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{password}")));

                JObject payLoad = new JObject(
                    new JProperty("ApiType", posnetRequest.ApiType),
                    new JProperty("ApiVersion", posnetRequest.ApiVersion),
                    new JProperty("MAC", posnetRequest.MAC),
                    new JProperty("MACParams", posnetRequest.MACParams),
                    new JProperty("MerchantNo", posnetRequest.MerchantNo),
                    new JProperty("TerminalNo", posnetRequest.TerminalNo),
                    new JProperty("CardInformationData",
                                  new JObject(
                                      new JProperty("CardHolderName", "MEHMET EMIN TOPRAK"),
                                      new JProperty("CardNo", posnetRequest.CardInformationData.CardNo),
                                      new JProperty("Cvc2", posnetRequest.CardInformationData.Cvc2),
                                      new JProperty("ExpireDate", posnetRequest.CardInformationData.ExpireDate)
                                      )
                                  ),
                    new JProperty("IsMailOrder", posnetRequest.IsMailOrder),
                    new JProperty("IsTDSecureMerchant", null),
                    new JProperty("PaymentInstrumentType", posnetRequest.PaymentInstrumentType),
                    new JProperty("Amount", posnetRequest.Amount),
                    new JProperty("CurrencyCode", posnetRequest.CurrencyCode),
                    new JProperty("OrderId", posnetRequest.OrderId),
                    new JProperty("InstallmentCount", posnetRequest.InstallmentCount.ToString()),
                    new JProperty("InstallmentType", posnetRequest.InstallmentType),
                    new JProperty("PointAmount", null)
                    );

                var httpContent = new StringContent(payLoad.ToString(), Encoding.UTF8, "application/json");

                using (HttpResponseMessage response = await client.PostAsync(serviceUrl, httpContent))
                {
                    try
                    {
                        response.EnsureSuccessStatusCode();
                        // Handle success
                    }
                    catch (HttpRequestException e)
                    {
                        // Handle failure
                    }

                    int     timeflag     = 0;
                    JObject jsonResponse = new JObject();
                    string  errorCode    = "";
                    string  errorDesc    = "";
                    string  status       = "P";
                    string  merchant_transaction_guid = "";


                    string responseBody = await response.Content.ReadAsStringAsync();

                    if (responseBody != "")
                    {
                        //gelen response daki bank_transaction_guid i where guid i mrcguid olanla dbde update et,tokendatayıda update et şekerim
                        //"{\"ServiceResponseData\":{\"ResponseCode\":\"E216\",\"ResponseDescription\":\"Mac Doğrulama hatalı\"},\"AuthCode\":null,\"ReferenceCode\":null,\"PointDataList\":null,\"InstallmentData\":null,\"MessageData\":null}"
                        JObject json = JObject.Parse(responseBody);
                        errorCode = json["ServiceResponseData"]["ResponseCode"].ToString().PadLeft(7, '0');
                        errorDesc = json["ServiceResponseData"]["ResponseDescription"].ToString();
                        /*Cevap Gelmişse, Insert YKBDMZ Log*/
                        sp.insertTransactionLog("doSale-YKBDMZ", responseBody, payLoad.ToString(), Convert.ToInt64(doTransactionRequest.guid), serviceUrl);//string methodName, string responseJson, string requestJson, long guidOrginal
                    }



                    if (errorCode == "0000000")
                    {
                        status = "C"; //başarılı
                    }
                    else
                    {
                        status = "E"; //hatalı
                    }
                    //bankanın işlem statüsünü günceller
                    sp.updateTransactionStatus(status, Convert.ToInt64(doTransactionRequest.guid));

                    //merchant_ın guidsi elimde zaten
                    merchant_transaction_guid = sp.selectMerchantGuidByGuid(Convert.ToInt64(doTransactionRequest.guid));


                    //MerchantBE servisini çağır
                    JObject jsonMerchant = new JObject(
                        new JProperty("status", status),
                        new JProperty("merchant_guid", merchant_transaction_guid));
                    httpContent = new StringContent(jsonMerchant.ToString(), Encoding.UTF8, "application/json");
                    using (HttpResponseMessage responseMerchant = await client.PostAsync(serviceUrlMerchant, httpContent))
                    {
                        try
                        {
                            responseMerchant.EnsureSuccessStatusCode();
                            // Handle success
                        }
                        catch (HttpRequestException e1)
                        {
                            // Handle failure
                        }
                        string responseBodyMerchant = await response.Content.ReadAsStringAsync();
                    }



                    // "{\"ServiceResponseData\":{\"ResponseCode\":\"E216\",\"ResponseDescription\":\"Mac Doğrulama hatalı\"},\"AuthCode\":null,\"ReferenceCode\":null,\"PointDataList\":null,\"InstallmentData\":null,\"MessageData\":null}"
                    jsonResponse = new JObject(
                        new JProperty("error_code", errorCode),
                        new JProperty("error_desc", errorDesc),
                        new JProperty("token_data", ""),
                        new JProperty("bank_transaction_guid", ""));

                    /*Cevap Gelmişse, Insert YKBDMZ Log*/
                    sp.insertTransactionLog("MerchantBECompleteTransaction", jsonResponse.ToString(), jsonMerchant.ToString(), Convert.ToInt64(doTransactionRequest.guid), serviceUrlMerchant);//string methodName, string responseJson, string requestJson, long guidOrginal

                    return(jsonResponse);
                }
            }
        }