- Affected version
- 2.2, 2.3
The Stripe payment handler generates the Product and Plan ID with this:
However this doesn't differentiate between the entity ID being purchased. For example if you had "User Upgrade 1" and "User Upgrade 2" with the same price and length, it would only create a single Product and Plan in Stripe for whichever one was purchased first, and sales of both upgrades would be attributed to the same Product in Stripe.
It should use
PHP:
protected function getStripeProductAndPlanId(Purchase $purchase)
{
return $purchase->purchasableTypeId . '_' . md5(
$purchase->currency . $purchase->cost . $purchase->lengthAmount . $purchase->lengthUnit
);
}
However this doesn't differentiate between the entity ID being purchased. For example if you had "User Upgrade 1" and "User Upgrade 2" with the same price and length, it would only create a single Product and Plan in Stripe for whichever one was purchased first, and sales of both upgrades would be attributed to the same Product in Stripe.
It should use
$purchase->purchasableId as well to make sure these are unique.