Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13973282
D10203.id24559.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
27 KB
Referenced Files
None
Subscribers
None
D10203.id24559.diff
View Options
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -2479,10 +2479,10 @@
'PhortuneNoPaymentProviderException' => 'applications/phortune/exception/PhortuneNoPaymentProviderException.php',
'PhortuneNotImplementedException' => 'applications/phortune/exception/PhortuneNotImplementedException.php',
'PhortunePaymentMethod' => 'applications/phortune/storage/PhortunePaymentMethod.php',
+ 'PhortunePaymentMethodCreateController' => 'applications/phortune/controller/PhortunePaymentMethodCreateController.php',
+ 'PhortunePaymentMethodDisableController' => 'applications/phortune/controller/PhortunePaymentMethodDisableController.php',
'PhortunePaymentMethodEditController' => 'applications/phortune/controller/PhortunePaymentMethodEditController.php',
- 'PhortunePaymentMethodListController' => 'applications/phortune/controller/PhortunePaymentMethodListController.php',
'PhortunePaymentMethodQuery' => 'applications/phortune/query/PhortunePaymentMethodQuery.php',
- 'PhortunePaymentMethodViewController' => 'applications/phortune/controller/PhortunePaymentMethodViewController.php',
'PhortunePaymentProvider' => 'applications/phortune/provider/PhortunePaymentProvider.php',
'PhortunePaymentProviderTestCase' => 'applications/phortune/provider/__tests__/PhortunePaymentProviderTestCase.php',
'PhortunePaypalPaymentProvider' => 'applications/phortune/provider/PhortunePaypalPaymentProvider.php',
@@ -5386,10 +5386,10 @@
'PhortuneDAO',
'PhabricatorPolicyInterface',
),
+ 'PhortunePaymentMethodCreateController' => 'PhortuneController',
+ 'PhortunePaymentMethodDisableController' => 'PhortuneController',
'PhortunePaymentMethodEditController' => 'PhortuneController',
- 'PhortunePaymentMethodListController' => 'PhabricatorController',
'PhortunePaymentMethodQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
- 'PhortunePaymentMethodViewController' => 'PhabricatorController',
'PhortunePaymentProviderTestCase' => 'PhabricatorTestCase',
'PhortunePaypalPaymentProvider' => 'PhortunePaymentProvider',
'PhortuneProduct' => array(
diff --git a/src/applications/phortune/application/PhabricatorPhortuneApplication.php b/src/applications/phortune/application/PhabricatorPhortuneApplication.php
--- a/src/applications/phortune/application/PhabricatorPhortuneApplication.php
+++ b/src/applications/phortune/application/PhabricatorPhortuneApplication.php
@@ -36,11 +36,15 @@
'' => 'PhortuneLandingController',
'(?P<accountID>\d+)/' => array(
'' => 'PhortuneAccountViewController',
- 'paymentmethod/' => array(
- 'edit/' => 'PhortunePaymentMethodEditController',
+ 'card/' => array(
+ 'new/' => 'PhortunePaymentMethodCreateController',
),
'buy/(?P<productID>\d+)/' => 'PhortuneProductPurchaseController',
),
+ 'card/(?P<id>\d+)/' => array(
+ 'edit/' => 'PhortunePaymentMethodEditController',
+ 'disable/' => 'PhortunePaymentMethodDisableController',
+ ),
'cart/(?P<id>\d+)/' => array(
'' => 'PhortuneCartViewController',
'checkout/' => 'PhortuneCartCheckoutController',
diff --git a/src/applications/phortune/controller/PhortuneAccountViewController.php b/src/applications/phortune/controller/PhortuneAccountViewController.php
--- a/src/applications/phortune/controller/PhortuneAccountViewController.php
+++ b/src/applications/phortune/controller/PhortuneAccountViewController.php
@@ -79,7 +79,12 @@
private function buildPaymentMethodsSection(PhortuneAccount $account) {
$request = $this->getRequest();
- $user = $request->getUser();
+ $viewer = $request->getUser();
+
+ $can_edit = PhabricatorPolicyFilter::hasCapability(
+ $viewer,
+ $account,
+ PhabricatorPolicyCapability::CAN_EDIT);
$id = $account->getID();
@@ -88,19 +93,18 @@
->addActionLink(
id(new PHUIButtonView())
->setTag('a')
- ->setHref($this->getApplicationURI($id.'/paymentmethod/edit/'))
+ ->setHref($this->getApplicationURI($id.'/card/new/'))
->setText(pht('Add Payment Method'))
->setIcon(id(new PHUIIconView())->setIconFont('fa-plus')));
$list = id(new PHUIObjectItemListView())
- ->setUser($user)
+ ->setUser($viewer)
->setNoDataString(
pht('No payment methods associated with this account.'));
$methods = id(new PhortunePaymentMethodQuery())
- ->setViewer($user)
+ ->setViewer($viewer)
->withAccountPHIDs(array($account->getPHID()))
- ->withStatus(PhortunePaymentMethodQuery::STATUS_OPEN)
->execute();
if ($methods) {
@@ -108,21 +112,40 @@
}
foreach ($methods as $method) {
+ $id = $method->getID();
+
$item = new PHUIObjectItemView();
- $item->setHeader($method->getBrand().' / '.$method->getLastFourDigits());
+ $item->setHeader($method->getFullDisplayName());
switch ($method->getStatus()) {
case PhortunePaymentMethod::STATUS_ACTIVE:
- $item->addAttribute(pht('Active'));
$item->setBarColor('green');
+
+ $disable_uri = $this->getApplicationURI('card/'.$id.'/disable/');
+ $item->addAction(
+ id(new PHUIListItemView())
+ ->setIcon('fa-times')
+ ->setHref($disable_uri)
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(true));
+ break;
+ case PhortunePaymentMethod::STATUS_DISABLED:
+ $item->setDisabled(true);
break;
}
- $item->addAttribute(
- pht(
- 'Added %s by %s',
- phabricator_datetime($method->getDateCreated(), $user),
- $this->getHandle($method->getAuthorPHID())->renderLink()));
+ $provider = $method->buildPaymentProvider();
+ $item->addAttribute($provider->getPaymentMethodProviderDescription());
+ $item->setImageURI($provider->getPaymentMethodIcon());
+
+ $edit_uri = $this->getApplicationURI('card/'.$id.'/edit/');
+
+ $item->addAction(
+ id(new PHUIListItemView())
+ ->setIcon('fa-pencil')
+ ->setHref($edit_uri)
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit));
$list->addItem($item);
}
diff --git a/src/applications/phortune/controller/PhortuneCartCheckoutController.php b/src/applications/phortune/controller/PhortuneCartCheckoutController.php
--- a/src/applications/phortune/controller/PhortuneCartCheckoutController.php
+++ b/src/applications/phortune/controller/PhortuneCartCheckoutController.php
@@ -28,7 +28,7 @@
$methods = id(new PhortunePaymentMethodQuery())
->setViewer($viewer)
->withAccountPHIDs(array($account->getPHID()))
- ->withStatus(PhortunePaymentMethodQuery::STATUS_OPEN)
+ ->withStatuses(array(PhortunePaymentMethod::STATUS_ACTIVE))
->execute();
$e_method = null;
@@ -57,6 +57,7 @@
->setAccountPHID($account->getPHID())
->setCartPHID($cart->getPHID())
->setAuthorPHID($viewer->getPHID())
+ ->setPaymentProviderKey($provider->getProviderKey())
->setPaymentMethodPHID($method->getPHID())
->setAmountInCents($cart->getTotalPriceInCents())
->setStatus(PhortuneCharge::STATUS_PENDING);
@@ -105,7 +106,7 @@
$method_control->setError($e_method);
$payment_method_uri = $this->getApplicationURI(
- $account->getID().'/paymentmethod/edit/');
+ $account->getID().'/card/new/');
$form = id(new AphrontFormView())
->setUser($viewer)
diff --git a/src/applications/phortune/controller/PhortunePaymentMethodEditController.php b/src/applications/phortune/controller/PhortunePaymentMethodCreateController.php
copy from src/applications/phortune/controller/PhortunePaymentMethodEditController.php
copy to src/applications/phortune/controller/PhortunePaymentMethodCreateController.php
--- a/src/applications/phortune/controller/PhortunePaymentMethodEditController.php
+++ b/src/applications/phortune/controller/PhortunePaymentMethodCreateController.php
@@ -1,6 +1,6 @@
<?php
-final class PhortunePaymentMethodEditController
+final class PhortunePaymentMethodCreateController
extends PhortuneController {
private $accountID;
diff --git a/src/applications/phortune/controller/PhortunePaymentMethodDisableController.php b/src/applications/phortune/controller/PhortunePaymentMethodDisableController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/phortune/controller/PhortunePaymentMethodDisableController.php
@@ -0,0 +1,64 @@
+<?php
+
+final class PhortunePaymentMethodDisableController
+ extends PhortuneController {
+
+ private $methodID;
+
+ public function willProcessRequest(array $data) {
+ $this->methodID = $data['id'];
+ }
+
+ public function processRequest() {
+ $request = $this->getRequest();
+ $viewer = $request->getUser();
+
+ $method = id(new PhortunePaymentMethodQuery())
+ ->setViewer($viewer)
+ ->withIDs(array($this->methodID))
+ ->requireCapabilities(
+ array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ PhabricatorPolicyCapability::CAN_EDIT,
+ ))
+ ->executeOne();
+ if (!$method) {
+ return new Aphront404Response();
+ }
+
+ if ($method->getStatus() == PhortunePaymentMethod::STATUS_DISABLED) {
+ return new Aphront400Response();
+ }
+
+ $account = $method->getAccount();
+ $account_uri = $this->getApplicationURI($account->getID().'/');
+
+ if ($request->isFormPost()) {
+
+ // TODO: ApplicationTransactions!
+ $method
+ ->setStatus(PhortunePaymentMethod::STATUS_DISABLED)
+ ->save();
+
+ return id(new AphrontRedirectResponse())->setURI($account_uri);
+ }
+
+ return $this->newDialog()
+ ->setTitle(pht('Disable Payment Method?'))
+ ->setShortTitle(pht('Disable Payment Method'))
+ ->appendParagraph(
+ pht(
+ 'Disable the payment method "%s"?',
+ phutil_tag(
+ 'strong',
+ array(),
+ $method->getFullDisplayName())))
+ ->appendParagraph(
+ pht(
+ 'You will no longer be able to make payments using this payment '.
+ 'method. Disabled payment methods can not be reactivated.'))
+ ->addCancelButton($account_uri)
+ ->addSubmitButton(pht('Disable Payment Method'));
+ }
+
+}
diff --git a/src/applications/phortune/controller/PhortunePaymentMethodEditController.php b/src/applications/phortune/controller/PhortunePaymentMethodEditController.php
--- a/src/applications/phortune/controller/PhortunePaymentMethodEditController.php
+++ b/src/applications/phortune/controller/PhortunePaymentMethodEditController.php
@@ -3,133 +3,74 @@
final class PhortunePaymentMethodEditController
extends PhortuneController {
- private $accountID;
+ private $methodID;
public function willProcessRequest(array $data) {
- $this->accountID = $data['accountID'];
+ $this->methodID = $data['id'];
}
public function processRequest() {
$request = $this->getRequest();
- $user = $request->getUser();
+ $viewer = $request->getUser();
- $account = id(new PhortuneAccountQuery())
- ->setViewer($user)
- ->withIDs(array($this->accountID))
+ $method = id(new PhortunePaymentMethodQuery())
+ ->setViewer($viewer)
+ ->withIDs(array($this->methodID))
+ ->requireCapabilities(
+ array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ PhabricatorPolicyCapability::CAN_EDIT,
+ ))
->executeOne();
- if (!$account) {
+ if (!$method) {
return new Aphront404Response();
}
- $cancel_uri = $this->getApplicationURI($account->getID().'/');
+ $account = $method->getAccount();
$account_uri = $this->getApplicationURI($account->getID().'/');
- $providers = PhortunePaymentProvider::getProvidersForAddPaymentMethod();
- if (!$providers) {
- throw new Exception(
- 'There are no payment providers enabled that can add payment '.
- 'methods.');
- }
+ if ($request->isFormPost()) {
- $provider_key = $request->getStr('providerKey');
- if (empty($providers[$provider_key])) {
- $choices = array();
- foreach ($providers as $provider) {
- $choices[] = $this->renderSelectProvider($provider);
- }
+ $name = $request->getStr('name');
- $content = phutil_tag(
- 'div',
- array(
- 'class' => 'phortune-payment-method-list',
- ),
- $choices);
-
- return $this->newDialog()
- ->setRenderDialogAsDiv(true)
- ->setTitle(pht('Add Payment Method'))
- ->appendParagraph(pht('Choose a payment method to add:'))
- ->appendChild($content)
- ->addCancelButton($account_uri);
- }
+ // TODO: Use ApplicationTransactions
- $provider = $providers[$provider_key];
-
- $errors = array();
- if ($request->isFormPost() && $request->getBool('isProviderForm')) {
- $method = id(new PhortunePaymentMethod())
- ->setAccountPHID($account->getPHID())
- ->setAuthorPHID($user->getPHID())
- ->setStatus(PhortunePaymentMethod::STATUS_ACTIVE)
- ->setProviderType($provider->getProviderType())
- ->setProviderDomain($provider->getProviderDomain());
-
- if (!$errors) {
- $errors = $this->processClientErrors(
- $provider,
- $request->getStr('errors'));
- }
-
- if (!$errors) {
- $client_token_raw = $request->getStr('token');
- $client_token = json_decode($client_token_raw, true);
- if (!is_array($client_token)) {
- $errors[] = pht(
- 'There was an error decoding token information submitted by the '.
- 'client. Expected a JSON-encoded token dictionary, received: %s.',
- nonempty($client_token_raw, pht('nothing')));
- } else {
- if (!$provider->validateCreatePaymentMethodToken($client_token)) {
- $errors[] = pht(
- 'There was an error with the payment token submitted by the '.
- 'client. Expected a valid dictionary, received: %s.',
- $client_token_raw);
- }
- }
- if (!$errors) {
- $errors = $provider->createPaymentMethodFromRequest(
- $request,
- $method,
- $client_token);
- }
- }
-
- if (!$errors) {
- $method->save();
-
- $save_uri = new PhutilURI($account_uri);
- $save_uri->setFragment('payment');
- return id(new AphrontRedirectResponse())->setURI($save_uri);
- } else {
- $dialog = id(new AphrontDialogView())
- ->setUser($user)
- ->setTitle(pht('Error Adding Payment Method'))
- ->appendChild(id(new AphrontErrorView())->setErrors($errors))
- ->addCancelButton($request->getRequestURI());
-
- return id(new AphrontDialogResponse())->setDialog($dialog);
- }
+ $method->setName($name);
+ $method->save();
+
+ return id(new AphrontRedirectResponse())->setURI($account_uri);
}
- $form = $provider->renderCreatePaymentMethodForm($request, $errors);
+ $provider = $method->buildPaymentProvider();
- $form
- ->setUser($user)
- ->setAction($request->getRequestURI())
- ->setWorkflow(true)
- ->addHiddenInput('providerKey', $provider_key)
- ->addHiddenInput('isProviderForm', true)
+ $form = id(new AphrontFormView())
+ ->setUser($viewer)
+ ->appendChild(
+ id(new AphrontFormTextControl())
+ ->setLabel(pht('Name'))
+ ->setName('name')
+ ->setValue($method->getName()))
+ ->appendChild(
+ id(new AphrontFormStaticControl())
+ ->setLabel(pht('Details'))
+ ->setValue($method->getSummary()))
+ ->appendChild(
+ id(new AphrontFormStaticControl())
+ ->setLabel(pht('Expires'))
+ ->setValue($method->getDisplayExpires()))
->appendChild(
id(new AphrontFormSubmitControl())
- ->setValue(pht('Add Payment Method'))
- ->addCancelButton($account_uri));
+ ->addCancelButton($account_uri)
+ ->setValue(pht('Save Changes')));
$box = id(new PHUIObjectBoxView())
- ->setHeaderText($provider->getPaymentMethodDescription())
- ->setForm($form);
+ ->setHeaderText(pht('Edit Payment Method'))
+ ->appendChild($form);
$crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(pht('Add Payment Method'));
+ $crumbs->addTextCrumb($account->getName(), $account_uri);
+ $crumbs->addTextCrumb($method->getDisplayName());
+ $crumbs->addTextCrumb(pht('Edit'));
return $this->buildApplicationPage(
array(
@@ -137,97 +78,8 @@
$box,
),
array(
- 'title' => $provider->getPaymentMethodDescription(),
+ 'title' => pht('Edit Payment Method'),
));
}
- private function renderSelectProvider(
- PhortunePaymentProvider $provider) {
-
- $request = $this->getRequest();
- $user = $request->getUser();
-
- $description = $provider->getPaymentMethodDescription();
- $icon_uri = $provider->getPaymentMethodIcon();
- $details = $provider->getPaymentMethodProviderDescription();
-
- $this->requireResource('phortune-css');
-
- $icon = id(new PHUIIconView())
- ->setImage($icon_uri)
- ->addClass('phortune-payment-icon');
-
- $button = id(new PHUIButtonView())
- ->setSize(PHUIButtonView::BIG)
- ->setColor(PHUIButtonView::GREY)
- ->setIcon($icon)
- ->setText($description)
- ->setSubtext($details);
-
- $form = id(new AphrontFormView())
- ->setUser($user)
- ->addHiddenInput('providerKey', $provider->getProviderKey())
- ->appendChild($button);
-
- return $form;
- }
-
- private function processClientErrors(
- PhortunePaymentProvider $provider,
- $client_errors_raw) {
-
- $errors = array();
-
- $client_errors = json_decode($client_errors_raw, true);
- if (!is_array($client_errors)) {
- $errors[] = pht(
- 'There was an error decoding error information submitted by the '.
- 'client. Expected a JSON-encoded list of error codes, received: %s.',
- nonempty($client_errors_raw, pht('nothing')));
- }
-
- foreach (array_unique($client_errors) as $key => $client_error) {
- $client_errors[$key] = $provider->translateCreatePaymentMethodErrorCode(
- $client_error);
- }
-
- foreach (array_unique($client_errors) as $client_error) {
- switch ($client_error) {
- case PhortuneErrCode::ERR_CC_INVALID_NUMBER:
- $message = pht(
- 'The card number you entered is not a valid card number. Check '.
- 'that you entered it correctly.');
- break;
- case PhortuneErrCode::ERR_CC_INVALID_CVC:
- $message = pht(
- 'The CVC code you entered is not a valid CVC code. Check that '.
- 'you entered it correctly. The CVC code is a 3-digit or 4-digit '.
- 'numeric code which usually appears on the back of the card.');
- break;
- case PhortuneErrCode::ERR_CC_INVALID_EXPIRY:
- $message = pht(
- 'The card expiration date is not a valid expiration date. Check '.
- 'that you entered it correctly. You can not add an expired card '.
- 'as a payment method.');
- break;
- default:
- $message = $provider->getCreatePaymentMethodErrorMessage(
- $client_error);
- if (!$message) {
- $message = pht(
- "There was an unexpected error ('%s') processing payment ".
- "information.",
- $client_error);
-
- phlog($message);
- }
- break;
- }
-
- $errors[$client_error] = $message;
- }
-
- return $errors;
- }
-
}
diff --git a/src/applications/phortune/controller/PhortunePaymentMethodListController.php b/src/applications/phortune/controller/PhortunePaymentMethodListController.php
deleted file mode 100644
--- a/src/applications/phortune/controller/PhortunePaymentMethodListController.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-final class PhortunePaymentMethodListController extends PhabricatorController {
-
- public function processRequest() {
- $request = $this->getRequest();
- $user = $request->getUser();
-
- $title = pht('Payment Methods');
- $crumbs = $this->buildApplicationCrumbs();
-
- return $this->buildApplicationPage(
- array(
- $crumbs,
- ),
- array(
- 'title' => $title,
- ));
- }
-
-}
diff --git a/src/applications/phortune/controller/PhortunePaymentMethodViewController.php b/src/applications/phortune/controller/PhortunePaymentMethodViewController.php
deleted file mode 100644
--- a/src/applications/phortune/controller/PhortunePaymentMethodViewController.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-final class PhortunePaymentMethodViewController extends PhabricatorController {
-
- public function processRequest() {
-
- $title = '...';
- $crumbs = $this->buildApplicationCrumbs();
-
- return $this->buildApplicationPage(
- array(
- $crumbs,
- ),
- array(
- 'title' => $title,
- ));
- }
-
-}
diff --git a/src/applications/phortune/provider/PhortuneBalancedPaymentProvider.php b/src/applications/phortune/provider/PhortuneBalancedPaymentProvider.php
--- a/src/applications/phortune/provider/PhortuneBalancedPaymentProvider.php
+++ b/src/applications/phortune/provider/PhortuneBalancedPaymentProvider.php
@@ -27,6 +27,10 @@
return pht('Processed by Balanced');
}
+ public function getDefaultPaymentMethodDisplayName(
+ PhortunePaymentMethod $method) {
+ return pht('Credit/Debit Card');
+ }
public function canHandlePaymentMethod(PhortunePaymentMethod $method) {
$type = $method->getMetadataValue('type');
diff --git a/src/applications/phortune/provider/PhortunePaymentProvider.php b/src/applications/phortune/provider/PhortunePaymentProvider.php
--- a/src/applications/phortune/provider/PhortunePaymentProvider.php
+++ b/src/applications/phortune/provider/PhortunePaymentProvider.php
@@ -169,6 +169,11 @@
throw new PhortuneNotImplementedException($this);
}
+ public function getDefaultPaymentMethodDisplayName(
+ PhortunePaymentMethod $method) {
+ throw new PhortuneNotImplementedException($this);
+ }
+
/* -( One-Time Payments )-------------------------------------------------- */
diff --git a/src/applications/phortune/provider/PhortuneStripePaymentProvider.php b/src/applications/phortune/provider/PhortuneStripePaymentProvider.php
--- a/src/applications/phortune/provider/PhortuneStripePaymentProvider.php
+++ b/src/applications/phortune/provider/PhortuneStripePaymentProvider.php
@@ -27,6 +27,10 @@
return pht('Processed by Stripe');
}
+ public function getDefaultPaymentMethodDisplayName(
+ PhortunePaymentMethod $method) {
+ return pht('Credit/Debit Card');
+ }
public function canHandlePaymentMethod(PhortunePaymentMethod $method) {
$type = $method->getMetadataValue('type');
diff --git a/src/applications/phortune/provider/PhortuneTestPaymentProvider.php b/src/applications/phortune/provider/PhortuneTestPaymentProvider.php
--- a/src/applications/phortune/provider/PhortuneTestPaymentProvider.php
+++ b/src/applications/phortune/provider/PhortuneTestPaymentProvider.php
@@ -26,9 +26,14 @@
return pht('Infinite Free Money');
}
+ public function getDefaultPaymentMethodDisplayName(
+ PhortunePaymentMethod $method) {
+ return pht('Vast Wealth');
+ }
+
public function canHandlePaymentMethod(PhortunePaymentMethod $method) {
$type = $method->getMetadataValue('type');
- return ($type === 'test.cash' || $type === 'test.multiple');
+ return ($type === 'test.wealth' || $type == 'test.multiple');
}
protected function executeCharge(
@@ -69,8 +74,13 @@
$method
->setExpires('2050', '01')
->setBrand('FreeMoney')
- ->setLastFourDigits('9999');
+ ->setLastFourDigits('9999')
+ ->setMetadata(
+ array(
+ 'type' => 'test.wealth',
+ ));
+ return array();
}
diff --git a/src/applications/phortune/query/PhortunePaymentMethodQuery.php b/src/applications/phortune/query/PhortunePaymentMethodQuery.php
--- a/src/applications/phortune/query/PhortunePaymentMethodQuery.php
+++ b/src/applications/phortune/query/PhortunePaymentMethodQuery.php
@@ -6,10 +6,7 @@
private $ids;
private $phids;
private $accountPHIDs;
-
- const STATUS_ANY = 'status-any';
- const STATUS_OPEN = 'status-open';
- private $status = self::STATUS_ANY;
+ private $statuses;
public function withIDs(array $ids) {
$this->ids = $ids;
@@ -26,8 +23,8 @@
return $this;
}
- public function withStatus($status) {
- $this->status = $status;
+ public function withStatuses(array $statuses) {
+ $this->statuses = $statuses;
return $this;
}
@@ -77,41 +74,32 @@
private function buildWhereClause(AphrontDatabaseConnection $conn) {
$where = array();
- if ($this->ids) {
+ if ($this->ids !== null) {
$where[] = qsprintf(
$conn,
'id IN (%Ld)',
$this->ids);
}
- if ($this->phids) {
+ if ($this->phids !== null) {
$where[] = qsprintf(
$conn,
'phid IN (%Ls)',
$this->phids);
}
- if ($this->accountPHIDs) {
+ if ($this->accountPHIDs !== null) {
$where[] = qsprintf(
$conn,
'accountPHID IN (%Ls)',
$this->accountPHIDs);
}
- switch ($this->status) {
- case self::STATUS_ANY;
- break;
- case self::STATUS_OPEN:
- $where[] = qsprintf(
- $conn,
- 'status in (%Ls)',
- array(
- PhortunePaymentMethod::STATUS_ACTIVE,
- PhortunePaymentMethod::STATUS_FAILED,
- ));
- break;
- default:
- throw new Exception("Unknown status '{$this->status}'!");
+ if ($this->statuses !== null) {
+ $where[] = qsprintf(
+ $conn,
+ 'status IN (%Ls)',
+ $this->statuses);
}
$where[] = $this->buildPagingClause($conn);
diff --git a/src/applications/phortune/storage/PhortunePaymentMethod.php b/src/applications/phortune/storage/PhortunePaymentMethod.php
--- a/src/applications/phortune/storage/PhortunePaymentMethod.php
+++ b/src/applications/phortune/storage/PhortunePaymentMethod.php
@@ -8,8 +8,7 @@
implements PhabricatorPolicyInterface {
const STATUS_ACTIVE = 'payment:active';
- const STATUS_FAILED = 'payment:failed';
- const STATUS_REMOVED = 'payment:removed';
+ const STATUS_DISABLED = 'payment:disabled';
protected $name = '';
protected $status;
@@ -82,11 +81,36 @@
return head($accept);
}
+
+ public function getDisplayName() {
+ if (strlen($this->name)) {
+ return $this->name;
+ }
+
+ $provider = $this->buildPaymentProvider();
+ return $provider->getDefaultPaymentMethodDisplayName($this);
+ }
+
+ public function getFullDisplayName() {
+ return pht('%s (%s)', $this->getDisplayName(), $this->getSummary());
+ }
+
+ public function getSummary() {
+ return pht('%s %s', $this->getBrand(), $this->getLastFourDigits());
+ }
+
public function setExpires($year, $month) {
$this->expires = $year.'-'.$month;
return $this;
}
+ public function getDisplayExpires() {
+ list($year, $month) = explode('-', $this->getExpires());
+ $month = sprintf('%02d', $month);
+ $year = substr($year, -2);
+ return $month.'/'.$year;
+ }
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Oct 19 2024, 12:12 AM (4 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6729347
Default Alt Text
D10203.id24559.diff (27 KB)
Attached To
Mode
D10203: Make payment method management somewhat more reasonable in Phortune
Attached
Detach File
Event Timeline
Log In to Comment