3 final class PhortuneCreditCardForm
extends Phobject
{
6 private $scripts = array();
8 private $errors = array();
10 private $cardNumberError;
11 private $cardCVCError;
12 private $cardExpirationError;
13 private $securityAssurance;
15 public function setSecurityAssurance($security_assurance) {
16 $this->securityAssurance
= $security_assurance;
20 public function getSecurityAssurance() {
21 return $this->securityAssurance
;
24 public function setUser(PhabricatorUser
$user) {
29 public function setErrors(array $errors) {
30 $this->errors
= $errors;
34 public function addScript($script_uri) {
35 $this->scripts
[] = $script_uri;
39 public function getFormID() {
41 $this->formID
= celerity_generate_unique_node_id();
46 public function buildForm() {
47 $form_id = $this->getFormID();
49 require_celerity_resource('phortune-credit-card-form-css');
50 require_celerity_resource('phortune-credit-card-form');
52 require_celerity_resource('aphront-tooltip-css');
53 Javelin
::initBehavior('phabricator-tooltips');
55 $form = new AphrontFormView();
57 foreach ($this->scripts
as $script) {
62 'type' => 'text/javascript',
67 $errors = $this->errors
;
68 $e_number = isset($errors[PhortuneErrCode
::ERR_CC_INVALID_NUMBER
])
72 $e_cvc = isset($errors[PhortuneErrCode
::ERR_CC_INVALID_CVC
])
76 $e_expiry = isset($errors[PhortuneErrCode
::ERR_CC_INVALID_EXPIRY
])
83 id(new AphrontFormTextControl())
84 ->setLabel(pht('Card Number'))
85 ->setDisableAutocomplete(true)
86 ->setSigil('number-input')
87 ->setError($e_number))
89 id(new AphrontFormTextControl())
90 ->setLabel(pht('CVC'))
91 ->setDisableAutocomplete(true)
92 ->addClass('aphront-form-cvc-input')
93 ->setSigil('cvc-input')
96 id(new PhortuneMonthYearExpiryControl())
97 ->setLabel(pht('Expiration'))
98 ->setUser($this->user
)
99 ->setError($e_expiry));
101 $assurance = $this->getSecurityAssurance();
103 $assurance = phutil_tag(
106 'class' => 'phortune-security-assurance',
109 id(new PHUIIconView())
110 ->setIcon('fa-lock grey'),
116 id(new AphrontFormMarkupControl())
117 ->setValue($assurance));