Skip to content

Commit ff57093

Browse files
authored
Merge pull request #3067 from catchpoint/security_token
added security token
2 parents b9452eb + 5c7f397 commit ff57093

File tree

4 files changed

+69
-3
lines changed

4 files changed

+69
-3
lines changed

www/src/CPSignupClient.php

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,4 +288,51 @@ private function makeRequest(string $method, string $url, array $headers, array
288288
throw $e;
289289
}
290290
}
291+
292+
private function httpGetCjsToken($endpoint, $identifier)
293+
{
294+
$result = null;
295+
if (!isset($identifier) || strlen($identifier) === 0) {
296+
return $result;
297+
}
298+
$params = array('identifier' => $identifier);
299+
$url = $endpoint . '?' . http_build_query($params);
300+
if (function_exists('curl_init')) {
301+
$ch = curl_init($url);
302+
$headers = array();
303+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
304+
curl_setopt($ch, CURLOPT_FAILONERROR, true);
305+
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
306+
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
307+
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
308+
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
309+
curl_setopt($ch, CURLOPT_HEADERFUNCTION, function ($curl, $header) use (&$headers) {
310+
$len = strlen($header);
311+
$header = explode(':', $header, 2);
312+
if (count($header) < 2) { // ignore invalid headers
313+
return $len;
314+
}
315+
$headers[strtolower(trim($header[0]))] = trim($header[1]);
316+
return $len;
317+
});
318+
$response = curl_exec($ch);
319+
curl_close($ch);
320+
if ($response !== false) {
321+
$result = $response;
322+
}
323+
}
324+
return $result;
325+
}
326+
327+
328+
public function getChargifySecurityToken($identifier)
329+
{
330+
$url = Util::getSetting('cp_security_token_url');
331+
$result = $this->httpGetCjsToken($url, $identifier);
332+
$ret = null;
333+
if (isset($result)) {
334+
$ret = $result;
335+
}
336+
return $ret;
337+
}
291338
}

www/src/Handlers/Account.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,12 @@ public static function updatePaymentMethodConfirmBilling(RequestContext $request
550550
$results['renewaldate'] = $body->renewaldate;
551551
}
552552

553-
$results['ch_client_token'] = Util::getSetting('ch_key_public');
553+
$contact_id = strval($request_context->getUser()->getContactId());
554+
$ch_client_token = Util::getSetting('ch_key_public');
555+
$ch_security_token = $request_context->getSignupClient()->getChargifySecurityToken($contact_id);
556+
557+
$results['ch_security_token'] = $ch_security_token;
558+
$results['ch_client_token'] = $ch_client_token;
554559
$results['ch_site'] = Util::getSetting('ch_site');
555560
$results['support_link'] = Util::getSetting('support_link', 'https://support.catchpoint.com');
556561
return $tpl->render('billing/update-payment', $results);
@@ -1051,6 +1056,10 @@ public static function getAccountPage(RequestContext $request_context, string $p
10511056
$oldPlan = $all_plans->getPlanById($customer->getWptPlanId());
10521057
$results['is_pending'] = $is_pending;
10531058

1059+
$contact_id = strval($request_context->getUser()->getContactId());
1060+
$ch_security_token = $request_context->getSignupClient()->getChargifySecurityToken($contact_id);
1061+
$results['ch_security_token'] = $ch_security_token;
1062+
10541063
$results['ch_client_token'] = Util::getSetting('ch_key_public');
10551064
$results['ch_site'] = Util::getSetting('ch_site');
10561065
$results['is_upgrade'] = $plan->isUpgrade($oldPlan);
@@ -1059,6 +1068,10 @@ public static function getAccountPage(RequestContext $request_context, string $p
10591068
$content = $tpl->render('plans/plan-summary', $results);
10601069
return new Response($content, Response::HTTP_OK);
10611070
} else {
1071+
$contact_id = strval($request_context->getUser()->getContactId());
1072+
$ch_security_token = $request_context->getSignupClient()->getChargifySecurityToken($contact_id);
1073+
$results['ch_security_token'] = $ch_security_token;
1074+
10621075
$results['ch_client_token'] = Util::getSetting('ch_key_public');
10631076
$results['ch_site'] = Util::getSetting('ch_site');
10641077

www/src/Handlers/Signup.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,18 @@ public static function getStepThree(RequestContext $request_context, array $vars
9797
$vars['billing_frequency'] = $plan->getBillingFrequency();
9898
}
9999

100-
$vars['ch_client_token'] = Util::getSetting('ch_key_public');
100+
$email = htmlentities($_SESSION['signup-email']);
101+
$ch_client_token = Util::getSetting('ch_key_public');
102+
$ch_security_token = $request_context->getSignupClient()->getChargifySecurityToken($email);
103+
104+
$vars['ch_client_token'] = $ch_client_token;
105+
$vars['ch_security_token'] = $ch_security_token;
101106
$vars['ch_site'] = Util::getSetting('ch_site');
102107

103108
$vars['first_name'] = isset($_SESSION['signup-first-name']) ? htmlentities($_SESSION['signup-first-name']) : "";
104109
$vars['last_name'] = isset($_SESSION['signup-last-name']) ? htmlentities($_SESSION['signup-last-name']) : "";
105110
$vars['company_name'] = htmlentities($_SESSION['signup-company-name']);
106-
$vars['email'] = htmlentities($_SESSION['signup-email']);
111+
$vars['email'] = $email;
107112
$vars['password'] = htmlentities($_SESSION['signup-password']);
108113

109114
$vars['street_address'] = htmlentities($_SESSION['signup-street-address']);

www/templates/account/includes/chargify-payment-form.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
var textColor = document.querySelectorAll('.my-account-page').length > 0 ? '#111111' : '#ffffff';
3939
chargify.load({
4040
publicKey: "<?= $ch_client_token ?>",
41+
securityToken: "<?= $ch_security_token ?>",
4142
type: 'card',
4243
serverHost: "<?= $ch_site ?>", //'https://acme.chargify.com'
4344
hideCardImage: false,

0 commit comments

Comments
 (0)