Is there a CiviCRM payment processor extension to support Square?
It might not be too hard to implement the omnipay version, there's a contributed plugin for that here: https://packagist.org/packages/ryanthompson/omnipay-square

If you want to take this route, here's how it might look [thanks petednz for the prod].


Read my old wiki entry here: https://wiki.civicrm.org/confluence/display/CRMDOC/Omnipay
as a general introduction to what omnipay is.
Get a copy of the omnipay payment processor extension. The extension home is here: https://civicrm.org/extensions/omnipay-multiprocessor-extension
But you'll want to clone it from the repo here:
https://github.com/eileenmcnaughton/nz.co.fuzion.omnipaymultiprocessor
Add the omnipay-square plugin to the omnipay payment processor exentsion. Yes, this is the hard part. There is a simple note here:
https://github.com/eileenmcnaughton/nz.co.fuzion.omnipaymultiprocessor/blob/master/README.md
I found that it was most instructive to look at some examples.


A few things I found helpful were:

a. Learn about composer if you don't already know about it. Don't skip this step or you'll get confused.

b. You have two routes if the omnipay plugin doesn't just work out of the box - either contribute your modifications back to the original project and keep it as the source of the plugin (possibly from your forked repo), or you can fork the original and create it as a separate project. The first one is usually the right answer, particularly if the existing plugin looks like it's going to be maintained. There are some confusing bits in terms of the vendor paths and git sources in the composer file that you'll have to figure out to sort this out.