3 final class PhortuneCartUpdateController
4 extends PhortuneCartController
{
6 protected function shouldRequireAccountAuthority() {
10 protected function shouldRequireMerchantAuthority() {
14 protected function handleCartRequest(AphrontRequest
$request) {
15 $viewer = $request->getViewer();
16 $id = $request->getURIData('id');
18 $cart = $this->getCart();
19 $authority = $this->getMerchantAuthority();
21 $charges = id(new PhortuneChargeQuery())
23 ->withCartPHIDs(array($cart->getPHID()))
27 PhortuneCharge
::STATUS_HOLD
,
28 PhortuneCharge
::STATUS_CHARGED
,
33 $providers = id(new PhortunePaymentProviderConfigQuery())
35 ->withPHIDs(mpull($charges, 'getProviderPHID'))
37 $providers = mpull($providers, null, 'getPHID');
42 foreach ($charges as $charge) {
43 if ($charge->isRefund()) {
44 // Don't update refunds.
48 $provider_config = idx($providers, $charge->getProviderPHID());
49 if (!$provider_config) {
50 throw new Exception(pht('Unable to load provider for charge!'));
53 $provider = $provider_config->buildProvider();
54 $provider->updateCharge($charge);
57 return id(new AphrontRedirectResponse())
58 ->setURI($cart->getDetailURI());