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); }