NeuroticFish is correct...
walletnotify should trigger twice for each transaction... once on initial receipt of (unconfirmed) transaction and once when the transaction gets it's first confirmation.
If you're getting the 1st update, but not the 2nd "in your shop", then most likely your code at the shop end is to blame. You can check that
walletnotify itself is working correctly by simply using a simple shell script that just appends to a local text file... check to see that you're getting each transactionID twice.
This example from an old thread should work quite well:
#!/bin/bash
F=/home/btcdev/wallet_transaction_log
D=`date +"%Y%m%d%H%M%S"`
echo ${D} - ${1} >> ${F}
Once you have confirmed that it is indeed triggering twice, you'll just need to try and find out where the break in your chain is... I'd guess in the processing on the server of the "
http://myoniondomainname.onion/transactions/btc" call.