diff --git a/src/applications/phortune/product/PhortuneSubscriptionProduct.php b/src/applications/phortune/product/PhortuneSubscriptionProduct.php index dc1aed421b..9b83cbf6cb 100644 --- a/src/applications/phortune/product/PhortuneSubscriptionProduct.php +++ b/src/applications/phortune/product/PhortuneSubscriptionProduct.php @@ -43,6 +43,7 @@ final class PhortuneSubscriptionProduct } public function getPriceAsCurrency(PhortuneProduct $product) { + // Prices are calculated by the SubscriptionImplementation. return PhortuneCurrency::newEmptyCurrency(); } diff --git a/src/applications/phortune/storage/PhortuneSubscription.php b/src/applications/phortune/storage/PhortuneSubscription.php index 51ac283668..dedc0010fc 100644 --- a/src/applications/phortune/storage/PhortuneSubscription.php +++ b/src/applications/phortune/storage/PhortuneSubscription.php @@ -183,6 +183,13 @@ final class PhortuneSubscription extends PhortuneDAO return "/phortune/merchant/{$merchant_id}/subscription/view/{$id}/"; } + public function getCostForBillingPeriodAsCurrency($start_epoch, $end_epoch) { + return $this->getImplementation()->getCostForBillingPeriodAsCurrency( + $this, + $start_epoch, + $end_epoch); + } + /* -( PhabricatorPolicyInterface )----------------------------------------- */ diff --git a/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php b/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php index 8e7559c2e9..0abc346a85 100644 --- a/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php +++ b/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php @@ -8,6 +8,10 @@ abstract class PhortuneSubscriptionImplementation { abstract public function getRef(); abstract public function getName(PhortuneSubscription $subscription); + abstract public function getCostForBillingPeriodAsCurrency( + PhortuneSubscription $subscription, + $start_epoch, + $end_epoch); protected function getContentSource() { return PhabricatorContentSource::newForSource( diff --git a/src/applications/phortune/worker/PhortuneSubscriptionWorker.php b/src/applications/phortune/worker/PhortuneSubscriptionWorker.php index 8c9809042f..c59bef0422 100644 --- a/src/applications/phortune/worker/PhortuneSubscriptionWorker.php +++ b/src/applications/phortune/worker/PhortuneSubscriptionWorker.php @@ -42,9 +42,9 @@ final class PhortuneSubscriptionWorker extends PhabricatorWorker { $purchase = $cart->newPurchase($actor, $product); - // TODO: Consider allowing subscriptions to cost an amount other than one - // dollar and twenty-three cents. - $currency = PhortuneCurrency::newFromUserInput($actor, '1.23 USD'); + $currency = $subscription->getCostForBillingPeriodAsCurrency( + $last_epoch, + $next_epoch); $purchase ->setBasePriceAsCurrency($currency)