You are using Spree::Product SKU for product_code (productCode) with Braintree, but this is not correct, because Braintree has a limit at 12 characters, while Spree does not.
Ordering a product with a SKU longer than 12 characters will fail. I don't know if it's even necessary to send the productCode to Braintree or why you are doing that anyway.