Stripe product ID not unique per purchasable item

mattrogowski

Well-known member
Licensed customer
Affected version
2.2, 2.3
The Stripe payment handler generates the Product and Plan ID with this:

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.
 
Back
Top Bottom