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*/ RefundCall refundCall = new RefundCall(config, requestData); Dictionary <string, string> response = refundCall.Execute(); //return the response data to web page return(Request.CreateResponse(HttpStatusCode.OK, response)); }
public void PurchaseToRefundTestCall() { /*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(); //Purchase 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"); PurchaseCall purchaseCall = new PurchaseCall(config, authParams); Dictionary <String, String> purchaseResult = purchaseCall.Execute(); Assert.AreEqual(purchaseResult["result"], "success"); if (purchaseResult["result"] == "success" && (purchaseResult["status"] == "SET_FOR_CAPTURE" || purchaseResult["status"] == "CAPTURED")) { string status = string.Empty; while (status != "CAPTURED") { Dictionary <String, String> statusParam = new Dictionary <String, String>(); statusParam.Add("txId", purchaseResult["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", purchaseResult["merchantTxId"]); 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"); } }