private Address doValidateAddress(ShippoSession session, IShippingContext context, Address address, Guid logID, out ValidateShippingAddressException error) { error = null; var cred = (ShippoCredentials)session.User.Credentials; var body = getAddressBody(address); body["validate"] = true; // validate address request var request = new WebClient.RequestParams(this) { Method = HTTPRequestMethod.POST, ContentType = ContentType.JSON, Headers = new Dictionary <string, string> { { HDR_AUTHORIZATION, HDR_AUTHORIZATION_TOKEN.Args(cred.PrivateToken) } }, Body = body.ToJSON(JSONWritingOptions.Compact) }; var response = WebClient.GetJson(new Uri(URI_API_BASE + URI_ADDRESS), request); Log(MessageType.Info, "doValidateAddress()", response.ToJSON(), relatedMessageID: logID); // check for validation errors: // Shippo API can return STATUS_INVALID or (!!!) STATUS_VALID but with 'code'="Invalid" var state = response["object_state"].AsString(STATUS_INVALID); var messages = response["messages"] as JSONDataArray; JSONDataMap message = null; var code = string.Empty; var text = string.Empty; if (messages != null) { message = messages.FirstOrDefault() as JSONDataMap; } if (message != null) { code = message["code"].AsString(string.Empty); text = message["text"].AsString(string.Empty); } // error found if (!state.EqualsIgnoreCase(STATUS_VALID) || code.EqualsIgnoreCase(CODE_INVALID)) { var errMess = StringConsts.SHIPPO_VALIDATE_ADDRESS_INVALID_ERROR.Args(text); Log(MessageType.Error, "doValidateAddress()", errMess, relatedMessageID: logID); error = new ValidateShippingAddressException(errMess, text); return(null); } // no errors var corrAddress = getAddressFromJSON(response); return(corrAddress); }
public override Address ValidateAddress(ShippingSession session, IShippingContext context, Address address, out ValidateShippingAddressException error) { throw new ShippingException("Not supported"); }
public Address ValidateAddress(ShippoSession session, IShippingContext context, Address address, out ValidateShippingAddressException error) { var logID = Log(MessageType.Info, "ValidateAddress()", StringConsts.SHIPPO_VALIDATE_ADDRESS_MESSAGE); try { return(doValidateAddress(session, context, address, logID, out error)); } catch (Exception ex) { StatValidateAddressErrorCount(); var header = StringConsts.SHIPPO_VALIDATE_ADDRESS_ERROR.Args(ex.ToMessageWithType()); Log(MessageType.Error, "ValidateAddress()", header, ex, logID); throw ShippingException.ComposeError(ex.Message, ex); } }
public override Address ValidateAddress(ShippingSession session, IShippingContext context, Address address, out ValidateShippingAddressException error) { return(ValidateAddress((ShippoSession)session, context, address, out error)); }