Braintree returning "91569 paymentMethodNonce does not contain a valid payment instrument type" for ApplePay - Why?
<p>I recently migrated my server and all of it's files to a new machine. In the process, something has changed with my setup and I'm having some payment issues with Braintree.</p>

<p>I have an iOS client that accepts PayPal, Credit Card, and ApplePay and connects to my server via PHP as needed. It's been working perfectly fine before server the migration. Now, PayPal and Credit Card still works fine in production, but ApplePay no longer works.</p>

<p>When I pass a nonce up to the payments.php with payment_method_nonce= when using ApplePay, I am getting the following error returned:</p>

<pre><code>[0] =&gt; Braintree\Error\Validation Object
        (
            [_attribute:Braintree\Error\Validation:private] =&gt; paymentMethodNonce
            [_code:Braintree\Error\Validation:private] =&gt; 91569
            [_message:Braintree\Error\Validation:private] =&gt; paymentMethodNonce does not contain a valid payment instrument type.
        )
</code></pre>

<p>I know for a fact the issue isn't in the iOS code, because it's been live for quite a while now and has been working just fine. I'm using a valid real credit card in Apple Wallet on a normal production iPhone device. I have noticed since the server migration I've gotten zero ApplePay sales because of this issue.</p>

<p>This error started happening when I migrated the server and so there must be some configuration error on the PHP side in some way. I've done the install with composer.phar and just copied over my payments.php page from my other server, so there are no changes to anything that I can tell.</p>

<p>Ideas? Why wouldn't an ApplePay payment nonce "not contain a valid payment instrument type"? Obviously any ApplePay transaction would include a valid payment type (such as Visa)... so what is going on?</p>

<p>The one major change between the two servers was the old one was on PHP 5.4 and the new one is on 5.6. I also have all the web files (including payments.php) on a D: drive rather than a C: drive now.</p>