Paypal returns the status 'SuccessfulWithWarnning', which is treated as a successful request. However, the warnings contain useful information e.g. 'A successful transaction has already been completed for this token.' so we should capture these. The warnings come back in the same fields as errors but feel more advisory than a typical error. We could try and put them all into the errors stack, but I was worried that might suggest something more severe than necessary.
Currently, we have three distinct types of errors in SmashPig, PaymentError, ValidationError and the newly proposed PaymentWarning. These types all share the property 'debugMessage' and feel close enough to share a common ancestor.