Exemplo n.º 1
0
        public static RefundCreateResponse Create(long amount, string occ,
                                                  string externalUniqueNumber, string authorizationCode, Options options)
        {
            options = Options.Build(options);
            NullifyTransactionRequest request =
                OnepayRequestBuilder.Instance.BuildNullifyTransactionRequest(amount, occ,
                                                                             externalUniqueNumber, authorizationCode, options);
            string output = JsonConvert.SerializeObject(request);
            string input  = RequestAsync($"{ServiceUri}/{CreateRefund}",
                                         HttpMethod.Post, output).Result;
            NullifyTransactionResponse response =
                JsonConvert.DeserializeObject <NullifyTransactionResponse>(input);

            if (response == null || response.ResponseCode == null)
            {
                throw new RefundCreateException("Could not obtain the service response");
            }
            else if (!response.ResponseCode.Equals("ok",
                                                   StringComparison.OrdinalIgnoreCase))
            {
                throw new RefundCreateException(
                          $"{response.ResponseCode} : {response.Description}");
            }

            if (!OnepaySignUtil.Instance.Validate(
                    response.Result, options.SharedSecret))
            {
                throw new SignatureException("Response signature is not valid");
            }

            return(response.Result);
        }
        public NullifyTransactionRequest BuildNullifyTransactionRequest(long amount, string occ, string externalUniqueNumber, string authorizationCode, Options options)
        {
            var request =
                new NullifyTransactionRequest(occ, externalUniqueNumber,
                                              authorizationCode, amount, GetTicksNow());

            PrepareRequest(request, options);
            onePaySignUtil.Sign(request, options.SharedSecret);
            return(request);
        }