Is there any way to prevent people paying by eCheck in a PayPal payment. They can be cancelled by the sender, or the payment can bounce, and I don't want to deal with it in my business logic.
I received my first eCheck payment today, and my code crashed, it was trying to parse the paypal response, and the field PAYMENTINFO_0_FEEAMT was missing for some reason.
here is the response from paypal - not the bizarre check clear date 1969-12-31?
{'PAYMENTINFO_0_TRANSACTIONTYPE': ['expresscheckout'], 'ACK': ['Success'], 'PAYMENTINFO_0_PAYMENTTYPE': ['echeck'], 'PAYMENTINFO_0_REASONCODE': ['None'], 'SHIPPINGOPTIONISDEFAULT': ['false'], 'INSURANCEOPTIONSELECTED': ['false'], 'CORRELATIONID': ['ab29c03a5blah'], 'PAYMENTINFO_0_TAXAMT': ['0.00'], 'PAYMENTINFO_0_TRANSACTIONID': ['3L382626CV22blahX'], 'PAYMENTINFO_0_ACK': ['Success'], 'PAYMENTINFO_0_EXPECTEDECHECKCLEARDATE': ['1969-12-31T16:00:00.000Z'], 'PAYMENTINFO_0_PENDINGREASON': ['echeck'], 'PAYMENTINFO_0_AMT': ['40.00'], 'PAYMENTINFO_0_PROTECTIONELIGIBILITY': ['Ineligible'], 'PAYMENTINFO_0_ERRORCODE': ['0'], 'TOKEN': ['EC-68T760256471blahE'], 'VERSION': ['124.0'], 'SUCCESSPAGEREDIRECTREQUESTED': ['false'], 'PAYMENTINFO_0_PAYMENTSTATUS': ['Pending'], 'PAYMENTINFO_0_CURRENCYCODE': ['AUD'], 'TIMESTAMP': ['2017-05-15T11:58:35Z'], 'PAYMENTINFO_0_SECUREMERCHANTACCOUNTID': ['F4Q9blahblahS'], 'PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE': ['None'], 'PAYMENTINFO_0_ORDERTIME': ['2017-05-15T11:58:35Z'], 'BUILD': ['33490117']}
I remember fixing this issue for reference transactions (DoReferenceTransaction
) by adding PAYMENTTYPE=InstantOnly
to the API request.
Based on PayPal's API reference I see that the PAYMENTTYPE
parameter is supported in SetExpressCheckout
(as L_PAYMENTTYPEn
)
and DoExpressCheckoutPayment
. I haven't looked at other express checkout operations.
In PayPal's new REST API, looks like you can set the payment_mode
parameter to INSTANT_TRANSFER