From the looks of it it seems that you need to run a full node. I run a node myself and there is very little system overhead outside of hard disk space to store the block chain (which honestly isn't too big of a deal, so long as you make sure you have enough space for it to grow).
Once you have a node that's caught up on the blockchain (in my experience this takes anywhere between a few hours to 2 days depending on the system (SSD's help a lot) and network).
The basics of receiving payment are:
- Generate a payment ID (a random 64 character hexadecimal string)
- Communicate the payment ID and Monero address
- Check for the payment using the "payments" command in simplewallet
It's worth noting that the name of this command has been changed to monero-wallet-cli since the writing of the tutorial
Then you'd want to check your wallet to ensure that the funds have been received. To do this programatically a JSON RPC API is available. Here are two helpful commands to accomplish this:
- get_payments: this requires a payment_id parameter with a single payment ID
- get_bulk_payments: this is the preferred method, and requires two parameters, payment_ids - a JSON array of payment IDs - and an optional min_block_height - the block height to scan from.
additionally here is the general algorithm that is recommended to scan for transactions:
- Get the current block height from the daemon, only proceed if it has increased since our last scan
- Call the get_bulk_payments RPC API call with our last scanned height and the list of all payment IDs in our system
- Store the current block height as our last scanned height
- Remove duplicates based on transaction hashes we have already received and processed
Also the following is essential knowledge to tally payments:
a transaction will typically have multiple outputs that add up to the
total required for the payment, the amounts should be grouped by the
tx_hash or the payment_id and added together. Additionally, as
multiple outputs can have the same amount, it is imperative not to try
and filter out the returned data from a single get_bulk_payments call.
See https://getmonero.org/getting-started/accepting for more details