Bott and Tu do this completely, in the de Rham theoretic setting of course.

Here's an alternate proof I plan to use in singular theory next time I teach this material, which I find slightly more direct than using Thom classes (which require the tubular neighborhood theorem, etc):

Definition: Given a collection $S = \{W_i\}$ of submanifolds of a manifold $X$, define the smooth chain complex transverse to $S$, denoted ${C^S}_*(X)$, by using the subgroups of the singular chain groups in which the basis chains $\Delta^n \to X$ are smooth and transverse to all of the $W_i$.

Lemma: The inclusion ${C^S}_*(X) \to C_*(X)$ is a quasi-isomorophism, for any such collection $S$.

Now if $W \in S$ then "count of intersection with $W$" gives a perfectly well-defined element $\tau_W$ of
${\rm Hom}(C^S_*(X), A)$ and thus by this quasi-isomorphism a well-defined cocycle if the $W$ is proper and has no boundary. It is immediate that this cocycle evaluates on cycles which are represented by closed submanifolds through intersection count.
It is also not hard (but takes a bit to work out all the details) to show that the cup product of these cochains (when the submanifolds intersect transversally) is given by the intersection class of their intersection - we compute on the chains which intersect all of $W$, $V$ and $W \cap V$ transversally and reduce to linear settings. Consider for example $W$ the $x$-axis in the plane, $V$ with $y$-axis, and then various $2$-simplices can contain the origin (or not) and have various faces which intersect the axes (or not) all consistent with the formula for cup product.