How do you handle network timeouts or partial failures during a critical payment transaction to prevent duplicate charges in Accelyst apps?