My experience differs from others here. I did an integration for a national charity.
A simple integration is straightforward; however if you want to test all permutations possible the support is lacking.
The different documentation (their "turoial" ones, the API docs, and their helpdesk documents) contradicted at times.
But the testing story was the worst part. In the end we took a "Run in production, save all GoCardless events, replay and test/correct the behaviour based on them". This was the only way we were able to get all expected properties in uncommon cases e.g. where a supporter used the Current Account Switching Service, so the DD was migrated to a new bank account.
An easier way to set up the scenarios, to mock all cases, and to re-run them would be appreciated. In their sandbox, you have to wait in realtime for the next DD collection to occur.
I find most payment processors not brilliant at supporting automated testing, but at least the number of card numbers etc that Stripe, Braintree et al have allow easy testing of any flows.