public async Task <object> Post()

        {
            /* Get request paramters from HttpContent object, parse it to dictionary format*/
            HttpContent requestContent = Request.Content;
            string      res            = requestContent.ReadAsStringAsync().Result;
            Dictionary <String, String> requestData = Tools.requestToDictionary(res);

            /*Init appliction configuration, get a config object*/
            string merchantID = Properties.Settings.Default.merchantId;
            string password   = Properties.Settings.Default.password;
            string merchantNotificationUrl = Properties.Settings.Default.merchantNotificationUrl;
            string allowOriginUrl          = Properties.Settings.Default.allowOriginUrl;
            string merchantLandingPageUrl  = Properties.Settings.Default.merchantLandingPageUrl;
            string environment             = Properties.Settings.Default.TurnkeySdkConfig;

            ApplicationConfig config = new ApplicationConfig(merchantID, password, allowOriginUrl, merchantNotificationUrl,
                                                             merchantLandingPageUrl, environment);

            /*Execute the action call and get the response*/
            CaptureCall capture = new CaptureCall(config, requestData);
            Dictionary <string, string> response = capture.Execute();

            //return the response data to web page
            return(Request.CreateResponse(HttpStatusCode.OK, response));
        }
예제 #2
0
        public void CaptureToVoidExTestCall()
        {
            /*Init appliction configuration*/
            ApplicationConfig config = ObjectFactory.config;

            // TOKENIZE
            Dictionary <String, String> tokenizeParams = new Dictionary <string, string>();

            tokenizeParams.Add("number", "5424180279791732");
            tokenizeParams.Add("nameOnCard", "mastercard");
            tokenizeParams.Add("expiryYear", "2021");
            tokenizeParams.Add("expiryMonth", "04");

            TokenizeCall tokenizeCall = new TokenizeCall(config, tokenizeParams);
            Dictionary <String, String> tokenizeResult = tokenizeCall.Execute();

            Dictionary <String, String> authParams = new Dictionary <String, String>();

            authParams.Add("amount", "20.0");
            authParams.Add("channel", Channel.ECOM.GetCode());
            authParams.Add("country", CountryCode.PL.GetCode());
            authParams.Add("currency", CurrencyCode.PLN.GetCode());
            authParams.Add("paymentSolutionId", "500");
            authParams.Add("customerId", tokenizeResult["customerId"]);
            authParams.Add("specinCreditCardToken", tokenizeResult["cardToken"]);
            authParams.Add("specinCreditCardCVV", "111");
            authParams.Add("merchantNotificationUrl", "http://localhost:8080/api/TransactionResultCallback");

            AuthCall authCall = new AuthCall(config, authParams);
            Dictionary <String, String> authResult = authCall.Execute();

            Assert.AreEqual(authResult["result"], "success");

            if (authResult["result"] == "success" && authResult["status"] == "NOT_SET_FOR_CAPTURE")
            {
                // CAPTURE
                Dictionary <String, String> captrueInputParams = new Dictionary <String, String>();
                captrueInputParams.Add("originalMerchantTxId", authResult["merchantTxId"]);
                captrueInputParams.Add("amount", "20.0");

                CaptureCall captureCall = new CaptureCall(config, captrueInputParams);
                Dictionary <String, String> captureResult = captureCall.Execute();
                if (captureResult["result"] == "success")
                {
                    // VOID
                    Dictionary <String, String> inputParams = new Dictionary <String, String>();
                    inputParams.Add("originalMerchantTxId", authResult["merchantTxId"]);
                    //inputParams.Add("country", "FR");
                    //inputParams.Add("currency", "EUR");

                    VoidCall call = new VoidCall(config, inputParams);
                    Dictionary <String, String> result = call.Execute();

                    Assert.AreEqual(result["result"], "success");
                }
            }
        }
예제 #3
0
        public void AuthToRefundTestCall()
        {
            /*Init appliction configuration*/
            ApplicationConfig config = ObjectFactory.config;

            // TOKENIZE
            Dictionary <String, String> tokenizeParams = new Dictionary <string, string>();

            tokenizeParams.Add("number", "5424180279791732");
            tokenizeParams.Add("nameOnCard", "mastercard");
            tokenizeParams.Add("expiryYear", "2021");
            tokenizeParams.Add("expiryMonth", "04");

            TokenizeCall tokenizeCall = new TokenizeCall(config, tokenizeParams);
            Dictionary <String, String> tokenizeResult = tokenizeCall.Execute();

            //AUTH
            Dictionary <String, String> authParams = new Dictionary <String, String>();

            authParams.Add("amount", "20.0");
            authParams.Add("channel", Channel.ECOM.GetCode());
            authParams.Add("country", CountryCode.PL.GetCode());
            authParams.Add("currency", CurrencyCode.PLN.GetCode());
            authParams.Add("paymentSolutionId", "500");
            authParams.Add("customerId", tokenizeResult["customerId"]);
            authParams.Add("specinCreditCardToken", tokenizeResult["cardToken"]);
            authParams.Add("specinCreditCardCVV", "111");
            authParams.Add("merchantNotificationUrl", "http://localhost:8080/api/TransactionResultCallback");

            AuthCall authCall = new AuthCall(config, authParams);
            Dictionary <String, String> authResult = authCall.Execute();

            Assert.AreEqual(authResult["result"], "success");

            // CAPTURE
            if (authResult["result"] == "success" && authResult["status"] == "NOT_SET_FOR_CAPTURE")
            {
                Dictionary <String, String> captureParams = new Dictionary <String, String>();
                captureParams.Add("originalMerchantTxId", authResult["merchantTxId"]);
                captureParams.Add("amount", "20.0");

                CaptureCall call = new CaptureCall(config, captureParams);
                Dictionary <String, String> result = call.Execute();


                if (result["result"] == "success" && (result["status"] == "SET_FOR_CAPTURE" || result["status"] == "CAPTURED"))
                {
                    string status = string.Empty;
                    while (status != "CAPTURED")
                    {
                        Dictionary <String, String> statusParam = new Dictionary <String, String>();
                        statusParam.Add("txId", authResult["txId"]);

                        StatusCheckCall             statusCall   = new StatusCheckCall(config, statusParam);
                        Dictionary <String, String> statusResult = statusCall.Execute();
                        status = statusResult["status"];
                    }
                    Dictionary <String, String> refundParams = new Dictionary <String, String>();
                    refundParams.Add("originalMerchantTxId", result["originalMerchantTxId"]);
                    refundParams.Add("amount", "20.0");

                    RefundCall cCall = new RefundCall(config, refundParams);
                    Dictionary <String, String> cptrueResult = cCall.Execute();

                    Assert.AreEqual(cptrueResult["result"], "success");
                    Assert.AreEqual(cptrueResult["status"], "SET_FOR_REFUND");
                }
            }
        }