Version Notes
First release based on IridiumCorp module v1.16.2
Download this release
Release Info
Developer | IridiumCorp |
Extension | PayVector_Tpg |
Version | 1.0.0 |
Comparing to | |
See all releases |
Version 1.0.0
- app/code/local/PayVector/Checkout/Block/Onepage/Payment/Methods.php +38 -0
- app/code/local/PayVector/Checkout/Model/Type/Onepage.php +1011 -0
- app/code/local/PayVector/Checkout/etc/config.xml +24 -0
- app/code/local/PayVector/Sales/Model/Order.php +32 -0
- app/code/local/PayVector/Sales/Model/Order/Invoice.php +75 -0
- app/code/local/PayVector/Sales/Model/Order/Payment.php +553 -0
- app/code/local/PayVector/Sales/Model/Service/Quote.php +92 -0
- app/code/local/PayVector/Sales/etc/config.xml +56 -0
- app/code/local/PayVector/Tpg/Block/Adminhtml/Sales/Order/Payment.php +25 -0
- app/code/local/PayVector/Tpg/Block/Error.php +6 -0
- app/code/local/PayVector/Tpg/Block/Form.php +127 -0
- app/code/local/PayVector/Tpg/Block/Info.php +36 -0
- app/code/local/PayVector/Tpg/Block/Redirect.php +262 -0
- app/code/local/PayVector/Tpg/Block/Threedsecure.php +46 -0
- app/code/local/PayVector/Tpg/Helper/Data.php +6 -0
- app/code/local/PayVector/Tpg/Model/Common/GlobalErrors.php +38 -0
- app/code/local/PayVector/Tpg/Model/Common/ISOCountries.php +266 -0
- app/code/local/PayVector/Tpg/Model/Common/ISOCurrencies.php +199 -0
- app/code/local/PayVector/Tpg/Model/Common/PaymentFormHelper.php +539 -0
- app/code/local/PayVector/Tpg/Model/Common/ThePaymentGateway/PaymentSystem.php +3340 -0
- app/code/local/PayVector/Tpg/Model/Common/ThePaymentGateway/SOAP.php +1045 -0
- app/code/local/PayVector/Tpg/Model/Common/ThePaymentGateway/TPG_Common.php +1884 -0
- app/code/local/PayVector/Tpg/Model/Common/ThePaymentGateway/cacert.pem +3785 -0
- app/code/local/PayVector/Tpg/Model/Direct.php +1536 -0
- app/code/local/PayVector/Tpg/Model/Gatewayentrypoints.php +34 -0
- app/code/local/PayVector/Tpg/Model/Request.php +22 -0
- app/code/local/PayVector/Tpg/Model/Resource/Eav/Mysql4/Setup.php +6 -0
- app/code/local/PayVector/Tpg/Model/Resource/Gatewayentrypoints.php +9 -0
- app/code/local/PayVector/Tpg/Model/Resource/Gatewayentrypoints/Collection.php +8 -0
- app/code/local/PayVector/Tpg/Model/Resource/Setup.php +6 -0
- app/code/local/PayVector/Tpg/Model/Source/HashMethod.php +33 -0
- app/code/local/PayVector/Tpg/Model/Source/OrderStatus.php +15 -0
- app/code/local/PayVector/Tpg/Model/Source/PaymentAction.php +22 -0
- app/code/local/PayVector/Tpg/Model/Source/PaymentMode.php +30 -0
- app/code/local/PayVector/Tpg/Model/Source/ResultDeliveryMethod.php +28 -0
- app/code/local/PayVector/Tpg/controllers/PaymentController.php +1027 -0
- app/code/local/PayVector/Tpg/etc/config.xml +138 -0
- app/code/local/PayVector/Tpg/etc/system.xml +246 -0
- app/code/local/PayVector/Tpg/sql/tpg_setup/install-0.1.0.php +16 -0
- app/code/local/PayVector/Tpg/sql/tpg_setup/mysql4-install-0.1.0.php +58 -0
- app/design/adminhtml/base/default/template/tpg/form.phtml +87 -0
- app/design/adminhtml/base/default/template/tpg/info.phtml +18 -0
- app/design/adminhtml/default/default/layout/tpg.xml +11 -0
- app/design/adminhtml/default/default/template/payment/info/cc_tpg.phtml +172 -0
- app/design/adminhtml/default/default/template/tpg/form.phtml +87 -0
- app/design/adminhtml/default/default/template/tpg/info.phtml +18 -0
- app/design/frontend/base/default/template/tpg/form.phtml +198 -0
- app/design/frontend/base/default/template/tpg/info.phtml +18 -0
- app/design/frontend/default/default/template/tpg/form.phtml +93 -0
- app/design/frontend/default/default/template/tpg/info.phtml +17 -0
- package.xml +18 -0
- skin/adminhtml/default/default/tpg.js +35 -0
- skin/frontend/base/default/images/payvector.png +0 -0
- skin/frontend/default/default/images/payvector.png +0 -0
app/code/local/PayVector/Checkout/Block/Onepage/Payment/Methods.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* One page checkout status
|
5 |
+
*
|
6 |
+
* @category Mage
|
7 |
+
* @package Mage_Checkout
|
8 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
9 |
+
*/
|
10 |
+
class PayVector_Checkout_Block_Onepage_Payment_Methods extends Mage_Checkout_Block_Onepage_Payment_Methods
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* Override the base function - by default the PayVector payment option will be selected
|
14 |
+
*
|
15 |
+
* @return mixed
|
16 |
+
*/
|
17 |
+
public function getSelectedMethodCode()
|
18 |
+
{
|
19 |
+
$method = false;
|
20 |
+
$model = Mage::getModel('tpg/direct');
|
21 |
+
|
22 |
+
if($this->getQuote()->getPayment()->getMethod())
|
23 |
+
{
|
24 |
+
$method = $this->getQuote()->getPayment()->getMethod();
|
25 |
+
}
|
26 |
+
|
27 |
+
/*else
|
28 |
+
{
|
29 |
+
// force the current payment to be selected
|
30 |
+
if($model)
|
31 |
+
{
|
32 |
+
$method = 'tpg';
|
33 |
+
}
|
34 |
+
}*/
|
35 |
+
|
36 |
+
return $method;
|
37 |
+
}
|
38 |
+
}
|
app/code/local/PayVector/Checkout/Model/Type/Onepage.php
ADDED
@@ -0,0 +1,1011 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Checkout_Model_Type_Onepage extends Mage_Checkout_Model_Type_Onepage
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* Create an order
|
7 |
+
*
|
8 |
+
* @return Mage_Checkout_Model_Type_Onepage
|
9 |
+
*/
|
10 |
+
public function saveOrder()
|
11 |
+
{
|
12 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
13 |
+
if($nVersion >= 1600)
|
14 |
+
{
|
15 |
+
$this->validate();
|
16 |
+
$isNewCustomer = false;
|
17 |
+
switch($this->getCheckoutMethod())
|
18 |
+
{
|
19 |
+
case self::METHOD_GUEST:
|
20 |
+
$this->_prepareGuestQuote();
|
21 |
+
break;
|
22 |
+
case self::METHOD_REGISTER:
|
23 |
+
$this->_prepareNewCustomerQuote();
|
24 |
+
$isNewCustomer = true;
|
25 |
+
break;
|
26 |
+
default:
|
27 |
+
$this->_prepareCustomerQuote();
|
28 |
+
break;
|
29 |
+
}
|
30 |
+
$service = Mage::getModel('sales/service_quote', $this->getQuote());
|
31 |
+
$service->submitAll();
|
32 |
+
if($isNewCustomer)
|
33 |
+
{
|
34 |
+
try
|
35 |
+
{
|
36 |
+
$this->_involveNewCustomer();
|
37 |
+
}
|
38 |
+
catch(Exception $e)
|
39 |
+
{
|
40 |
+
Mage::logException($e);
|
41 |
+
}
|
42 |
+
}
|
43 |
+
$this->_checkoutSession->setLastQuoteId($this->getQuote()->getId())
|
44 |
+
->setLastSuccessQuoteId($this->getQuote()->getId())
|
45 |
+
->clearHelperData();
|
46 |
+
$order = $service->getOrder();
|
47 |
+
if($order)
|
48 |
+
{
|
49 |
+
Mage::dispatchEvent(
|
50 |
+
'checkout_type_onepage_save_order_after',
|
51 |
+
array('order' => $order, 'quote' => $this->getQuote())
|
52 |
+
);
|
53 |
+
/**
|
54 |
+
* a flag to set that there will be redirect to third party after confirmation
|
55 |
+
* eg: paypal standard ipn
|
56 |
+
*/
|
57 |
+
$redirectUrl = $this->getQuote()->getPayment()->getOrderPlaceRedirectUrl();
|
58 |
+
/**
|
59 |
+
* we only want to send to customer about new order when there is no redirect to third party
|
60 |
+
*/
|
61 |
+
if(!$redirectUrl && $order->getCanSendNewEmailFlag())
|
62 |
+
{
|
63 |
+
try
|
64 |
+
{
|
65 |
+
$order->sendNewOrderEmail();
|
66 |
+
}
|
67 |
+
catch(Exception $e)
|
68 |
+
{
|
69 |
+
Mage::logException($e);
|
70 |
+
}
|
71 |
+
}
|
72 |
+
// add order information to the session
|
73 |
+
$this->_checkoutSession->setLastOrderId($order->getId())
|
74 |
+
->setRedirectUrl($redirectUrl)
|
75 |
+
->setLastRealOrderId($order->getIncrementId());
|
76 |
+
// as well a billing agreement can be created
|
77 |
+
$agreement = $order->getPayment()->getBillingAgreement();
|
78 |
+
if($agreement)
|
79 |
+
{
|
80 |
+
$this->_checkoutSession->setLastBillingAgreementId($agreement->getId());
|
81 |
+
}
|
82 |
+
}
|
83 |
+
// add recurring profiles information to the session
|
84 |
+
$profiles = $service->getRecurringPaymentProfiles();
|
85 |
+
if($profiles)
|
86 |
+
{
|
87 |
+
$ids = array();
|
88 |
+
foreach($profiles as $profile)
|
89 |
+
{
|
90 |
+
$ids[] = $profile->getId();
|
91 |
+
}
|
92 |
+
$this->_checkoutSession->setLastRecurringProfileIds($ids);
|
93 |
+
// TODO: send recurring profile emails
|
94 |
+
}
|
95 |
+
Mage::dispatchEvent(
|
96 |
+
'checkout_submit_all_after',
|
97 |
+
array('order' => $order, 'quote' => $this->getQuote(), 'recurring_profiles' => $profiles)
|
98 |
+
);
|
99 |
+
}
|
100 |
+
else if($nVersion >= 1410)
|
101 |
+
{
|
102 |
+
// logic for version 1.4.1.0 and above
|
103 |
+
$this->validate();
|
104 |
+
$isNewCustomer = false;
|
105 |
+
switch($this->getCheckoutMethod())
|
106 |
+
{
|
107 |
+
case self::METHOD_GUEST:
|
108 |
+
$this->_prepareGuestQuote();
|
109 |
+
break;
|
110 |
+
case self::METHOD_REGISTER:
|
111 |
+
$this->_prepareNewCustomerQuote();
|
112 |
+
$isNewCustomer = true;
|
113 |
+
break;
|
114 |
+
default:
|
115 |
+
$this->_prepareCustomerQuote();
|
116 |
+
break;
|
117 |
+
}
|
118 |
+
$service = Mage::getModel('sales/service_quote', $this->getQuote());
|
119 |
+
$redirectUrl = $this->getQuote()->getPayment()->getOrderPlaceRedirectUrl();
|
120 |
+
if(!$redirectUrl ||
|
121 |
+
$this->getQuote()->getPayment()->getMethodInstance()->getCode() != 'tpg'
|
122 |
+
)
|
123 |
+
{
|
124 |
+
$service->submitAll();
|
125 |
+
}
|
126 |
+
if($isNewCustomer)
|
127 |
+
{
|
128 |
+
try
|
129 |
+
{
|
130 |
+
$this->_involveNewCustomer();
|
131 |
+
}
|
132 |
+
catch(Exception $e)
|
133 |
+
{
|
134 |
+
Mage::logException($e);
|
135 |
+
}
|
136 |
+
}
|
137 |
+
$this->_checkoutSession->setLastQuoteId($this->getQuote()->getId())
|
138 |
+
->setLastSuccessQuoteId($this->getQuote()->getId());
|
139 |
+
#->clearHelperData();
|
140 |
+
$order = $service->getOrder();
|
141 |
+
if($order)
|
142 |
+
{
|
143 |
+
Mage::dispatchEvent('checkout_type_onepage_save_order_after', array('order' => $order, 'quote' => $this->getQuote()));
|
144 |
+
/**
|
145 |
+
* a flag to set that there will be redirect to third party after confirmation
|
146 |
+
* eg: paypal standard ipn
|
147 |
+
*/
|
148 |
+
$redirectUrl = $this->getQuote()->getPayment()->getOrderPlaceRedirectUrl();
|
149 |
+
/**
|
150 |
+
* we only want to send to customer about new order when there is no redirect to third party
|
151 |
+
*/
|
152 |
+
if(!$redirectUrl)
|
153 |
+
{
|
154 |
+
try
|
155 |
+
{
|
156 |
+
$order->sendNewOrderEmail();
|
157 |
+
}
|
158 |
+
catch(Exception $e)
|
159 |
+
{
|
160 |
+
Mage::logException($e);
|
161 |
+
}
|
162 |
+
}
|
163 |
+
// add order information to the session
|
164 |
+
$this->_checkoutSession->setLastOrderId($order->getId())
|
165 |
+
->setRedirectUrl($redirectUrl)
|
166 |
+
->setLastRealOrderId($order->getIncrementId());
|
167 |
+
// as well a billing agreement can be created
|
168 |
+
$agreement = $order->getPayment()->getBillingAgreement();
|
169 |
+
if($agreement)
|
170 |
+
{
|
171 |
+
$this->_checkoutSession->setLastBillingAgreementId($agreement->getId());
|
172 |
+
}
|
173 |
+
}
|
174 |
+
// add recurring profiles information to the session
|
175 |
+
$profiles = $service->getRecurringPaymentProfiles();
|
176 |
+
if($profiles)
|
177 |
+
{
|
178 |
+
$ids = array();
|
179 |
+
foreach($profiles as $profile)
|
180 |
+
{
|
181 |
+
$ids[] = $profile->getId();
|
182 |
+
}
|
183 |
+
$this->_checkoutSession->setLastRecurringProfileIds($ids);
|
184 |
+
// TODO: send recurring profile emails
|
185 |
+
}
|
186 |
+
}
|
187 |
+
else if($nVersion == 1400 || $nVersion == 1401)
|
188 |
+
{
|
189 |
+
// logic for version below 1.4.0.1 and below
|
190 |
+
$this->validateOrder();
|
191 |
+
$billing = $this->getQuote()->getBillingAddress();
|
192 |
+
if(!$this->getQuote()->isVirtual())
|
193 |
+
{
|
194 |
+
$shipping = $this->getQuote()->getShippingAddress();
|
195 |
+
}
|
196 |
+
switch($this->getQuote()->getCheckoutMethod())
|
197 |
+
{
|
198 |
+
case Mage_Sales_Model_Quote::CHECKOUT_METHOD_GUEST:
|
199 |
+
if(!$this->getQuote()->isAllowedGuestCheckout())
|
200 |
+
{
|
201 |
+
Mage::throwException(Mage::helper('checkout')->__('Sorry, guest checkout is not enabled. Please try again or contact store owner.'));
|
202 |
+
}
|
203 |
+
$this->getQuote()->setCustomerId(null)
|
204 |
+
->setCustomerEmail($billing->getEmail())
|
205 |
+
->setCustomerIsGuest(true)
|
206 |
+
->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID);
|
207 |
+
break;
|
208 |
+
case Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER:
|
209 |
+
$customer = Mage::getModel('customer/customer');
|
210 |
+
$customerBilling = $billing->exportCustomerAddress();
|
211 |
+
$customer->addAddress($customerBilling);
|
212 |
+
if(!$this->getQuote()->isVirtual() && !$shipping->getSameAsBilling())
|
213 |
+
{
|
214 |
+
$customerShipping = $shipping->exportCustomerAddress();
|
215 |
+
$customer->addAddress($customerShipping);
|
216 |
+
}
|
217 |
+
if($this->getQuote()->getCustomerDob() && !$billing->getCustomerDob())
|
218 |
+
{
|
219 |
+
$billing->setCustomerDob($this->getQuote()->getCustomerDob());
|
220 |
+
}
|
221 |
+
Mage::helper('core')->copyFieldset('checkout_onepage_billing', 'to_customer', $billing, $customer);
|
222 |
+
$customer->setPassword($customer->decryptPassword($this->getQuote()->getPasswordHash()));
|
223 |
+
$customer->setPasswordHash($customer->hashPassword($customer->getPassword()));
|
224 |
+
$this->getQuote()->setCustomer($customer);
|
225 |
+
Mage::log(time());
|
226 |
+
break;
|
227 |
+
default:
|
228 |
+
$customer = Mage::getSingleton('customer/session')->getCustomer();
|
229 |
+
if(!$billing->getCustomerId() || $billing->getSaveInAddressBook())
|
230 |
+
{
|
231 |
+
$customerBilling = $billing->exportCustomerAddress();
|
232 |
+
$customer->addAddress($customerBilling);
|
233 |
+
}
|
234 |
+
if(
|
235 |
+
!$this->getQuote()->isVirtual() &&
|
236 |
+
((!$shipping->getCustomerId() && !$shipping->getSameAsBilling()) || (!$shipping->getSameAsBilling() && $shipping->getSaveInAddressBook()))
|
237 |
+
)
|
238 |
+
{
|
239 |
+
$customerShipping = $shipping->exportCustomerAddress();
|
240 |
+
$customer->addAddress($customerShipping);
|
241 |
+
}
|
242 |
+
$customer->setSavedFromQuote(true);
|
243 |
+
$customer->save();
|
244 |
+
$changed = false;
|
245 |
+
if(isset($customerBilling) && !$customer->getDefaultBilling())
|
246 |
+
{
|
247 |
+
$customer->setDefaultBilling($customerBilling->getId());
|
248 |
+
$changed = true;
|
249 |
+
}
|
250 |
+
if(
|
251 |
+
!$this->getQuote()->isVirtual() &&
|
252 |
+
isset($customerBilling) &&
|
253 |
+
!$customer->getDefaultShipping() &&
|
254 |
+
$shipping->getSameAsBilling()
|
255 |
+
)
|
256 |
+
{
|
257 |
+
$customer->setDefaultShipping($customerBilling->getId());
|
258 |
+
$changed = true;
|
259 |
+
}
|
260 |
+
elseif(
|
261 |
+
!$this->getQuote()->isVirtual() &&
|
262 |
+
isset($customerShipping) &&
|
263 |
+
!$customer->getDefaultShipping()
|
264 |
+
)
|
265 |
+
{
|
266 |
+
$customer->setDefaultShipping($customerShipping->getId());
|
267 |
+
$changed = true;
|
268 |
+
}
|
269 |
+
if($changed)
|
270 |
+
{
|
271 |
+
$customer->save();
|
272 |
+
}
|
273 |
+
}
|
274 |
+
$this->getQuote()->reserveOrderId();
|
275 |
+
/* @var $convertQuote Mage_Sales_Model_Convert_Quote */
|
276 |
+
$convertQuote = Mage::getModel('sales/convert_quote');
|
277 |
+
if($this->getQuote()->isVirtual())
|
278 |
+
{
|
279 |
+
$order = $convertQuote->addressToOrder($billing);
|
280 |
+
}
|
281 |
+
else
|
282 |
+
{
|
283 |
+
$order = $convertQuote->addressToOrder($shipping);
|
284 |
+
}
|
285 |
+
/* @var $order Mage_Sales_Model_Order */
|
286 |
+
$order->setBillingAddress($convertQuote->addressToOrderAddress($billing));
|
287 |
+
if(!$this->getQuote()->isVirtual())
|
288 |
+
{
|
289 |
+
$order->setShippingAddress($convertQuote->addressToOrderAddress($shipping));
|
290 |
+
}
|
291 |
+
$order->setPayment($convertQuote->paymentToOrderPayment($this->getQuote()->getPayment()));
|
292 |
+
foreach($this->getQuote()->getAllItems() as $item)
|
293 |
+
{
|
294 |
+
$orderItem = $convertQuote->itemToOrderItem($item);
|
295 |
+
if($item->getParentItem())
|
296 |
+
{
|
297 |
+
$orderItem->setParentItem($order->getItemByQuoteItemId($item->getParentItem()->getId()));
|
298 |
+
}
|
299 |
+
$order->addItem($orderItem);
|
300 |
+
}
|
301 |
+
// We can use configuration data for declare new order status
|
302 |
+
Mage::dispatchEvent('checkout_type_onepage_save_order', array('order' => $order, 'quote' => $this->getQuote()));
|
303 |
+
// check again, if customer exists
|
304 |
+
if($this->getQuote()->getCheckoutMethod() == Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER)
|
305 |
+
{
|
306 |
+
if($this->_customerEmailExists($customer->getEmail(), Mage::app()->getWebsite()->getId()))
|
307 |
+
{
|
308 |
+
Mage::throwException(Mage::helper('checkout')->__('There is already a customer registered using this email address'));
|
309 |
+
}
|
310 |
+
}
|
311 |
+
// clear 3dSecure session variables
|
312 |
+
Mage::getSingleton('checkout/session')->setThreedsecurerequired(null)
|
313 |
+
->setMd(null)
|
314 |
+
->setPares(null)
|
315 |
+
->setAcsurl(null);
|
316 |
+
$order->place();
|
317 |
+
if($this->getQuote()->getCheckoutMethod() == Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER)
|
318 |
+
{
|
319 |
+
$customer->save();
|
320 |
+
$customerBillingId = $customerBilling->getId();
|
321 |
+
if(!$this->getQuote()->isVirtual())
|
322 |
+
{
|
323 |
+
$customerShippingId = isset($customerShipping) ? $customerShipping->getId() : $customerBillingId;
|
324 |
+
$customer->setDefaultShipping($customerShippingId);
|
325 |
+
}
|
326 |
+
$customer->setDefaultBilling($customerBillingId);
|
327 |
+
$customer->save();
|
328 |
+
$this->getQuote()->setCustomerId($customer->getId());
|
329 |
+
$order->setCustomerId($customer->getId());
|
330 |
+
Mage::helper('core')->copyFieldset('customer_account', 'to_order', $customer, $order);
|
331 |
+
$billing->setCustomerId($customer->getId())->setCustomerAddressId($customerBillingId);
|
332 |
+
if(!$this->getQuote()->isVirtual())
|
333 |
+
{
|
334 |
+
$shipping->setCustomerId($customer->getId())->setCustomerAddressId($customerShippingId);
|
335 |
+
}
|
336 |
+
if($customer->isConfirmationRequired())
|
337 |
+
{
|
338 |
+
$customer->sendNewAccountEmail('confirmation');
|
339 |
+
}
|
340 |
+
else
|
341 |
+
{
|
342 |
+
$customer->sendNewAccountEmail();
|
343 |
+
}
|
344 |
+
}
|
345 |
+
/**
|
346 |
+
* a flag to set that there will be redirect to third party after confirmation
|
347 |
+
* eg: paypal standard ipn
|
348 |
+
*/
|
349 |
+
$redirectUrl = $this->getQuote()->getPayment()->getOrderPlaceRedirectUrl();
|
350 |
+
if(!$redirectUrl)
|
351 |
+
{
|
352 |
+
$order->setEmailSent(true);
|
353 |
+
}
|
354 |
+
if(!$redirectUrl ||
|
355 |
+
$this->getQuote()->getPayment()->getMethodInstance()->getCode() != 'tpg'
|
356 |
+
)
|
357 |
+
{
|
358 |
+
$order->save();
|
359 |
+
}
|
360 |
+
Mage::dispatchEvent('checkout_type_onepage_save_order_after', array('order' => $order, 'quote' => $this->getQuote()));
|
361 |
+
/**
|
362 |
+
* need to have some logic to set order as new status to make sure order is not finished yet
|
363 |
+
* quote will be still active when we send the customer to paypal
|
364 |
+
*/
|
365 |
+
$orderId = $order->getIncrementId();
|
366 |
+
$this->getCheckout()->setLastQuoteId($this->getQuote()->getId());
|
367 |
+
$this->getCheckout()->setLastOrderId($order->getId());
|
368 |
+
$this->getCheckout()->setLastRealOrderId($order->getIncrementId());
|
369 |
+
$this->getCheckout()->setRedirectUrl($redirectUrl);
|
370 |
+
/**
|
371 |
+
* we only want to send to customer about new order when there is no redirect to third party
|
372 |
+
*/
|
373 |
+
if(!$redirectUrl)
|
374 |
+
{
|
375 |
+
$order->sendNewOrderEmail();
|
376 |
+
}
|
377 |
+
if($this->getQuote()->getCheckoutMethod(true) == Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER &&
|
378 |
+
!Mage::getSingleton('customer/session')->isLoggedIn()
|
379 |
+
)
|
380 |
+
{
|
381 |
+
/**
|
382 |
+
* we need to save quote here to have it saved with Customer Id.
|
383 |
+
* so when loginById() executes checkout/session method loadCustomerQuote
|
384 |
+
* it would not create new quotes and merge it with old one.
|
385 |
+
*/
|
386 |
+
$this->getQuote()->save();
|
387 |
+
if($customer->isConfirmationRequired())
|
388 |
+
{
|
389 |
+
Mage::getSingleton('checkout/session')->addSuccess(
|
390 |
+
Mage::helper('customer')->__(
|
391 |
+
'Account confirmation is required. Please, check your e-mail for confirmation link. To resend confirmation email please <a href="%s">click here</a>.',
|
392 |
+
Mage::helper('customer')->getEmailConfirmationUrl($customer->getEmail())
|
393 |
+
)
|
394 |
+
);
|
395 |
+
}
|
396 |
+
else
|
397 |
+
{
|
398 |
+
Mage::getSingleton('customer/session')->loginById($customer->getId());
|
399 |
+
}
|
400 |
+
}
|
401 |
+
//Setting this one more time like control flag that we haves saved order
|
402 |
+
//Must be checkout on success page to show it or not.
|
403 |
+
$this->getCheckout()->setLastSuccessQuoteId($this->getQuote()->getId());
|
404 |
+
/*
|
405 |
+
* Fix for v1.4.1.0 and above - need to comment the below lines
|
406 |
+
*/
|
407 |
+
//$this->getQuote()->setIsActive(false);
|
408 |
+
//$this->getQuote()->save();
|
409 |
+
}
|
410 |
+
else if($nVersion == 1324 || $nVersion == 1330)
|
411 |
+
{
|
412 |
+
$this->validateOrder();
|
413 |
+
$billing = $this->getQuote()->getBillingAddress();
|
414 |
+
if(!$this->getQuote()->isVirtual())
|
415 |
+
{
|
416 |
+
$shipping = $this->getQuote()->getShippingAddress();
|
417 |
+
}
|
418 |
+
switch($this->getQuote()->getCheckoutMethod())
|
419 |
+
{
|
420 |
+
case Mage_Sales_Model_Quote::CHECKOUT_METHOD_GUEST:
|
421 |
+
if(!$this->getQuote()->isAllowedGuestCheckout())
|
422 |
+
{
|
423 |
+
Mage::throwException(Mage::helper('checkout')->__('Sorry, guest checkout is not enabled. Please try again or contact store owner.'));
|
424 |
+
}
|
425 |
+
$this->getQuote()->setCustomerId(null)
|
426 |
+
->setCustomerEmail($billing->getEmail())
|
427 |
+
->setCustomerIsGuest(true)
|
428 |
+
->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID);
|
429 |
+
break;
|
430 |
+
case Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER:
|
431 |
+
$customer = Mage::getModel('customer/customer');
|
432 |
+
$customerBilling = $billing->exportCustomerAddress();
|
433 |
+
$customer->addAddress($customerBilling);
|
434 |
+
if(!$this->getQuote()->isVirtual() &&
|
435 |
+
!$shipping->getSameAsBilling()
|
436 |
+
)
|
437 |
+
{
|
438 |
+
$customerShipping = $shipping->exportCustomerAddress();
|
439 |
+
$customer->addAddress($customerShipping);
|
440 |
+
}
|
441 |
+
if($this->getQuote()->getCustomerDob() &&
|
442 |
+
!$billing->getCustomerDob()
|
443 |
+
)
|
444 |
+
{
|
445 |
+
$billing->setCustomerDob($this->getQuote()->getCustomerDob());
|
446 |
+
}
|
447 |
+
if($this->getQuote()->getCustomerTaxvat() && !$billing->getCustomerTaxvat())
|
448 |
+
{
|
449 |
+
$billing->setCustomerTaxvat($this->getQuote()->getCustomerTaxvat());
|
450 |
+
}
|
451 |
+
Mage::helper('core')->copyFieldset('checkout_onepage_billing', 'to_customer', $billing, $customer);
|
452 |
+
$customer->setPassword($customer->decryptPassword($this->getQuote()->getPasswordHash()));
|
453 |
+
$customer->setPasswordHash($customer->hashPassword($customer->getPassword()));
|
454 |
+
$this->getQuote()->setCustomer($customer);
|
455 |
+
Mage::log(time());
|
456 |
+
break;
|
457 |
+
default:
|
458 |
+
$customer = Mage::getSingleton('customer/session')->getCustomer();
|
459 |
+
if(!$billing->getCustomerId() ||
|
460 |
+
$billing->getSaveInAddressBook()
|
461 |
+
)
|
462 |
+
{
|
463 |
+
$customerBilling = $billing->exportCustomerAddress();
|
464 |
+
$customer->addAddress($customerBilling);
|
465 |
+
}
|
466 |
+
if(!$this->getQuote()->isVirtual() &&
|
467 |
+
((!$shipping->getCustomerId() && !$shipping->getSameAsBilling()) ||
|
468 |
+
(!$shipping->getSameAsBilling() && $shipping->getSaveInAddressBook()))
|
469 |
+
)
|
470 |
+
{
|
471 |
+
$customerShipping = $shipping->exportCustomerAddress();
|
472 |
+
$customer->addAddress($customerShipping);
|
473 |
+
}
|
474 |
+
$customer->setSavedFromQuote(true);
|
475 |
+
$customer->save();
|
476 |
+
$changed = false;
|
477 |
+
if(isset($customerBilling) &&
|
478 |
+
!$customer->getDefaultBilling()
|
479 |
+
)
|
480 |
+
{
|
481 |
+
$customer->setDefaultBilling($customerBilling->getId());
|
482 |
+
$changed = true;
|
483 |
+
}
|
484 |
+
if(!$this->getQuote()->isVirtual() &&
|
485 |
+
isset($customerBilling) &&
|
486 |
+
!$customer->getDefaultShipping() &&
|
487 |
+
$shipping->getSameAsBilling()
|
488 |
+
)
|
489 |
+
{
|
490 |
+
$customer->setDefaultShipping($customerBilling->getId());
|
491 |
+
$changed = true;
|
492 |
+
}
|
493 |
+
elseif(!$this->getQuote()->isVirtual() &&
|
494 |
+
isset($customerShipping) &&
|
495 |
+
!$customer->getDefaultShipping()
|
496 |
+
)
|
497 |
+
{
|
498 |
+
$customer->setDefaultShipping($customerShipping->getId());
|
499 |
+
$changed = true;
|
500 |
+
}
|
501 |
+
if($changed)
|
502 |
+
{
|
503 |
+
$customer->save();
|
504 |
+
}
|
505 |
+
}
|
506 |
+
$this->getQuote()->reserveOrderId();
|
507 |
+
$convertQuote = Mage::getModel('sales/convert_quote');
|
508 |
+
// @var $convertQuote Mage_Sales_Model_Convert_Quote
|
509 |
+
if($this->getQuote()->isVirtual())
|
510 |
+
{
|
511 |
+
$order = $convertQuote->addressToOrder($billing);
|
512 |
+
}
|
513 |
+
else
|
514 |
+
{
|
515 |
+
$order = $convertQuote->addressToOrder($shipping);
|
516 |
+
}
|
517 |
+
// @var $order Mage_Sales_Model_Order
|
518 |
+
$order->setBillingAddress($convertQuote->addressToOrderAddress($billing));
|
519 |
+
if(!$this->getQuote()->isVirtual())
|
520 |
+
{
|
521 |
+
$order->setShippingAddress($convertQuote->addressToOrderAddress($shipping));
|
522 |
+
}
|
523 |
+
$order->setPayment($convertQuote->paymentToOrderPayment($this->getQuote()->getPayment()));
|
524 |
+
foreach($this->getQuote()->getAllItems() as $item)
|
525 |
+
{
|
526 |
+
$orderItem = $convertQuote->itemToOrderItem($item);
|
527 |
+
if($item->getParentItem())
|
528 |
+
{
|
529 |
+
$orderItem->setParentItem($order->getItemByQuoteItemId($item->getParentItem()->getId()));
|
530 |
+
}
|
531 |
+
$order->addItem($orderItem);
|
532 |
+
}
|
533 |
+
// We can use configuration data for declare new order status
|
534 |
+
Mage::dispatchEvent('checkout_type_onepage_save_order', array('order' => $order, 'quote' => $this->getQuote()));
|
535 |
+
// check again, if customer exists
|
536 |
+
if($this->getQuote()->getCheckoutMethod() == Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER)
|
537 |
+
{
|
538 |
+
if($this->_customerEmailExists($customer->getEmail(), Mage::app()->getWebsite()->getId()))
|
539 |
+
{
|
540 |
+
Mage::throwException(Mage::helper('checkout')->__('There is already a customer registered using this email address'));
|
541 |
+
}
|
542 |
+
}
|
543 |
+
// clear 3dSecure session variables
|
544 |
+
Mage::getSingleton('checkout/session')->setThreedsecurerequired(null);
|
545 |
+
Mage::getSingleton('checkout/session')->setMd(null);
|
546 |
+
Mage::getSingleton('checkout/session')->setPares(null);
|
547 |
+
Mage::getSingleton('checkout/session')->setAcsurl(null);
|
548 |
+
$order->place();
|
549 |
+
if($this->getQuote()->getCheckoutMethod() == Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER)
|
550 |
+
{
|
551 |
+
$customer->save();
|
552 |
+
$customerBillingId = $customerBilling->getId();
|
553 |
+
if(!$this->getQuote()->isVirtual())
|
554 |
+
{
|
555 |
+
$customerShippingId = isset($customerShipping) ? $customerShipping->getId() : $customerBillingId;
|
556 |
+
$customer->setDefaultShipping($customerShippingId);
|
557 |
+
}
|
558 |
+
$customer->setDefaultBilling($customerBillingId);
|
559 |
+
$customer->save();
|
560 |
+
$this->getQuote()->setCustomerId($customer->getId());
|
561 |
+
$order->setCustomerId($customer->getId());
|
562 |
+
Mage::helper('core')->copyFieldset('customer_account', 'to_order', $customer, $order);
|
563 |
+
$billing->setCustomerId($customer->getId())->setCustomerAddressId($customerBillingId);
|
564 |
+
if(!$this->getQuote()->isVirtual())
|
565 |
+
{
|
566 |
+
$shipping->setCustomerId($customer->getId())->setCustomerAddressId($customerShippingId);
|
567 |
+
}
|
568 |
+
if($customer->isConfirmationRequired())
|
569 |
+
{
|
570 |
+
$customer->sendNewAccountEmail('confirmation');
|
571 |
+
}
|
572 |
+
else
|
573 |
+
{
|
574 |
+
$customer->sendNewAccountEmail();
|
575 |
+
}
|
576 |
+
}
|
577 |
+
/**
|
578 |
+
* a flag to set that there will be redirect to third party after confirmation
|
579 |
+
* eg: paypal standard ipn
|
580 |
+
*/
|
581 |
+
$redirectUrl = $this->getQuote()->getPayment()->getOrderPlaceRedirectUrl();
|
582 |
+
if(!$redirectUrl)
|
583 |
+
{
|
584 |
+
$order->setEmailSent(true);
|
585 |
+
}
|
586 |
+
if(!$redirectUrl ||
|
587 |
+
$this->getQuote()->getPayment()->getMethodInstance()->getCode() != 'tpg'
|
588 |
+
)
|
589 |
+
{
|
590 |
+
$order->save();
|
591 |
+
}
|
592 |
+
Mage::dispatchEvent('checkout_type_onepage_save_order_after', array('order' => $order, 'quote' => $this->getQuote()));
|
593 |
+
/**
|
594 |
+
* need to have somelogic to set order as new status to make sure order is not finished yet
|
595 |
+
* quote will be still active when we send the customer to paypal
|
596 |
+
*/
|
597 |
+
$orderId = $order->getIncrementId();
|
598 |
+
$this->getCheckout()->setLastQuoteId($this->getQuote()->getId());
|
599 |
+
$this->getCheckout()->setLastOrderId($order->getId());
|
600 |
+
$this->getCheckout()->setLastRealOrderId($order->getIncrementId());
|
601 |
+
$this->getCheckout()->setRedirectUrl($redirectUrl);
|
602 |
+
/**
|
603 |
+
* we only want to send to customer about new order when there is no redirect to third party
|
604 |
+
*/
|
605 |
+
if(!$redirectUrl)
|
606 |
+
{
|
607 |
+
$order->sendNewOrderEmail();
|
608 |
+
}
|
609 |
+
if($this->getQuote()->getCheckoutMethod(true) == Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER &&
|
610 |
+
!Mage::getSingleton('customer/session')->isLoggedIn()
|
611 |
+
)
|
612 |
+
{
|
613 |
+
/**
|
614 |
+
* we need to save quote here to have it saved with Customer Id.
|
615 |
+
* so when loginById() executes checkout/session method loadCustomerQuote
|
616 |
+
* it would not create new quotes and merge it with old one.
|
617 |
+
*/
|
618 |
+
$this->getQuote()->save();
|
619 |
+
if($customer->isConfirmationRequired())
|
620 |
+
{
|
621 |
+
Mage::getSingleton('checkout/session')->addSuccess(
|
622 |
+
Mage::helper('customer')->__(
|
623 |
+
'Account confirmation is required. Please, check your e-mail for confirmation link. To resend confirmation email please <a href="%s">click here</a>.',
|
624 |
+
Mage::helper('customer')->getEmailConfirmationUrl($customer->getEmail())
|
625 |
+
)
|
626 |
+
);
|
627 |
+
}
|
628 |
+
else
|
629 |
+
{
|
630 |
+
Mage::getSingleton('customer/session')->loginById($customer->getId());
|
631 |
+
}
|
632 |
+
}
|
633 |
+
//Setting this one more time like control flag that we haves saved order
|
634 |
+
//Must be checkout on success page to show it or not.
|
635 |
+
$this->getCheckout()->setLastSuccessQuoteId($this->getQuote()->getId());
|
636 |
+
$this->getQuote()->setIsActive(false);
|
637 |
+
$this->getQuote()->save();
|
638 |
+
}
|
639 |
+
|
640 |
+
return $this;
|
641 |
+
}
|
642 |
+
|
643 |
+
/**
|
644 |
+
* Create an order for a Direct (API) 3D Secure enabled payment on the callback
|
645 |
+
*
|
646 |
+
* @param unknown_type $pares
|
647 |
+
* @param unknown_type $md
|
648 |
+
* @return unknown
|
649 |
+
*/
|
650 |
+
public function saveOrderAfter3dSecure($pares, $md)
|
651 |
+
{
|
652 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
653 |
+
if($nVersion >= 1410)
|
654 |
+
{
|
655 |
+
$orderId = Mage::getSingleton('checkout/session')->getTpgOrderId();
|
656 |
+
$_order = Mage::getModel('sales/order')->load($orderId);
|
657 |
+
if(!$_order->getId())
|
658 |
+
{
|
659 |
+
Mage::throwException('Could not load order.');
|
660 |
+
}
|
661 |
+
Mage::getSingleton('checkout/session')->setThreedsecurerequired(true)
|
662 |
+
->setMd($md)
|
663 |
+
->setPares($pares);
|
664 |
+
$method = Mage::getSingleton('checkout/session')->getRedirectionMethod();
|
665 |
+
$_order->getPayment()->getMethodInstance()->{$method}($_order->getPayment(), $pares, $md);
|
666 |
+
if($_order->getFailedThreed() !== true &&
|
667 |
+
$_order->getPayment()->getMethodInstance()->getCode() == 'tpg' &&
|
668 |
+
$_order->getStatus() != 'pending'
|
669 |
+
)
|
670 |
+
{
|
671 |
+
$order_status = Mage::getStoreConfig('payment/tpg/order_status', Mage::app()->getStore()->getId());
|
672 |
+
$_order->addStatusToHistory($order_status);
|
673 |
+
$_order->setStatus($order_status);
|
674 |
+
}
|
675 |
+
$_order->save();
|
676 |
+
Mage::getSingleton('checkout/session')->setThreedsecurerequired(null)
|
677 |
+
->setMd(null)
|
678 |
+
->setPareq(null)
|
679 |
+
->setAcsurl(null)
|
680 |
+
->setTpgOrderId(null);
|
681 |
+
}
|
682 |
+
else if($nVersion == 1400 || $nVersion == 1401 || $nVersion == 1324 || $nVersion == 1330)
|
683 |
+
{
|
684 |
+
$this->validateOrder();
|
685 |
+
$billing = $this->getQuote()->getBillingAddress();
|
686 |
+
if(!$this->getQuote()->isVirtual())
|
687 |
+
{
|
688 |
+
$shipping = $this->getQuote()->getShippingAddress();
|
689 |
+
}
|
690 |
+
switch($this->getQuote()->getCheckoutMethod())
|
691 |
+
{
|
692 |
+
case 'guest':
|
693 |
+
$this->getQuote()->setCustomerEmail($billing->getEmail())
|
694 |
+
->setCustomerIsGuest(true)
|
695 |
+
->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID);
|
696 |
+
break;
|
697 |
+
default:
|
698 |
+
$customer = Mage::getSingleton('customer/session')->getCustomer();
|
699 |
+
if(!$billing->getCustomerId() ||
|
700 |
+
$billing->getSaveInAddressBook()
|
701 |
+
)
|
702 |
+
{
|
703 |
+
$customerBilling = $billing->exportCustomerAddress();
|
704 |
+
$customer->addAddress($customerBilling);
|
705 |
+
}
|
706 |
+
if(!$this->getQuote()->isVirtual() &&
|
707 |
+
((!$shipping->getCustomerId() && !$shipping->getSameAsBilling()) ||
|
708 |
+
(!$shipping->getSameAsBilling() && $shipping->getSaveInAddressBook()))
|
709 |
+
)
|
710 |
+
{
|
711 |
+
$customerShipping = $shipping->exportCustomerAddress();
|
712 |
+
$customer->addAddress($customerShipping);
|
713 |
+
}
|
714 |
+
$customer->setSavedFromQuote(true);
|
715 |
+
$customer->save();
|
716 |
+
$changed = false;
|
717 |
+
if(isset($customerBilling) &&
|
718 |
+
!$customer->getDefaultBilling()
|
719 |
+
)
|
720 |
+
{
|
721 |
+
$customer->setDefaultBilling($customerBilling->getId());
|
722 |
+
$changed = true;
|
723 |
+
}
|
724 |
+
if(!$this->getQuote()->isVirtual() &&
|
725 |
+
isset($customerBilling) &&
|
726 |
+
!$customer->getDefaultShipping() &&
|
727 |
+
$shipping->getSameAsBilling()
|
728 |
+
)
|
729 |
+
{
|
730 |
+
$customer->setDefaultShipping($customerBilling->getId());
|
731 |
+
$changed = true;
|
732 |
+
}
|
733 |
+
elseif(!$this->getQuote()->isVirtual() &&
|
734 |
+
isset($customerShipping) &&
|
735 |
+
!$customer->getDefaultShipping()
|
736 |
+
)
|
737 |
+
{
|
738 |
+
$customer->setDefaultShipping($customerShipping->getId());
|
739 |
+
$changed = true;
|
740 |
+
}
|
741 |
+
if($changed)
|
742 |
+
{
|
743 |
+
$customer->save();
|
744 |
+
}
|
745 |
+
}
|
746 |
+
$this->getQuote()->reserveOrderId();
|
747 |
+
$convertQuote = Mage::getModel('sales/convert_quote');
|
748 |
+
// @var $convertQuote Mage_Sales_Model_Convert_Quote
|
749 |
+
if($this->getQuote()->isVirtual())
|
750 |
+
{
|
751 |
+
$order = $convertQuote->addressToOrder($billing);
|
752 |
+
}
|
753 |
+
else
|
754 |
+
{
|
755 |
+
$order = $convertQuote->addressToOrder($shipping);
|
756 |
+
}
|
757 |
+
/* @var $order Mage_Sales_Model_Order */
|
758 |
+
$order->setBillingAddress($convertQuote->addressToOrderAddress($billing));
|
759 |
+
if(!$this->getQuote()->isVirtual())
|
760 |
+
{
|
761 |
+
$order->setShippingAddress($convertQuote->addressToOrderAddress($shipping));
|
762 |
+
}
|
763 |
+
$order->setPayment($convertQuote->paymentToOrderPayment($this->getQuote()->getPayment()));
|
764 |
+
foreach($this->getQuote()->getAllItems() as $item)
|
765 |
+
{
|
766 |
+
$order->addItem($convertQuote->itemToOrderItem($item));
|
767 |
+
}
|
768 |
+
/**
|
769 |
+
* We can use configuration data for declare new order status
|
770 |
+
*/
|
771 |
+
Mage::dispatchEvent('checkout_type_onepage_save_order', array('order' => $order, 'quote' => $this->getQuote()));
|
772 |
+
Mage::getSingleton('checkout/session')->setThreedsecurerequired(true)
|
773 |
+
->setMd($md)
|
774 |
+
->setPares($pares);
|
775 |
+
$order->place();
|
776 |
+
if($order->getPayment()->getMethodInstance()->getCode() == 'tpg' &&
|
777 |
+
$order->getStatus() != 'pending'
|
778 |
+
)
|
779 |
+
{
|
780 |
+
$order_status = Mage::getStoreConfig('payment/tpg/order_status', Mage::app()->getStore()->getId());
|
781 |
+
$order->addStatusToHistory($order_status);
|
782 |
+
$order->setStatus($order_status);
|
783 |
+
}
|
784 |
+
$order->save();
|
785 |
+
Mage::dispatchEvent('checkout_type_onepage_save_order_after', array('order' => $order, 'quote' => $this->getQuote()));
|
786 |
+
$this->getQuote()->setIsActive(false);
|
787 |
+
$this->getQuote()->save();
|
788 |
+
$orderId = $order->getIncrementId();
|
789 |
+
$this->getCheckout()->setLastQuoteId($this->getQuote()->getId());
|
790 |
+
$this->getCheckout()->setLastOrderId($order->getId());
|
791 |
+
$this->getCheckout()->setLastRealOrderId($order->getIncrementId());
|
792 |
+
// $this->getCheckout()->setRedirectUrl($redirectUrl);
|
793 |
+
/**
|
794 |
+
* we only want to send to customer about new order when there is no redirect to third party
|
795 |
+
*/
|
796 |
+
/*if(!$redirectUrl){
|
797 |
+
$order->sendNewOrderEmail();
|
798 |
+
}*/
|
799 |
+
if($this->getQuote()->getCheckoutMethod() == 'register')
|
800 |
+
{
|
801 |
+
Mage::getSingleton('customer/session')->loginById($customer->getId());
|
802 |
+
}
|
803 |
+
}
|
804 |
+
|
805 |
+
return $this;
|
806 |
+
}
|
807 |
+
|
808 |
+
/**
|
809 |
+
* Create an order for a Hosted Payment Form/Transparent Redirect payment on the callback
|
810 |
+
*
|
811 |
+
* @param bool $boIsHostedPaymentAction
|
812 |
+
* @param string $szStatusCode
|
813 |
+
* @param string $szMessage
|
814 |
+
* @param string $szPreviousStatusCode
|
815 |
+
* @param string $szPreviousMessage
|
816 |
+
* @param string $szOrderID
|
817 |
+
* @param string $szCardType
|
818 |
+
* @return PayVector_Checkout_Model_Type_OnePage
|
819 |
+
*/
|
820 |
+
public function saveOrderAfterRedirectedPaymentAction(
|
821 |
+
$boIsHostedPaymentAction,
|
822 |
+
$szStatusCode,
|
823 |
+
$szMessage,
|
824 |
+
$szPreviousStatusCode,
|
825 |
+
$szPreviousMessage,
|
826 |
+
$szOrderID,
|
827 |
+
$szCrossReference,
|
828 |
+
$szCardType
|
829 |
+
)
|
830 |
+
{
|
831 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
832 |
+
if($nVersion >= 1410)
|
833 |
+
{
|
834 |
+
/* @var Mage_Sales_Model_Order $_order */
|
835 |
+
$_order = Mage::getModel('sales/order')->load(Mage::getSingleton('checkout/session')->getTpgOrderId());
|
836 |
+
if(!$_order->getId())
|
837 |
+
{
|
838 |
+
Mage::throwException('Could not load order.');
|
839 |
+
}
|
840 |
+
Mage::getSingleton('checkout/session')->setRedirectedPayment(true)
|
841 |
+
->setIshostedpayment($boIsHostedPaymentAction)
|
842 |
+
->setStatuscode($szStatusCode)
|
843 |
+
->setMessage($szMessage)
|
844 |
+
->setPreviousstatuscode($szPreviousStatusCode)
|
845 |
+
->setPreviousmessage($szPreviousMessage)
|
846 |
+
->setOrderid($szOrderID)
|
847 |
+
->setCrossReference($szCrossReference)
|
848 |
+
->setCardType($szCardType);
|
849 |
+
$method = Mage::getSingleton('checkout/session')->getRedirectionMethod();
|
850 |
+
$_order->getPayment()->getMethodInstance()->{$method}(
|
851 |
+
$_order->getPayment(),
|
852 |
+
$boIsHostedPaymentAction,
|
853 |
+
$szStatusCode,
|
854 |
+
$szMessage,
|
855 |
+
$szPreviousStatusCode,
|
856 |
+
$szPreviousMessage,
|
857 |
+
$szOrderID,
|
858 |
+
$szCrossReference,
|
859 |
+
$szCardType
|
860 |
+
);
|
861 |
+
if(
|
862 |
+
$_order->getFailedThreed() !== true &&
|
863 |
+
$_order->getPayment()->getMethodInstance()->getCode() == 'tpg' &&
|
864 |
+
$_order->getStatus() != 'pending'
|
865 |
+
)
|
866 |
+
{
|
867 |
+
$order_status = Mage::getStoreConfig('payment/tpg/order_status', Mage::app()->getStore()->getId());
|
868 |
+
$_order->addStatusToHistory($order_status);
|
869 |
+
$_order->setStatus($order_status);
|
870 |
+
}
|
871 |
+
$_order->save();
|
872 |
+
Mage::getSingleton('checkout/session')->setRedirectedPayment(null)
|
873 |
+
->setIshostedpayment(null)
|
874 |
+
->setStatuscode(null)
|
875 |
+
->setMessage(null)
|
876 |
+
->setPreviousstatuscode(null)
|
877 |
+
->setPreviousmessage(null)
|
878 |
+
->setOrderid(null)
|
879 |
+
->setTpgOrderId(null);
|
880 |
+
}
|
881 |
+
else if($nVersion == 1400 || $nVersion == 1401 || $nVersion == 1324 || $nVersion == 1330)
|
882 |
+
{
|
883 |
+
$this->validateOrder();
|
884 |
+
$billing = $this->getQuote()->getBillingAddress();
|
885 |
+
if(!$this->getQuote()->isVirtual())
|
886 |
+
{
|
887 |
+
$shipping = $this->getQuote()->getShippingAddress();
|
888 |
+
}
|
889 |
+
switch($this->getQuote()->getCheckoutMethod())
|
890 |
+
{
|
891 |
+
case 'guest':
|
892 |
+
$this->getQuote()->setCustomerEmail($billing->getEmail())
|
893 |
+
->setCustomerIsGuest(true)
|
894 |
+
->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID);
|
895 |
+
break;
|
896 |
+
default:
|
897 |
+
$customer = Mage::getSingleton('customer/session')->getCustomer();
|
898 |
+
if(!$billing->getCustomerId() ||
|
899 |
+
$billing->getSaveInAddressBook()
|
900 |
+
)
|
901 |
+
{
|
902 |
+
$customerBilling = $billing->exportCustomerAddress();
|
903 |
+
$customer->addAddress($customerBilling);
|
904 |
+
}
|
905 |
+
if(!$this->getQuote()->isVirtual() &&
|
906 |
+
((!$shipping->getCustomerId() && !$shipping->getSameAsBilling()) ||
|
907 |
+
(!$shipping->getSameAsBilling() && $shipping->getSaveInAddressBook()))
|
908 |
+
)
|
909 |
+
{
|
910 |
+
$customerShipping = $shipping->exportCustomerAddress();
|
911 |
+
$customer->addAddress($customerShipping);
|
912 |
+
}
|
913 |
+
$customer->setSavedFromQuote(true);
|
914 |
+
$customer->save();
|
915 |
+
$changed = false;
|
916 |
+
if(isset($customerBilling) &&
|
917 |
+
!$customer->getDefaultBilling()
|
918 |
+
)
|
919 |
+
{
|
920 |
+
$customer->setDefaultBilling($customerBilling->getId());
|
921 |
+
$changed = true;
|
922 |
+
}
|
923 |
+
if(!$this->getQuote()->isVirtual() &&
|
924 |
+
isset($customerBilling) &&
|
925 |
+
!$customer->getDefaultShipping() &&
|
926 |
+
$shipping->getSameAsBilling()
|
927 |
+
)
|
928 |
+
{
|
929 |
+
$customer->setDefaultShipping($customerBilling->getId());
|
930 |
+
$changed = true;
|
931 |
+
}
|
932 |
+
elseif(!$this->getQuote()->isVirtual() &&
|
933 |
+
isset($customerShipping) &&
|
934 |
+
!$customer->getDefaultShipping()
|
935 |
+
)
|
936 |
+
{
|
937 |
+
$customer->setDefaultShipping($customerShipping->getId());
|
938 |
+
$changed = true;
|
939 |
+
}
|
940 |
+
if($changed)
|
941 |
+
{
|
942 |
+
$customer->save();
|
943 |
+
}
|
944 |
+
}
|
945 |
+
$this->getQuote()->reserveOrderId();
|
946 |
+
$convertQuote = Mage::getModel('sales/convert_quote');
|
947 |
+
// @var $convertQuote Mage_Sales_Model_Convert_Quote
|
948 |
+
if($this->getQuote()->isVirtual())
|
949 |
+
{
|
950 |
+
$order = $convertQuote->addressToOrder($billing);
|
951 |
+
}
|
952 |
+
else
|
953 |
+
{
|
954 |
+
$order = $convertQuote->addressToOrder($shipping);
|
955 |
+
}
|
956 |
+
/* @var $order Mage_Sales_Model_Order */
|
957 |
+
$order->setBillingAddress($convertQuote->addressToOrderAddress($billing));
|
958 |
+
if(!$this->getQuote()->isVirtual())
|
959 |
+
{
|
960 |
+
$order->setShippingAddress($convertQuote->addressToOrderAddress($shipping));
|
961 |
+
}
|
962 |
+
$order->setPayment($convertQuote->paymentToOrderPayment($this->getQuote()->getPayment()));
|
963 |
+
foreach($this->getQuote()->getAllItems() as $item)
|
964 |
+
{
|
965 |
+
$order->addItem($convertQuote->itemToOrderItem($item));
|
966 |
+
}
|
967 |
+
/**
|
968 |
+
* We can use configuration data for declare new order status
|
969 |
+
*/
|
970 |
+
Mage::dispatchEvent('checkout_type_onepage_save_order', array('order' => $order, 'quote' => $this->getQuote()));
|
971 |
+
Mage::getSingleton('checkout/session')->setRedirectedPayment(true)
|
972 |
+
->setIshostedpayment($boIsHostedPaymentAction)
|
973 |
+
->setStatuscode($szStatusCode)
|
974 |
+
->setMessage($szMessage)
|
975 |
+
->setPreviousstatuscode($szPreviousStatusCode)
|
976 |
+
->setPreviousmessage($szPreviousMessage)
|
977 |
+
->setOrderid($szOrderID)
|
978 |
+
->setCrossReference($szCrossReference)
|
979 |
+
->setCardType($szCardType);
|
980 |
+
$order->place();
|
981 |
+
if($order->getPayment()->getMethodInstance()->getCode() == 'tpg' &&
|
982 |
+
$order->getStatus() != 'pending'
|
983 |
+
)
|
984 |
+
{
|
985 |
+
$order_status = Mage::getStoreConfig('payment/tpg/order_status', Mage::app()->getStore()->getId());
|
986 |
+
$order->addStatusToHistory($order_status);
|
987 |
+
$order->setStatus($order_status);
|
988 |
+
}
|
989 |
+
$order->save();
|
990 |
+
Mage::dispatchEvent('checkout_type_onepage_save_order_after', array('order' => $order, 'quote' => $this->getQuote()));
|
991 |
+
$this->getQuote()->setIsActive(false);
|
992 |
+
$this->getQuote()->save();
|
993 |
+
$orderId = $order->getIncrementId();
|
994 |
+
$this->getCheckout()->setLastQuoteId($this->getQuote()->getId());
|
995 |
+
$this->getCheckout()->setLastOrderId($order->getId());
|
996 |
+
$this->getCheckout()->setLastRealOrderId($order->getIncrementId());
|
997 |
+
/**
|
998 |
+
* we only want to send to customer about new order when there is no redirect to third party
|
999 |
+
*/
|
1000 |
+
//if(!$redirectUrl){
|
1001 |
+
$order->sendNewOrderEmail();
|
1002 |
+
//}
|
1003 |
+
if($this->getQuote()->getCheckoutMethod() == 'register')
|
1004 |
+
{
|
1005 |
+
Mage::getSingleton('customer/session')->loginById($customer->getId());
|
1006 |
+
}
|
1007 |
+
}
|
1008 |
+
|
1009 |
+
return $this;
|
1010 |
+
}
|
1011 |
+
}
|
app/code/local/PayVector/Checkout/etc/config.xml
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<PayVector_Checkout>
|
5 |
+
<version>0.0.1</version>
|
6 |
+
</PayVector_Checkout>
|
7 |
+
</modules>
|
8 |
+
<global>
|
9 |
+
<models>
|
10 |
+
<checkout>
|
11 |
+
<rewrite>
|
12 |
+
<type_onepage>PayVector_Checkout_Model_Type_Onepage</type_onepage>
|
13 |
+
</rewrite>
|
14 |
+
</checkout>
|
15 |
+
</models>
|
16 |
+
<blocks>
|
17 |
+
<checkout>
|
18 |
+
<rewrite>
|
19 |
+
<onepage_payment_methods>PayVector_Checkout_Block_Onepage_Payment_Methods</onepage_payment_methods>
|
20 |
+
</rewrite>
|
21 |
+
</checkout>
|
22 |
+
</blocks>
|
23 |
+
</global>
|
24 |
+
</config>
|
app/code/local/PayVector/Sales/Model/Order.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Sales_Model_Order extends Mage_Sales_Model_Order
|
4 |
+
{
|
5 |
+
protected function _setState($state, $status = false, $comment = '', $isCustomerNotified = null, $shouldProtectState = false)
|
6 |
+
{
|
7 |
+
// attempt to set the specified state
|
8 |
+
if ($shouldProtectState)
|
9 |
+
{
|
10 |
+
if ($this->isStateProtected($state))
|
11 |
+
{
|
12 |
+
Mage::throwException(Mage::helper('sales')->__('The Order State "%s" must not be set manually.', $state));
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
$this->setData('state', $state);
|
17 |
+
|
18 |
+
// add status history
|
19 |
+
if ($status)
|
20 |
+
{
|
21 |
+
if ($status === true)
|
22 |
+
{
|
23 |
+
$status = $this->getConfig()->getStateDefaultStatus($state);
|
24 |
+
}
|
25 |
+
|
26 |
+
$this->setStatus($status);
|
27 |
+
$history = $this->addStatusHistoryComment($comment, false); // no sense to set $status again
|
28 |
+
$history->setIsCustomerNotified($isCustomerNotified); // for backwards compatibility
|
29 |
+
}
|
30 |
+
return $this;
|
31 |
+
}
|
32 |
+
}
|
app/code/local/PayVector/Sales/Model/Order/Invoice.php
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Sales_Model_Order_Invoice extends Mage_Sales_Model_Order_Invoice
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* Capture invoice
|
7 |
+
*
|
8 |
+
* @return Mage_Sales_Model_Order_Invoice
|
9 |
+
*/
|
10 |
+
public function capture()
|
11 |
+
{
|
12 |
+
$this->getOrder()->getPayment()->capture($this);
|
13 |
+
|
14 |
+
if ($this->getIsPaid())
|
15 |
+
{
|
16 |
+
$this->pay();
|
17 |
+
}
|
18 |
+
return $this;
|
19 |
+
}
|
20 |
+
|
21 |
+
public function pay()
|
22 |
+
{
|
23 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
24 |
+
|
25 |
+
if($nVersion >= 1400)
|
26 |
+
{
|
27 |
+
if ($this->_wasPayCalled)
|
28 |
+
{
|
29 |
+
return $this;
|
30 |
+
}
|
31 |
+
|
32 |
+
if(!$this->getOrder()->getIsThreeDSecurePending() &&
|
33 |
+
!$this->getOrder()->getIsHostedPaymentPending())
|
34 |
+
{
|
35 |
+
$this->_wasPayCalled = true;
|
36 |
+
|
37 |
+
$invoiceState = self::STATE_PAID;
|
38 |
+
if ($this->getOrder()->getPayment()->hasForcedState())
|
39 |
+
{
|
40 |
+
$invoiceState = $this->getOrder()->getPayment()->getForcedState();
|
41 |
+
}
|
42 |
+
|
43 |
+
$this->setState($invoiceState);
|
44 |
+
|
45 |
+
$this->getOrder()->getPayment()->pay($this);
|
46 |
+
$this->getOrder()->setTotalPaid(
|
47 |
+
$this->getOrder()->getTotalPaid()+$this->getGrandTotal()
|
48 |
+
);
|
49 |
+
$this->getOrder()->setBaseTotalPaid(
|
50 |
+
$this->getOrder()->getBaseTotalPaid()+$this->getBaseGrandTotal()
|
51 |
+
);
|
52 |
+
Mage::dispatchEvent('sales_order_invoice_pay', array($this->_eventObject=>$this));
|
53 |
+
}
|
54 |
+
}
|
55 |
+
else if($nVersion == 1324 || $nVersion == 1330)
|
56 |
+
{
|
57 |
+
$invoiceState = self::STATE_PAID;
|
58 |
+
if ($this->getOrder()->getPayment()->hasForcedState())
|
59 |
+
{
|
60 |
+
$invoiceState = $this->getOrder()->getPayment()->getForcedState();
|
61 |
+
}
|
62 |
+
$this->setState($invoiceState);
|
63 |
+
|
64 |
+
$this->getOrder()->getPayment()->pay($this);
|
65 |
+
$this->getOrder()->setTotalPaid(
|
66 |
+
$this->getOrder()->getTotalPaid()+$this->getGrandTotal()
|
67 |
+
);
|
68 |
+
$this->getOrder()->setBaseTotalPaid(
|
69 |
+
$this->getOrder()->getBaseTotalPaid()+$this->getBaseGrandTotal()
|
70 |
+
);
|
71 |
+
Mage::dispatchEvent('sales_order_invoice_pay', array($this->_eventObject=>$this));
|
72 |
+
}
|
73 |
+
return $this;
|
74 |
+
}
|
75 |
+
}
|
app/code/local/PayVector/Sales/Model/Order/Payment.php
ADDED
@@ -0,0 +1,553 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Sales_Model_Order_Payment extends Mage_Sales_Model_Order_Payment
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* Capture payment
|
7 |
+
*
|
8 |
+
* @return Mage_Sales_Model_Order_Payment
|
9 |
+
*/
|
10 |
+
public function capture($invoice)
|
11 |
+
{
|
12 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
13 |
+
|
14 |
+
if($nVersion >= 1411 || $nVersion == 1410)
|
15 |
+
{
|
16 |
+
if (is_null($invoice))
|
17 |
+
{
|
18 |
+
$invoice = $this->_invoice();
|
19 |
+
$this->setCreatedInvoice($invoice);
|
20 |
+
return $this; // @see Mage_Sales_Model_Order_Invoice::capture()
|
21 |
+
}
|
22 |
+
$amountToCapture = $this->_formatAmount($invoice->getBaseGrandTotal());
|
23 |
+
$order = $this->getOrder();
|
24 |
+
|
25 |
+
// prepare parent transaction and its amount
|
26 |
+
$paidWorkaround = 0;
|
27 |
+
if (!$invoice->wasPayCalled())
|
28 |
+
{
|
29 |
+
$paidWorkaround = (float)$amountToCapture;
|
30 |
+
}
|
31 |
+
$this->_isCaptureFinal($paidWorkaround);
|
32 |
+
|
33 |
+
$this->_generateTransactionId(Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE, $this->getAuthorizationTransaction());
|
34 |
+
|
35 |
+
Mage::dispatchEvent('sales_order_payment_capture', array('payment' => $this, 'invoice' => $invoice));
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Fetch an update about existing transaction. It can determine whether the transaction can be paid
|
39 |
+
* Capture attempt will happen only when invoice is not yet paid and the transaction can be paid
|
40 |
+
*/
|
41 |
+
if ($invoice->getTransactionId())
|
42 |
+
{
|
43 |
+
$this->getMethodInstance()->setStore($order->getStoreId())->fetchTransactionInfo($this, $invoice->getTransactionId());
|
44 |
+
}
|
45 |
+
$status = true;
|
46 |
+
if (!$invoice->getIsPaid() && !$this->getIsTransactionPending())
|
47 |
+
{
|
48 |
+
// attempt to capture: this can trigger "is_transaction_pending"
|
49 |
+
$this->getMethodInstance()->setStore($order->getStoreId())->capture($this, $amountToCapture);
|
50 |
+
|
51 |
+
$transaction = $this->_addTransaction(Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE, $invoice, true);
|
52 |
+
|
53 |
+
if ($this->getIsTransactionPending())
|
54 |
+
{
|
55 |
+
$message = Mage::helper('sales')->__('Capturing amount of %s is pending approval on gateway.', $this->_formatPrice($amountToCapture));
|
56 |
+
$state = Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW;
|
57 |
+
if ($this->getIsFraudDetected())
|
58 |
+
{
|
59 |
+
$status = 'fraud';
|
60 |
+
}
|
61 |
+
$invoice->setIsPaid(false);
|
62 |
+
}
|
63 |
+
else
|
64 |
+
{ // normal online capture: invoice is marked as "paid"
|
65 |
+
$message = Mage::helper('sales')->__('Captured amount of %s online.', $this->_formatPrice($amountToCapture));
|
66 |
+
$state = Mage_Sales_Model_Order::STATE_PROCESSING;
|
67 |
+
$invoice->setIsPaid(true);
|
68 |
+
$this->_updateTotals(array('base_amount_paid_online' => $amountToCapture));
|
69 |
+
}
|
70 |
+
if ($order->isNominal())
|
71 |
+
{
|
72 |
+
$message = $this->_prependMessage(Mage::helper('sales')->__('Nominal order registered.'));
|
73 |
+
}
|
74 |
+
else
|
75 |
+
{
|
76 |
+
$message = $this->_prependMessage($message);
|
77 |
+
$message = $this->_appendTransactionToMessage($transaction, $message);
|
78 |
+
}
|
79 |
+
$order->setState($state, $status, $message);
|
80 |
+
$this->getMethodInstance()->processInvoice($invoice, $this); // should be deprecated
|
81 |
+
return $this;
|
82 |
+
}
|
83 |
+
Mage::throwException(Mage::helper('sales')->__('The transaction "%s" cannot be captured yet.', $invoice->getTransactionId()));
|
84 |
+
}
|
85 |
+
if($nVersion == 1400 || $nVersion == 1401)
|
86 |
+
{
|
87 |
+
if (is_null($invoice))
|
88 |
+
{
|
89 |
+
$invoice = $this->_invoice();
|
90 |
+
$this->setCreatedInvoice($invoice);
|
91 |
+
return $this; // @see Mage_Sales_Model_Order_Invoice::capture()
|
92 |
+
}
|
93 |
+
$amountToCapture = $this->_formatAmount($invoice->getBaseGrandTotal());
|
94 |
+
|
95 |
+
$paidWorkaround = 0;
|
96 |
+
if (!$invoice->wasPayCalled())
|
97 |
+
{
|
98 |
+
$paidWorkaround = (float)$amountToCapture;
|
99 |
+
}
|
100 |
+
$this->_isCaptureFinal($paidWorkaround);
|
101 |
+
$baseTransaction = false;
|
102 |
+
if ($invoice->getTransactionId())
|
103 |
+
{
|
104 |
+
$baseTransaction = $this->_lookupTransaction($invoice->getTransactionId());
|
105 |
+
}
|
106 |
+
else
|
107 |
+
{
|
108 |
+
$baseTransaction = $this->getAuthorizationTransaction();
|
109 |
+
}
|
110 |
+
$this->_generateTransactionId(Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE, $baseTransaction);
|
111 |
+
|
112 |
+
Mage::dispatchEvent('sales_order_payment_capture', array('payment' => $this, 'invoice' => $invoice));
|
113 |
+
|
114 |
+
$this->getMethodInstance()
|
115 |
+
->setStore($this->getOrder()->getStoreId())
|
116 |
+
->capture($this, $amountToCapture);
|
117 |
+
|
118 |
+
// update transactions, set order state (order will close itself if required)
|
119 |
+
$transaction = $this->_addTransaction(Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE, $invoice, true);
|
120 |
+
/**
|
121 |
+
* Check if payment transaction is under pending state.
|
122 |
+
* Gateway can accept peyment transaction but mark it as pending.
|
123 |
+
* We need hold such kind of orders
|
124 |
+
*/
|
125 |
+
if ($this->getIsTransactionPending())
|
126 |
+
{
|
127 |
+
$message = Mage::helper('sales')->__('Amount of %s pending approval on gateway.', $this->_formatPrice($amountToCapture));
|
128 |
+
$message = $this->_prependMessage($message);
|
129 |
+
$message = $this->_appendTransactionToMessage($transaction, $message);
|
130 |
+
$status = $this->getTransactionPendingStatus() ? $this->getTransactionPendingStatus() : true;
|
131 |
+
$this->getOrder()->setState(Mage_Sales_Model_Order::STATE_HOLDED, $status, $message);
|
132 |
+
$invoice->setIsPaid(false);
|
133 |
+
}
|
134 |
+
else
|
135 |
+
{
|
136 |
+
$this->_updateTotals(array('base_amount_paid_online' => $amountToCapture));
|
137 |
+
$message = Mage::helper('sales')->__('Captured amount of %s online.', $this->_formatPrice($amountToCapture));
|
138 |
+
$message = $this->_prependMessage($message);
|
139 |
+
$message = $this->_appendTransactionToMessage($transaction, $message);
|
140 |
+
$this->getOrder()->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, $message);
|
141 |
+
$invoice->setIsPaid(true);
|
142 |
+
}
|
143 |
+
|
144 |
+
$this->getMethodInstance()->processInvoice($invoice, $this); // should be deprecated
|
145 |
+
return $this;
|
146 |
+
}
|
147 |
+
if($nVersion == 1324 || $nVersion == 1330)
|
148 |
+
{
|
149 |
+
if (is_null($invoice))
|
150 |
+
{
|
151 |
+
$invoice = $this->_invoice();
|
152 |
+
}
|
153 |
+
|
154 |
+
Mage::dispatchEvent('sales_order_payment_capture', array('payment' => $this, 'invoice' => $invoice));
|
155 |
+
|
156 |
+
$this->getMethodInstance()
|
157 |
+
->setStore($this->getOrder()->getStoreId())
|
158 |
+
->capture($this, sprintf('%.2f', $invoice->getBaseGrandTotal()));
|
159 |
+
if($this->getIsInvoicePaid())
|
160 |
+
{
|
161 |
+
$invoice->setIsPaid(true);
|
162 |
+
}
|
163 |
+
$this->getMethodInstance()->processInvoice($invoice, $this);
|
164 |
+
|
165 |
+
return $this;
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
169 |
+
/**
|
170 |
+
* Authorize or authorize and capture payment on gateway, if applicable
|
171 |
+
* This method is supposed to be called only when order is placed
|
172 |
+
*
|
173 |
+
* @return Mage_Sales_Model_Order_Payment
|
174 |
+
*/
|
175 |
+
public function place()
|
176 |
+
{
|
177 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
178 |
+
$paymentAction = Mage::getModel('tpg/direct')->getConfigData('payment_action');
|
179 |
+
|
180 |
+
if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE_CAPTURE)
|
181 |
+
{
|
182 |
+
$ircOrderStatus = "irc_paid";
|
183 |
+
}
|
184 |
+
else if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE)
|
185 |
+
{
|
186 |
+
$ircOrderStatus = "irc_preauth";
|
187 |
+
}
|
188 |
+
else
|
189 |
+
{
|
190 |
+
$ircOrderStatus = null;
|
191 |
+
}
|
192 |
+
|
193 |
+
if($nVersion >= 1411 || $nVersion == 1410 || $nVersion == 1401 || $nVersion == 1400)
|
194 |
+
{
|
195 |
+
Mage::dispatchEvent('sales_order_payment_place_start', array('payment' => $this));
|
196 |
+
$order = $this->getOrder();
|
197 |
+
|
198 |
+
$this->setAmountOrdered($order->getTotalDue());
|
199 |
+
$this->setBaseAmountOrdered($order->getBaseTotalDue());
|
200 |
+
$this->setShippingAmount($order->getShippingAmount());
|
201 |
+
$this->setBaseShippingAmount($order->getBaseShippingAmount());
|
202 |
+
|
203 |
+
$methodInstance = $this->getMethodInstance();
|
204 |
+
$methodInstance->setStore($order->getStoreId());
|
205 |
+
|
206 |
+
$orderState = Mage_Sales_Model_Order::STATE_NEW;
|
207 |
+
$orderStatus= false;
|
208 |
+
|
209 |
+
$stateObject = new Varien_Object();
|
210 |
+
|
211 |
+
/**
|
212 |
+
* Do order payment validation on payment method level
|
213 |
+
*/
|
214 |
+
$methodInstance->validate();
|
215 |
+
$action = $methodInstance->getConfigPaymentAction();
|
216 |
+
if ($action)
|
217 |
+
{
|
218 |
+
if ($methodInstance->isInitializeNeeded())
|
219 |
+
{
|
220 |
+
/**
|
221 |
+
* For method initialization we have to use original config value for payment action
|
222 |
+
*/
|
223 |
+
$methodInstance->initialize($methodInstance->getConfigData('payment_action'), $stateObject);
|
224 |
+
}
|
225 |
+
else
|
226 |
+
{
|
227 |
+
$orderState = Mage_Sales_Model_Order::STATE_PROCESSING;
|
228 |
+
switch ($action)
|
229 |
+
{
|
230 |
+
case Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE:
|
231 |
+
$this->_authorize(true, $order->getBaseTotalDue()); // base amount will be set inside
|
232 |
+
$this->setAmountAuthorized($order->getTotalDue());
|
233 |
+
break;
|
234 |
+
case Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE_CAPTURE:
|
235 |
+
$this->setAmountAuthorized($order->getTotalDue());
|
236 |
+
$this->setBaseAmountAuthorized($order->getBaseTotalDue());
|
237 |
+
$this->capture(null);
|
238 |
+
break;
|
239 |
+
default:
|
240 |
+
break;
|
241 |
+
}
|
242 |
+
}
|
243 |
+
}
|
244 |
+
|
245 |
+
if($nVersion >= 1411 || $nVersion == 1410)
|
246 |
+
{
|
247 |
+
$this->_createBillingAgreement();
|
248 |
+
$orderStateHelper = Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW;
|
249 |
+
}
|
250 |
+
else
|
251 |
+
{
|
252 |
+
$orderStateHelper = Mage_Sales_Model_Order::STATE_HOLDED;
|
253 |
+
}
|
254 |
+
|
255 |
+
$orderIsNotified = null;
|
256 |
+
if ($stateObject->getState() && $stateObject->getStatus())
|
257 |
+
{
|
258 |
+
$orderState = $stateObject->getState();
|
259 |
+
if($ircOrderStatus == null)
|
260 |
+
{
|
261 |
+
$orderStatus = $stateObject->getStatus();
|
262 |
+
}
|
263 |
+
else
|
264 |
+
{
|
265 |
+
$orderStatus = $ircOrderStatus;
|
266 |
+
}
|
267 |
+
$orderIsNotified = $stateObject->getIsNotified();
|
268 |
+
}
|
269 |
+
else if($order->getIsThreeDSecurePending())
|
270 |
+
{
|
271 |
+
$orderState = 'pending_payment';
|
272 |
+
$orderStatus = 'irc_pending_threed_secure';
|
273 |
+
$message = '3D Secure authentication need to be completed';
|
274 |
+
$orderIsNotified = false;
|
275 |
+
}
|
276 |
+
else if($order->getIsHostedPaymentPending())
|
277 |
+
{
|
278 |
+
$order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true)->save();
|
279 |
+
$orderStateHelper = Mage_Sales_Model_Order::STATE_PENDING_PAYMENT;
|
280 |
+
$orderState = 'pending_payment';
|
281 |
+
$orderStatus = 'irc_pending_hosted_payment';
|
282 |
+
$message = 'Hosted Payment need to be completed';
|
283 |
+
$orderIsNotified = false;
|
284 |
+
}
|
285 |
+
else
|
286 |
+
{
|
287 |
+
if($ircOrderStatus == null)
|
288 |
+
{
|
289 |
+
$orderStatus = $methodInstance->getConfigData('order_status');
|
290 |
+
if (!$orderStatus || $order->getIsVirtual())
|
291 |
+
{
|
292 |
+
$orderStatus = $order->getConfig()->getStateDefaultStatus($orderState);
|
293 |
+
}
|
294 |
+
}
|
295 |
+
else
|
296 |
+
{
|
297 |
+
$orderStatus = $ircOrderStatus;
|
298 |
+
}
|
299 |
+
}
|
300 |
+
|
301 |
+
$isCustomerNotified = (null !== $orderIsNotified) ? $orderIsNotified : $order->getCustomerNoteNotify();
|
302 |
+
//$message = $order->getCustomerNote();
|
303 |
+
if(!$order->getIsThreeDSecurePending() &&
|
304 |
+
!$order->getIsHostedPaymentPending())
|
305 |
+
{
|
306 |
+
$message = $order->getCustomerNote();
|
307 |
+
}
|
308 |
+
|
309 |
+
// add message if order was put into review during authorization or capture
|
310 |
+
//if ($order->getState() == Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW)$orderState
|
311 |
+
if ($order->getState() == $orderStateHelper)
|
312 |
+
{
|
313 |
+
if ($message)
|
314 |
+
{
|
315 |
+
$order->addStatusToHistory($order->getStatus(), $message, $isCustomerNotified);
|
316 |
+
}
|
317 |
+
|
318 |
+
if($nVersion >= 1401 || $nVersion == 1400)
|
319 |
+
{
|
320 |
+
$order->setHoldBeforeState($orderState);
|
321 |
+
$order->setHoldBeforeStatus($orderStatus);
|
322 |
+
}
|
323 |
+
}
|
324 |
+
|
325 |
+
// add message to history if order state already declared
|
326 |
+
elseif ($order->getState() && ($orderStatus !== $order->getStatus() || $message))
|
327 |
+
{
|
328 |
+
$order->setState($orderState, $orderStatus, $message, $isCustomerNotified);
|
329 |
+
}
|
330 |
+
// set order state
|
331 |
+
elseif (($order->getState() != $orderState) || ($order->getStatus() != $orderStatus) || $message)
|
332 |
+
{
|
333 |
+
$order->setState($orderState, $orderStatus, $message, $isCustomerNotified);
|
334 |
+
}
|
335 |
+
|
336 |
+
Mage::dispatchEvent('sales_order_payment_place_end', array('payment' => $this));
|
337 |
+
|
338 |
+
return $this;
|
339 |
+
}
|
340 |
+
if($nVersion == 1324 || $nVersion == 1330)
|
341 |
+
{
|
342 |
+
Mage::dispatchEvent('sales_order_payment_place_start', array('payment' => $this));
|
343 |
+
|
344 |
+
$this->setAmountOrdered($this->getOrder()->getTotalDue());
|
345 |
+
$this->setBaseAmountOrdered($this->getOrder()->getBaseTotalDue());
|
346 |
+
|
347 |
+
$this->setShippingAmount($this->getOrder()->getShippingAmount());
|
348 |
+
$this->setBaseShippingAmount($this->getOrder()->getBaseShippingAmount());
|
349 |
+
|
350 |
+
$methodInstance = $this->getMethodInstance()->setStore($this->getOrder()->getStoreId());
|
351 |
+
|
352 |
+
$orderState = Mage_Sales_Model_Order::STATE_NEW;
|
353 |
+
$orderStatus= false;
|
354 |
+
|
355 |
+
$stateObject = new Varien_Object();
|
356 |
+
|
357 |
+
/**
|
358 |
+
* validating payment method again
|
359 |
+
*/
|
360 |
+
$methodInstance->validate();
|
361 |
+
if ($action = $methodInstance->getConfigData('payment_action')) {
|
362 |
+
/**
|
363 |
+
* Run action declared for payment method in configuration
|
364 |
+
*/
|
365 |
+
|
366 |
+
if ($methodInstance->isInitializeNeeded()) {
|
367 |
+
$methodInstance->initialize($action, $stateObject);
|
368 |
+
} else {
|
369 |
+
switch ($action) {
|
370 |
+
case Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE:
|
371 |
+
case Mage_Paypal_Model_Api_Abstract::PAYMENT_TYPE_AUTH:
|
372 |
+
$methodInstance->authorize($this, $this->getOrder()->getBaseTotalDue());
|
373 |
+
|
374 |
+
$this->setAmountAuthorized($this->getOrder()->getTotalDue());
|
375 |
+
$this->setBaseAmountAuthorized($this->getOrder()->getBaseTotalDue());
|
376 |
+
|
377 |
+
$orderState = Mage_Sales_Model_Order::STATE_PROCESSING;
|
378 |
+
break;
|
379 |
+
case Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE_CAPTURE:
|
380 |
+
case Mage_Paypal_Model_Api_Abstract::PAYMENT_TYPE_SALE:
|
381 |
+
$invoice = $this->_invoice();
|
382 |
+
|
383 |
+
$this->setAmountAuthorized($this->getOrder()->getTotalDue());
|
384 |
+
$this->setBaseAmountAuthorized($this->getOrder()->getBaseTotalDue());
|
385 |
+
|
386 |
+
$orderState = $this->getOrder()->getIsVirtual()
|
387 |
+
? Mage_Sales_Model_Order::STATE_COMPLETE
|
388 |
+
: Mage_Sales_Model_Order::STATE_PROCESSING;
|
389 |
+
break;
|
390 |
+
default:
|
391 |
+
break;
|
392 |
+
}
|
393 |
+
}
|
394 |
+
}
|
395 |
+
|
396 |
+
$orderIsNotified = null;
|
397 |
+
if ($stateObject->getState() && $stateObject->getStatus())
|
398 |
+
{
|
399 |
+
$orderState = $stateObject->getState();
|
400 |
+
if($ircOrderStatus == null)
|
401 |
+
{
|
402 |
+
$orderStatus = $stateObject->getStatus();
|
403 |
+
}
|
404 |
+
else
|
405 |
+
{
|
406 |
+
$orderStatus = $ircOrderStatus;
|
407 |
+
}
|
408 |
+
$orderIsNotified = $stateObject->getIsNotified();
|
409 |
+
}
|
410 |
+
else
|
411 |
+
{
|
412 |
+
/*
|
413 |
+
* this flag will set if the order went to as authorization under fraud service for payflowpro
|
414 |
+
*/
|
415 |
+
if ($this->getFraudFlag())
|
416 |
+
{
|
417 |
+
$orderStatus = $methodInstance->getConfigData('fraud_order_status');
|
418 |
+
$orderState = Mage_Sales_Model_Order::STATE_HOLDED;
|
419 |
+
}
|
420 |
+
else
|
421 |
+
{
|
422 |
+
$orderStatus = $methodInstance->getConfigData('order_status');
|
423 |
+
}
|
424 |
+
|
425 |
+
if($ircOrderStatus == null)
|
426 |
+
{
|
427 |
+
if (!$orderStatus || $this->getOrder()->getIsVirtual())
|
428 |
+
{
|
429 |
+
$orderStatus = $this->getOrder()->getConfig()->getStateDefaultStatus($orderState);
|
430 |
+
}
|
431 |
+
}
|
432 |
+
else
|
433 |
+
{
|
434 |
+
$orderStatus = $ircOrderStatus;
|
435 |
+
}
|
436 |
+
}
|
437 |
+
|
438 |
+
$this->getOrder()->setState($orderState);
|
439 |
+
$this->getOrder()->addStatusToHistory(
|
440 |
+
$orderStatus,
|
441 |
+
$this->getOrder()->getCustomerNote(),
|
442 |
+
(null !== $orderIsNotified ? $orderIsNotified : $this->getOrder()->getCustomerNoteNotify())
|
443 |
+
);
|
444 |
+
|
445 |
+
Mage::dispatchEvent('sales_order_payment_place_end', array('payment' => $this));
|
446 |
+
|
447 |
+
return $this;
|
448 |
+
}
|
449 |
+
}
|
450 |
+
|
451 |
+
/**
|
452 |
+
* Create transaction,
|
453 |
+
* prepare its insertion into hierarchy and add its information to payment and comments
|
454 |
+
*
|
455 |
+
* To add transactions and related information,
|
456 |
+
* the following information should be set to payment before processing:
|
457 |
+
* - transaction_id
|
458 |
+
* - is_transaction_closed (optional) - whether transaction should be closed or open (closed by default)
|
459 |
+
* - parent_transaction_id (optional)
|
460 |
+
* - should_close_parent_transaction (optional) - whether to close parent transaction (closed by default)
|
461 |
+
*
|
462 |
+
* If the sales document is specified, it will be linked to the transaction as related for future usage.
|
463 |
+
* Currently transaction ID is set into the sales object
|
464 |
+
* This method writes the added transaction ID into last_trans_id field of the payment object
|
465 |
+
*
|
466 |
+
* To make sure transaction object won't cause trouble before saving, use $failsafe = true
|
467 |
+
*
|
468 |
+
* @param string $type
|
469 |
+
* @param Mage_Sales_Model_Abstract $salesDocument
|
470 |
+
* @param bool $failsafe
|
471 |
+
* @return null|Mage_Sales_Model_Order_Payment_Transaction
|
472 |
+
*/
|
473 |
+
protected function _addTransaction($type, $salesDocument = null, $failsafe = false)
|
474 |
+
{
|
475 |
+
$model = Mage::getModel('tpg/direct');
|
476 |
+
$nVersion = $model->getVersion();
|
477 |
+
|
478 |
+
if($nVersion >= 1501)
|
479 |
+
{
|
480 |
+
if ($this->getSkipTransactionCreation())
|
481 |
+
{
|
482 |
+
$this->unsTransactionId();
|
483 |
+
return null;
|
484 |
+
}
|
485 |
+
}
|
486 |
+
|
487 |
+
// look for set transaction ids
|
488 |
+
$transactionId = $this->getTransactionId();
|
489 |
+
if (null !== $transactionId)
|
490 |
+
{
|
491 |
+
// set transaction parameters
|
492 |
+
$transaction = false;
|
493 |
+
if ($this->getOrder()->getId())
|
494 |
+
{
|
495 |
+
$transaction = $this->_lookupTransaction($transactionId);
|
496 |
+
}
|
497 |
+
|
498 |
+
if (!$transaction)
|
499 |
+
{
|
500 |
+
$transaction = Mage::getModel('sales/order_payment_transaction')->setTxnId($transactionId);
|
501 |
+
}
|
502 |
+
$transaction
|
503 |
+
->setOrderPaymentObject($this)
|
504 |
+
->setTxnType($type)
|
505 |
+
->isFailsafe($failsafe);
|
506 |
+
|
507 |
+
if ($this->hasIsTransactionClosed())
|
508 |
+
{
|
509 |
+
$transaction->setIsClosed((int)$this->getIsTransactionClosed());
|
510 |
+
}
|
511 |
+
|
512 |
+
//set transaction addition information
|
513 |
+
if ($this->_transactionAdditionalInfo)
|
514 |
+
{
|
515 |
+
foreach ($this->_transactionAdditionalInfo as $key => $value)
|
516 |
+
{
|
517 |
+
$transaction->setAdditionalInformation($key, $value);
|
518 |
+
}
|
519 |
+
}
|
520 |
+
|
521 |
+
// link with sales entities
|
522 |
+
$this->setLastTransId($transactionId);
|
523 |
+
$this->setCreatedTransaction($transaction);
|
524 |
+
$this->getOrder()->addRelatedObject($transaction);
|
525 |
+
if ($salesDocument && $salesDocument instanceof Mage_Sales_Model_Abstract)
|
526 |
+
{
|
527 |
+
$salesDocument->setTransactionId($transactionId);
|
528 |
+
// TODO: linking transaction with the sales document
|
529 |
+
}
|
530 |
+
|
531 |
+
// link with parent transaction
|
532 |
+
$parentTransactionId = $this->getParentTransactionId();
|
533 |
+
|
534 |
+
if ($parentTransactionId)
|
535 |
+
{
|
536 |
+
$transaction->setParentTxnId($parentTransactionId);
|
537 |
+
if ($this->getShouldCloseParentTransaction())
|
538 |
+
{
|
539 |
+
$parentTransaction = $this->_lookupTransaction($parentTransactionId);
|
540 |
+
if ($parentTransaction)
|
541 |
+
{
|
542 |
+
if (!$parentTransaction->getIsClosed())
|
543 |
+
{
|
544 |
+
$parentTransaction->isFailsafe($failsafe)->close(false);
|
545 |
+
}
|
546 |
+
$this->getOrder()->addRelatedObject($parentTransaction);
|
547 |
+
}
|
548 |
+
}
|
549 |
+
}
|
550 |
+
return $transaction;
|
551 |
+
}
|
552 |
+
}
|
553 |
+
}
|
app/code/local/PayVector/Sales/Model/Service/Quote.php
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Sales_Model_Service_Quote extends Mage_Sales_Model_Service_Quote
|
4 |
+
{
|
5 |
+
public function submitOrder()
|
6 |
+
{
|
7 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
8 |
+
|
9 |
+
if($nVersion >= 1410)
|
10 |
+
{
|
11 |
+
if ($this->_quote->getPayment()->getMethodInstance()->getCode() != 'tpg')
|
12 |
+
{
|
13 |
+
return parent::submitOrder();
|
14 |
+
}
|
15 |
+
|
16 |
+
$this->_deleteNominalItems();
|
17 |
+
$this->_validate();
|
18 |
+
$quote = $this->_quote;
|
19 |
+
$isVirtual = $quote->isVirtual();
|
20 |
+
|
21 |
+
$transaction = Mage::getModel('core/resource_transaction');
|
22 |
+
if ($quote->getCustomerId())
|
23 |
+
{
|
24 |
+
$transaction->addObject($quote->getCustomer());
|
25 |
+
}
|
26 |
+
$transaction->addObject($quote);
|
27 |
+
|
28 |
+
$quote->reserveOrderId();
|
29 |
+
if ($isVirtual)
|
30 |
+
{
|
31 |
+
$order = $this->_convertor->addressToOrder($quote->getBillingAddress());
|
32 |
+
}
|
33 |
+
else
|
34 |
+
{
|
35 |
+
$order = $this->_convertor->addressToOrder($quote->getShippingAddress());
|
36 |
+
}
|
37 |
+
$order->setBillingAddress($this->_convertor->addressToOrderAddress($quote->getBillingAddress()));
|
38 |
+
|
39 |
+
if (!$isVirtual)
|
40 |
+
{
|
41 |
+
$order->setShippingAddress($this->_convertor->addressToOrderAddress($quote->getShippingAddress()));
|
42 |
+
}
|
43 |
+
$order->setPayment($this->_convertor->paymentToOrderPayment($quote->getPayment()));
|
44 |
+
|
45 |
+
foreach ($this->_orderData as $key => $value)
|
46 |
+
{
|
47 |
+
$order->setData($key, $value);
|
48 |
+
}
|
49 |
+
|
50 |
+
foreach ($quote->getAllItems() as $item)
|
51 |
+
{
|
52 |
+
$orderItem = $this->_convertor->itemToOrderItem($item);
|
53 |
+
if ($item->getParentItem())
|
54 |
+
{
|
55 |
+
$orderItem->setParentItem($order->getItemByQuoteItemId($item->getParentItem()->getId()));
|
56 |
+
}
|
57 |
+
$order->addItem($orderItem);
|
58 |
+
}
|
59 |
+
// make sure the cart is not emptied
|
60 |
+
//$quote->setIsActive(false);
|
61 |
+
|
62 |
+
$transaction->addObject($order);
|
63 |
+
$transaction->addCommitCallback(array($order, 'place'));
|
64 |
+
$transaction->addCommitCallback(array($order, 'save'));
|
65 |
+
|
66 |
+
/**
|
67 |
+
* We can use configuration data for declare new order status
|
68 |
+
*/
|
69 |
+
Mage::dispatchEvent('checkout_type_onepage_save_order', array('order'=>$order, 'quote'=>$quote));
|
70 |
+
Mage::dispatchEvent('sales_model_service_quote_submit_before', array('order'=>$order, 'quote'=>$quote));
|
71 |
+
try
|
72 |
+
{
|
73 |
+
$transaction->save();
|
74 |
+
Mage::dispatchEvent('sales_model_service_quote_submit_success', array('order'=>$order, 'quote'=>$quote));
|
75 |
+
|
76 |
+
// need to store the orderID in the session for the callback from an external page
|
77 |
+
Mage::getSingleton('checkout/session')->setTpgOrderId($order->getId());
|
78 |
+
|
79 |
+
}
|
80 |
+
catch (Exception $e)
|
81 |
+
{
|
82 |
+
Mage::logException($e);
|
83 |
+
Mage::dispatchEvent('sales_model_service_quote_submit_failure', array('order'=>$order, 'quote'=>$quote));
|
84 |
+
throw $e;
|
85 |
+
}
|
86 |
+
Mage::dispatchEvent('sales_model_service_quote_submit_after', array('order'=>$order, 'quote'=>$quote));
|
87 |
+
$this->_order = $order;
|
88 |
+
|
89 |
+
return $order;
|
90 |
+
}
|
91 |
+
}
|
92 |
+
}
|
app/code/local/PayVector/Sales/etc/config.xml
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<PayVector_Sales>
|
5 |
+
<version>0.0.1</version>
|
6 |
+
</PayVector_Sales>
|
7 |
+
</modules>
|
8 |
+
<global>
|
9 |
+
<models>
|
10 |
+
<sales>
|
11 |
+
<rewrite>
|
12 |
+
<order>PayVector_Sales_Model_Order</order>
|
13 |
+
<order_invoice>PayVector_Sales_Model_Order_Invoice</order_invoice>
|
14 |
+
<order_payment>PayVector_Sales_Model_Order_Payment</order_payment>
|
15 |
+
<service_quote>PayVector_Sales_Model_Service_Quote</service_quote>
|
16 |
+
</rewrite>
|
17 |
+
</sales>
|
18 |
+
</models>
|
19 |
+
<sales>
|
20 |
+
<order>
|
21 |
+
<statuses>
|
22 |
+
<irc_paid translate="label">
|
23 |
+
<label>PayVector - Successful Payment</label>
|
24 |
+
</irc_paid>
|
25 |
+
<irc_pending_threed_secure translate="label">
|
26 |
+
<label>PayVector - Pending 3D Secure</label>
|
27 |
+
</irc_pending_threed_secure>
|
28 |
+
<irc_failed_threed_secure translate="label">
|
29 |
+
<label>PayVector - Failed 3D Secure</label>
|
30 |
+
</irc_failed_threed_secure>
|
31 |
+
<irc_pending translate="label">
|
32 |
+
<label>PayVector - Pending Hosted Payment</label>
|
33 |
+
</irc_pending>
|
34 |
+
<irc_pending_hosted_payment translate="label">
|
35 |
+
<label>PayVector - Pending Hosted Payment</label>
|
36 |
+
</irc_pending_hosted_payment>
|
37 |
+
<irc_failed_hosted_payment translate="label">
|
38 |
+
<label>PayVector - Failed Hosted Payment</label>
|
39 |
+
</irc_failed_hosted_payment>
|
40 |
+
<irc_refunded translate="label">
|
41 |
+
<label>PayVector - Payment Refunded</label>
|
42 |
+
</irc_refunded>
|
43 |
+
<irc_voided translate="label">
|
44 |
+
<label>PayVector - Payment Voided</label>
|
45 |
+
</irc_voided>
|
46 |
+
<irc_preauth translate="label">
|
47 |
+
<label>PayVector - Payment PreAuthorized</label>
|
48 |
+
</irc_preauth>
|
49 |
+
<irc_collected translate="label">
|
50 |
+
<label>PayVector - Payment Collected</label>
|
51 |
+
</irc_collected>
|
52 |
+
</statuses>
|
53 |
+
</order>
|
54 |
+
</sales>
|
55 |
+
</global>
|
56 |
+
</config>
|
app/code/local/PayVector/Tpg/Block/Adminhtml/Sales/Order/Payment.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class PayVector_Tpg_Block_Adminhtml_Sales_Order_Payment extends Mage_Adminhtml_Block_Sales_Order_Payment
|
3 |
+
{
|
4 |
+
public function setPayment($payment)
|
5 |
+
{
|
6 |
+
parent::setPayment($payment);
|
7 |
+
$paymentInfoBlock = Mage::helper('payment')->getInfoBlock($payment);
|
8 |
+
|
9 |
+
if ($payment->getMethod() == 'tpg')
|
10 |
+
{
|
11 |
+
|
12 |
+
$paymentInfoBlock->setTemplate('payment/info/cc_tpg.phtml');
|
13 |
+
}
|
14 |
+
|
15 |
+
$this->setChild('info', $paymentInfoBlock);
|
16 |
+
$this->setData('payment', $payment);
|
17 |
+
return $this;
|
18 |
+
}
|
19 |
+
|
20 |
+
protected function _toHtml()
|
21 |
+
{
|
22 |
+
return $this->getChildHtml('info');
|
23 |
+
}
|
24 |
+
|
25 |
+
}
|
app/code/local/PayVector/Tpg/Block/Error.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Block_Error extends Mage_Core_Block_Template
|
4 |
+
{
|
5 |
+
|
6 |
+
}
|
app/code/local/PayVector/Tpg/Block/Form.php
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class PayVector_Tpg_Block_Form extends Mage_Payment_Block_Form
|
3 |
+
{
|
4 |
+
protected function _construct()
|
5 |
+
{
|
6 |
+
parent::_construct();
|
7 |
+
$this->setTemplate('tpg/form.phtml');
|
8 |
+
}
|
9 |
+
|
10 |
+
protected function _getConfig()
|
11 |
+
{
|
12 |
+
return Mage::getSingleton('payment/config');
|
13 |
+
}
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Returns an array of credit card expiry months
|
17 |
+
*
|
18 |
+
* @return unknown
|
19 |
+
*/
|
20 |
+
public function getCcMonths()
|
21 |
+
{
|
22 |
+
$months = $this->getData('cc_months');
|
23 |
+
|
24 |
+
if (is_null($months))
|
25 |
+
{
|
26 |
+
$months = array();
|
27 |
+
$monthList = $this->_getConfig()->getMonths();
|
28 |
+
|
29 |
+
$months[0] = $this->__('Month');
|
30 |
+
for ($nCount = 1; $nCount <= sizeof($monthList); $nCount++)
|
31 |
+
{
|
32 |
+
$value = $nCount;
|
33 |
+
if($value < 10)
|
34 |
+
{
|
35 |
+
$value = '0'.$value;
|
36 |
+
}
|
37 |
+
$months[$value] = $monthList[$nCount];
|
38 |
+
}
|
39 |
+
|
40 |
+
$this->setData('cc_months', $months);
|
41 |
+
}
|
42 |
+
|
43 |
+
return $months;
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Returns an array of credit card expiry years
|
48 |
+
*
|
49 |
+
* @return unknown
|
50 |
+
*/
|
51 |
+
public function getCcYears()
|
52 |
+
{
|
53 |
+
$years = $this->getData('cc_years');
|
54 |
+
|
55 |
+
if (is_null($years))
|
56 |
+
{
|
57 |
+
$years = array();
|
58 |
+
$first = date("Y");
|
59 |
+
|
60 |
+
$years = array($this->__('Year'));
|
61 |
+
for ($index = 0; $index < 10; $index++)
|
62 |
+
{
|
63 |
+
$year = $first + $index;
|
64 |
+
$yearPartial = substr($year, 2);
|
65 |
+
$years[$yearPartial] = $year;
|
66 |
+
}
|
67 |
+
$this->setData('cc_years', $years);
|
68 |
+
}
|
69 |
+
|
70 |
+
return $years;
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Returns an array credit card start months
|
75 |
+
*
|
76 |
+
* @return unknown
|
77 |
+
*/
|
78 |
+
public function getCcStartMonths()
|
79 |
+
{
|
80 |
+
$months = $this->getData('cc_ss_start_month');
|
81 |
+
|
82 |
+
if (is_null($months))
|
83 |
+
{
|
84 |
+
$months = array();
|
85 |
+
$monthList = $this->_getConfig()->getMonths();
|
86 |
+
|
87 |
+
for ($nCount = 1; $nCount <= sizeof($monthList); $nCount++)
|
88 |
+
{
|
89 |
+
$value = $nCount;
|
90 |
+
if($value < 10)
|
91 |
+
{
|
92 |
+
$value = '0'.$value;
|
93 |
+
}
|
94 |
+
$months[$value] = $monthList[$nCount];
|
95 |
+
}
|
96 |
+
$this->setData('cc_ss_start_month', $months);
|
97 |
+
}
|
98 |
+
|
99 |
+
return $months;
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Returns an array of credit card start years
|
104 |
+
*
|
105 |
+
* @return unknown
|
106 |
+
*/
|
107 |
+
public function getCcStartYears()
|
108 |
+
{
|
109 |
+
$years = $this->getData('cc_start_years');
|
110 |
+
|
111 |
+
if(is_null($years))
|
112 |
+
{
|
113 |
+
$years = array();
|
114 |
+
$first = date("Y");
|
115 |
+
|
116 |
+
for ($index = 0; $index < 10; $index++)
|
117 |
+
{
|
118 |
+
$year = $first - $index;
|
119 |
+
$yearPartial = substr($year, 2);
|
120 |
+
$years[$yearPartial] = $year;
|
121 |
+
}
|
122 |
+
$this->setData('cc_start_years', $years);
|
123 |
+
}
|
124 |
+
|
125 |
+
return $years;
|
126 |
+
}
|
127 |
+
}
|
app/code/local/PayVector/Tpg/Block/Info.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Block_Info extends Mage_Payment_Block_Info
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* Init default template for block
|
7 |
+
*/
|
8 |
+
protected function _construct()
|
9 |
+
{
|
10 |
+
parent::_construct();
|
11 |
+
$this->setTemplate('tpg/info.phtml');
|
12 |
+
}
|
13 |
+
|
14 |
+
public function getCcNumber()
|
15 |
+
{
|
16 |
+
return $this->getInfo()->decrypt($this->getInfo()->getCcNumberEnc());
|
17 |
+
}
|
18 |
+
|
19 |
+
public function getCcCid()
|
20 |
+
{
|
21 |
+
return $this->getInfo()->decrypt($this->getInfo()->getCcCidEnc());
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Retrieve CC expiration date
|
26 |
+
*
|
27 |
+
* @return Zend_Date
|
28 |
+
*/
|
29 |
+
public function getCcExpDate()
|
30 |
+
{
|
31 |
+
$date = Mage::app()->getLocale()->date(0);
|
32 |
+
$date->setYear($this->getInfo()->getCcExpYear());
|
33 |
+
$date->setMonth($this->getInfo()->getCcExpMonth());
|
34 |
+
return $date;
|
35 |
+
}
|
36 |
+
}
|
app/code/local/PayVector/Tpg/Block/Redirect.php
ADDED
@@ -0,0 +1,262 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Block_Redirect extends Mage_Core_Block_Abstract
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* Build the redirect form to be submitted to the hosted payment form or the transparent redirect page
|
7 |
+
*
|
8 |
+
*/
|
9 |
+
protected function _toHtml()
|
10 |
+
{
|
11 |
+
$model = Mage::getModel('tpg/direct');
|
12 |
+
$pmPaymentMode = $model->getConfigData('mode');
|
13 |
+
switch($pmPaymentMode)
|
14 |
+
{
|
15 |
+
case PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_HOSTED_PAYMENT_FORM:
|
16 |
+
$html = self::_redirectToHostedPaymentForm();
|
17 |
+
break;
|
18 |
+
case PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_TRANSPARENT_REDIRECT:
|
19 |
+
$html = self::_redirectToTransparentRedirect();
|
20 |
+
break;
|
21 |
+
}
|
22 |
+
|
23 |
+
return $html;
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Build the redirect form for the Hosted Payment Form payment type
|
28 |
+
*
|
29 |
+
* @return string
|
30 |
+
*/
|
31 |
+
private function _redirectToHostedPaymentForm()
|
32 |
+
{
|
33 |
+
$model = Mage::getModel('tpg/direct');
|
34 |
+
$szActionURL = $model->getConfigData('hostedpaymentactionurl');
|
35 |
+
$cookies = Mage::getSingleton('core/cookie')->get();
|
36 |
+
$checkoutSession = Mage::getSingleton('checkout/session');
|
37 |
+
$szServerResultURLCookieVariables = '';
|
38 |
+
$szServerResultURLFormVariables = '';
|
39 |
+
$szServerResultURLQueryStringVariables = '';
|
40 |
+
|
41 |
+
// create a Magento form
|
42 |
+
$form = new Varien_Data_Form();
|
43 |
+
$form->setAction($szActionURL)
|
44 |
+
->setId('HostedPaymentForm')
|
45 |
+
->setName('HostedPaymentForm')
|
46 |
+
->setMethod('POST')
|
47 |
+
->setUseContainer(true);
|
48 |
+
|
49 |
+
$form->addField("HashDigest", 'hidden', array('name' => "HashDigest", 'value' => $checkoutSession->getHashdigest()));
|
50 |
+
$form->addField("MerchantID", 'hidden', array('name' => "MerchantID", 'value' => $checkoutSession->getMerchantid()));
|
51 |
+
$form->addField("Amount", 'hidden', array('name' => "Amount", 'value' => $checkoutSession->getAmount()));
|
52 |
+
$form->addField("CurrencyCode", 'hidden', array('name' => "CurrencyCode", 'value' => $checkoutSession->getCurrencycode()));
|
53 |
+
$form->addField("EchoCardType", 'hidden', array('name' => "EchoCardType", 'value' => $checkoutSession->getEchoCardType()));
|
54 |
+
$form->addField("OrderID", 'hidden', array('name' => "OrderID", 'value' => $checkoutSession->getOrderid()));
|
55 |
+
$form->addField("TransactionType", 'hidden', array('name' => "TransactionType", 'value' => $checkoutSession->getTransactiontype()));
|
56 |
+
$form->addField("TransactionDateTime", 'hidden', array('name' => "TransactionDateTime", 'value' => $checkoutSession->getTransactiondatetime()));
|
57 |
+
$form->addField("CallbackURL", 'hidden', array('name' => "CallbackURL", 'value' => $checkoutSession->getCallbackurl()));
|
58 |
+
$form->addField("OrderDescription", 'hidden', array('name' => "OrderDescription", 'value' => $checkoutSession->getOrderdescription()));
|
59 |
+
$form->addField("CustomerName", 'hidden', array('name' => "CustomerName", 'value' => $checkoutSession->getCustomername()));
|
60 |
+
$form->addField("Address1", 'hidden', array('name' => "Address1", 'value' => $checkoutSession->getAddress1()));
|
61 |
+
$form->addField("Address2", 'hidden', array('name' => "Address2", 'value' => $checkoutSession->getAddress2()));
|
62 |
+
$form->addField("Address3", 'hidden', array('name' => "Address3", 'value' => $checkoutSession->getAddress3()));
|
63 |
+
$form->addField("Address4", 'hidden', array('name' => "Address4", 'value' => $checkoutSession->getAddress4()));
|
64 |
+
$form->addField("City", 'hidden', array('name' => "City", 'value' => $checkoutSession->getCity()));
|
65 |
+
$form->addField("State", 'hidden', array('name' => "State", 'value' => $checkoutSession->getState()));
|
66 |
+
$form->addField("PostCode", 'hidden', array('name' => "PostCode", 'value' => $checkoutSession->getPostcode()));
|
67 |
+
$form->addField("CountryCode", 'hidden', array('name' => "CountryCode", 'value' => $checkoutSession->getCountrycode()));
|
68 |
+
$form->addField("CV2Mandatory", 'hidden', array('name' => "CV2Mandatory", 'value' => $checkoutSession->getCv2mandatory()));
|
69 |
+
$form->addField("Address1Mandatory", 'hidden', array('name' => "Address1Mandatory", 'value' => $checkoutSession->getAddress1mandatory()));
|
70 |
+
$form->addField("CityMandatory", 'hidden', array('name' => "CityMandatory", 'value' => $checkoutSession->getCitymandatory()));
|
71 |
+
$form->addField("PostCodeMandatory", 'hidden', array('name' => "PostCodeMandatory", 'value' => $checkoutSession->getPostcodemandatory()));
|
72 |
+
$form->addField("StateMandatory", 'hidden', array('name' => "StateMandatory", 'value' => $checkoutSession->getStatemandatory()));
|
73 |
+
$form->addField("CountryMandatory", 'hidden', array('name' => "CountryMandatory", 'value' => $checkoutSession->getCountrymandatory()));
|
74 |
+
$form->addField("ResultDeliveryMethod", 'hidden', array('name' => "ResultDeliveryMethod", 'value' => $checkoutSession->getResultdeliverymethod()));
|
75 |
+
$form->addField("ServerResultURL", 'hidden', array('name' => "ServerResultURL", 'value' => $checkoutSession->getServerresulturl()));
|
76 |
+
$form->addField("PaymentFormDisplaysResult", 'hidden', array('name' => "PaymentFormDisplaysResult", 'value' => $checkoutSession->getPaymentformdisplaysresult()));
|
77 |
+
$form->addField("ServerResultURLCookieVariables", 'hidden', array('name' => "ServerResultURLCookieVariables", 'value' => $checkoutSession->getServerresulturlcookievariables()));
|
78 |
+
$form->addField("ServerResultURLFormVariables", 'hidden', array('name' => "ServerResultURLFormVariables", 'value' => $checkoutSession->getServerresulturlformvariables()));
|
79 |
+
$form->addField("ServerResultURLQueryStringVariables", 'hidden', array('name' => "ServerResultURLQueryStringVariables", 'value' => $checkoutSession->getServerresulturlquerystringvariables()));
|
80 |
+
|
81 |
+
// reset the session items
|
82 |
+
$checkoutSession
|
83 |
+
->setHashdigest(null)
|
84 |
+
->setMerchantid(null)
|
85 |
+
->setAmount(null)
|
86 |
+
->setCurrencycode(null)
|
87 |
+
->setEchoCardType(null)
|
88 |
+
->setOrderid(null)
|
89 |
+
->setTransactiontype(null)
|
90 |
+
->setTransactiondatetime(null)
|
91 |
+
->setCallbackurl(null)
|
92 |
+
->setOrderdescription(null)
|
93 |
+
->setCustomername(null)
|
94 |
+
->setAddress1(null)
|
95 |
+
->setAddress2(null)
|
96 |
+
->setAddress3(null)
|
97 |
+
->setAddress4(null)
|
98 |
+
->setCity(null)
|
99 |
+
->setState(null)
|
100 |
+
->setPostcode(null)
|
101 |
+
->setCountrycode(null)
|
102 |
+
->setCv2mandatory(null)
|
103 |
+
->setAddress1mandatory(null)
|
104 |
+
->setCitymandatory(null)
|
105 |
+
->setPostcodemandatory(null)
|
106 |
+
->setStatemandatory(null)
|
107 |
+
->setCountrymandatory(null)
|
108 |
+
->setResultdeliverymethod(null)
|
109 |
+
->setServerresulturl(null)
|
110 |
+
->setPaymentformdisplaysresult(null)
|
111 |
+
->setServerresulturlcookievariables(null)
|
112 |
+
->setServerresulturlformvariables(null)
|
113 |
+
->setServerresulturlquerystringvariables(null);
|
114 |
+
|
115 |
+
$html = '<html><body>';
|
116 |
+
$html .= $this->__('You will be redirected to a secure payment page in a few seconds.');
|
117 |
+
$html .= $form->toHtml();
|
118 |
+
$html .= '<script type="text/javascript">document.getElementById("HostedPaymentForm").submit();</script>';
|
119 |
+
$html .= '</body></html>';
|
120 |
+
|
121 |
+
return $html;
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Build the redirect form for the Transparent Redirect payment type
|
126 |
+
*
|
127 |
+
* @return string
|
128 |
+
*/
|
129 |
+
private function _redirectToTransparentRedirect()
|
130 |
+
{
|
131 |
+
$model = Mage::getModel('tpg/direct');
|
132 |
+
$szActionURL = $model->getConfigData('transparentredirectactionurl');
|
133 |
+
$szPaRes = Mage::getSingleton('checkout/session')->getPares();
|
134 |
+
|
135 |
+
if(isset($szPaRes))
|
136 |
+
{
|
137 |
+
$html = self::_submitPaRes($szActionURL);
|
138 |
+
}
|
139 |
+
else
|
140 |
+
{
|
141 |
+
$html = self::_submitTransaction($szActionURL);
|
142 |
+
}
|
143 |
+
|
144 |
+
return $html;
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Build the submit
|
149 |
+
*
|
150 |
+
* @param string $szActionURL
|
151 |
+
* @return string
|
152 |
+
*/
|
153 |
+
private function _submitTransaction($szActionURL)
|
154 |
+
{
|
155 |
+
// create a Magento form
|
156 |
+
$form = new Varien_Data_Form();
|
157 |
+
$form->setAction($szActionURL)
|
158 |
+
->setId('TransparentRedirectForm')
|
159 |
+
->setName('TransparentRedirectForm')
|
160 |
+
->setMethod('POST')
|
161 |
+
->setUseContainer(true);
|
162 |
+
|
163 |
+
$form->addField("HashDigest", 'hidden', array('name' => "HashDigest", 'value' => Mage::getSingleton('checkout/session')->getHashdigest()));
|
164 |
+
$form->addField("MerchantID", 'hidden', array('name' => "MerchantID", 'value' => Mage::getSingleton('checkout/session')->getMerchantid()));
|
165 |
+
$form->addField("Amount", 'hidden', array('name' => "Amount", 'value' => Mage::getSingleton('checkout/session')->getAmount()));
|
166 |
+
$form->addField("CurrencyCode", 'hidden', array('name' => "CurrencyCode", 'value' => Mage::getSingleton('checkout/session')->getCurrencycode()));
|
167 |
+
$form->addField("OrderID", 'hidden', array('name' => "OrderID", 'value' => Mage::getSingleton('checkout/session')->getOrderid()));
|
168 |
+
$form->addField("TransactionType", 'hidden', array('name' => "TransactionType", 'value' => Mage::getSingleton('checkout/session')->getTransactiontype()));
|
169 |
+
$form->addField("TransactionDateTime", 'hidden', array('name' => "TransactionDateTime", 'value' => Mage::getSingleton('checkout/session')->getTransactiondatetime()));
|
170 |
+
$form->addField("CallbackURL", 'hidden', array('name' => "CallbackURL", 'value' => Mage::getSingleton('checkout/session')->getCallbackurl()));
|
171 |
+
$form->addField("OrderDescription", 'hidden', array('name' => "OrderDescription", 'value' => Mage::getSingleton('checkout/session')->getOrderdescription()));
|
172 |
+
$form->addField("Address1", 'hidden', array('name' => "Address1", 'value' => Mage::getSingleton('checkout/session')->getAddress1()));
|
173 |
+
$form->addField("Address2", 'hidden', array('name' => "Address2", 'value' => Mage::getSingleton('checkout/session')->getAddress2()));
|
174 |
+
$form->addField("Address3", 'hidden', array('name' => "Address3", 'value' => Mage::getSingleton('checkout/session')->getAddress3()));
|
175 |
+
$form->addField("Address4", 'hidden', array('name' => "Address4", 'value' => Mage::getSingleton('checkout/session')->getAddress4()));
|
176 |
+
$form->addField("City", 'hidden', array('name' => "City", 'value' => Mage::getSingleton('checkout/session')->getCity()));
|
177 |
+
$form->addField("State", 'hidden', array('name' => "State", 'value' => Mage::getSingleton('checkout/session')->getState()));
|
178 |
+
$form->addField("PostCode", 'hidden', array('name' => "PostCode", 'value' => Mage::getSingleton('checkout/session')->getPostcode()));
|
179 |
+
$form->addField("CountryCode", 'hidden', array('name' => "CountryCode", 'value' => Mage::getSingleton('checkout/session')->getCountrycode()));
|
180 |
+
$form->addField("CardName", 'hidden', array('name' => "CardName", 'value' => Mage::getSingleton('checkout/session')->getCardname()));
|
181 |
+
$form->addField("CardNumber", 'hidden', array('name' => "CardNumber", 'value' => Mage::getSingleton('checkout/session')->getCardnumber()));
|
182 |
+
$form->addField("ExpiryDateMonth", 'hidden', array('name' => "ExpiryDateMonth", 'value' => Mage::getSingleton('checkout/session')->getExpirydatemonth()));
|
183 |
+
$form->addField("ExpiryDateYear", 'hidden', array('name' => "ExpiryDateYear", 'value' => Mage::getSingleton('checkout/session')->getExpirydateyear()));
|
184 |
+
$form->addField("StartDateMonth", 'hidden', array('name' => "StartDateMonth", 'value' => Mage::getSingleton('checkout/session')->getStartdatemonth()));
|
185 |
+
$form->addField("StartDateYear", 'hidden', array('name' => "StartDateYear", 'value' => Mage::getSingleton('checkout/session')->getStartdateyear()));
|
186 |
+
$form->addField("IssueNumber", 'hidden', array('name' => "IssueNumber", 'value' => Mage::getSingleton('checkout/session')->getIssuenumber()));
|
187 |
+
$form->addField("CV2", 'hidden', array('name' => "CV2", 'value' => Mage::getSingleton('checkout/session')->getCv2()));
|
188 |
+
|
189 |
+
// reset the session items
|
190 |
+
Mage::getSingleton('checkout/session')->setHashdigest(null)
|
191 |
+
->setMerchantid(null)
|
192 |
+
->setAmount(null)
|
193 |
+
->setCurrencycode(null)
|
194 |
+
->setOrderid(null)
|
195 |
+
->setTransactiontype(null)
|
196 |
+
->setTransactiondatetime(null)
|
197 |
+
->setCallbackurl(null)
|
198 |
+
->setOrderdescription(null)
|
199 |
+
->setAddress1(null)
|
200 |
+
->setAddress2(null)
|
201 |
+
->setAddress3(null)
|
202 |
+
->setAddress4(null)
|
203 |
+
->setCity(null)
|
204 |
+
->setState(null)
|
205 |
+
->setPostcode(null)
|
206 |
+
->setCountrycode(null)
|
207 |
+
->setCardname(null)
|
208 |
+
->setCardnumber(null)
|
209 |
+
->setExpirydatemonth(null)
|
210 |
+
->setExpirydateyear(null)
|
211 |
+
->setStartdatemonth(null)
|
212 |
+
->setStartdateyear(null)
|
213 |
+
->setIssuenumber(null)
|
214 |
+
->setCv2(null);
|
215 |
+
|
216 |
+
$html = '<html><body>';
|
217 |
+
$html .= $form->toHtml();
|
218 |
+
$html .= '<script type="text/javascript">document.getElementById("TransparentRedirectForm").submit();</script>';
|
219 |
+
$html .= '</body></html>';
|
220 |
+
|
221 |
+
return $html;
|
222 |
+
}
|
223 |
+
|
224 |
+
/**
|
225 |
+
* Build the form for the Transparent Redirect 3DSecure authentication payment
|
226 |
+
*
|
227 |
+
* @param string $szActionURL
|
228 |
+
* @return string
|
229 |
+
*/
|
230 |
+
private function _submitPaRes($szActionURL)
|
231 |
+
{
|
232 |
+
// create a Magento form
|
233 |
+
$form = new Varien_Data_Form();
|
234 |
+
$form->setAction($szActionURL)
|
235 |
+
->setId('SubmitPaResForm')
|
236 |
+
->setName('SubmitPaResForm')
|
237 |
+
->setMethod('POST')
|
238 |
+
->setUseContainer(true);
|
239 |
+
|
240 |
+
$form->addField("HashDigest", 'hidden', array('name' => "HashDigest", 'value' => Mage::getSingleton('checkout/session')->getHashdigest()));
|
241 |
+
$form->addField("MerchantID", 'hidden', array('name' => "MerchantID", 'value' => Mage::getSingleton('checkout/session')->getMerchantid()));
|
242 |
+
$form->addField("CrossReference", 'hidden', array('name' => "CrossReference", 'value' => Mage::getSingleton('checkout/session')->getCrossreference()));
|
243 |
+
$form->addField("TransactionDateTime", 'hidden', array('name' => "TransactionDateTime", 'value' => Mage::getSingleton('checkout/session')->getTransactiondatetime()));
|
244 |
+
$form->addField("CallbackURL", 'hidden', array('name' => "CallbackURL", 'value' => Mage::getSingleton('checkout/session')->getCallbackurl()));
|
245 |
+
$form->addField("PaRES", 'hidden', array('name' => "PaRES", 'value' => Mage::getSingleton('checkout/session')->getPares()));
|
246 |
+
|
247 |
+
// reset the session items
|
248 |
+
Mage::getSingleton('checkout/session')->setHashdigest(null)
|
249 |
+
->setMerchantid(null)
|
250 |
+
->setCrossreference(null)
|
251 |
+
->setTransactiondatetime(null)
|
252 |
+
->setCallbackurl(null)
|
253 |
+
->setPares(null);
|
254 |
+
|
255 |
+
$html = '<html><body>';
|
256 |
+
$html .= $form->toHtml();
|
257 |
+
$html .= '<script type="text/javascript">document.getElementById("SubmitPaResForm").submit();</script>';
|
258 |
+
$html .= '</body></html>';
|
259 |
+
|
260 |
+
return $html;
|
261 |
+
}
|
262 |
+
}
|
app/code/local/PayVector/Tpg/Block/Threedsecure.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Block_Threedsecure extends Mage_Core_Block_Abstract
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* Build the 3D Secure form to be submitted to the redirect 3D Secure authorization page
|
7 |
+
*
|
8 |
+
*/
|
9 |
+
protected function _toHtml()
|
10 |
+
{
|
11 |
+
$mode = Mage::getModel('tpg/direct')->getConfigData('mode');
|
12 |
+
|
13 |
+
if($mode == PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_TRANSPARENT_REDIRECT)
|
14 |
+
{
|
15 |
+
$szTermURL = 'tpg/payment/callbacktransparentredirect';
|
16 |
+
}
|
17 |
+
else
|
18 |
+
{
|
19 |
+
$szTermURL = 'tpg/payment/callback3d';
|
20 |
+
}
|
21 |
+
|
22 |
+
$form = new Varien_Data_Form();
|
23 |
+
$form->setAction(Mage::getSingleton('checkout/session')->getAcsurl())
|
24 |
+
->setId('ThreeDSecureForm')
|
25 |
+
->setName('ThreeDSecureForm')
|
26 |
+
->setMethod('POST')
|
27 |
+
->setUseContainer(true);
|
28 |
+
|
29 |
+
$form->addField("PaReq", 'hidden', array('name'=>"PaReq", 'value'=>Mage::getSingleton('checkout/session')->getPareq()));
|
30 |
+
$form->addField("MD", 'hidden', array('name'=>"MD", 'value'=>Mage::getSingleton('checkout/session')->getMd()));
|
31 |
+
$form->addField("TermUrl", 'hidden', array('name'=>"TermUrl", 'value'=>Mage::getUrl($szTermURL, array('_secure' => true))));
|
32 |
+
|
33 |
+
$html = '<html><body>';
|
34 |
+
$html.= $this->__('You will be redirected to a 3D secure form in a few seconds.');
|
35 |
+
$html.= $form->toHtml();
|
36 |
+
$html.= '<script type="text/javascript">document.getElementById("ThreeDSecureForm").submit();</script>';
|
37 |
+
$html.= '</body></html>';
|
38 |
+
|
39 |
+
// reset the 3DS session values
|
40 |
+
Mage::getSingleton('checkout/session')->setMd(null)
|
41 |
+
->setAcsurl(null)
|
42 |
+
->setPareq(null);
|
43 |
+
|
44 |
+
return $html;
|
45 |
+
}
|
46 |
+
}
|
app/code/local/PayVector/Tpg/Helper/Data.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Helper_Data extends Mage_Core_Helper_Abstract
|
4 |
+
{
|
5 |
+
|
6 |
+
}
|
app/code/local/PayVector/Tpg/Model/Common/GlobalErrors.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Common_GlobalErrors
|
4 |
+
{
|
5 |
+
/*
|
6 |
+
* failure - probably a wrong card details entered in
|
7 |
+
* error - payment gateway communication and hashing related issues
|
8 |
+
*/
|
9 |
+
// failure - occurred in the processing of the final callback from the hosted payment form/transparent redirect
|
10 |
+
const ERROR_182 = "The payment was not successful and checkout was cancelled.\r\nPlease check your credit card details and try again.\r\n";
|
11 |
+
|
12 |
+
const ERROR_183 = "The payment was not successful and checkout was cancelled.<br/>Please check your credit card details and try again.";
|
13 |
+
|
14 |
+
// error - occurred during the partial processing of the callback from the transparent redirect page
|
15 |
+
const ERROR_260 = "ERROR 260: The payment result couldn't be verified.";
|
16 |
+
|
17 |
+
// error - direct integration transaction cannot be completed - problem in the communication with the payment gateway
|
18 |
+
const ERROR_261 = "ERROR 261: Couldn't communicate with payment gateway.";
|
19 |
+
|
20 |
+
// error - direct integration 3D Secure transaction couldn't be processed - problem in the communication with the paymwent gateway
|
21 |
+
const ERROR_431 = "ERROR 431: Couldn't communicate with payment gateway to complete the 3D Secure authentication.";
|
22 |
+
|
23 |
+
// failure - occurred during the processing of the data in the callback from the 3D Secure Authentication page
|
24 |
+
const ERROR_7655 = "3D Secure payment was not successfull and checkout was cancelled.<br/>Please check your credit card details and try again.";
|
25 |
+
|
26 |
+
// failure - server pull result related error: no URL variable present in the payment form to merchant webshop redirection
|
27 |
+
const ERROR_309 ="ERROR 309: Missing parameters.";
|
28 |
+
|
29 |
+
// failure - server pull result related error: OrderID or CrossReference is missing from the URL variable list
|
30 |
+
const ERROR_304 = "ERROR 304: The payment was rejected for a SECURITY reason: the incoming payment data was tampered with.";
|
31 |
+
|
32 |
+
// faulire - server pull result related error: Magento web request to the hosted PaymentFormHandler failed while trying to retrieve the transaction details using the CrossReference
|
33 |
+
const ERROR_329 = "ERROR 329: Error happened while trying to validate the transaction result.";
|
34 |
+
|
35 |
+
// failure - server pull result related error: empty response due to invalid CrossReference
|
36 |
+
const ERROR_381 = "ERROR 381: Invalid transaction details.";
|
37 |
+
}
|
38 |
+
?>
|
app/code/local/PayVector/Tpg/Model/Common/ISOCountries.php
ADDED
@@ -0,0 +1,266 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
include_once ("ThePaymentGateway/TPG_Common.php");
|
4 |
+
|
5 |
+
class ISOCountries
|
6 |
+
{
|
7 |
+
/**
|
8 |
+
* Get the list of ISO Countries
|
9 |
+
*
|
10 |
+
* @return ISOCountryList
|
11 |
+
*/
|
12 |
+
public static function getISOCountryList()
|
13 |
+
{
|
14 |
+
$iclISOCountryList = new ISOCountryList();
|
15 |
+
|
16 |
+
$iclISOCountryList -> add(826, "GB", "GBR", "United Kingdom", 3);
|
17 |
+
$iclISOCountryList -> add(840, "US", "USA", "United States", 2);
|
18 |
+
$iclISOCountryList -> add(36, "AU", "AUS", "Australia", 1);
|
19 |
+
$iclISOCountryList -> add(124, "CA", "CAN", "Canada", 1);
|
20 |
+
$iclISOCountryList -> add(276, "DE", "DEU", "Germany", 1);
|
21 |
+
$iclISOCountryList -> add(250, "FR", "FRA", "France", 1);
|
22 |
+
$iclISOCountryList -> add(533, "AW", "ABW", "Aruba", 0);
|
23 |
+
$iclISOCountryList -> add(4, "AF", "AFG", "Afghanistan", 0);
|
24 |
+
$iclISOCountryList -> add(24, "AO", "AGO", "Angola", 0);
|
25 |
+
$iclISOCountryList -> add(660, "AI", "AIA", "Anguilla", 0);
|
26 |
+
$iclISOCountryList -> add(248, "AX", "ALA", "Åland Islands", 0);
|
27 |
+
$iclISOCountryList -> add(8, "AL", "ALB", "Albania", 0);
|
28 |
+
$iclISOCountryList -> add(20, "AD", "AND", "Andorra", 0);
|
29 |
+
$iclISOCountryList -> add(530, "AN", "ANT", "Netherlands Antilles", 0);
|
30 |
+
$iclISOCountryList -> add(784, "AE", "ARE", "United Arab Emirates", 0);
|
31 |
+
$iclISOCountryList -> add(32, "AR", "ARG", "Argentina", 0);
|
32 |
+
$iclISOCountryList -> add(51, "AM", "ARM", "Armenia", 0);
|
33 |
+
$iclISOCountryList -> add(16, "AS", "ASM", "American Samoa", 0);
|
34 |
+
$iclISOCountryList -> add(10, "AQ", "ATA", "Antarctica", 0);
|
35 |
+
$iclISOCountryList -> add(260, "TF", "ATF", "French Southern Territories", 0);
|
36 |
+
$iclISOCountryList -> add(28, "AG", "ATG", "Antigua and Barbuda", 0);
|
37 |
+
$iclISOCountryList -> add(40, "AT", "AUT", "Austria", 0);
|
38 |
+
$iclISOCountryList -> add(31, "AZ", "AZE", "Azerbaijan", 0);
|
39 |
+
$iclISOCountryList -> add(108, "BI", "BDI", "Burundi", 0);
|
40 |
+
$iclISOCountryList -> add(56, "BE", "BEL", "Belgium", 0);
|
41 |
+
$iclISOCountryList -> add(204, "BJ", "BEN", "Benin", 0);
|
42 |
+
$iclISOCountryList -> add(854, "BF", "BFA", "Burkina Faso", 0);
|
43 |
+
$iclISOCountryList -> add(50, "BD", "BGD", "Bangladesh", 0);
|
44 |
+
$iclISOCountryList -> add(100, "BG", "BGR", "Bulgaria", 0);
|
45 |
+
$iclISOCountryList -> add(48, "BH", "BHR", "Bahrain", 0);
|
46 |
+
$iclISOCountryList -> add(44, "BS", "BHS", "Bahamas", 0);
|
47 |
+
$iclISOCountryList -> add(70, "BA", "BIH", "Bosnia and Herzegovina", 0);
|
48 |
+
$iclISOCountryList -> add(652, "BL", "BLM", "Saint Barthélemy", 0);
|
49 |
+
$iclISOCountryList -> add(112, "BY", "BLR", "Belarus", 0);
|
50 |
+
$iclISOCountryList -> add(84, "BZ", "BLZ", "Belize", 0);
|
51 |
+
$iclISOCountryList -> add(60, "BM", "BMU", "Bermuda", 0);
|
52 |
+
$iclISOCountryList -> add(68, "BO", "BOL", "Bolivia", 0);
|
53 |
+
$iclISOCountryList -> add(76, "BR", "BRA", "Brazil", 0);
|
54 |
+
$iclISOCountryList -> add(52, "BB", "BRB", "Barbados", 0);
|
55 |
+
$iclISOCountryList -> add(96, "BN", "BRN", "Brunei Darussalam", 0);
|
56 |
+
$iclISOCountryList -> add(64, "BT", "BTN", "Bhutan", 0);
|
57 |
+
$iclISOCountryList -> add(74, "BV", "BVT", "Bouvet Island", 0);
|
58 |
+
$iclISOCountryList -> add(72, "BW", "BWA", "Botswana", 0);
|
59 |
+
$iclISOCountryList -> add(140, "CF", "CAF", "Central African Republic", 0);
|
60 |
+
$iclISOCountryList -> add(166, "CC", "CCK", "Cocos (Keeling) Islands", 0);
|
61 |
+
$iclISOCountryList -> add(756, "CH", "CHE", "Switzerland", 0);
|
62 |
+
$iclISOCountryList -> add(152, "CL", "CHL", "Chile", 0);
|
63 |
+
$iclISOCountryList -> add(156, "CN", "CHN", "China", 0);
|
64 |
+
$iclISOCountryList -> add(384, "CI", "CIV", "Côte d'Ivoire", 0);
|
65 |
+
$iclISOCountryList -> add(120, "CM", "CMR", "Cameroon", 0);
|
66 |
+
$iclISOCountryList -> add(180, "CD", "COD", "Congo, the Democratic Republic of the", 0);
|
67 |
+
$iclISOCountryList -> add(178, "CG", "COG", "Congo", 0);
|
68 |
+
$iclISOCountryList -> add(184, "CK", "COK", "Cook Islands", 0);
|
69 |
+
$iclISOCountryList -> add(170, "CO", "COL", "Colombia", 0);
|
70 |
+
$iclISOCountryList -> add(174, "KM", "COM", "Comoros", 0);
|
71 |
+
$iclISOCountryList -> add(132, "CV", "CPV", "Cape Verde", 0);
|
72 |
+
$iclISOCountryList -> add(188, "CR", "CRI", "Costa Rica", 0);
|
73 |
+
$iclISOCountryList -> add(192, "CU", "CUB", "Cuba", 0);
|
74 |
+
$iclISOCountryList -> add(162, "CX", "CXR", "Christmas Island", 0);
|
75 |
+
$iclISOCountryList -> add(136, "KY", "CYM", "Cayman Islands", 0);
|
76 |
+
$iclISOCountryList -> add(196, "CY", "CYP", "Cyprus", 0);
|
77 |
+
$iclISOCountryList -> add(203, "CZ", "CZE", "Czech Republic", 0);
|
78 |
+
$iclISOCountryList -> add(262, "DJ", "DJI", "Djibouti", 0);
|
79 |
+
$iclISOCountryList -> add(212, "DM", "DMA", "Dominica", 0);
|
80 |
+
$iclISOCountryList -> add(208, "DK", "DNK", "Denmark", 0);
|
81 |
+
$iclISOCountryList -> add(214, "DO", "DOM", "Dominican Republic", 0);
|
82 |
+
$iclISOCountryList -> add(12, "DZ", "DZA", "Algeria", 0);
|
83 |
+
$iclISOCountryList -> add(218, "EC", "ECU", "Ecuador", 0);
|
84 |
+
$iclISOCountryList -> add(818, "EG", "EGY", "Egypt", 0);
|
85 |
+
$iclISOCountryList -> add(232, "ER", "ERI", "Eritrea", 0);
|
86 |
+
$iclISOCountryList -> add(732, "EH", "ESH", "Western Sahara", 0);
|
87 |
+
$iclISOCountryList -> add(724, "ES", "ESP", "Spain", 0);
|
88 |
+
$iclISOCountryList -> add(233, "EE", "EST", "Estonia", 0);
|
89 |
+
$iclISOCountryList -> add(231, "ET", "ETH", "Ethiopia", 0);
|
90 |
+
$iclISOCountryList -> add(246, "FI", "FIN", "Finland", 0);
|
91 |
+
$iclISOCountryList -> add(242, "FJ", "FJI", "Fiji", 0);
|
92 |
+
$iclISOCountryList -> add(238, "FK", "FLK", "Falkland Islands (Malvinas)", 0);
|
93 |
+
$iclISOCountryList -> add(234, "FO", "FRO", "Faroe Islands", 0);
|
94 |
+
$iclISOCountryList -> add(583, "FM", "FSM", "Micronesia, Federated States of", 0);
|
95 |
+
$iclISOCountryList -> add(266, "GA", "GAB", "Gabon", 0);
|
96 |
+
$iclISOCountryList -> add(268, "GE", "GEO", "Georgia", 0);
|
97 |
+
$iclISOCountryList -> add(831, "GG", "GGY", "Guernsey", 0);
|
98 |
+
$iclISOCountryList -> add(288, "GH", "GHA", "Ghana", 0);
|
99 |
+
$iclISOCountryList -> add(292, "GI", "GIB", "Gibraltar", 0);
|
100 |
+
$iclISOCountryList -> add(324, "GN", "GIN", "Guinea", 0);
|
101 |
+
$iclISOCountryList -> add(312, "GP", "GLP", "Guadeloupe", 0);
|
102 |
+
$iclISOCountryList -> add(270, "GM", "GMB", "Gambia", 0);
|
103 |
+
$iclISOCountryList -> add(624, "GW", "GNB", "Guinea-Bissau", 0);
|
104 |
+
$iclISOCountryList -> add(226, "GQ", "GNQ", "Equatorial Guinea", 0);
|
105 |
+
$iclISOCountryList -> add(300, "GR", "GRC", "Greece", 0);
|
106 |
+
$iclISOCountryList -> add(308, "GD", "GRD", "Grenada", 0);
|
107 |
+
$iclISOCountryList -> add(304, "GL", "GRL", "Greenland", 0);
|
108 |
+
$iclISOCountryList -> add(320, "GT", "GTM", "Guatemala", 0);
|
109 |
+
$iclISOCountryList -> add(254, "GF", "GUF", "French Guiana", 0);
|
110 |
+
$iclISOCountryList -> add(316, "GU", "GUM", "Guam", 0);
|
111 |
+
$iclISOCountryList -> add(328, "GY", "GUY", "Guyana", 0);
|
112 |
+
$iclISOCountryList -> add(344, "HK", "HKG", "Hong Kong", 0);
|
113 |
+
$iclISOCountryList -> add(334, "HM", "HMD", "Heard Island and McDonald Islands", 0);
|
114 |
+
$iclISOCountryList -> add(340, "HN", "HND", "Honduras", 0);
|
115 |
+
$iclISOCountryList -> add(191, "HR", "HRV", "Croatia", 0);
|
116 |
+
$iclISOCountryList -> add(332, "HT", "HTI", "Haiti", 0);
|
117 |
+
$iclISOCountryList -> add(348, "HU", "HUN", "Hungary", 0);
|
118 |
+
$iclISOCountryList -> add(360, "ID", "IDN", "Indonesia", 0);
|
119 |
+
$iclISOCountryList -> add(833, "IM", "IMN", "Isle of Man", 0);
|
120 |
+
$iclISOCountryList -> add(356, "IN", "IND", "India", 0);
|
121 |
+
$iclISOCountryList -> add(86, "IO", "IOT", "British Indian Ocean Territory", 0);
|
122 |
+
$iclISOCountryList -> add(372, "IE", "IRL", "Ireland", 0);
|
123 |
+
$iclISOCountryList -> add(364, "IR", "IRN", "Iran, Islamic Republic of", 0);
|
124 |
+
$iclISOCountryList -> add(368, "IQ", "IRQ", "Iraq", 0);
|
125 |
+
$iclISOCountryList -> add(352, "IS", "ISL", "Iceland", 0);
|
126 |
+
$iclISOCountryList -> add(376, "IL", "ISR", "Israel", 0);
|
127 |
+
$iclISOCountryList -> add(380, "IT", "ITA", "Italy", 0);
|
128 |
+
$iclISOCountryList -> add(388, "JM", "JAM", "Jamaica", 0);
|
129 |
+
$iclISOCountryList -> add(832, "JE", "JEY", "Jersey", 0);
|
130 |
+
$iclISOCountryList -> add(400, "JO", "JOR", "Jordan", 0);
|
131 |
+
$iclISOCountryList -> add(392, "JP", "JPN", "Japan", 0);
|
132 |
+
$iclISOCountryList -> add(398, "KZ", "KAZ", "Kazakhstan", 0);
|
133 |
+
$iclISOCountryList -> add(404, "KE", "KEN", "Kenya", 0);
|
134 |
+
$iclISOCountryList -> add(417, "KG", "KGZ", "Kyrgyzstan", 0);
|
135 |
+
$iclISOCountryList -> add(116, "KH", "KHM", "Cambodia", 0);
|
136 |
+
$iclISOCountryList -> add(296, "KI", "KIR", "Kiribati", 0);
|
137 |
+
$iclISOCountryList -> add(659, "KN", "KNA", "Saint Kitts and Nevis", 0);
|
138 |
+
$iclISOCountryList -> add(410, "KR", "KOR", "Korea, Republic of", 0);
|
139 |
+
$iclISOCountryList -> add(414, "KW", "KWT", "Kuwait", 0);
|
140 |
+
$iclISOCountryList -> add(418, "LA", "LAO", "Lao People's Democratic Republic", 0);
|
141 |
+
$iclISOCountryList -> add(422, "LB", "LBN", "Lebanon", 0);
|
142 |
+
$iclISOCountryList -> add(430, "LR", "LBR", "Liberia", 0);
|
143 |
+
$iclISOCountryList -> add(434, "LY", "LBY", "Libyan Arab Jamahiriya", 0);
|
144 |
+
$iclISOCountryList -> add(662, "LC", "LCA", "Saint Lucia", 0);
|
145 |
+
$iclISOCountryList -> add(438, "LI", "LIE", "Liechtenstein", 0);
|
146 |
+
$iclISOCountryList -> add(144, "LK", "LKA", "Sri Lanka", 0);
|
147 |
+
$iclISOCountryList -> add(426, "LS", "LSO", "Lesotho", 0);
|
148 |
+
$iclISOCountryList -> add(440, "LT", "LTU", "Lithuania", 0);
|
149 |
+
$iclISOCountryList -> add(442, "LU", "LUX", "Luxembourg", 0);
|
150 |
+
$iclISOCountryList -> add(428, "LV", "LVA", "Latvia", 0);
|
151 |
+
$iclISOCountryList -> add(446, "MO", "MAC", "Macao", 0);
|
152 |
+
$iclISOCountryList -> add(663, "MF", "MAF", "Saint Martin (French part)", 0);
|
153 |
+
$iclISOCountryList -> add(504, "MA", "MAR", "Morocco", 0);
|
154 |
+
$iclISOCountryList -> add(492, "MC", "MCO", "Monaco", 0);
|
155 |
+
$iclISOCountryList -> add(498, "MD", "MDA", "Moldova", 0);
|
156 |
+
$iclISOCountryList -> add(450, "MG", "MDG", "Madagascar", 0);
|
157 |
+
$iclISOCountryList -> add(462, "MV", "MDV", "Maldives", 0);
|
158 |
+
$iclISOCountryList -> add(484, "MX", "MEX", "Mexico", 0);
|
159 |
+
$iclISOCountryList -> add(584, "MH", "MHL", "Marshall Islands", 0);
|
160 |
+
$iclISOCountryList -> add(807, "MK", "MKD", "Macedonia, the former Yugoslav Republic of", 0);
|
161 |
+
$iclISOCountryList -> add(466, "ML", "MLI", "Mali", 0);
|
162 |
+
$iclISOCountryList -> add(470, "MT", "MLT", "Malta", 0);
|
163 |
+
$iclISOCountryList -> add(104, "MM", "MMR", "Myanmar", 0);
|
164 |
+
$iclISOCountryList -> add(499, "ME", "MNE", "Montenegro", 0);
|
165 |
+
$iclISOCountryList -> add(496, "MN", "MNG", "Mongolia", 0);
|
166 |
+
$iclISOCountryList -> add(580, "MP", "MNP", "Northern Mariana Islands", 0);
|
167 |
+
$iclISOCountryList -> add(508, "MZ", "MOZ", "Mozambique", 0);
|
168 |
+
$iclISOCountryList -> add(478, "MR", "MRT", "Mauritania", 0);
|
169 |
+
$iclISOCountryList -> add(500, "MS", "MSR", "Montserrat", 0);
|
170 |
+
$iclISOCountryList -> add(474, "MQ", "MTQ", "Martinique", 0);
|
171 |
+
$iclISOCountryList -> add(480, "MU", "MUS", "Mauritius", 0);
|
172 |
+
$iclISOCountryList -> add(454, "MW", "MWI", "Malawi", 0);
|
173 |
+
$iclISOCountryList -> add(458, "MY", "MYS", "Malaysia", 0);
|
174 |
+
$iclISOCountryList -> add(175, "YT", "MYT", "Mayotte", 0);
|
175 |
+
$iclISOCountryList -> add(516, "NA", "NAM", "Namibia", 0);
|
176 |
+
$iclISOCountryList -> add(540, "NC", "NCL", "New Caledonia", 0);
|
177 |
+
$iclISOCountryList -> add(562, "NE", "NER", "Niger", 0);
|
178 |
+
$iclISOCountryList -> add(574, "NF", "NFK", "Norfolk Island", 0);
|
179 |
+
$iclISOCountryList -> add(566, "NG", "NGA", "Nigeria", 0);
|
180 |
+
$iclISOCountryList -> add(558, "NI", "NIC", "Nicaragua", 0);
|
181 |
+
$iclISOCountryList -> add(570, "NU", "NIU", "Niue", 0);
|
182 |
+
$iclISOCountryList -> add(528, "NL", "NLD", "Netherlands", 0);
|
183 |
+
$iclISOCountryList -> add(578, "NO", "NOR", "Norway", 0);
|
184 |
+
$iclISOCountryList -> add(524, "NP", "NPL", "Nepal", 0);
|
185 |
+
$iclISOCountryList -> add(520, "NR", "NRU", "Nauru", 0);
|
186 |
+
$iclISOCountryList -> add(554, "NZ", "NZL", "New Zealand", 0);
|
187 |
+
$iclISOCountryList -> add(512, "OM", "OMN", "Oman", 0);
|
188 |
+
$iclISOCountryList -> add(586, "PK", "PAK", "Pakistan", 0);
|
189 |
+
$iclISOCountryList -> add(591, "PA", "PAN", "Panama", 0);
|
190 |
+
$iclISOCountryList -> add(612, "PN", "PCN", "Pitcairn", 0);
|
191 |
+
$iclISOCountryList -> add(604, "PE", "PER", "Peru", 0);
|
192 |
+
$iclISOCountryList -> add(608, "PH", "PHL", "Philippines", 0);
|
193 |
+
$iclISOCountryList -> add(585, "PW", "PLW", "Palau", 0);
|
194 |
+
$iclISOCountryList -> add(598, "PG", "PNG", "Papua New Guinea", 0);
|
195 |
+
$iclISOCountryList -> add(616, "PL", "POL", "Poland", 0);
|
196 |
+
$iclISOCountryList -> add(630, "PR", "PRI", "Puerto Rico", 0);
|
197 |
+
$iclISOCountryList -> add(408, "KP", "PRK", "Korea, Democratic People's Republic of", 0);
|
198 |
+
$iclISOCountryList -> add(620, "PT", "PRT", "Portugal", 0);
|
199 |
+
$iclISOCountryList -> add(600, "PY", "PRY", "Paraguay", 0);
|
200 |
+
$iclISOCountryList -> add(275, "PS", "PSE", "Palestinian Territory, Occupied", 0);
|
201 |
+
$iclISOCountryList -> add(258, "PF", "PYF", "French Polynesia", 0);
|
202 |
+
$iclISOCountryList -> add(634, "QA", "QAT", "Qatar", 0);
|
203 |
+
$iclISOCountryList -> add(638, "RE", "REU", "Réunion", 0);
|
204 |
+
$iclISOCountryList -> add(642, "RO", "ROU", "Romania", 0);
|
205 |
+
$iclISOCountryList -> add(643, "RU", "RUS", "Russian Federation", 0);
|
206 |
+
$iclISOCountryList -> add(646, "RW", "RWA", "Rwanda", 0);
|
207 |
+
$iclISOCountryList -> add(682, "SA", "SAU", "Saudi Arabia", 0);
|
208 |
+
$iclISOCountryList -> add(736, "SD", "SDN", "Sudan", 0);
|
209 |
+
$iclISOCountryList -> add(686, "SN", "SEN", "Senegal", 0);
|
210 |
+
$iclISOCountryList -> add(702, "SG", "SGP", "Singapore", 0);
|
211 |
+
$iclISOCountryList -> add(239, "GS", "SGS", "South Georgia and the South Sandwich Islands", 0);
|
212 |
+
$iclISOCountryList -> add(654, "SH", "SHN", "Saint Helena", 0);
|
213 |
+
$iclISOCountryList -> add(744, "SJ", "SJM", "Svalbard and Jan Mayen", 0);
|
214 |
+
$iclISOCountryList -> add(90, "SB", "SLB", "Solomon Islands", 0);
|
215 |
+
$iclISOCountryList -> add(694, "SL", "SLE", "Sierra Leone", 0);
|
216 |
+
$iclISOCountryList -> add(222, "SV", "SLV", "El Salvador", 0);
|
217 |
+
$iclISOCountryList -> add(674, "SM", "SMR", "San Marino", 0);
|
218 |
+
$iclISOCountryList -> add(706, "SO", "SOM", "Somalia", 0);
|
219 |
+
$iclISOCountryList -> add(666, "PM", "SPM", "Saint Pierre and Miquelon", 0);
|
220 |
+
$iclISOCountryList -> add(688, "RS", "SRB", "Serbia", 0);
|
221 |
+
$iclISOCountryList -> add(678, "ST", "STP", "Sao Tome and Principe", 0);
|
222 |
+
$iclISOCountryList -> add(740, "SR", "SUR", "Suriname", 0);
|
223 |
+
$iclISOCountryList -> add(703, "SK", "SVK", "Slovakia", 0);
|
224 |
+
$iclISOCountryList -> add(705, "SI", "SVN", "Slovenia", 0);
|
225 |
+
$iclISOCountryList -> add(752, "SE", "SWE", "Sweden", 0);
|
226 |
+
$iclISOCountryList -> add(748, "SZ", "SWZ", "Swaziland", 0);
|
227 |
+
$iclISOCountryList -> add(690, "SC", "SYC", "Seychelles", 0);
|
228 |
+
$iclISOCountryList -> add(760, "SY", "SYR", "Syrian Arab Republic", 0);
|
229 |
+
$iclISOCountryList -> add(796, "TC", "TCA", "Turks and Caicos Islands", 0);
|
230 |
+
$iclISOCountryList -> add(148, "TD", "TCD", "Chad", 0);
|
231 |
+
$iclISOCountryList -> add(768, "TG", "TGO", "Togo", 0);
|
232 |
+
$iclISOCountryList -> add(764, "TH", "THA", "Thailand", 0);
|
233 |
+
$iclISOCountryList -> add(762, "TJ", "TJK", "Tajikistan", 0);
|
234 |
+
$iclISOCountryList -> add(772, "TK", "TKL", "Tokelau", 0);
|
235 |
+
$iclISOCountryList -> add(795, "TM", "TKM", "Turkmenistan", 0);
|
236 |
+
$iclISOCountryList -> add(626, "TL", "TLS", "Timor-Leste", 0);
|
237 |
+
$iclISOCountryList -> add(776, "TO", "TON", "Tonga", 0);
|
238 |
+
$iclISOCountryList -> add(780, "TT", "TTO", "Trinidad and Tobago", 0);
|
239 |
+
$iclISOCountryList -> add(788, "TN", "TUN", "Tunisia", 0);
|
240 |
+
$iclISOCountryList -> add(792, "TR", "TUR", "Turkey", 0);
|
241 |
+
$iclISOCountryList -> add(798, "TV", "TUV", "Tuvalu", 0);
|
242 |
+
$iclISOCountryList -> add(158, "TW", "TWN", "Taiwan, Province of China", 0);
|
243 |
+
$iclISOCountryList -> add(834, "TZ", "TZA", "Tanzania, United Republic of", 0);
|
244 |
+
$iclISOCountryList -> add(800, "UG", "UGA", "Uganda", 0);
|
245 |
+
$iclISOCountryList -> add(804, "UA", "UKR", "Ukraine", 0);
|
246 |
+
$iclISOCountryList -> add(581, "UM", "UMI", "United States Minor Outlying Islands", 0);
|
247 |
+
$iclISOCountryList -> add(858, "UY", "URY", "Uruguay", 0);
|
248 |
+
$iclISOCountryList -> add(860, "UZ", "UZB", "Uzbekistan", 0);
|
249 |
+
$iclISOCountryList -> add(336, "VA", "VAT", "Holy See (Vatican City State)", 0);
|
250 |
+
$iclISOCountryList -> add(670, "VC", "VCT", "Saint Vincent and the Grenadines", 0);
|
251 |
+
$iclISOCountryList -> add(862, "VE", "VEN", "Venezuela", 0);
|
252 |
+
$iclISOCountryList -> add(92, "VG", "VGB", "Virgin Islands, British", 0);
|
253 |
+
$iclISOCountryList -> add(850, "VI", "VIR", "Virgin Islands, U.S.", 0);
|
254 |
+
$iclISOCountryList -> add(704, "VN", "VNM", "Viet Nam", 0);
|
255 |
+
$iclISOCountryList -> add(548, "VU", "VUT", "Vanuatu", 0);
|
256 |
+
$iclISOCountryList -> add(876, "WF", "WLF", "Wallis And Futuna", 0);
|
257 |
+
$iclISOCountryList -> add(882, "WS", "WSM", "Samoa", 0);
|
258 |
+
$iclISOCountryList -> add(887, "YE", "YEM", "Yemen", 0);
|
259 |
+
$iclISOCountryList -> add(710, "ZA", "ZAF", "South Africa", 0);
|
260 |
+
$iclISOCountryList -> add(894, "ZM", "ZMB", "Zambia", 0);
|
261 |
+
$iclISOCountryList -> add(716, "ZW", "ZWE", "Zimbabwe", 0);
|
262 |
+
|
263 |
+
return $iclISOCountryList;
|
264 |
+
}
|
265 |
+
|
266 |
+
}
|
app/code/local/PayVector/Tpg/Model/Common/ISOCurrencies.php
ADDED
@@ -0,0 +1,199 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
include_once ("ThePaymentGateway/TPG_Common.php");
|
4 |
+
|
5 |
+
class ISOCurrencies
|
6 |
+
{
|
7 |
+
/**
|
8 |
+
* Get the list of ISO Currencies
|
9 |
+
*
|
10 |
+
* @return ISOCurrencyList
|
11 |
+
*/
|
12 |
+
public static function getISOCurrencyList()
|
13 |
+
{
|
14 |
+
$iclISOCurrencyList = new ISOCurrencyList();
|
15 |
+
|
16 |
+
$iclISOCurrencyList->add(634, "Qatari Rial","QAR", 2);
|
17 |
+
$iclISOCurrencyList->add(566, "Naira", "NGN", 2);
|
18 |
+
$iclISOCurrencyList->add(678, "Dobra", "STD", 2);
|
19 |
+
$iclISOCurrencyList->add(943, "Metical", "MZN", 2);
|
20 |
+
$iclISOCurrencyList->add(826, "Pound Sterling", "GBP", 2);
|
21 |
+
$iclISOCurrencyList->add(654, "Saint Helena Pound", "SHP", 2);
|
22 |
+
$iclISOCurrencyList->add(704, "Vietnamese ??ng", "VND", 2);
|
23 |
+
$iclISOCurrencyList->add(952, "CFA Franc BCEAO", "XOF", 0);
|
24 |
+
$iclISOCurrencyList->add(356, "Indian Rupee", "INR", 2);
|
25 |
+
$iclISOCurrencyList->add(807, "Denar", "MKD", 2);
|
26 |
+
$iclISOCurrencyList->add(959, "Gold (one Troy ounce)", "XAU", 0);
|
27 |
+
$iclISOCurrencyList->add(410, "South Korean Won", "KRW", 0);
|
28 |
+
$iclISOCurrencyList->add(946, "Romanian New Leu", "RON", 2);
|
29 |
+
$iclISOCurrencyList->add(949, "New Turkish Lira", "TRY", 2);
|
30 |
+
$iclISOCurrencyList->add(532, "Netherlands Antillian Guilder", "ANG", 2);
|
31 |
+
$iclISOCurrencyList->add(788, "Tunisian Dinar", "TND", 3);
|
32 |
+
$iclISOCurrencyList->add(646, "Rwanda Franc", "RWF", 0);
|
33 |
+
$iclISOCurrencyList->add(504, "Moroccan Dirham", "MAD", 2);
|
34 |
+
$iclISOCurrencyList->add(174, "Comoro Franc", "KMF", 0);
|
35 |
+
$iclISOCurrencyList->add(484, "Mexican Peso", "MXN", 2);
|
36 |
+
$iclISOCurrencyList->add(478, "Ouguiya", "MRO", 2);
|
37 |
+
$iclISOCurrencyList->add(233, "Kroon", "EEK", 2);
|
38 |
+
$iclISOCurrencyList->add(400, "Jordanian Dinar", "JOD", 3);
|
39 |
+
$iclISOCurrencyList->add(292, "Gibraltar pound", "GIP", 2);
|
40 |
+
$iclISOCurrencyList->add(690, "Seychelles Rupee", "SCR", 2);
|
41 |
+
$iclISOCurrencyList->add(422, "Lebanese Pound", "LBP", 2);
|
42 |
+
$iclISOCurrencyList->add(232, "Nakfa", "ERN", 2);
|
43 |
+
$iclISOCurrencyList->add(496, "Tugrik", "MNT", 2);
|
44 |
+
$iclISOCurrencyList->add(328, "Guyana Dollar", "GYD", 2);
|
45 |
+
$iclISOCurrencyList->add(970, "Unidad de Valor Real", "COU", 2);
|
46 |
+
$iclISOCurrencyList->add(974, "Belarusian Ruble", "BYR", 0);
|
47 |
+
$iclISOCurrencyList->add(608, "Philippine Peso", "PHP", 2);
|
48 |
+
$iclISOCurrencyList->add(598, "Kina", "PGK", 2);
|
49 |
+
$iclISOCurrencyList->add(951, "East Caribbean Dollar", "XCD", 2);
|
50 |
+
$iclISOCurrencyList->add(52, "Barbados Dollar", "BBD", 2);
|
51 |
+
$iclISOCurrencyList->add(944, "Azerbaijanian Manat", "AZN", 2);
|
52 |
+
$iclISOCurrencyList->add(434, "Libyan Dinar", "LYD", 3);
|
53 |
+
$iclISOCurrencyList->add(706, "Somali Shilling", "SOS", 2);
|
54 |
+
$iclISOCurrencyList->add(950, "CFA Franc BEAC", "XAF", 0);
|
55 |
+
$iclISOCurrencyList->add(840, "US Dollar", "USD", 2);
|
56 |
+
$iclISOCurrencyList->add(68, "Boliviano", "BOB", 2);
|
57 |
+
$iclISOCurrencyList->add(214, "Dominican Peso", "DOP", 2);
|
58 |
+
$iclISOCurrencyList->add(818, "Egyptian Pound", "EGP", 2);
|
59 |
+
$iclISOCurrencyList->add(170, "Colombian Peso", "COP", 2);
|
60 |
+
$iclISOCurrencyList->add(986, "Brazilian Real", "BRL", 2);
|
61 |
+
$iclISOCurrencyList->add(961, "Silver (one Troy ounce)", "XAG", 0);
|
62 |
+
$iclISOCurrencyList->add(973, "Kwanza", "AOA", 2);
|
63 |
+
$iclISOCurrencyList->add(962, "Platinum (one Troy ounce)", "XPT", 0);
|
64 |
+
$iclISOCurrencyList->add(414, "Kuwaiti Dinar", "KWD", 3);
|
65 |
+
$iclISOCurrencyList->add(604, "Nuevo Sol", "PEN", 2);
|
66 |
+
$iclISOCurrencyList->add(702, "Singapore Dollar", "SGD", 2);
|
67 |
+
$iclISOCurrencyList->add(862, "Venezuelan bol�var", "VEB", 2);
|
68 |
+
$iclISOCurrencyList->add(953, "CFP franc", "XPF", 0);
|
69 |
+
$iclISOCurrencyList->add(558, "Cordoba Oro", "NIO", 2);
|
70 |
+
$iclISOCurrencyList->add(348, "Forint", "HUF", 2);
|
71 |
+
$iclISOCurrencyList->add(948, "WIR Franc ", "CHW", 2);
|
72 |
+
$iclISOCurrencyList->add(116, "Riel", "KHR", 2);
|
73 |
+
$iclISOCurrencyList->add(956, "European Monetary Unit", "XBB", 0);
|
74 |
+
$iclISOCurrencyList->add(156, "Yuan Renminbi", "CNY", 2);
|
75 |
+
$iclISOCurrencyList->add(834, "Tanzanian Shilling", "TZS", 2);
|
76 |
+
$iclISOCurrencyList->add(997, "", "USN", 2);
|
77 |
+
$iclISOCurrencyList->add(981, "Lari", "GEL", 2);
|
78 |
+
$iclISOCurrencyList->add(242, "Fiji Dollar", "FJD", 2);
|
79 |
+
$iclISOCurrencyList->add(941, "Serbian Dinar", "RSD", 2);
|
80 |
+
$iclISOCurrencyList->add(104, "Kyat", "MMK", 2);
|
81 |
+
$iclISOCurrencyList->add(84, " Belize Dollar", "BZD", 2);
|
82 |
+
$iclISOCurrencyList->add(710, "South African Rand", "ZAR", 2);
|
83 |
+
$iclISOCurrencyList->add(760, "Syrian Pound", "SYP", 2);
|
84 |
+
$iclISOCurrencyList->add(512, "Rial Omani", "OMR", 3);
|
85 |
+
$iclISOCurrencyList->add(324, "Guinea Franc", "GNF", 0);
|
86 |
+
$iclISOCurrencyList->add(196, "Cyprus Pound", "CYP", 2);
|
87 |
+
$iclISOCurrencyList->add(960, "Special Drawing Rights", "XDR", 0);
|
88 |
+
$iclISOCurrencyList->add(716, "Zimbabwe Dollar", "ZWD", 2);
|
89 |
+
$iclISOCurrencyList->add(972, "Somoni", "TJS", 2);
|
90 |
+
$iclISOCurrencyList->add(462, "Rufiyaa", "MVR", 2);
|
91 |
+
$iclISOCurrencyList->add(979, "Mexican Unidad de Inversion (UDI)", "MXV", 2);
|
92 |
+
$iclISOCurrencyList->add(860, "Uzbekistan Som", "UZS", 2);
|
93 |
+
$iclISOCurrencyList->add(12, "Algerian Dinar", "DZD", 2);
|
94 |
+
$iclISOCurrencyList->add(332, "Haiti Gourde", "HTG", 2);
|
95 |
+
$iclISOCurrencyList->add(963, "Code reserved for testing purposes", "XTS", 0);
|
96 |
+
$iclISOCurrencyList->add(32, "Argentine Peso", "ARS", 2);
|
97 |
+
$iclISOCurrencyList->add(642, "Romanian Leu", "ROL", 2);
|
98 |
+
$iclISOCurrencyList->add(984, "Bolivian Mvdol (Funds code)", "BOV", 2);
|
99 |
+
$iclISOCurrencyList->add(440, "Lithuanian Litas", "LTL", 2);
|
100 |
+
$iclISOCurrencyList->add(480, "Mauritius Rupee", "MUR", 2);
|
101 |
+
$iclISOCurrencyList->add(426, "Loti", "LSL", 2);
|
102 |
+
$iclISOCurrencyList->add(262, "Djibouti Franc", "DJF", 0);
|
103 |
+
$iclISOCurrencyList->add(886, "Yemeni Rial", "YER", 2);
|
104 |
+
$iclISOCurrencyList->add(748, "Lilangeni", "SZL", 2);
|
105 |
+
$iclISOCurrencyList->add(192, "Cuban Peso", "CUP", 2);
|
106 |
+
$iclISOCurrencyList->add(548, "Vatu", "VUV", 0);
|
107 |
+
$iclISOCurrencyList->add(360, "Rupiah", "IDR", 2);
|
108 |
+
$iclISOCurrencyList->add(51, "Armenian Dram", "AMD", 2);
|
109 |
+
$iclISOCurrencyList->add(894, "Kwacha", "ZMK", 2);
|
110 |
+
$iclISOCurrencyList->add(90, "Solomon Islands Dollar", "SBD", 2);
|
111 |
+
$iclISOCurrencyList->add(132, "Cape Verde Escudo", "CVE", 2);
|
112 |
+
$iclISOCurrencyList->add(999, "No currency", "XXX", 0);
|
113 |
+
$iclISOCurrencyList->add(524, "Nepalese Rupee", "NPR", 2);
|
114 |
+
$iclISOCurrencyList->add(203, "Czech Koruna", "CZK", 2);
|
115 |
+
$iclISOCurrencyList->add(44, "Bahamian Dollar", "BSD", 2);
|
116 |
+
$iclISOCurrencyList->add(96, "Brunei Dollar", "BND", 2);
|
117 |
+
$iclISOCurrencyList->add(50, "Bangladeshi Taka", "BDT", 2);
|
118 |
+
$iclISOCurrencyList->add(404, "Kenyan Shilling", "KES", 2);
|
119 |
+
$iclISOCurrencyList->add(947, "WIR Euro ", "CHE", 2);
|
120 |
+
$iclISOCurrencyList->add(964, "Palladium (one Troy ounce)", "XPD", 0);
|
121 |
+
$iclISOCurrencyList->add(398, "Tenge", "KZT", 2);
|
122 |
+
$iclISOCurrencyList->add(352, "Iceland Krona", "ISK", 2);
|
123 |
+
$iclISOCurrencyList->add(64, "Ngultrum", "BTN", 2);
|
124 |
+
$iclISOCurrencyList->add(533, "Aruban Guilder", "AWG", 2);
|
125 |
+
$iclISOCurrencyList->add(230, "Ethiopian Birr", "ETB", 2);
|
126 |
+
$iclISOCurrencyList->add(800, "Uganda Shilling", "UGX", 2);
|
127 |
+
$iclISOCurrencyList->add(968, "Surinam Dollar", "SRD", 2);
|
128 |
+
$iclISOCurrencyList->add(882, "Samoan Tala", "WST", 2);
|
129 |
+
$iclISOCurrencyList->add(454, "Kwacha", "MWK", 2);
|
130 |
+
$iclISOCurrencyList->add(985, "Zloty", "PLN", 2);
|
131 |
+
$iclISOCurrencyList->add(124, "Canadian Dollar", "CAD", 2);
|
132 |
+
$iclISOCurrencyList->add(776, "Pa'anga", "TOP", 2);
|
133 |
+
$iclISOCurrencyList->add(208, "Danish Krone", "DKK", 2);
|
134 |
+
$iclISOCurrencyList->add(108, "Burundian Franc", "BIF", 0);
|
135 |
+
$iclISOCurrencyList->add(764, "Baht", "THB", 2);
|
136 |
+
$iclISOCurrencyList->add(458, "Malaysian Ringgit", "MYR", 2);
|
137 |
+
$iclISOCurrencyList->add(364, "Iranian Rial", "IRR", 2);
|
138 |
+
$iclISOCurrencyList->add(600, "Guarani", "PYG", 0);
|
139 |
+
$iclISOCurrencyList->add(977, "Convertible Marks", "BAM", 2);
|
140 |
+
$iclISOCurrencyList->add(446, "Pataca", "MOP", 2);
|
141 |
+
$iclISOCurrencyList->add(780, "Trinidad and Tobago Dollar", "TTD", 2);
|
142 |
+
$iclISOCurrencyList->add(703, "Slovak Koruna", "SKK", 2);
|
143 |
+
$iclISOCurrencyList->add(958, "European Unit of Account 17 (E.U.A.-17)", "XBD", 0);
|
144 |
+
$iclISOCurrencyList->add(430, "Liberian Dollar", "LRD", 2);
|
145 |
+
$iclISOCurrencyList->add(191, "Croatian Kuna", "HRK", 2);
|
146 |
+
$iclISOCurrencyList->add(694, "Leone", "SLL", 2);
|
147 |
+
$iclISOCurrencyList->add(756, "Swiss Franc", "CHF", 2);
|
148 |
+
$iclISOCurrencyList->add(969, "Malagasy Ariary", "MGA", 0);
|
149 |
+
$iclISOCurrencyList->add(270, "Dalasi", "GMD", 2);
|
150 |
+
$iclISOCurrencyList->add(418, "Kip", "LAK", 2);
|
151 |
+
$iclISOCurrencyList->add(516, "Namibian Dollar", "NAD", 2);
|
152 |
+
$iclISOCurrencyList->add(392, "Japanese yen", "JPY", 0);
|
153 |
+
$iclISOCurrencyList->add(320, "Quetzal", "GTQ", 2);
|
154 |
+
$iclISOCurrencyList->add(554, "New Zealand Dollar", "NZD", 2);
|
155 |
+
$iclISOCurrencyList->add(578, "Norwegian Krone", "NOK", 2);
|
156 |
+
$iclISOCurrencyList->add(376, "New Israeli Shekel", "ILS", 2);
|
157 |
+
$iclISOCurrencyList->add(957, "European Unit of Account 9 (E.U.A.-9)", "XBC", 0);
|
158 |
+
$iclISOCurrencyList->add(498, "Moldovan Leu", "MDL", 2);
|
159 |
+
$iclISOCurrencyList->add(998, "", "USS", 2);
|
160 |
+
$iclISOCurrencyList->add(955, "European Composite Unit (EURCO)", "XBA", 0);
|
161 |
+
$iclISOCurrencyList->add(344, "Hong Kong Dollar", "HKD", 2);
|
162 |
+
$iclISOCurrencyList->add(417, "Som", "KGS", 2);
|
163 |
+
$iclISOCurrencyList->add(858, "Peso Uruguayo", "UYU", 2);
|
164 |
+
$iclISOCurrencyList->add(60, "Bermudian Dollar ", "BMD", 2);
|
165 |
+
$iclISOCurrencyList->add(682, "Saudi Riyal", "SAR", 2);
|
166 |
+
$iclISOCurrencyList->add(643, "Russian Ruble", "RUB", 2);
|
167 |
+
$iclISOCurrencyList->add(470, "Maltese Lira", "MTL", 2);
|
168 |
+
$iclISOCurrencyList->add(340, "Lempira", "HNL", 2);
|
169 |
+
$iclISOCurrencyList->add(72, "Pula", "BWP", 2);
|
170 |
+
$iclISOCurrencyList->add(368, "Iraqi Dinar", "IQD", 3);
|
171 |
+
$iclISOCurrencyList->add(188, "Costa Rican Colon", "CRC", 2);
|
172 |
+
$iclISOCurrencyList->add(144, "Sri Lanka Rupee", "LKR", 2);
|
173 |
+
$iclISOCurrencyList->add(752, "Swedish Krona", "SEK", 2);
|
174 |
+
$iclISOCurrencyList->add(136, "Cayman Islands Dollar", "KYD", 2);
|
175 |
+
$iclISOCurrencyList->add(8, "Lek", "ALL", 2);
|
176 |
+
$iclISOCurrencyList->add(48, "Bahraini Dinar", "BHD", 3);
|
177 |
+
$iclISOCurrencyList->add(795, "Manat", "TMM", 2);
|
178 |
+
$iclISOCurrencyList->add(938, "Sudanese Pound", "SDG", 2);
|
179 |
+
$iclISOCurrencyList->add(590, "Balboa", "PAB", 2);
|
180 |
+
$iclISOCurrencyList->add(152, "Chilean Peso", "CLP", 0);
|
181 |
+
$iclISOCurrencyList->add(980, "Hryvnia", "UAH", 2);
|
182 |
+
$iclISOCurrencyList->add(428, "Latvian Lats", "LVL", 2);
|
183 |
+
$iclISOCurrencyList->add(288, "Cedi", "GHS", 2);
|
184 |
+
$iclISOCurrencyList->add(978, "Euro", "EUR", 2);
|
185 |
+
$iclISOCurrencyList->add(976, "Franc Congolais", "CDF", 2);
|
186 |
+
$iclISOCurrencyList->add(586, "Pakistan Rupee", "PKR", 2);
|
187 |
+
$iclISOCurrencyList->add(408, "North Korean Won", "KPW", 2);
|
188 |
+
$iclISOCurrencyList->add(388, "Jamaican Dollar", "JMD", 2);
|
189 |
+
$iclISOCurrencyList->add(990, "Unidades de formento", "CLF", 0);
|
190 |
+
$iclISOCurrencyList->add(971, "Afghani", "AFN", 2);
|
191 |
+
$iclISOCurrencyList->add(975, "Bulgarian Lev", "BGN", 2);
|
192 |
+
$iclISOCurrencyList->add(36, "Australian Dollar", "AUD", 2);
|
193 |
+
$iclISOCurrencyList->add(238, "Falkland Islands Pound", "FKP", 2);
|
194 |
+
$iclISOCurrencyList->add(901, "New Taiwan Dollar", "TWD", 2);
|
195 |
+
$iclISOCurrencyList->add(784, "United Arab Emirates dirham", "AED", 2);
|
196 |
+
|
197 |
+
return $iclISOCurrencyList;
|
198 |
+
}
|
199 |
+
}
|
app/code/local/PayVector/Tpg/Model/Common/PaymentFormHelper.php
ADDED
@@ -0,0 +1,539 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class TPG_ListItemList
|
4 |
+
{
|
5 |
+
private $m_lilListItemList;
|
6 |
+
|
7 |
+
public function getCount()
|
8 |
+
{
|
9 |
+
return count($this->m_lilListItemList);
|
10 |
+
}
|
11 |
+
|
12 |
+
public function getAt($nIndex)
|
13 |
+
{
|
14 |
+
if ($nIndex < 0 ||
|
15 |
+
$nIndex >= count($this->m_lilListItemList))
|
16 |
+
{
|
17 |
+
throw new Exception('Array index out of bounds');
|
18 |
+
}
|
19 |
+
|
20 |
+
return $this->m_lilListItemList[$nIndex];
|
21 |
+
}
|
22 |
+
|
23 |
+
public function add($szName, $szValue, $boIsSelected)
|
24 |
+
{
|
25 |
+
$liListItem = new TPG_ListItem($szName, $szValue, $boIsSelected);
|
26 |
+
|
27 |
+
$this->m_lilListItemList[] = $liListItem;
|
28 |
+
}
|
29 |
+
|
30 |
+
public function toString()
|
31 |
+
{
|
32 |
+
$szReturnString = "";
|
33 |
+
|
34 |
+
for ($nCount = 0; $nCount < count($this->m_lilListItemList); $nCount++)
|
35 |
+
{
|
36 |
+
$liListItem = $this->m_lilListItemList[$nCount];
|
37 |
+
|
38 |
+
$szReturnString = $szReturnString."<option";
|
39 |
+
|
40 |
+
if ($liListItem->getValue() != null &&
|
41 |
+
$liListItem->getValue() != "")
|
42 |
+
{
|
43 |
+
$szReturnString = $szReturnString." value=\"".$liListItem->getValue()."\"";
|
44 |
+
}
|
45 |
+
|
46 |
+
if ($liListItem->getIsSelected() == true)
|
47 |
+
{
|
48 |
+
$szReturnString = $szReturnString." selected=\"selected\"";
|
49 |
+
}
|
50 |
+
|
51 |
+
$szReturnString = $szReturnString.">".$liListItem->getName()."</option>\n";
|
52 |
+
}
|
53 |
+
|
54 |
+
return ($szReturnString);
|
55 |
+
}
|
56 |
+
|
57 |
+
//constructor
|
58 |
+
public function __construct()
|
59 |
+
{
|
60 |
+
$this->m_lilListItemList = array();
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
class TPG_ListItem
|
65 |
+
{
|
66 |
+
private $m_szName;
|
67 |
+
private $m_szValue;
|
68 |
+
private $m_boIsSelected;
|
69 |
+
|
70 |
+
//public properties
|
71 |
+
public function getName()
|
72 |
+
{
|
73 |
+
return $this->m_szName;
|
74 |
+
}
|
75 |
+
|
76 |
+
public function getValue()
|
77 |
+
{
|
78 |
+
return $this->m_szValue;
|
79 |
+
}
|
80 |
+
|
81 |
+
public function getIsSelected()
|
82 |
+
{
|
83 |
+
return $this->m_boIsSelected;
|
84 |
+
}
|
85 |
+
|
86 |
+
//constructor
|
87 |
+
public function __construct($szName, $szValue, $boIsSelected)
|
88 |
+
{
|
89 |
+
$this->m_szName = $szName;
|
90 |
+
$this->m_szValue = $szValue;
|
91 |
+
$this->m_boIsSelected = $boIsSelected;
|
92 |
+
}
|
93 |
+
}
|
94 |
+
|
95 |
+
class TPG_PaymentFormHelper
|
96 |
+
{
|
97 |
+
/**
|
98 |
+
* Hash mechanism for hosted payment form trasaction
|
99 |
+
*
|
100 |
+
* @param string $szMerchantID
|
101 |
+
* @param string $szPassword
|
102 |
+
* @param string $hmHashMethod
|
103 |
+
* @param string $szPreSharedKey
|
104 |
+
* @param int $nAmount
|
105 |
+
* @param int $nCurrencyCode
|
106 |
+
* @param string $szEchoCardType
|
107 |
+
* @param string $szOrderID
|
108 |
+
* @param string $szTransactionType
|
109 |
+
* @param string $szTransactionDateTime
|
110 |
+
* @param string $szCallbackURL
|
111 |
+
* @param string $szOrderDescription
|
112 |
+
* @param string $szCustomerName
|
113 |
+
* @param string $szAddress1
|
114 |
+
* @param string $szAddress2
|
115 |
+
* @param string $szAddress3
|
116 |
+
* @param string $szAddress4
|
117 |
+
* @param string $szCity
|
118 |
+
* @param string $szState
|
119 |
+
* @param string $szPostCode
|
120 |
+
* @param int $nCountryCode
|
121 |
+
* @param bool $boCV2Mandatory
|
122 |
+
* @param bool $boAddress1Mandatory
|
123 |
+
* @param bool $boCityMandatory
|
124 |
+
* @param bool $boPostCodeMandatory
|
125 |
+
* @param bool $boStateMandatory
|
126 |
+
* @param bool $boCountryMandatory
|
127 |
+
* @param string $rdmResultdeliveryMethod
|
128 |
+
* @param string $szServerResultURL
|
129 |
+
* @param bool $boPaymentFormDisplaysResult
|
130 |
+
* @return string
|
131 |
+
*/
|
132 |
+
public static function calculateHashDigest($szMerchantID, $szPassword, $hmHashMethod, $szPreSharedKey, $nAmount, $nCurrencyCode, $szEchoCardType, $szOrderID, $szTransactionType, $szTransactionDateTime, $szCallbackURL, $szOrderDescription, $szCustomerName, $szAddress1, $szAddress2, $szAddress3, $szAddress4, $szCity, $szState, $szPostCode, $nCountryCode, $boCV2Mandatory, $boAddress1Mandatory, $boCityMandatory, $boPostCodeMandatory, $boStateMandatory, $boCountryMandatory, $rdmResultdeliveryMethod, $szServerResultURL, $boPaymentFormDisplaysResult, $szServerResultURLCookieVariables, $szServerResultURLFormVariables, $szServerResultURLQueryStringVariables)
|
133 |
+
{
|
134 |
+
$szHashDigest = '';
|
135 |
+
$szStringBeforeHash;
|
136 |
+
|
137 |
+
$szStringBeforeHash =
|
138 |
+
'MerchantID='.$szMerchantID.'&'.
|
139 |
+
'Password='.$szPassword.'&'.
|
140 |
+
'Amount='.$nAmount.'&'.
|
141 |
+
'CurrencyCode='.$nCurrencyCode.'&'.
|
142 |
+
'EchoCardType='.$szEchoCardType.'&'.
|
143 |
+
'OrderID='.$szOrderID.'&'.
|
144 |
+
'TransactionType='.$szTransactionType.'&'.
|
145 |
+
'TransactionDateTime='.$szTransactionDateTime.'&'.
|
146 |
+
'CallbackURL='.$szCallbackURL.'&'.
|
147 |
+
'OrderDescription='.$szOrderDescription.'&'.
|
148 |
+
'CustomerName='.$szCustomerName.'&'.
|
149 |
+
'Address1='.$szAddress1.'&'.
|
150 |
+
'Address2='.$szAddress2.'&'.
|
151 |
+
'Address3='.$szAddress3.'&'.
|
152 |
+
'Address4='.$szAddress4.'&'.
|
153 |
+
'City='.$szCity.'&'.
|
154 |
+
'State='.$szState.'&'.
|
155 |
+
'PostCode='.$szPostCode.'&'.
|
156 |
+
'CountryCode='.$nCountryCode.'&'.
|
157 |
+
'CV2Mandatory='.$boCV2Mandatory.'&'.
|
158 |
+
'Address1Mandatory='.$boAddress1Mandatory.'&'.
|
159 |
+
'CityMandatory='.$boCityMandatory.'&'.
|
160 |
+
'PostCodeMandatory='.$boPostCodeMandatory.'&'.
|
161 |
+
'StateMandatory='.$boStateMandatory.'&'.
|
162 |
+
'CountryMandatory='.$boCountryMandatory.'&'.
|
163 |
+
'ResultDeliveryMethod='.$rdmResultdeliveryMethod.'&'.
|
164 |
+
'ServerResultURL='.$szServerResultURL.'&'.
|
165 |
+
'PaymentFormDisplaysResult='.$boPaymentFormDisplaysResult.'&'.
|
166 |
+
'ServerResultURLCookieVariables='.$szServerResultURLCookieVariables.'&'.
|
167 |
+
'ServerResultURLFormVariables='.$szServerResultURLFormVariables.'&'.
|
168 |
+
'ServerResultURLQueryStringVariables='.$szServerResultURLQueryStringVariables;
|
169 |
+
|
170 |
+
if ($hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_MD5 ||
|
171 |
+
$hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_SHA1)
|
172 |
+
{
|
173 |
+
$szStringBeforeHash = 'PreSharedKey='.$szPreSharedKey.'&'.$szStringBeforeHash;
|
174 |
+
}
|
175 |
+
|
176 |
+
$szHashDigest = self::_hashCalculator($hmHashMethod, $szPreSharedKey, $szStringBeforeHash);
|
177 |
+
|
178 |
+
return $szHashDigest;
|
179 |
+
}
|
180 |
+
|
181 |
+
/**
|
182 |
+
* Hash mechanism for transparent redirect trasaction
|
183 |
+
*
|
184 |
+
* @param unknown_type $szMerchantID
|
185 |
+
* @param unknown_type $szPassword
|
186 |
+
* @param unknown_type $hmHashMethod
|
187 |
+
* @param unknown_type $szPreSharedKey
|
188 |
+
* @param unknown_type $nAmount
|
189 |
+
* @param unknown_type $nCurrencyCode
|
190 |
+
* @param unknown_type $szOrderID
|
191 |
+
* @param unknown_type $szTransactionType
|
192 |
+
* @param unknown_type $szTransactionDateTime
|
193 |
+
* @param unknown_type $szCallbackURL
|
194 |
+
* @param unknown_type $szOrderDescription
|
195 |
+
* @return unknown
|
196 |
+
*/
|
197 |
+
public static function calculateTransparentRedirectHashDigest($szMerchantID, $szPassword, $hmHashMethod, $szPreSharedKey, $nAmount, $nCurrencyCode, $szOrderID, $szTransactionType, $szTransactionDateTime, $szCallbackURL, $szOrderDescription)
|
198 |
+
{
|
199 |
+
$szHashDigest = '';
|
200 |
+
$szStringBeforeHash;
|
201 |
+
|
202 |
+
$szStringBeforeHash = 'MerchantID='.$szMerchantID.'&'.
|
203 |
+
'Password='.$szPassword.'&'.
|
204 |
+
'Amount='.$nAmount.'&'.
|
205 |
+
'CurrencyCode='.$nCurrencyCode.'&'.
|
206 |
+
'OrderID='.$szOrderID.'&'.
|
207 |
+
'TransactionType='.$szTransactionType.'&'.
|
208 |
+
'TransactionDateTime='.$szTransactionDateTime.'&'.
|
209 |
+
'CallbackURL='.$szCallbackURL.'&'.
|
210 |
+
'OrderDescription='.$szOrderDescription;
|
211 |
+
|
212 |
+
if ($hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_MD5 ||
|
213 |
+
$hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_SHA1)
|
214 |
+
{
|
215 |
+
$szStringBeforeHash = 'PreSharedKey='.$szPreSharedKey.'&'.$szStringBeforeHash;
|
216 |
+
}
|
217 |
+
|
218 |
+
$szHashDigest = self::_hashCalculator($hmHashMethod, $szPreSharedKey, $szStringBeforeHash);
|
219 |
+
|
220 |
+
return $szHashDigest;
|
221 |
+
}
|
222 |
+
|
223 |
+
/**
|
224 |
+
* Hash mechanism for calculating the hash digest for the post 3D Secure Authentication in the transparent redirect payment mode
|
225 |
+
*
|
226 |
+
* @param unknown_type $szMerchantID
|
227 |
+
* @param unknown_type $szPassword
|
228 |
+
* @param unknown_type $hmHashMethod
|
229 |
+
* @param unknown_type $szPreSharedKey
|
230 |
+
* @param unknown_type $szPaRES
|
231 |
+
* @param unknown_type $szCrossReference
|
232 |
+
* @param unknown_type $szTransactionDateTime
|
233 |
+
* @param unknown_type $szCallbackURL
|
234 |
+
* @return unknown
|
235 |
+
*/
|
236 |
+
public static function calculatePostThreeDSecureAuthenticationHashDigest($szMerchantID, $szPassword, $hmHashMethod, $szPreSharedKey, $szPaRES, $szCrossReference, $szTransactionDateTime, $szCallbackURL)
|
237 |
+
{
|
238 |
+
$szHashDigest = '';
|
239 |
+
$szStringBeforeHash;
|
240 |
+
|
241 |
+
$szStringBeforeHash = 'MerchantID='.$szMerchantID.'&'.
|
242 |
+
'Password='.$szPassword.'&'.
|
243 |
+
'CrossReference='.$szCrossReference.'&'.
|
244 |
+
'TransactionDateTime='.$szTransactionDateTime.'&'.
|
245 |
+
'CallbackURL='.$szCallbackURL.'&'.
|
246 |
+
'PaRES='.$szPaRES;
|
247 |
+
|
248 |
+
|
249 |
+
if ($hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_MD5 ||
|
250 |
+
$hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_SHA1)
|
251 |
+
{
|
252 |
+
$szStringBeforeHash = 'PreSharedKey='.$szPreSharedKey.'&'.$szStringBeforeHash;
|
253 |
+
}
|
254 |
+
|
255 |
+
$szHashDigest = self::_hashCalculator($hmHashMethod, $szPreSharedKey, $szStringBeforeHash);
|
256 |
+
|
257 |
+
return $szHashDigest;
|
258 |
+
}
|
259 |
+
|
260 |
+
/**
|
261 |
+
* Private hash calculator for hashing the raw string
|
262 |
+
*
|
263 |
+
* @param unknown_type $hmHashMethod
|
264 |
+
* @param unknown_type $szPreSharedKey
|
265 |
+
* @param unknown_type $szStringBeforeHash
|
266 |
+
* @return unknown
|
267 |
+
*/
|
268 |
+
private static function _hashCalculator($hmHashMethod, $szPreSharedKey, $szStringBeforeHash)
|
269 |
+
{
|
270 |
+
$szHashDigest = '';
|
271 |
+
|
272 |
+
switch ($hmHashMethod)
|
273 |
+
{
|
274 |
+
case PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_MD5:
|
275 |
+
$szHashDigest = md5($szStringBeforeHash);
|
276 |
+
break;
|
277 |
+
case PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_SHA1:
|
278 |
+
$szHashDigest = sha1($szStringBeforeHash);
|
279 |
+
break;
|
280 |
+
case PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_HMACMD5:
|
281 |
+
$szHashDigest = hash_hmac('md5', $szStringBeforeHash, $szPreSharedKey);
|
282 |
+
break;
|
283 |
+
case PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_HMACSHA1:
|
284 |
+
$szHashDigest = hash_hmac('sha1', $szStringBeforeHash, $szPreSharedKey);
|
285 |
+
break;
|
286 |
+
default:
|
287 |
+
throw new Exception('Invalid hash method used for hash digest calculation: '.$hmHashMethod);
|
288 |
+
break;
|
289 |
+
}
|
290 |
+
|
291 |
+
//$szHashDigest = strtoupper($szHashDigest);
|
292 |
+
|
293 |
+
return $szHashDigest;
|
294 |
+
}
|
295 |
+
|
296 |
+
/**
|
297 |
+
* Hash validator mechanism for hosted payment form transaction
|
298 |
+
*
|
299 |
+
* @param unknown_type $szHashDigest
|
300 |
+
* @param unknown_type $szMerchantID
|
301 |
+
* @param unknown_type $szStatusCode
|
302 |
+
* @param unknown_type $szMessage
|
303 |
+
* @param unknown_type $szPreviousStatusCode
|
304 |
+
* @param unknown_type $szPreviousMessage
|
305 |
+
* @param unknown_type $szCrossReference
|
306 |
+
* @param unknown_type $szAmount
|
307 |
+
* @param unknown_type $szCurrencyCode
|
308 |
+
* @param unknown_type $szOrderID
|
309 |
+
* @param unknown_type $szTransactionType
|
310 |
+
* @param unknown_type $szTransactionDateTime
|
311 |
+
* @param unknown_type $szOrderDescription
|
312 |
+
* @param unknown_type $szCustomerName
|
313 |
+
* @param unknown_type $szAddress1
|
314 |
+
* @param unknown_type $szAddress2
|
315 |
+
* @param unknown_type $szAddress3
|
316 |
+
* @param unknown_type $szAddress4
|
317 |
+
* @param unknown_type $szCity
|
318 |
+
* @param unknown_type $szState
|
319 |
+
* @param unknown_type $szPostCode
|
320 |
+
* @param unknown_type $szCountryCode
|
321 |
+
* @return unknown
|
322 |
+
*/
|
323 |
+
public static function compareHostedPaymentFormHashDigest($formVariables, $szPassword, $hmHashMethod, $szPreSharedKey)
|
324 |
+
{
|
325 |
+
$boMatch = false;
|
326 |
+
$szCalculatedHashDigest;
|
327 |
+
$szStringBeforeHash;
|
328 |
+
|
329 |
+
$szStringBeforeHash =
|
330 |
+
'MerchantID='.$formVariables['MerchantID'].'&'.
|
331 |
+
'Password='.$szPassword.'&'.
|
332 |
+
'StatusCode='.$formVariables['StatusCode'].'&'.
|
333 |
+
'Message='.$formVariables['Message'].'&'.
|
334 |
+
'PreviousStatusCode='.$formVariables['PreviousStatusCode'].'&'.
|
335 |
+
'PreviousMessage='.$formVariables['PreviousMessage'].'&'.
|
336 |
+
'CrossReference='.$formVariables['CrossReference'].'&'.
|
337 |
+
'CardType='.$formVariables['CardType'].'&'.
|
338 |
+
'CardClass='.$formVariables['CardClass'].'&'.
|
339 |
+
'CardIssuer='.$formVariables['CardIssuer'].'&'.
|
340 |
+
'CardIssuerCountryCode='.$formVariables['CardIssuerCountryCode'].'&'.
|
341 |
+
'Amount='.$formVariables['Amount'].'&'.
|
342 |
+
'CurrencyCode='.$formVariables['CurrencyCode'].'&'.
|
343 |
+
'OrderID='.$formVariables['OrderID'].'&'.
|
344 |
+
'TransactionType='.$formVariables['TransactionType'].'&'.
|
345 |
+
'TransactionDateTime='.$formVariables['TransactionDateTime'].'&'.
|
346 |
+
'OrderDescription='.$formVariables['OrderDescription'].'&'.
|
347 |
+
'CustomerName='.$formVariables['CustomerName'].'&'.
|
348 |
+
'Address1='.$formVariables['Address1'].'&'.
|
349 |
+
'Address2='.$formVariables['Address2'].'&'.
|
350 |
+
'Address3='.$formVariables['Address3'].'&'.
|
351 |
+
'Address4='.$formVariables['Address4'].'&'.
|
352 |
+
'City='.$formVariables['City'].'&'.
|
353 |
+
'State='.$formVariables['State'].'&'.
|
354 |
+
'PostCode='.$formVariables['PostCode'].'&'.
|
355 |
+
'CountryCode='.$formVariables['CountryCode'];
|
356 |
+
|
357 |
+
if ($hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_MD5 ||
|
358 |
+
$hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_SHA1)
|
359 |
+
{
|
360 |
+
$szStringBeforeHash = 'PreSharedKey='.$szPreSharedKey.'&'.$szStringBeforeHash;
|
361 |
+
}
|
362 |
+
|
363 |
+
$szCalculatedHashDigest = self::_hashCalculator($hmHashMethod, $szPreSharedKey, $szStringBeforeHash);
|
364 |
+
if(strtoupper($formVariables['HashDigest']) == strtoupper($szCalculatedHashDigest))
|
365 |
+
{
|
366 |
+
$boMatch = true;
|
367 |
+
}
|
368 |
+
|
369 |
+
return $boMatch;
|
370 |
+
}
|
371 |
+
|
372 |
+
/**
|
373 |
+
* Hash validator mechanism for the incoming payment complete hash in transparent redirect payment mode
|
374 |
+
*
|
375 |
+
* @param unknown_type $formVariables
|
376 |
+
* @param unknown_type $szPassword
|
377 |
+
* @param unknown_type $hmHashMethod
|
378 |
+
* @param unknown_type $szPreSharedKey
|
379 |
+
* @return unknown
|
380 |
+
*/
|
381 |
+
public static function comparePaymentCompleteHashDigest($formVariables, $szPassword, $hmHashMethod, $szPreSharedKey)
|
382 |
+
{
|
383 |
+
$boMatch = false;
|
384 |
+
$szCalculatedHashDigest;
|
385 |
+
$szStringBeforeHash;
|
386 |
+
|
387 |
+
if ($hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_MD5 ||
|
388 |
+
$hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_SHA1)
|
389 |
+
{
|
390 |
+
$szStringBeforeHash = 'PreSharedKey='.$szPreSharedKey.'&';
|
391 |
+
}
|
392 |
+
|
393 |
+
$szStringBeforeHash .= 'MerchantID=' . $formVariables['MerchantID'] .
|
394 |
+
'&Password=' . $szPassword .
|
395 |
+
'&StatusCode=' . $formVariables['StatusCode'] .
|
396 |
+
'&Message=' . $formVariables['Message'] .
|
397 |
+
'&PreviousStatusCode=' . $formVariables['PreviousStatusCode'] .
|
398 |
+
'&PreviousMessage=' . $formVariables['PreviousMessage'] .
|
399 |
+
'&CrossReference=' . $formVariables['CrossReference'] .
|
400 |
+
'&AddressNumericCheckResult=' . $formVariables['AddressNumericCheckResult'] .
|
401 |
+
'&PostCodeCheckResult=' . $formVariables['PostCodeCheckResult'] .
|
402 |
+
'&CV2CheckResult=' . $formVariables['CV2CheckResult'] .
|
403 |
+
'&ThreeDSecureAuthenticationCheckResult=' . $formVariables['ThreeDSecureAuthenticationCheckResult'] .
|
404 |
+
'&CardType=' . $formVariables['CardType'] .
|
405 |
+
'&CardClass=' . $formVariables['CardClass'] .
|
406 |
+
'&CardIssuer='. $formVariables['CardIssuer'] .
|
407 |
+
'&CardIssuerCountryCode=' . $formVariables['CardIssuerCountryCode'] .
|
408 |
+
'&Amount=' . $formVariables['Amount'] .
|
409 |
+
'&CurrencyCode=' . $formVariables['CurrencyCode'] .
|
410 |
+
'&OrderID=' . $formVariables['OrderID'] .
|
411 |
+
'&TransactionType='. $formVariables['TransactionType'] .
|
412 |
+
'&TransactionDateTime=' . $formVariables['TransactionDateTime'] .
|
413 |
+
'&OrderDescription=' . $formVariables['OrderDescription'] .
|
414 |
+
'&Address1=' . $formVariables['Address1'] .
|
415 |
+
'&Address2=' . $formVariables['Address2'] .
|
416 |
+
'&Address3=' . $formVariables['Address3'] .
|
417 |
+
'&Address4=' . $formVariables['Address4'] .
|
418 |
+
'&City=' . $formVariables['City'] .
|
419 |
+
'&State=' . $formVariables['State'] .
|
420 |
+
'&PostCode=' . $formVariables['PostCode'] .
|
421 |
+
'&CountryCode=' . $formVariables['CountryCode'] .
|
422 |
+
'&EmailAddress=' .$formVariables['EmailAddress'] .
|
423 |
+
'&PhoneNumber=' . $formVariables['PhoneNumber'];
|
424 |
+
|
425 |
+
$szCalculatedHashDigest = self::_hashCalculator($hmHashMethod, $szPreSharedKey, $szStringBeforeHash);
|
426 |
+
if(strtoupper($formVariables['HashDigest']) == strtoupper($szCalculatedHashDigest))
|
427 |
+
{
|
428 |
+
$boMatch = true;
|
429 |
+
}
|
430 |
+
|
431 |
+
return $boMatch;
|
432 |
+
}
|
433 |
+
|
434 |
+
/**
|
435 |
+
* Hash validator mechanism for the 3D Secure Authentication required hash in the transparent redirect payment mode
|
436 |
+
*
|
437 |
+
* @param unknown_type $formVariables
|
438 |
+
* @param unknown_type $szPassword
|
439 |
+
* @param unknown_type $hmHashMethod
|
440 |
+
* @param unknown_type $szPreSharedKey
|
441 |
+
* @return unknown
|
442 |
+
*/
|
443 |
+
public static function compareThreeDSecureAuthenticationRequiredHashDigest($formVariables, $szPassword, $hmHashMethod, $szPreSharedKey)
|
444 |
+
{
|
445 |
+
$boMatch = false;
|
446 |
+
$szCalculatedHashDigest;
|
447 |
+
$szStringBeforeHash;
|
448 |
+
|
449 |
+
$szStringBeforeHash = 'MerchantID='.$formVariables['MerchantID'].'&'.
|
450 |
+
'Password='.$szPassword.'&'.
|
451 |
+
'StatusCode='.$formVariables['StatusCode'].'&'.
|
452 |
+
'Message='.$formVariables['Message'].'&'.
|
453 |
+
'CrossReference='.$formVariables['CrossReference'].'&'.
|
454 |
+
'OrderID='.$formVariables['OrderID'].'&'.
|
455 |
+
'TransactionDateTime='.$formVariables['TransactionDateTime'].'&'.
|
456 |
+
'ACSURL='.$formVariables['ACSURL'].'&'.
|
457 |
+
'PaREQ='.$formVariables['PaREQ'];
|
458 |
+
|
459 |
+
if ($hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_MD5 ||
|
460 |
+
$hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_SHA1)
|
461 |
+
{
|
462 |
+
$szStringBeforeHash = 'PreSharedKey='.$szPreSharedKey.'&'.$szStringBeforeHash;
|
463 |
+
}
|
464 |
+
|
465 |
+
$szCalculatedHashDigest = self::_hashCalculator($hmHashMethod, $szPreSharedKey, $szStringBeforeHash);
|
466 |
+
if(strtoupper($formVariables['HashDigest']) == strtoupper($szCalculatedHashDigest))
|
467 |
+
{
|
468 |
+
$boMatch = true;
|
469 |
+
}
|
470 |
+
|
471 |
+
return $boMatch;
|
472 |
+
}
|
473 |
+
|
474 |
+
/**
|
475 |
+
* Convert a URL string to a name value array collection
|
476 |
+
*
|
477 |
+
* @param unknown_type $szInputVariableString
|
478 |
+
* @return unknown
|
479 |
+
*/
|
480 |
+
public static function getVariableCollectionFromString($szInputVariableString)
|
481 |
+
{
|
482 |
+
$arVariableCollection = array();
|
483 |
+
|
484 |
+
$arURLVariableArray = explode('&', $szInputVariableString);
|
485 |
+
for($nCount = 0; $nCount < sizeof($arURLVariableArray); $nCount++)
|
486 |
+
{
|
487 |
+
$szNameValue = $arURLVariableArray[$nCount];
|
488 |
+
$arNameValue = explode('=', $szNameValue);
|
489 |
+
if(sizeof($arNameValue) == 1)
|
490 |
+
{
|
491 |
+
$arVariableCollection[$arNameValue[0]] = '';
|
492 |
+
}
|
493 |
+
else
|
494 |
+
{
|
495 |
+
$arVariableCollection[$arNameValue[0]] = $arNameValue[1];
|
496 |
+
}
|
497 |
+
}
|
498 |
+
|
499 |
+
return ($arVariableCollection);
|
500 |
+
}
|
501 |
+
|
502 |
+
/**
|
503 |
+
* Hash validator mechanism for the SERVER and SERVER_PULL methods
|
504 |
+
*
|
505 |
+
* @param unknown_type $formVariables
|
506 |
+
* @param unknown_type $szPassword
|
507 |
+
* @param unknown_type $hmHashMethod
|
508 |
+
* @param unknown_type $szPreSharedKey
|
509 |
+
*/
|
510 |
+
public static function compareServerHashDigest($formVariables, $szPassword, $hmHashMethod, $szPreSharedKey)
|
511 |
+
{
|
512 |
+
$boMatch = false;
|
513 |
+
$szHashDigest = isset($formVariables['HashDigest']) ? $formVariables['HashDigest'] : false;
|
514 |
+
$szMerchantID = isset($formVariables['MerchantID']) ? $formVariables['MerchantID'] : false;
|
515 |
+
$szCrossReference = isset($formVariables['CrossReference']) ? $formVariables['CrossReference'] : false;
|
516 |
+
$szOrderID = isset($formVariables['OrderID']) ? $formVariables['OrderID'] : false;
|
517 |
+
|
518 |
+
$szStringBeforeHash = 'MerchantID='.$szMerchantID.'&'.
|
519 |
+
'Password='.$szPassword.'&'.
|
520 |
+
'CrossReference='.$szCrossReference.'&'.
|
521 |
+
'OrderID='.$szOrderID;
|
522 |
+
|
523 |
+
if ($hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_MD5 ||
|
524 |
+
$hmHashMethod == PayVector_Tpg_Model_Source_HashMethod::HASH_METHOD_SHA1)
|
525 |
+
{
|
526 |
+
$szStringBeforeHash = 'PreSharedKey='.$szPreSharedKey.'&'.$szStringBeforeHash;
|
527 |
+
}
|
528 |
+
|
529 |
+
$szCalculatedHashDigest = self::_hashCalculator($hmHashMethod, $szPreSharedKey, $szStringBeforeHash);
|
530 |
+
|
531 |
+
if(strtoupper($szHashDigest) === strtoupper($szCalculatedHashDigest))
|
532 |
+
{
|
533 |
+
$boMatch = true;
|
534 |
+
}
|
535 |
+
|
536 |
+
return $boMatch;
|
537 |
+
}
|
538 |
+
}
|
539 |
+
?>
|
app/code/local/PayVector/Tpg/Model/Common/ThePaymentGateway/PaymentSystem.php
ADDED
@@ -0,0 +1,3340 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
//accessing external files
|
3 |
+
require_once ("TPG_Common.php");
|
4 |
+
require_once ("SOAP.php");
|
5 |
+
|
6 |
+
/*****************/
|
7 |
+
/* Input classes */
|
8 |
+
/*****************/
|
9 |
+
class RequestGatewayEntryPoint extends GatewayEntryPoint
|
10 |
+
{
|
11 |
+
/**
|
12 |
+
* @var int
|
13 |
+
*/
|
14 |
+
private $m_nRetryAttempts;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @return int
|
18 |
+
*/
|
19 |
+
public function getRetryAttempts()
|
20 |
+
{
|
21 |
+
return $this -> m_nRetryAttempts;
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* @param string $szEntryPointURL
|
26 |
+
* @param int $nMetric
|
27 |
+
* @param int $nRetryAttempts
|
28 |
+
*/
|
29 |
+
public function __construct($szEntryPointURL, $nMetric, $nRetryAttempts)
|
30 |
+
{
|
31 |
+
//do NOT forget to call the parent constructor too
|
32 |
+
//parent::GatewayEntryPoint($szEntryPointURL, $nMetric);
|
33 |
+
GatewayEntryPoint::__construct($szEntryPointURL, $nMetric);
|
34 |
+
|
35 |
+
$this -> m_nRetryAttempts = $nRetryAttempts;
|
36 |
+
}
|
37 |
+
|
38 |
+
}
|
39 |
+
class RequestGatewayEntryPointList
|
40 |
+
{
|
41 |
+
/**
|
42 |
+
* @var RequestGatewayEntryPoint[]
|
43 |
+
*/
|
44 |
+
private $m_lrgepRequestGatewayEntryPoint;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @param int $nIndex
|
48 |
+
* @return RequestGatewayEntryPoint
|
49 |
+
* @throws Exception
|
50 |
+
*/
|
51 |
+
public function getAt($nIndex)
|
52 |
+
{
|
53 |
+
if ($nIndex < 0 || $nIndex >= count($this -> m_lrgepRequestGatewayEntryPoint))
|
54 |
+
{
|
55 |
+
throw new Exception("Array index out of bounds");
|
56 |
+
}
|
57 |
+
|
58 |
+
return $this -> m_lrgepRequestGatewayEntryPoint[$nIndex];
|
59 |
+
}
|
60 |
+
/**
|
61 |
+
* @return int
|
62 |
+
*/
|
63 |
+
public function getCount()
|
64 |
+
{
|
65 |
+
return count($this -> m_lrgepRequestGatewayEntryPoint);
|
66 |
+
}
|
67 |
+
/**
|
68 |
+
* @param string $ComparerClassName
|
69 |
+
* @param string $ComparerMethodName
|
70 |
+
*/
|
71 |
+
public function sort($ComparerClassName, $ComparerMethodName)
|
72 |
+
{
|
73 |
+
usort($this -> m_lrgepRequestGatewayEntryPoint, array(
|
74 |
+
"$ComparerClassName",
|
75 |
+
"$ComparerMethodName"
|
76 |
+
));
|
77 |
+
}
|
78 |
+
/**
|
79 |
+
* @param string $EntryPointURL
|
80 |
+
* @param int $nMetric
|
81 |
+
* @param int $nRetryAttempts
|
82 |
+
*/
|
83 |
+
public function add($EntryPointURL, $nMetric, $nRetryAttempts)
|
84 |
+
{
|
85 |
+
array_push($this -> m_lrgepRequestGatewayEntryPoint, new RequestGatewayEntryPoint($EntryPointURL, $nMetric, $nRetryAttempts));
|
86 |
+
}
|
87 |
+
|
88 |
+
//constructor
|
89 |
+
public function __construct()
|
90 |
+
{
|
91 |
+
$this -> m_lrgepRequestGatewayEntryPoint = array();
|
92 |
+
}
|
93 |
+
|
94 |
+
}
|
95 |
+
class GenericVariable
|
96 |
+
{
|
97 |
+
/**
|
98 |
+
* @var string
|
99 |
+
*/
|
100 |
+
private $m_szName;
|
101 |
+
/**
|
102 |
+
* @var string
|
103 |
+
*/
|
104 |
+
private $m_szValue;
|
105 |
+
|
106 |
+
/**
|
107 |
+
* @return string
|
108 |
+
*/
|
109 |
+
public function getName()
|
110 |
+
{
|
111 |
+
return $this -> m_szName;
|
112 |
+
}
|
113 |
+
/**
|
114 |
+
* @param string $name
|
115 |
+
*/
|
116 |
+
public function setName($name)
|
117 |
+
{
|
118 |
+
$this -> m_szName = $name;
|
119 |
+
}
|
120 |
+
/**
|
121 |
+
* @return string
|
122 |
+
*/
|
123 |
+
public function getValue()
|
124 |
+
{
|
125 |
+
return $this -> m_szValue;
|
126 |
+
}
|
127 |
+
/**
|
128 |
+
* @param string $value
|
129 |
+
*/
|
130 |
+
public function setValue($value)
|
131 |
+
{
|
132 |
+
$this -> m_szValue = $value;
|
133 |
+
}
|
134 |
+
|
135 |
+
//constructor
|
136 |
+
public function __construct()
|
137 |
+
{
|
138 |
+
$this -> m_szName = "";
|
139 |
+
$this -> m_szValue = "";
|
140 |
+
}
|
141 |
+
|
142 |
+
}
|
143 |
+
class GenericVariableList
|
144 |
+
{
|
145 |
+
/**
|
146 |
+
* @var GenericVariable[]
|
147 |
+
*/
|
148 |
+
private $m_lgvGenericVariableList;
|
149 |
+
|
150 |
+
/**
|
151 |
+
* @param int|string $intOrStringValue
|
152 |
+
* @return GenericVariable
|
153 |
+
* @throws Exception
|
154 |
+
*/
|
155 |
+
public function getAt($intOrStringValue)
|
156 |
+
{
|
157 |
+
$nCount = 0;
|
158 |
+
$boFound = false;
|
159 |
+
$gvGenericVariable = null;
|
160 |
+
|
161 |
+
if (is_int($intOrStringValue))
|
162 |
+
{
|
163 |
+
if ($intOrStringValue < 0 || $intOrStringValue >= count($this -> m_lgvGenericVariableList))
|
164 |
+
{
|
165 |
+
throw new Exception("Array index out of bounds");
|
166 |
+
}
|
167 |
+
|
168 |
+
return $this -> m_lgvGenericVariableList[$intOrStringValue];
|
169 |
+
}
|
170 |
+
elseif (is_string($intOrStringValue))
|
171 |
+
{
|
172 |
+
if ($intOrStringValue == null || $intOrStringValue == "")
|
173 |
+
{
|
174 |
+
return (null);
|
175 |
+
}
|
176 |
+
|
177 |
+
while (!$boFound && $nCount < count($this -> m_lgvGenericVariableList))
|
178 |
+
{
|
179 |
+
if (strtoupper($this -> m_lgvGenericVariableList[$nCount] -> getName()) == strtoupper($intOrStringValue))
|
180 |
+
{
|
181 |
+
$gvGenericVariable = $this -> m_lgvGenericVariableList[$nCount];
|
182 |
+
$boFound = true;
|
183 |
+
}
|
184 |
+
$nCount++;
|
185 |
+
}
|
186 |
+
|
187 |
+
return $gvGenericVariable;
|
188 |
+
}
|
189 |
+
else
|
190 |
+
{
|
191 |
+
throw new Exception("Invalid parameter type:$intOrStringValue");
|
192 |
+
}
|
193 |
+
}
|
194 |
+
/**
|
195 |
+
* @return int
|
196 |
+
*/
|
197 |
+
public function getCount()
|
198 |
+
{
|
199 |
+
return count($this -> m_lgvGenericVariableList);
|
200 |
+
}
|
201 |
+
/**
|
202 |
+
* @param string $szName
|
203 |
+
* @param string $szValue
|
204 |
+
*/
|
205 |
+
public function add($szName, $szValue)
|
206 |
+
{
|
207 |
+
if ($szName != null && $szName != "")
|
208 |
+
{
|
209 |
+
$genericVariable = new GenericVariable();
|
210 |
+
$genericVariable -> setName($szName);
|
211 |
+
$genericVariable -> setValue($szValue);
|
212 |
+
array_push($this -> m_lgvGenericVariableList, $genericVariable);
|
213 |
+
}
|
214 |
+
}
|
215 |
+
|
216 |
+
//constructor
|
217 |
+
public function __construct()
|
218 |
+
{
|
219 |
+
$this -> m_lgvGenericVariableList = array();
|
220 |
+
}
|
221 |
+
|
222 |
+
}
|
223 |
+
class CustomerDetails
|
224 |
+
{
|
225 |
+
/**
|
226 |
+
* @var BillingAddress
|
227 |
+
*/
|
228 |
+
private $m_adBillingAddress;
|
229 |
+
/**
|
230 |
+
* @var string
|
231 |
+
*/
|
232 |
+
private $m_szEmailAddress;
|
233 |
+
/**
|
234 |
+
* @var string
|
235 |
+
*/
|
236 |
+
private $m_szPhoneNumber;
|
237 |
+
/**
|
238 |
+
* @var string
|
239 |
+
*/
|
240 |
+
private $m_szCustomerIPAddress;
|
241 |
+
|
242 |
+
/**
|
243 |
+
* @return BillingAddress
|
244 |
+
*/
|
245 |
+
public function getBillingAddress()
|
246 |
+
{
|
247 |
+
return $this -> m_adBillingAddress;
|
248 |
+
}
|
249 |
+
/**
|
250 |
+
* @return string
|
251 |
+
*/
|
252 |
+
public function getEmailAddress()
|
253 |
+
{
|
254 |
+
return $this -> m_szEmailAddress;
|
255 |
+
}
|
256 |
+
/**
|
257 |
+
* @param string $emailAddress
|
258 |
+
*/
|
259 |
+
public function setEmailAddress($emailAddress)
|
260 |
+
{
|
261 |
+
$this -> m_szEmailAddress = $emailAddress;
|
262 |
+
}
|
263 |
+
/**
|
264 |
+
* @return string
|
265 |
+
*/
|
266 |
+
public function getPhoneNumber()
|
267 |
+
{
|
268 |
+
return $this -> m_szPhoneNumber;
|
269 |
+
}
|
270 |
+
/**
|
271 |
+
* @param string $phoneNumber
|
272 |
+
*/
|
273 |
+
public function setPhoneNumber($phoneNumber)
|
274 |
+
{
|
275 |
+
$this -> m_szPhoneNumber = $phoneNumber;
|
276 |
+
}
|
277 |
+
/**
|
278 |
+
* @return string
|
279 |
+
*/
|
280 |
+
public function getCustomerIPAddress()
|
281 |
+
{
|
282 |
+
return $this -> m_szCustomerIPAddress;
|
283 |
+
}
|
284 |
+
/**
|
285 |
+
* @param string $IPAddress
|
286 |
+
*/
|
287 |
+
public function setCustomerIPAddress($IPAddress)
|
288 |
+
{
|
289 |
+
$this -> m_szCustomerIPAddress = $IPAddress;
|
290 |
+
}
|
291 |
+
|
292 |
+
//constructor
|
293 |
+
public function __construct()
|
294 |
+
{
|
295 |
+
$this -> m_adBillingAddress = new BillingAddress();
|
296 |
+
$this -> m_szEmailAddress = "";
|
297 |
+
$this -> m_szPhoneNumber = "";
|
298 |
+
$this -> m_szCustomerIPAddress = "";
|
299 |
+
}
|
300 |
+
|
301 |
+
}
|
302 |
+
class BillingAddress
|
303 |
+
{
|
304 |
+
/**
|
305 |
+
* @var string
|
306 |
+
*/
|
307 |
+
private $m_szAddress1;
|
308 |
+
/**
|
309 |
+
* @var string
|
310 |
+
*/
|
311 |
+
private $m_szAddress2;
|
312 |
+
/**
|
313 |
+
* @var string
|
314 |
+
*/
|
315 |
+
private $m_szAddress3;
|
316 |
+
/**
|
317 |
+
* @var string
|
318 |
+
*/
|
319 |
+
private $m_szAddress4;
|
320 |
+
/**
|
321 |
+
* @var string
|
322 |
+
*/
|
323 |
+
private $m_szCity;
|
324 |
+
/**
|
325 |
+
* @var string
|
326 |
+
*/
|
327 |
+
private $m_szState;
|
328 |
+
/**
|
329 |
+
* @var string
|
330 |
+
*/
|
331 |
+
private $m_szPostCode;
|
332 |
+
/**
|
333 |
+
* @var NullableInt
|
334 |
+
*/
|
335 |
+
private $m_nCountryCode;
|
336 |
+
|
337 |
+
/**
|
338 |
+
* @return string
|
339 |
+
*/
|
340 |
+
public function getAddress1()
|
341 |
+
{
|
342 |
+
return $this -> m_szAddress1;
|
343 |
+
}
|
344 |
+
/**
|
345 |
+
* @param string $address1
|
346 |
+
*/
|
347 |
+
public function setAddress1($address1)
|
348 |
+
{
|
349 |
+
$this -> m_szAddress1 = $address1;
|
350 |
+
}
|
351 |
+
/**
|
352 |
+
* @return string
|
353 |
+
*/
|
354 |
+
public function getAddress2()
|
355 |
+
{
|
356 |
+
return $this -> m_szAddress2;
|
357 |
+
}
|
358 |
+
/**
|
359 |
+
* @param string $address2
|
360 |
+
*/
|
361 |
+
public function setAddress2($address2)
|
362 |
+
{
|
363 |
+
$this -> m_szAddress2 = $address2;
|
364 |
+
}
|
365 |
+
/**
|
366 |
+
* @return string
|
367 |
+
*/
|
368 |
+
public function getAddress3()
|
369 |
+
{
|
370 |
+
return $this -> m_szAddress3;
|
371 |
+
}
|
372 |
+
/**
|
373 |
+
* @param string $address3
|
374 |
+
*/
|
375 |
+
public function setAddress3($address3)
|
376 |
+
{
|
377 |
+
$this -> m_szAddress3 = $address3;
|
378 |
+
}
|
379 |
+
/**
|
380 |
+
* @return string
|
381 |
+
*/
|
382 |
+
public function getAddress4()
|
383 |
+
{
|
384 |
+
return $this -> m_szAddress4;
|
385 |
+
}
|
386 |
+
/**
|
387 |
+
* @param string $address4
|
388 |
+
*/
|
389 |
+
public function setAddress4($address4)
|
390 |
+
{
|
391 |
+
$this -> m_szAddress4 = $address4;
|
392 |
+
}
|
393 |
+
/**
|
394 |
+
* @return string
|
395 |
+
*/
|
396 |
+
public function getCity()
|
397 |
+
{
|
398 |
+
return $this -> m_szCity;
|
399 |
+
}
|
400 |
+
/**
|
401 |
+
* @param string $city
|
402 |
+
*/
|
403 |
+
public function setCity($city)
|
404 |
+
{
|
405 |
+
$this -> m_szCity = $city;
|
406 |
+
}
|
407 |
+
/**
|
408 |
+
* @return string
|
409 |
+
*/
|
410 |
+
public function getState()
|
411 |
+
{
|
412 |
+
return $this -> m_szState;
|
413 |
+
}
|
414 |
+
/**
|
415 |
+
* @param string $state
|
416 |
+
*/
|
417 |
+
public function setState($state)
|
418 |
+
{
|
419 |
+
$this -> m_szState = $state;
|
420 |
+
}
|
421 |
+
/**
|
422 |
+
* @return string
|
423 |
+
*/
|
424 |
+
public function getPostCode()
|
425 |
+
{
|
426 |
+
return $this -> m_szPostCode;
|
427 |
+
}
|
428 |
+
/**
|
429 |
+
* @param string $postCode
|
430 |
+
*/
|
431 |
+
public function setPostCode($postCode)
|
432 |
+
{
|
433 |
+
$this -> m_szPostCode = $postCode;
|
434 |
+
}
|
435 |
+
/**
|
436 |
+
* @return NullableInt
|
437 |
+
*/
|
438 |
+
public function getCountryCode()
|
439 |
+
{
|
440 |
+
return $this -> m_nCountryCode;
|
441 |
+
}
|
442 |
+
|
443 |
+
//constructor
|
444 |
+
public function __construct()
|
445 |
+
{
|
446 |
+
$this -> m_szAddress1 = "";
|
447 |
+
$this -> m_szAddress2 = "";
|
448 |
+
$this -> m_szAddress3 = "";
|
449 |
+
$this -> m_szAddress4 = "";
|
450 |
+
$this -> m_szCity = "";
|
451 |
+
$this -> m_szState = "";
|
452 |
+
$this -> m_szPostCode = "";
|
453 |
+
$this -> m_nCountryCode = new NullableInt();
|
454 |
+
}
|
455 |
+
|
456 |
+
}
|
457 |
+
abstract class CreditCardDate
|
458 |
+
{
|
459 |
+
/**
|
460 |
+
* @var NullableInt
|
461 |
+
*/
|
462 |
+
private $m_nMonth;
|
463 |
+
/**
|
464 |
+
* @var NullableInt
|
465 |
+
*/
|
466 |
+
private $m_nYear;
|
467 |
+
|
468 |
+
/**
|
469 |
+
* @return NullableInt
|
470 |
+
*/
|
471 |
+
public function getMonth()
|
472 |
+
{
|
473 |
+
return $this -> m_nMonth;
|
474 |
+
}
|
475 |
+
/**
|
476 |
+
* @return NullableInt
|
477 |
+
*/
|
478 |
+
public function getYear()
|
479 |
+
{
|
480 |
+
return $this -> m_nYear;
|
481 |
+
}
|
482 |
+
|
483 |
+
//constructor
|
484 |
+
public function __construct()
|
485 |
+
{
|
486 |
+
$this -> m_nMonth = new NullableInt();
|
487 |
+
$this -> m_nYear = new NullableInt();
|
488 |
+
}
|
489 |
+
|
490 |
+
}
|
491 |
+
class ExpiryDate extends CreditCardDate
|
492 |
+
{
|
493 |
+
public function __construct()
|
494 |
+
{
|
495 |
+
parent::__construct();
|
496 |
+
}
|
497 |
+
|
498 |
+
}
|
499 |
+
class StartDate extends CreditCardDate
|
500 |
+
{
|
501 |
+
public function __construct()
|
502 |
+
{
|
503 |
+
parent::__construct();
|
504 |
+
}
|
505 |
+
|
506 |
+
}
|
507 |
+
class CardDetails
|
508 |
+
{
|
509 |
+
/**
|
510 |
+
* @var string
|
511 |
+
*/
|
512 |
+
private $m_szCardName;
|
513 |
+
/**
|
514 |
+
* @var string
|
515 |
+
*/
|
516 |
+
private $m_szCardNumber;
|
517 |
+
/**
|
518 |
+
* @var ExpiryDate
|
519 |
+
*/
|
520 |
+
private $m_edExpiryDate;
|
521 |
+
/**
|
522 |
+
* @var StartDate
|
523 |
+
*/
|
524 |
+
private $m_sdStartDate;
|
525 |
+
/**
|
526 |
+
* @var string
|
527 |
+
*/
|
528 |
+
private $m_szIssueNumber;
|
529 |
+
/**
|
530 |
+
* @var string
|
531 |
+
*/
|
532 |
+
private $m_szCV2;
|
533 |
+
|
534 |
+
/**
|
535 |
+
* @return string
|
536 |
+
*/
|
537 |
+
public function getCardName()
|
538 |
+
{
|
539 |
+
return $this -> m_szCardName;
|
540 |
+
}
|
541 |
+
/**
|
542 |
+
* @param string $cardName
|
543 |
+
*/
|
544 |
+
public function setCardName($cardName)
|
545 |
+
{
|
546 |
+
$this -> m_szCardName = $cardName;
|
547 |
+
}
|
548 |
+
/**
|
549 |
+
* @return string
|
550 |
+
*/
|
551 |
+
public function getCardNumber()
|
552 |
+
{
|
553 |
+
return $this -> m_szCardNumber;
|
554 |
+
}
|
555 |
+
/**
|
556 |
+
* @param string $cardNumber
|
557 |
+
*/
|
558 |
+
public function setCardNumber($cardNumber)
|
559 |
+
{
|
560 |
+
$this -> m_szCardNumber = $cardNumber;
|
561 |
+
}
|
562 |
+
/**
|
563 |
+
* @return ExpiryDate
|
564 |
+
*/
|
565 |
+
public function getExpiryDate()
|
566 |
+
{
|
567 |
+
return $this -> m_edExpiryDate;
|
568 |
+
}
|
569 |
+
/**
|
570 |
+
* @return StartDate
|
571 |
+
*/
|
572 |
+
public function getStartDate()
|
573 |
+
{
|
574 |
+
return $this -> m_sdStartDate;
|
575 |
+
}
|
576 |
+
/**
|
577 |
+
* @return string
|
578 |
+
*/
|
579 |
+
public function getIssueNumber()
|
580 |
+
{
|
581 |
+
return $this -> m_szIssueNumber;
|
582 |
+
}
|
583 |
+
/**
|
584 |
+
* @param string $issueNumber
|
585 |
+
*/
|
586 |
+
public function setIssueNumber($issueNumber)
|
587 |
+
{
|
588 |
+
$this -> m_szIssueNumber = $issueNumber;
|
589 |
+
}
|
590 |
+
/**
|
591 |
+
* @return string
|
592 |
+
*/
|
593 |
+
public function getCV2()
|
594 |
+
{
|
595 |
+
return $this -> m_szCV2;
|
596 |
+
}
|
597 |
+
/**
|
598 |
+
* @param string $cv2
|
599 |
+
*/
|
600 |
+
public function setCV2($cv2)
|
601 |
+
{
|
602 |
+
$this -> m_szCV2 = $cv2;
|
603 |
+
}
|
604 |
+
|
605 |
+
//constructor
|
606 |
+
public function __construct()
|
607 |
+
{
|
608 |
+
$this -> m_szCardName = "";
|
609 |
+
$this -> m_szCardNumber = "";
|
610 |
+
$this -> m_edExpiryDate = new ExpiryDate();
|
611 |
+
$this -> m_sdStartDate = new StartDate();
|
612 |
+
$this -> m_szIssueNumber = "";
|
613 |
+
$this -> m_szCV2 = "";
|
614 |
+
}
|
615 |
+
|
616 |
+
}
|
617 |
+
class OverrideCardDetails extends CardDetails
|
618 |
+
{
|
619 |
+
public function __construct()
|
620 |
+
{
|
621 |
+
parent::__construct();
|
622 |
+
}
|
623 |
+
|
624 |
+
}
|
625 |
+
class MerchantAuthentication
|
626 |
+
{
|
627 |
+
/**
|
628 |
+
* @var string
|
629 |
+
*/
|
630 |
+
private $m_szMerchantID;
|
631 |
+
/**
|
632 |
+
* @var string
|
633 |
+
*/
|
634 |
+
private $m_szPassword;
|
635 |
+
|
636 |
+
/**
|
637 |
+
* @return string
|
638 |
+
*/
|
639 |
+
public function getMerchantID()
|
640 |
+
{
|
641 |
+
return $this -> m_szMerchantID;
|
642 |
+
}
|
643 |
+
/**
|
644 |
+
* @param string $merchantID
|
645 |
+
*/
|
646 |
+
public function setMerchantID($merchantID)
|
647 |
+
{
|
648 |
+
$this -> m_szMerchantID = $merchantID;
|
649 |
+
}
|
650 |
+
/**
|
651 |
+
* @return string
|
652 |
+
*/
|
653 |
+
public function getPassword()
|
654 |
+
{
|
655 |
+
return $this -> m_szPassword;
|
656 |
+
}
|
657 |
+
/**
|
658 |
+
* @param string $password
|
659 |
+
*/
|
660 |
+
public function setPassword($password)
|
661 |
+
{
|
662 |
+
$this -> m_szPassword = $password;
|
663 |
+
}
|
664 |
+
|
665 |
+
//constructor
|
666 |
+
public function __construct()
|
667 |
+
{
|
668 |
+
$this -> m_szMerchantID = "";
|
669 |
+
$this -> m_szPassword = "";
|
670 |
+
}
|
671 |
+
|
672 |
+
}
|
673 |
+
class MessageDetails
|
674 |
+
{
|
675 |
+
/**
|
676 |
+
* @var string
|
677 |
+
*/
|
678 |
+
private $m_szTransactionType;
|
679 |
+
/**
|
680 |
+
* @var NullableBool
|
681 |
+
*/
|
682 |
+
private $m_boNewTransaction;
|
683 |
+
/**
|
684 |
+
* @var string
|
685 |
+
*/
|
686 |
+
private $m_szCrossReference;
|
687 |
+
/**
|
688 |
+
* @var string
|
689 |
+
*/
|
690 |
+
private $m_szClientReference;
|
691 |
+
/**
|
692 |
+
* @var string
|
693 |
+
*/
|
694 |
+
private $m_szPreviousClientReference;
|
695 |
+
|
696 |
+
/**
|
697 |
+
* @return string
|
698 |
+
*/
|
699 |
+
public function getTransactionType()
|
700 |
+
{
|
701 |
+
return $this -> m_szTransactionType;
|
702 |
+
}
|
703 |
+
/**
|
704 |
+
* @param string $transactionType
|
705 |
+
*/
|
706 |
+
public function setTransactionType($transactionType)
|
707 |
+
{
|
708 |
+
$this -> m_szTransactionType = $transactionType;
|
709 |
+
}
|
710 |
+
/**
|
711 |
+
* @return NullableBool
|
712 |
+
*/
|
713 |
+
public function getNewTransaction()
|
714 |
+
{
|
715 |
+
return $this -> m_boNewTransaction;
|
716 |
+
}
|
717 |
+
/**
|
718 |
+
* @return string
|
719 |
+
*/
|
720 |
+
public function getCrossReference()
|
721 |
+
{
|
722 |
+
return $this -> m_szCrossReference;
|
723 |
+
}
|
724 |
+
/**
|
725 |
+
* @param string $crossReference
|
726 |
+
*/
|
727 |
+
public function setCrossReference($crossReference)
|
728 |
+
{
|
729 |
+
$this -> m_szCrossReference = $crossReference;
|
730 |
+
}
|
731 |
+
/**
|
732 |
+
* @return string
|
733 |
+
*/
|
734 |
+
public function getClientReference()
|
735 |
+
{
|
736 |
+
return $this -> m_szClientReference;
|
737 |
+
}
|
738 |
+
/**
|
739 |
+
* @param string $clientReference
|
740 |
+
*/
|
741 |
+
public function setClientReference($clientReference)
|
742 |
+
{
|
743 |
+
$this -> m_szClientReference = $clientReference;
|
744 |
+
}
|
745 |
+
/**
|
746 |
+
* @return string
|
747 |
+
*/
|
748 |
+
public function getPreviousClientReference()
|
749 |
+
{
|
750 |
+
return $this -> m_szPreviousClientReference;
|
751 |
+
}
|
752 |
+
/**
|
753 |
+
* @param string $previousClientReference
|
754 |
+
*/
|
755 |
+
public function setPreviousClientReference($previousClientReference)
|
756 |
+
{
|
757 |
+
$this -> m_szPreviousClientReference = $previousClientReference;
|
758 |
+
}
|
759 |
+
|
760 |
+
//constructor
|
761 |
+
public function __construct()
|
762 |
+
{
|
763 |
+
$this -> m_szTransactionType = "";
|
764 |
+
$this -> m_szCrossReference = "";
|
765 |
+
$this -> m_boNewTransaction = new NullableBool();
|
766 |
+
$this -> m_szClientReference = "";
|
767 |
+
$this -> m_szPreviousClientReference = "";
|
768 |
+
}
|
769 |
+
|
770 |
+
}
|
771 |
+
class TransactionDetails
|
772 |
+
{
|
773 |
+
/**
|
774 |
+
* @var MessageDetails
|
775 |
+
*/
|
776 |
+
private $m_mdMessageDetails;
|
777 |
+
/**
|
778 |
+
* @var NullableInt
|
779 |
+
*/
|
780 |
+
private $m_nAmount;
|
781 |
+
/**
|
782 |
+
* @var NullableInt
|
783 |
+
*/
|
784 |
+
private $m_nCurrencyCode;
|
785 |
+
/**
|
786 |
+
* @var string
|
787 |
+
*/
|
788 |
+
private $m_szCaptureEnvironment;
|
789 |
+
/**
|
790 |
+
* @var NullableBool
|
791 |
+
*/
|
792 |
+
private $m_boContinuousAuthority;
|
793 |
+
/**
|
794 |
+
* @var string
|
795 |
+
*/
|
796 |
+
private $m_szOrderID;
|
797 |
+
/**
|
798 |
+
* @var string
|
799 |
+
*/
|
800 |
+
private $m_szOrderDescription;
|
801 |
+
/**
|
802 |
+
* @var TransactionControl
|
803 |
+
*/
|
804 |
+
private $m_tcTransactionControl;
|
805 |
+
/**
|
806 |
+
* @var ThreeDSecureBrowserDetails
|
807 |
+
*/
|
808 |
+
private $m_tdsbdThreeDSecureBrowserDetails;
|
809 |
+
|
810 |
+
/**
|
811 |
+
* @return MessageDetails
|
812 |
+
*/
|
813 |
+
public function getMessageDetails()
|
814 |
+
{
|
815 |
+
return $this -> m_mdMessageDetails;
|
816 |
+
}
|
817 |
+
/**
|
818 |
+
* @return NullableInt
|
819 |
+
*/
|
820 |
+
public function getAmount()
|
821 |
+
{
|
822 |
+
return $this -> m_nAmount;
|
823 |
+
}
|
824 |
+
/**
|
825 |
+
* @return NullableInt
|
826 |
+
*/
|
827 |
+
public function getCurrencyCode()
|
828 |
+
{
|
829 |
+
return $this -> m_nCurrencyCode;
|
830 |
+
}
|
831 |
+
/**
|
832 |
+
* @return string
|
833 |
+
*/
|
834 |
+
public function getCaptureEnvironment()
|
835 |
+
{
|
836 |
+
return $this -> m_szCaptureEnvironment;
|
837 |
+
}
|
838 |
+
/**
|
839 |
+
* @param string $szCaptureEnvironment
|
840 |
+
*/
|
841 |
+
public function setCaptureEnvironment($szCaptureEnvironment)
|
842 |
+
{
|
843 |
+
$this -> m_szCaptureEnvironment = $szCaptureEnvironment;
|
844 |
+
}
|
845 |
+
/**
|
846 |
+
* @return NullableBool
|
847 |
+
*/
|
848 |
+
public function getContinuousAuthority()
|
849 |
+
{
|
850 |
+
return $this -> m_boContinuousAuthority;
|
851 |
+
}
|
852 |
+
/**
|
853 |
+
* @return string
|
854 |
+
*/
|
855 |
+
public function getOrderID()
|
856 |
+
{
|
857 |
+
return $this -> m_szOrderID;
|
858 |
+
}
|
859 |
+
/**
|
860 |
+
* @param string $orderID
|
861 |
+
*/
|
862 |
+
public function setOrderID($orderID)
|
863 |
+
{
|
864 |
+
$this -> m_szOrderID = $orderID;
|
865 |
+
}
|
866 |
+
/**
|
867 |
+
* @return string
|
868 |
+
*/
|
869 |
+
public function getOrderDescription()
|
870 |
+
{
|
871 |
+
return $this -> m_szOrderDescription;
|
872 |
+
}
|
873 |
+
/**
|
874 |
+
* @param string $orderDescription
|
875 |
+
*/
|
876 |
+
public function setOrderDescription($orderDescription)
|
877 |
+
{
|
878 |
+
$this -> m_szOrderDescription = $orderDescription;
|
879 |
+
}
|
880 |
+
/**
|
881 |
+
* @return TransactionControl
|
882 |
+
*/
|
883 |
+
public function getTransactionControl()
|
884 |
+
{
|
885 |
+
return $this -> m_tcTransactionControl;
|
886 |
+
}
|
887 |
+
/**
|
888 |
+
* @return ThreeDSecureBrowserDetails
|
889 |
+
*/
|
890 |
+
public function getThreeDSecureBrowserDetails()
|
891 |
+
{
|
892 |
+
return $this -> m_tdsbdThreeDSecureBrowserDetails;
|
893 |
+
}
|
894 |
+
|
895 |
+
//constructor
|
896 |
+
public function __construct()
|
897 |
+
{
|
898 |
+
$this -> m_mdMessageDetails = new MessageDetails();
|
899 |
+
$this -> m_nAmount = new NullableInt();
|
900 |
+
$this -> m_szCaptureEnvironment = "";
|
901 |
+
$this -> m_boContinuousAuthority = new NullableBool();
|
902 |
+
$this -> m_nCurrencyCode = new NullableInt();
|
903 |
+
$this -> m_szOrderID = "";
|
904 |
+
$this -> m_szOrderDescription = "";
|
905 |
+
$this -> m_tcTransactionControl = new TransactionControl();
|
906 |
+
$this -> m_tdsbdThreeDSecureBrowserDetails = new ThreeDSecureBrowserDetails();
|
907 |
+
}
|
908 |
+
|
909 |
+
}
|
910 |
+
class ThreeDSecureBrowserDetails
|
911 |
+
{
|
912 |
+
/**
|
913 |
+
* @var NullableInt
|
914 |
+
*/
|
915 |
+
private $m_nDeviceCategory;
|
916 |
+
/**
|
917 |
+
* @var string
|
918 |
+
*/
|
919 |
+
private $m_szAcceptHeaders;
|
920 |
+
/**
|
921 |
+
* @var string
|
922 |
+
*/
|
923 |
+
private $m_szUserAgent;
|
924 |
+
|
925 |
+
/**
|
926 |
+
* @return NullableInt
|
927 |
+
*/
|
928 |
+
public function getDeviceCategory()
|
929 |
+
{
|
930 |
+
return $this -> m_nDeviceCategory;
|
931 |
+
}
|
932 |
+
/**
|
933 |
+
* @return string
|
934 |
+
*/
|
935 |
+
public function getAcceptHeaders()
|
936 |
+
{
|
937 |
+
return $this -> m_szAcceptHeaders;
|
938 |
+
}
|
939 |
+
/**
|
940 |
+
* @param string $acceptHeaders
|
941 |
+
*/
|
942 |
+
public function setAcceptHeaders($acceptHeaders)
|
943 |
+
{
|
944 |
+
$this -> m_szAcceptHeaders = $acceptHeaders;
|
945 |
+
}
|
946 |
+
/**
|
947 |
+
* @return string
|
948 |
+
*/
|
949 |
+
public function getUserAgent()
|
950 |
+
{
|
951 |
+
return $this -> m_szUserAgent;
|
952 |
+
}
|
953 |
+
/**
|
954 |
+
* @param string $userAgent
|
955 |
+
*/
|
956 |
+
public function setUserAgent($userAgent)
|
957 |
+
{
|
958 |
+
$this -> m_szUserAgent = $userAgent;
|
959 |
+
}
|
960 |
+
|
961 |
+
//constructor
|
962 |
+
public function __construct()
|
963 |
+
{
|
964 |
+
$this -> m_nDeviceCategory = new NullableInt();
|
965 |
+
$this -> m_szAcceptHeaders = "";
|
966 |
+
$this -> m_szUserAgent = "";
|
967 |
+
}
|
968 |
+
|
969 |
+
}
|
970 |
+
class TransactionControl
|
971 |
+
{
|
972 |
+
/**
|
973 |
+
* @var NullableBool
|
974 |
+
*/
|
975 |
+
private $m_boEchoCardType;
|
976 |
+
/**
|
977 |
+
* @var NullableBool
|
978 |
+
*/
|
979 |
+
private $m_boEchoAVSCheckResult;
|
980 |
+
/**
|
981 |
+
* @var NullableBool
|
982 |
+
*/
|
983 |
+
private $m_boEchoCV2CheckResult;
|
984 |
+
/**
|
985 |
+
* @var NullableBool
|
986 |
+
*/
|
987 |
+
private $m_boEchoAmountReceived;
|
988 |
+
/**
|
989 |
+
* @var NullableInt
|
990 |
+
*/
|
991 |
+
private $m_nDuplicateDelay;
|
992 |
+
/**
|
993 |
+
* @var string
|
994 |
+
*/
|
995 |
+
private $m_szAVSOverridePolicy;
|
996 |
+
/**
|
997 |
+
* @var string
|
998 |
+
*/
|
999 |
+
private $m_szCV2OverridePolicy;
|
1000 |
+
/**
|
1001 |
+
* @var NullableBool
|
1002 |
+
*/
|
1003 |
+
private $m_boThreeDSecureOverridePolicy;
|
1004 |
+
/**
|
1005 |
+
* @var string
|
1006 |
+
*/
|
1007 |
+
private $m_szAuthCode;
|
1008 |
+
/**
|
1009 |
+
* @var ThreeDSecurePassthroughData
|
1010 |
+
*/
|
1011 |
+
private $m_tdsptThreeDSecurePassthroughData;
|
1012 |
+
/**
|
1013 |
+
* @var GenericVariableList
|
1014 |
+
*/
|
1015 |
+
private $m_lgvCustomVariables;
|
1016 |
+
|
1017 |
+
/**
|
1018 |
+
* @return NullableBool
|
1019 |
+
*/
|
1020 |
+
public function getEchoCardType()
|
1021 |
+
{
|
1022 |
+
return $this -> m_boEchoCardType;
|
1023 |
+
}
|
1024 |
+
/**
|
1025 |
+
* @return NullableBool
|
1026 |
+
*/
|
1027 |
+
public function getEchoAVSCheckResult()
|
1028 |
+
{
|
1029 |
+
return $this -> m_boEchoAVSCheckResult;
|
1030 |
+
}
|
1031 |
+
/**
|
1032 |
+
* @return NullableBool
|
1033 |
+
*/
|
1034 |
+
public function getEchoCV2CheckResult()
|
1035 |
+
{
|
1036 |
+
return $this -> m_boEchoCV2CheckResult;
|
1037 |
+
}
|
1038 |
+
/**
|
1039 |
+
* @return NullableBool
|
1040 |
+
*/
|
1041 |
+
public function getEchoAmountReceived()
|
1042 |
+
{
|
1043 |
+
return $this -> m_boEchoAmountReceived;
|
1044 |
+
}
|
1045 |
+
/**
|
1046 |
+
* @return NullableInt
|
1047 |
+
*/
|
1048 |
+
public function getDuplicateDelay()
|
1049 |
+
{
|
1050 |
+
return $this -> m_nDuplicateDelay;
|
1051 |
+
}
|
1052 |
+
/**
|
1053 |
+
* @return string
|
1054 |
+
*/
|
1055 |
+
public function getAVSOverridePolicy()
|
1056 |
+
{
|
1057 |
+
return $this -> m_szAVSOverridePolicy;
|
1058 |
+
}
|
1059 |
+
/**
|
1060 |
+
* @param string $AVSOverridePolicy
|
1061 |
+
*/
|
1062 |
+
public function setAVSOverridePolicy($AVSOverridePolicy)
|
1063 |
+
{
|
1064 |
+
$this -> m_szAVSOverridePolicy = $AVSOverridePolicy;
|
1065 |
+
}
|
1066 |
+
/**
|
1067 |
+
* @return string
|
1068 |
+
*/
|
1069 |
+
public function getCV2OverridePolicy()
|
1070 |
+
{
|
1071 |
+
return $this -> m_szCV2OverridePolicy;
|
1072 |
+
}
|
1073 |
+
/**
|
1074 |
+
* @param string $CV2OverridePolicy
|
1075 |
+
*/
|
1076 |
+
public function setCV2OverridePolicy($CV2OverridePolicy)
|
1077 |
+
{
|
1078 |
+
$this -> m_szCV2OverridePolicy = $CV2OverridePolicy;
|
1079 |
+
}
|
1080 |
+
/**
|
1081 |
+
* @return NullableBool
|
1082 |
+
*/
|
1083 |
+
public function getThreeDSecureOverridePolicy()
|
1084 |
+
{
|
1085 |
+
return $this -> m_boThreeDSecureOverridePolicy;
|
1086 |
+
}
|
1087 |
+
/**
|
1088 |
+
* @return string
|
1089 |
+
*/
|
1090 |
+
public function getAuthCode()
|
1091 |
+
{
|
1092 |
+
return $this -> m_szAuthCode;
|
1093 |
+
}
|
1094 |
+
/**
|
1095 |
+
* @param string $authCode
|
1096 |
+
*/
|
1097 |
+
public function setAuthCode($authCode)
|
1098 |
+
{
|
1099 |
+
$this -> m_szAuthCode = $authCode;
|
1100 |
+
}
|
1101 |
+
/**
|
1102 |
+
* @return ThreeDSecurePassthroughData
|
1103 |
+
*/
|
1104 |
+
function getThreeDSecurePassthroughData()
|
1105 |
+
{
|
1106 |
+
return $this -> m_tdsptThreeDSecurePassthroughData;
|
1107 |
+
}
|
1108 |
+
/**
|
1109 |
+
* @return GenericVariableList
|
1110 |
+
*/
|
1111 |
+
public function getCustomVariables()
|
1112 |
+
{
|
1113 |
+
return $this -> m_lgvCustomVariables;
|
1114 |
+
}
|
1115 |
+
|
1116 |
+
//constructor
|
1117 |
+
public function __construct()
|
1118 |
+
{
|
1119 |
+
$this -> m_boEchoCardType = new NullableBool();
|
1120 |
+
$this -> m_boEchoAVSCheckResult = new NullableBool();
|
1121 |
+
$this -> m_boEchoCV2CheckResult = new NullableBool();
|
1122 |
+
$this -> m_boEchoAmountReceived = new NullableBool();
|
1123 |
+
$this -> m_nDuplicateDelay = new NullableInt();
|
1124 |
+
$this -> m_szAVSOverridePolicy = "";
|
1125 |
+
$this -> m_szCV2OverridePolicy = "";
|
1126 |
+
$this -> m_boThreeDSecureOverridePolicy = new NullableBool();
|
1127 |
+
$this -> m_szAuthCode = "";
|
1128 |
+
$this -> m_tdsptThreeDSecurePassthroughData = new ThreeDSecurePassthroughData();
|
1129 |
+
$this -> m_lgvCustomVariables = new GenericVariableList();
|
1130 |
+
}
|
1131 |
+
|
1132 |
+
}
|
1133 |
+
class ThreeDSecureInputData
|
1134 |
+
{
|
1135 |
+
/**
|
1136 |
+
* @var string
|
1137 |
+
*/
|
1138 |
+
private $m_szCrossReference;
|
1139 |
+
/**
|
1140 |
+
* @var string
|
1141 |
+
*/
|
1142 |
+
private $m_szPaRES;
|
1143 |
+
/**
|
1144 |
+
* @return string
|
1145 |
+
*/
|
1146 |
+
public function getCrossReference()
|
1147 |
+
{
|
1148 |
+
return $this -> m_szCrossReference;
|
1149 |
+
}
|
1150 |
+
|
1151 |
+
/**
|
1152 |
+
* @param string $crossReference
|
1153 |
+
*/
|
1154 |
+
public function setCrossReference($crossReference)
|
1155 |
+
{
|
1156 |
+
$this -> m_szCrossReference = $crossReference;
|
1157 |
+
}
|
1158 |
+
/**
|
1159 |
+
* @return string
|
1160 |
+
*/
|
1161 |
+
public function getPaRES()
|
1162 |
+
{
|
1163 |
+
return $this -> m_szPaRES;
|
1164 |
+
}
|
1165 |
+
/**
|
1166 |
+
* @param string $PaRES
|
1167 |
+
*/
|
1168 |
+
public function setPaRES($PaRES)
|
1169 |
+
{
|
1170 |
+
$this -> m_szPaRES = $PaRES;
|
1171 |
+
}
|
1172 |
+
|
1173 |
+
//constructor
|
1174 |
+
public function __construct()
|
1175 |
+
{
|
1176 |
+
$this -> m_szCrossReference = "";
|
1177 |
+
$this -> m_szPaRES = "";
|
1178 |
+
}
|
1179 |
+
|
1180 |
+
}
|
1181 |
+
class ThreeDSecurePassthroughData
|
1182 |
+
{
|
1183 |
+
/**
|
1184 |
+
* @var string
|
1185 |
+
*/
|
1186 |
+
private $m_szEnrolmentStatus;
|
1187 |
+
/**
|
1188 |
+
* @var string
|
1189 |
+
*/
|
1190 |
+
private $m_szAuthenticationStatus;
|
1191 |
+
/**
|
1192 |
+
* @var string
|
1193 |
+
*/
|
1194 |
+
private $m_szElectronicCommerceIndicator;
|
1195 |
+
/**
|
1196 |
+
* @var string
|
1197 |
+
*/
|
1198 |
+
private $m_szAuthenticationValue;
|
1199 |
+
/**
|
1200 |
+
* @var string
|
1201 |
+
*/
|
1202 |
+
private $m_szTransactionIdentifier;
|
1203 |
+
|
1204 |
+
/**
|
1205 |
+
* @return string
|
1206 |
+
*/
|
1207 |
+
function getEnrolmentStatus()
|
1208 |
+
{
|
1209 |
+
return $this -> m_szEnrolmentStatus;
|
1210 |
+
}
|
1211 |
+
/**
|
1212 |
+
* @param string $enrolmentStatus
|
1213 |
+
*/
|
1214 |
+
public function setEnrolmentStatus($enrolmentStatus)
|
1215 |
+
{
|
1216 |
+
$this -> m_szEnrolmentStatus = $enrolmentStatus;
|
1217 |
+
}
|
1218 |
+
/**
|
1219 |
+
* @return string
|
1220 |
+
*/
|
1221 |
+
function getAuthenticationStatus()
|
1222 |
+
{
|
1223 |
+
return $this -> m_szAuthenticationStatus;
|
1224 |
+
}
|
1225 |
+
/**
|
1226 |
+
* @param string $authenticationStatus
|
1227 |
+
*/
|
1228 |
+
public function setAuthenticationStatus($authenticationStatus)
|
1229 |
+
{
|
1230 |
+
$this -> m_szAuthenticationStatus = $authenticationStatus;
|
1231 |
+
}
|
1232 |
+
/**
|
1233 |
+
* @return string
|
1234 |
+
*/
|
1235 |
+
function getElectronicCommerceIndicator()
|
1236 |
+
{
|
1237 |
+
return $this -> m_szElectronicCommerceIndicator;
|
1238 |
+
}
|
1239 |
+
/**
|
1240 |
+
* @param string $electronicCommerceIndicator
|
1241 |
+
*/
|
1242 |
+
public function setElectronicCommerceIndicator($electronicCommerceIndicator)
|
1243 |
+
{
|
1244 |
+
$this -> m_szElectronicCommerceIndicator = $electronicCommerceIndicator;
|
1245 |
+
}
|
1246 |
+
/**
|
1247 |
+
* @return string
|
1248 |
+
*/
|
1249 |
+
function getAuthenticationValue()
|
1250 |
+
{
|
1251 |
+
return $this -> m_szAuthenticationValue;
|
1252 |
+
}
|
1253 |
+
/**
|
1254 |
+
* @param string $authenticationValue
|
1255 |
+
*/
|
1256 |
+
public function setAuthenticationValue($authenticationValue)
|
1257 |
+
{
|
1258 |
+
$this -> m_szAuthenticationValue = $authenticationValue;
|
1259 |
+
}
|
1260 |
+
/**
|
1261 |
+
* @return string
|
1262 |
+
*/
|
1263 |
+
function getTransactionIdentifier()
|
1264 |
+
{
|
1265 |
+
return $this -> m_szTransactionIdentifier;
|
1266 |
+
}
|
1267 |
+
/**
|
1268 |
+
* @param string $transactionIdentifier
|
1269 |
+
*/
|
1270 |
+
public function setTransactionIdentifier($transactionIdentifier)
|
1271 |
+
{
|
1272 |
+
$this -> m_szTransactionIdentifier = $transactionIdentifier;
|
1273 |
+
}
|
1274 |
+
|
1275 |
+
//constructor
|
1276 |
+
function __construct()
|
1277 |
+
{
|
1278 |
+
$this -> m_szEnrolmentStatus = "";
|
1279 |
+
$this -> m_szAuthenticationStatus = "";
|
1280 |
+
$this -> m_szElectronicCommerceIndicator = "";
|
1281 |
+
$this -> m_szAuthenticationValue = "";
|
1282 |
+
$this -> m_szTransactionIdentifier = "";
|
1283 |
+
}
|
1284 |
+
|
1285 |
+
}
|
1286 |
+
/******************/
|
1287 |
+
/* Output classes */
|
1288 |
+
/******************/
|
1289 |
+
class Issuer
|
1290 |
+
{
|
1291 |
+
/**
|
1292 |
+
* @var string
|
1293 |
+
*/
|
1294 |
+
private $m_szIssuer;
|
1295 |
+
/**
|
1296 |
+
* @var NullableInt
|
1297 |
+
*/
|
1298 |
+
private $m_nISOCode;
|
1299 |
+
|
1300 |
+
/**
|
1301 |
+
* @return string
|
1302 |
+
*/
|
1303 |
+
public function getValue()
|
1304 |
+
{
|
1305 |
+
return $this -> m_szIssuer;
|
1306 |
+
}
|
1307 |
+
|
1308 |
+
/**
|
1309 |
+
* @return NullableInt
|
1310 |
+
*/
|
1311 |
+
public function getISOCode()
|
1312 |
+
{
|
1313 |
+
return $this -> m_nISOCode;
|
1314 |
+
}
|
1315 |
+
|
1316 |
+
//constructor
|
1317 |
+
public function __construct($szIssuer, NullableInt $nISOCode = null)
|
1318 |
+
{
|
1319 |
+
$this -> m_szIssuer = $szIssuer;
|
1320 |
+
$this -> m_nISOCode = $nISOCode;
|
1321 |
+
}
|
1322 |
+
|
1323 |
+
}
|
1324 |
+
class CardTypeData
|
1325 |
+
{
|
1326 |
+
/**
|
1327 |
+
* @var string
|
1328 |
+
*/
|
1329 |
+
private $m_szCardType;
|
1330 |
+
/**
|
1331 |
+
* @var Issuer
|
1332 |
+
*/
|
1333 |
+
private $m_iIssuer;
|
1334 |
+
/**
|
1335 |
+
* @var string
|
1336 |
+
*/
|
1337 |
+
private $m_szCardClass;
|
1338 |
+
/**
|
1339 |
+
* @var NullableBool
|
1340 |
+
*/
|
1341 |
+
private $m_boLuhnCheckRequired;
|
1342 |
+
/**
|
1343 |
+
* @var string
|
1344 |
+
*/
|
1345 |
+
private $m_szIssueNumberStatus;
|
1346 |
+
/**
|
1347 |
+
* @var string
|
1348 |
+
*/
|
1349 |
+
private $m_szStartDateStatus;
|
1350 |
+
|
1351 |
+
/**
|
1352 |
+
* @return string
|
1353 |
+
*/
|
1354 |
+
public function getCardType()
|
1355 |
+
{
|
1356 |
+
return $this -> m_szCardType;
|
1357 |
+
}
|
1358 |
+
/**
|
1359 |
+
* @return string
|
1360 |
+
*/
|
1361 |
+
public function getCardClass()
|
1362 |
+
{
|
1363 |
+
return $this -> m_szCardClass;
|
1364 |
+
}
|
1365 |
+
/**
|
1366 |
+
* @return Issuer
|
1367 |
+
*/
|
1368 |
+
public function getIssuer()
|
1369 |
+
{
|
1370 |
+
return $this -> m_iIssuer;
|
1371 |
+
}
|
1372 |
+
/**
|
1373 |
+
* @return NullableBool
|
1374 |
+
*/
|
1375 |
+
public function getLuhnCheckRequired()
|
1376 |
+
{
|
1377 |
+
return $this -> m_boLuhnCheckRequired;
|
1378 |
+
}
|
1379 |
+
/**
|
1380 |
+
* @return string
|
1381 |
+
*/
|
1382 |
+
public function getIssueNumberStatus()
|
1383 |
+
{
|
1384 |
+
return $this -> m_szIssueNumberStatus;
|
1385 |
+
}
|
1386 |
+
/**
|
1387 |
+
* @return string
|
1388 |
+
*/
|
1389 |
+
public function getStartDateStatus()
|
1390 |
+
{
|
1391 |
+
return $this -> m_szStartDateStatus;
|
1392 |
+
}
|
1393 |
+
|
1394 |
+
//constructor
|
1395 |
+
/**
|
1396 |
+
* @param string $szCardType
|
1397 |
+
* @param string $szCardClass
|
1398 |
+
* @param string $iIssuer
|
1399 |
+
* @param NullableBool $boLuhnCheckRequired
|
1400 |
+
* @param string $szIssueNumberStatus
|
1401 |
+
* @param string $szStartDateStatus
|
1402 |
+
*/
|
1403 |
+
public function __construct($szCardType, $szCardClass, $iIssuer, NullableBool $boLuhnCheckRequired = null, $szIssueNumberStatus, $szStartDateStatus)
|
1404 |
+
{
|
1405 |
+
$this -> m_szCardType = $szCardType;
|
1406 |
+
$this -> m_szCardClass = $szCardClass;
|
1407 |
+
$this -> m_iIssuer = $iIssuer;
|
1408 |
+
$this -> m_boLuhnCheckRequired = $boLuhnCheckRequired;
|
1409 |
+
$this -> m_szIssueNumberStatus = $szIssueNumberStatus;
|
1410 |
+
$this -> m_szStartDateStatus = $szStartDateStatus;
|
1411 |
+
}
|
1412 |
+
|
1413 |
+
}
|
1414 |
+
class GatewayEntryPoint
|
1415 |
+
{
|
1416 |
+
/**
|
1417 |
+
* @var string
|
1418 |
+
*/
|
1419 |
+
private $m_szEntryPointURL;
|
1420 |
+
/**
|
1421 |
+
* @var int
|
1422 |
+
*/
|
1423 |
+
private $m_nMetric;
|
1424 |
+
|
1425 |
+
/**
|
1426 |
+
* @return string
|
1427 |
+
*/
|
1428 |
+
public function getEntryPointURL()
|
1429 |
+
{
|
1430 |
+
return $this -> m_szEntryPointURL;
|
1431 |
+
}
|
1432 |
+
/**
|
1433 |
+
* @return int
|
1434 |
+
*/
|
1435 |
+
public function getMetric()
|
1436 |
+
{
|
1437 |
+
return $this -> m_nMetric;
|
1438 |
+
}
|
1439 |
+
/**
|
1440 |
+
* @return string
|
1441 |
+
*/
|
1442 |
+
public function toXmlString()
|
1443 |
+
{
|
1444 |
+
$szXmlString = "<GatewayEntryPoint EntryPointURL=\"" . $this -> m_szEntryPointURL . "\" Metric=\"" . $this -> m_nMetric . "\" />";
|
1445 |
+
|
1446 |
+
return ($szXmlString);
|
1447 |
+
}
|
1448 |
+
|
1449 |
+
//constructor
|
1450 |
+
/**
|
1451 |
+
* @param string $szEntryPointURL
|
1452 |
+
* @param int $nMetric
|
1453 |
+
*/
|
1454 |
+
public function __construct($szEntryPointURL, $nMetric)
|
1455 |
+
{
|
1456 |
+
$this -> m_szEntryPointURL = $szEntryPointURL;
|
1457 |
+
$this -> m_nMetric = $nMetric;
|
1458 |
+
}
|
1459 |
+
|
1460 |
+
}
|
1461 |
+
class GatewayEntryPointList
|
1462 |
+
{
|
1463 |
+
/**
|
1464 |
+
* @var GatewayEntryPoint[]
|
1465 |
+
*/
|
1466 |
+
private $m_lgepGatewayEntryPoint;
|
1467 |
+
|
1468 |
+
/**
|
1469 |
+
* @param int $nIndex
|
1470 |
+
* @return GatewayEntryPoint
|
1471 |
+
* @throws Exception
|
1472 |
+
*/
|
1473 |
+
public function getAt($nIndex)
|
1474 |
+
{
|
1475 |
+
if ($nIndex < 0 || $nIndex >= count($this -> m_lgepGatewayEntryPoint))
|
1476 |
+
{
|
1477 |
+
throw new Exception("Array index out of bounds");
|
1478 |
+
}
|
1479 |
+
|
1480 |
+
return $this -> m_lgepGatewayEntryPoint[$nIndex];
|
1481 |
+
}
|
1482 |
+
/**
|
1483 |
+
* @return int
|
1484 |
+
*/
|
1485 |
+
public function getCount()
|
1486 |
+
{
|
1487 |
+
return count($this -> m_lgepGatewayEntryPoint);
|
1488 |
+
}
|
1489 |
+
/**
|
1490 |
+
* @param string $GatewayEntrypointURL
|
1491 |
+
* @param int $nMetric
|
1492 |
+
*/
|
1493 |
+
public function add($GatewayEntrypointURL, $nMetric)
|
1494 |
+
{
|
1495 |
+
array_push($this -> m_lgepGatewayEntryPoint, new GatewayEntryPoint($GatewayEntrypointURL, $nMetric));
|
1496 |
+
}
|
1497 |
+
/**
|
1498 |
+
* @param string $szXmlString
|
1499 |
+
* @return GatewayEntryPointList
|
1500 |
+
* @throws Exception
|
1501 |
+
*/
|
1502 |
+
public static function fromXmlString($szXmlString)
|
1503 |
+
{
|
1504 |
+
$xpXmlParser = new XmlParser();
|
1505 |
+
|
1506 |
+
if (!$xpXmlParser -> parseBuffer($szXmlString))
|
1507 |
+
{
|
1508 |
+
throw new Exception("Could not parse response string");
|
1509 |
+
}
|
1510 |
+
else
|
1511 |
+
{
|
1512 |
+
// look to see if there are any gateway entry points
|
1513 |
+
$nCount = 0;
|
1514 |
+
$szXmlFormatString1 = "GatewayEntryPoint[";
|
1515 |
+
$szXmlFormatString2 = "]";
|
1516 |
+
$lgepGatewayEntryPoints = null;
|
1517 |
+
|
1518 |
+
while ($xpXmlParser -> getStringValue($szXmlFormatString1 . $nCount . $szXmlFormatString2 . ".EntryPointURL", $szEntryPointURL))
|
1519 |
+
{
|
1520 |
+
if (!$xpXmlParser -> getIntegerValue($szXmlFormatString1 . $nCount . $szXmlFormatString2 . ".Metric", $nMetric))
|
1521 |
+
{
|
1522 |
+
$nMetric = -1;
|
1523 |
+
}
|
1524 |
+
if ($lgepGatewayEntryPoints == null)
|
1525 |
+
{
|
1526 |
+
$lgepGatewayEntryPoints = new GatewayEntryPointList();
|
1527 |
+
}
|
1528 |
+
$lgepGatewayEntryPoints -> add($szEntryPointURL, $nMetric);
|
1529 |
+
$nCount++;
|
1530 |
+
}
|
1531 |
+
}
|
1532 |
+
return ($lgepGatewayEntryPoints);
|
1533 |
+
}
|
1534 |
+
/**
|
1535 |
+
* @return string
|
1536 |
+
* @throws Exception
|
1537 |
+
*/
|
1538 |
+
public function toXmlString()
|
1539 |
+
{
|
1540 |
+
$szXmlString = "<GatewayEntryPoints>";
|
1541 |
+
|
1542 |
+
for ($nCount = 0; $nCount < $this -> getCount(); $nCount++)
|
1543 |
+
{
|
1544 |
+
$szXmlString = $szXmlString . $this -> getAt($nCount) -> toXmlString();
|
1545 |
+
}
|
1546 |
+
$szXmlString = $szXmlString . "</GatewayEntryPoints>";
|
1547 |
+
|
1548 |
+
return ($szXmlString);
|
1549 |
+
}
|
1550 |
+
|
1551 |
+
//constructor
|
1552 |
+
public function __construct()
|
1553 |
+
{
|
1554 |
+
$this -> m_lgepGatewayEntryPoint = array();
|
1555 |
+
}
|
1556 |
+
|
1557 |
+
}
|
1558 |
+
class PreviousTransactionResult
|
1559 |
+
{
|
1560 |
+
/**
|
1561 |
+
* @var NullableInt
|
1562 |
+
*/
|
1563 |
+
private $m_nStatusCode;
|
1564 |
+
/**
|
1565 |
+
* @var string
|
1566 |
+
*/
|
1567 |
+
private $m_szMessage;
|
1568 |
+
|
1569 |
+
/**
|
1570 |
+
* @return NullableInt
|
1571 |
+
*/
|
1572 |
+
function getStatusCode()
|
1573 |
+
{
|
1574 |
+
return $this -> m_nStatusCode;
|
1575 |
+
}
|
1576 |
+
/**
|
1577 |
+
* @return string
|
1578 |
+
*/
|
1579 |
+
function getMessage()
|
1580 |
+
{
|
1581 |
+
return $this -> m_szMessage;
|
1582 |
+
}
|
1583 |
+
|
1584 |
+
/**
|
1585 |
+
* @param NullableInt $nStatusCode
|
1586 |
+
* @param string $szMessage
|
1587 |
+
*/
|
1588 |
+
function __construct(NullableInt $nStatusCode = null, $szMessage)
|
1589 |
+
{
|
1590 |
+
$this -> m_nStatusCode = $nStatusCode;
|
1591 |
+
$this -> m_szMessage = $szMessage;
|
1592 |
+
}
|
1593 |
+
|
1594 |
+
}
|
1595 |
+
class GatewayOutput
|
1596 |
+
{
|
1597 |
+
/**
|
1598 |
+
* @var int
|
1599 |
+
*/
|
1600 |
+
private $m_nStatusCode;
|
1601 |
+
/**
|
1602 |
+
* @var string
|
1603 |
+
*/
|
1604 |
+
private $m_szMessage;
|
1605 |
+
/**
|
1606 |
+
* @var StringList
|
1607 |
+
*/
|
1608 |
+
private $m_lszErrorMessages;
|
1609 |
+
|
1610 |
+
/**
|
1611 |
+
* @return int
|
1612 |
+
*/
|
1613 |
+
public function getStatusCode()
|
1614 |
+
{
|
1615 |
+
return $this -> m_nStatusCode;
|
1616 |
+
}
|
1617 |
+
/**
|
1618 |
+
* @return string
|
1619 |
+
*/
|
1620 |
+
public function getMessage()
|
1621 |
+
{
|
1622 |
+
return $this -> m_szMessage;
|
1623 |
+
}
|
1624 |
+
/**
|
1625 |
+
* @return StringList
|
1626 |
+
*/
|
1627 |
+
public function getErrorMessages()
|
1628 |
+
{
|
1629 |
+
return $this -> m_lszErrorMessages;
|
1630 |
+
}
|
1631 |
+
|
1632 |
+
//constructor
|
1633 |
+
/**
|
1634 |
+
* @param int $nStatusCode
|
1635 |
+
* @param string $szMessage
|
1636 |
+
* @param StringList $lszErrorMessages
|
1637 |
+
*/
|
1638 |
+
public function __construct($nStatusCode, $szMessage, StringList $lszErrorMessages = null)
|
1639 |
+
{
|
1640 |
+
$this -> m_nStatusCode = $nStatusCode;
|
1641 |
+
$this -> m_szMessage = $szMessage;
|
1642 |
+
$this -> m_lszErrorMessages = $lszErrorMessages;
|
1643 |
+
}
|
1644 |
+
|
1645 |
+
}
|
1646 |
+
class PaymentMessageGatewayOutput extends GatewayOutput
|
1647 |
+
{
|
1648 |
+
/**
|
1649 |
+
* @var PreviousTransactionResult
|
1650 |
+
*/
|
1651 |
+
private $m_ptdPreviousTransactionResult;
|
1652 |
+
/**
|
1653 |
+
* @var NullableBool
|
1654 |
+
*/
|
1655 |
+
private $m_boAuthorisationAttempted;
|
1656 |
+
|
1657 |
+
/**
|
1658 |
+
* @return PreviousTransactionResult
|
1659 |
+
*/
|
1660 |
+
public function getPreviousTransactionResult()
|
1661 |
+
{
|
1662 |
+
return $this -> m_ptdPreviousTransactionResult;
|
1663 |
+
}
|
1664 |
+
/**
|
1665 |
+
* @return NullableBool
|
1666 |
+
*/
|
1667 |
+
public function getAuthorisationAttempted()
|
1668 |
+
{
|
1669 |
+
return $this -> m_boAuthorisationAttempted;
|
1670 |
+
}
|
1671 |
+
|
1672 |
+
//constructor
|
1673 |
+
/**
|
1674 |
+
* @param int $nStatusCode
|
1675 |
+
* @param string $szMessage
|
1676 |
+
* @param NullableBool $boAuthorisationAttempted
|
1677 |
+
* @param PreviousTransactionResult $ptdPreviousTransactionResult
|
1678 |
+
* @param StringList $lszErrorMessages
|
1679 |
+
*/
|
1680 |
+
public function __construct($nStatusCode, $szMessage, NullableBool $boAuthorisationAttempted = null, PreviousTransactionResult $ptdPreviousTransactionResult = null, StringList $lszErrorMessages = null)
|
1681 |
+
{
|
1682 |
+
parent::__construct($nStatusCode, $szMessage, $lszErrorMessages);
|
1683 |
+
$this -> m_boAuthorisationAttempted = $boAuthorisationAttempted;
|
1684 |
+
$this -> m_ptdPreviousTransactionResult = $ptdPreviousTransactionResult;
|
1685 |
+
}
|
1686 |
+
|
1687 |
+
}
|
1688 |
+
class CardDetailsTransactionResult extends PaymentMessageGatewayOutput
|
1689 |
+
{
|
1690 |
+
/**
|
1691 |
+
* @param int $nStatusCode
|
1692 |
+
* @param string $szMessage
|
1693 |
+
* @param NullableBool $boAuthorisationAttempted
|
1694 |
+
* @param PreviousTransactionResult $ptdPreviousTransactionResult
|
1695 |
+
* @param StringList $lszErrorMessages
|
1696 |
+
*/
|
1697 |
+
public function __construct($nStatusCode, $szMessage, NullableBool $boAuthorisationAttempted = null, PreviousTransactionResult $ptdPreviousTransactionResult = null, StringList $lszErrorMessages = null)
|
1698 |
+
{
|
1699 |
+
parent::__construct($nStatusCode, $szMessage, $boAuthorisationAttempted, $ptdPreviousTransactionResult, $lszErrorMessages);
|
1700 |
+
}
|
1701 |
+
|
1702 |
+
}
|
1703 |
+
class CrossReferenceTransactionResult extends PaymentMessageGatewayOutput
|
1704 |
+
{
|
1705 |
+
/**
|
1706 |
+
* @param int $nStatusCode
|
1707 |
+
* @param string $szMessage
|
1708 |
+
* @param NullableBool $boAuthorisationAttempted
|
1709 |
+
* @param PreviousTransactionResult $ptdPreviousTransactionResult
|
1710 |
+
* @param StringList $lszErrorMessages
|
1711 |
+
*/
|
1712 |
+
public function __construct($nStatusCode, $szMessage, NullableBool $boAuthorisationAttempted = null, PreviousTransactionResult $ptdPreviousTransactionResult = null, StringList $lszErrorMessages = null)
|
1713 |
+
{
|
1714 |
+
parent::__construct($nStatusCode, $szMessage, $boAuthorisationAttempted, $ptdPreviousTransactionResult, $lszErrorMessages);
|
1715 |
+
}
|
1716 |
+
|
1717 |
+
}
|
1718 |
+
class ThreeDSecureTransactionResult extends PaymentMessageGatewayOutput
|
1719 |
+
{
|
1720 |
+
/**
|
1721 |
+
* @param int $nStatusCode
|
1722 |
+
* @param string $szMessage
|
1723 |
+
* @param NullableBool $boAuthorisationAttempted
|
1724 |
+
* @param PreviousTransactionResult $ptdPreviousTransactionResult
|
1725 |
+
* @param StringList $lszErrorMessages
|
1726 |
+
*/
|
1727 |
+
public function __construct($nStatusCode, $szMessage, NullableBool $boAuthorisationAttempted = null, PreviousTransactionResult $ptdPreviousTransactionResult = null, StringList $lszErrorMessages = null)
|
1728 |
+
{
|
1729 |
+
parent::__construct($nStatusCode, $szMessage, $boAuthorisationAttempted, $ptdPreviousTransactionResult, $lszErrorMessages);
|
1730 |
+
}
|
1731 |
+
|
1732 |
+
}
|
1733 |
+
class GetGatewayEntryPointsResult extends GatewayOutput
|
1734 |
+
{
|
1735 |
+
/**
|
1736 |
+
* @param int $nStatusCode
|
1737 |
+
* @param string $szMessage
|
1738 |
+
* @param StringList $lszErrorMessages
|
1739 |
+
*/
|
1740 |
+
public function __construct($nStatusCode, $szMessage, StringList $lszErrorMessages = null)
|
1741 |
+
{
|
1742 |
+
parent::__construct($nStatusCode, $szMessage, $lszErrorMessages);
|
1743 |
+
}
|
1744 |
+
|
1745 |
+
}
|
1746 |
+
class GetCardTypeResult extends GatewayOutput
|
1747 |
+
{
|
1748 |
+
/**
|
1749 |
+
* @param int $nStatusCode
|
1750 |
+
* @param string $szMessage
|
1751 |
+
* @param StringList $lszErrorMessages
|
1752 |
+
*/
|
1753 |
+
public function __construct($nStatusCode, $szMessage, StringList $lszErrorMessages = null)
|
1754 |
+
{
|
1755 |
+
parent::__construct($nStatusCode, $szMessage, $lszErrorMessages);
|
1756 |
+
}
|
1757 |
+
|
1758 |
+
}
|
1759 |
+
class ThreeDSecureOutputData
|
1760 |
+
{
|
1761 |
+
/**
|
1762 |
+
* @var string
|
1763 |
+
*/
|
1764 |
+
private $m_szPaREQ;
|
1765 |
+
/**
|
1766 |
+
* @var string
|
1767 |
+
*/
|
1768 |
+
private $m_szACSURL;
|
1769 |
+
|
1770 |
+
/**
|
1771 |
+
* @return string
|
1772 |
+
*/
|
1773 |
+
public function getPaREQ()
|
1774 |
+
{
|
1775 |
+
return $this -> m_szPaREQ;
|
1776 |
+
}
|
1777 |
+
/**
|
1778 |
+
* @return string
|
1779 |
+
*/
|
1780 |
+
public function getACSURL()
|
1781 |
+
{
|
1782 |
+
return ($this -> m_szACSURL);
|
1783 |
+
}
|
1784 |
+
|
1785 |
+
//constructor
|
1786 |
+
/**
|
1787 |
+
* @param string $szPaREQ
|
1788 |
+
* @param string $szACSURL
|
1789 |
+
*/
|
1790 |
+
public function __construct($szPaREQ, $szACSURL)
|
1791 |
+
{
|
1792 |
+
$this -> m_szPaREQ = $szPaREQ;
|
1793 |
+
$this -> m_szACSURL = $szACSURL;
|
1794 |
+
}
|
1795 |
+
|
1796 |
+
}
|
1797 |
+
class GetGatewayEntryPointsOutputData extends BaseOutputData
|
1798 |
+
{
|
1799 |
+
//constructor
|
1800 |
+
function __construct(GatewayEntryPointList $lgepGatewayEntryPoints = null)
|
1801 |
+
{
|
1802 |
+
parent::__construct($lgepGatewayEntryPoints);
|
1803 |
+
}
|
1804 |
+
|
1805 |
+
}
|
1806 |
+
class TransactionOutputData extends BaseOutputData
|
1807 |
+
{
|
1808 |
+
/**
|
1809 |
+
* @var string
|
1810 |
+
*/
|
1811 |
+
private $m_szCrossReference;
|
1812 |
+
/**
|
1813 |
+
* @var string
|
1814 |
+
*/
|
1815 |
+
private $m_szAuthCode;
|
1816 |
+
/**
|
1817 |
+
* @var string
|
1818 |
+
*/
|
1819 |
+
private $m_szAddressNumericCheckResult;
|
1820 |
+
/**
|
1821 |
+
* @var string
|
1822 |
+
*/
|
1823 |
+
private $m_szPostCodeCheckResult;
|
1824 |
+
/**
|
1825 |
+
* @var string
|
1826 |
+
*/
|
1827 |
+
private $m_szThreeDSecureAuthenticationCheckResult;
|
1828 |
+
/**
|
1829 |
+
* @var string
|
1830 |
+
*/
|
1831 |
+
private $m_szCV2CheckResult;
|
1832 |
+
/**
|
1833 |
+
* @var CardTypeData
|
1834 |
+
*/
|
1835 |
+
private $m_ctdCardTypeData;
|
1836 |
+
/**
|
1837 |
+
* @var NullableInt
|
1838 |
+
*/
|
1839 |
+
private $m_nAmountReceived;
|
1840 |
+
/**
|
1841 |
+
* @var ThreeDSecureOutputData
|
1842 |
+
*/
|
1843 |
+
private $m_tdsodThreeDSecureOutputData;
|
1844 |
+
/**
|
1845 |
+
* @var GenericVariableList
|
1846 |
+
*/
|
1847 |
+
private $m_lgvCustomVariables;
|
1848 |
+
/**
|
1849 |
+
* @var GatewayEntryPointList
|
1850 |
+
*/
|
1851 |
+
private $m_gepodGatewayEntryPointsOutputData;
|
1852 |
+
|
1853 |
+
/**
|
1854 |
+
* @return string
|
1855 |
+
*/
|
1856 |
+
public function getCrossReference()
|
1857 |
+
{
|
1858 |
+
return $this -> m_szCrossReference;
|
1859 |
+
}
|
1860 |
+
/**
|
1861 |
+
* @return string
|
1862 |
+
*/
|
1863 |
+
public function getAuthCode()
|
1864 |
+
{
|
1865 |
+
return $this -> m_szAuthCode;
|
1866 |
+
}
|
1867 |
+
/**
|
1868 |
+
* @return string
|
1869 |
+
*/
|
1870 |
+
public function getAddressNumericCheckResult()
|
1871 |
+
{
|
1872 |
+
return $this -> m_szAddressNumericCheckResult;
|
1873 |
+
}
|
1874 |
+
/**
|
1875 |
+
* @return string
|
1876 |
+
*/
|
1877 |
+
public function getPostCodeCheckResult()
|
1878 |
+
{
|
1879 |
+
return $this -> m_szPostCodeCheckResult;
|
1880 |
+
}
|
1881 |
+
/**
|
1882 |
+
* @return string
|
1883 |
+
*/
|
1884 |
+
public function getThreeDSecureAuthenticationCheckResult()
|
1885 |
+
{
|
1886 |
+
return $this -> m_szThreeDSecureAuthenticationCheckResult;
|
1887 |
+
}
|
1888 |
+
/**
|
1889 |
+
* @return string
|
1890 |
+
*/
|
1891 |
+
public function getCV2CheckResult()
|
1892 |
+
{
|
1893 |
+
return $this -> m_szCV2CheckResult;
|
1894 |
+
}
|
1895 |
+
/**
|
1896 |
+
* @return CardTypeData
|
1897 |
+
*/
|
1898 |
+
public function getCardTypeData()
|
1899 |
+
{
|
1900 |
+
return $this -> m_ctdCardTypeData;
|
1901 |
+
}
|
1902 |
+
/**
|
1903 |
+
* @return NullableInt
|
1904 |
+
*/
|
1905 |
+
public function getAmountReceived()
|
1906 |
+
{
|
1907 |
+
return $this -> m_nAmountReceived;
|
1908 |
+
}
|
1909 |
+
/**
|
1910 |
+
* @return ThreeDSecureOutputData
|
1911 |
+
*/
|
1912 |
+
public function getThreeDSecureOutputData()
|
1913 |
+
{
|
1914 |
+
return $this -> m_tdsodThreeDSecureOutputData;
|
1915 |
+
}
|
1916 |
+
/**
|
1917 |
+
* @return GenericVariableList
|
1918 |
+
*/
|
1919 |
+
public function getCustomVariables()
|
1920 |
+
{
|
1921 |
+
return $this -> m_lgvCustomVariables;
|
1922 |
+
}
|
1923 |
+
/**
|
1924 |
+
* @return GatewayEntryPointList
|
1925 |
+
*/
|
1926 |
+
public function getGatewayEntryPoints()
|
1927 |
+
{
|
1928 |
+
return $this -> m_gepodGatewayEntryPointsOutputData;
|
1929 |
+
}
|
1930 |
+
|
1931 |
+
//constructor
|
1932 |
+
/**
|
1933 |
+
* @param GatewayEntryPointList $szCrossReference
|
1934 |
+
* @param string $szAuthCode
|
1935 |
+
* @param string $szAddressNumericCheckResult
|
1936 |
+
* @param string $szPostCodeCheckResult
|
1937 |
+
* @param string $szThreeDSecureAuthenticationCheckResult
|
1938 |
+
* @param string $szCV2CheckResult
|
1939 |
+
* @param CardTypeData $ctdCardTypeData
|
1940 |
+
* @param NullableInt $nAmountReceived
|
1941 |
+
* @param ThreeDSecureOutputData $tdsodThreeDSecureOutputData
|
1942 |
+
* @param GenericVariableList $lgvCustomVariables
|
1943 |
+
* @param GatewayEntryPointList $lgepGatewayEntryPoints
|
1944 |
+
*/
|
1945 |
+
public function __construct($szCrossReference, $szAuthCode, $szAddressNumericCheckResult, $szPostCodeCheckResult, $szThreeDSecureAuthenticationCheckResult, $szCV2CheckResult, CardTypeData $ctdCardTypeData = null, NullableInt $nAmountReceived = null, ThreeDSecureOutputData $tdsodThreeDSecureOutputData = null, GenericVariableList $lgvCustomVariables = null, GatewayEntryPointList $lgepGatewayEntryPoints = null)
|
1946 |
+
{
|
1947 |
+
//first calling the parent constructor
|
1948 |
+
parent::__construct($lgepGatewayEntryPoints);
|
1949 |
+
|
1950 |
+
$this -> m_szCrossReference = $szCrossReference;
|
1951 |
+
$this -> m_szAuthCode = $szAuthCode;
|
1952 |
+
$this -> m_szAddressNumericCheckResult = $szAddressNumericCheckResult;
|
1953 |
+
$this -> m_szPostCodeCheckResult = $szPostCodeCheckResult;
|
1954 |
+
$this -> m_szThreeDSecureAuthenticationCheckResult = $szThreeDSecureAuthenticationCheckResult;
|
1955 |
+
$this -> m_szCV2CheckResult = $szCV2CheckResult;
|
1956 |
+
$this -> m_ctdCardTypeData = $ctdCardTypeData;
|
1957 |
+
$this -> m_nAmountReceived = $nAmountReceived;
|
1958 |
+
$this -> m_tdsodThreeDSecureOutputData = $tdsodThreeDSecureOutputData;
|
1959 |
+
$this -> m_lgvCustomVariables = $lgvCustomVariables;
|
1960 |
+
$this -> m_gepodGatewayEntryPointsOutputData = $lgepGatewayEntryPoints;
|
1961 |
+
}
|
1962 |
+
|
1963 |
+
}
|
1964 |
+
class GetCardTypeOutputData extends BaseOutputData
|
1965 |
+
{
|
1966 |
+
/**
|
1967 |
+
* @var CardTypeData
|
1968 |
+
*/
|
1969 |
+
private $m_ctdCardTypeData;
|
1970 |
+
|
1971 |
+
/**
|
1972 |
+
* @return CardTypeData
|
1973 |
+
*/
|
1974 |
+
public function getCardTypeData()
|
1975 |
+
{
|
1976 |
+
return $this -> m_ctdCardTypeData;
|
1977 |
+
}
|
1978 |
+
//constructor
|
1979 |
+
/**
|
1980 |
+
* @param CardTypeData $ctdCardTypeData
|
1981 |
+
* @param GatewayEntryPointList $lgepGatewayEntryPoints
|
1982 |
+
*/
|
1983 |
+
public function __construct(CardTypeData $ctdCardTypeData = null, GatewayEntryPointList $lgepGatewayEntryPoints = null)
|
1984 |
+
{
|
1985 |
+
parent::__construct($lgepGatewayEntryPoints);
|
1986 |
+
|
1987 |
+
$this -> m_ctdCardTypeData = $ctdCardTypeData;
|
1988 |
+
}
|
1989 |
+
|
1990 |
+
}
|
1991 |
+
class BaseOutputData
|
1992 |
+
{
|
1993 |
+
/**
|
1994 |
+
* @var GatewayEntryPointList
|
1995 |
+
*/
|
1996 |
+
private $m_lgepGatewayEntryPoints;
|
1997 |
+
|
1998 |
+
/**
|
1999 |
+
* @return GatewayEntryPointList
|
2000 |
+
*/
|
2001 |
+
public function getGatewayEntryPoints()
|
2002 |
+
{
|
2003 |
+
return $this -> m_lgepGatewayEntryPoints;
|
2004 |
+
}
|
2005 |
+
|
2006 |
+
//constructor
|
2007 |
+
/**
|
2008 |
+
* @param GatewayEntryPointList $lgepGatewayEntryPoints
|
2009 |
+
*/
|
2010 |
+
public function __construct(GatewayEntryPointList $lgepGatewayEntryPoints = null)
|
2011 |
+
{
|
2012 |
+
$this -> m_lgepGatewayEntryPoints = $lgepGatewayEntryPoints;
|
2013 |
+
}
|
2014 |
+
|
2015 |
+
}
|
2016 |
+
/********************/
|
2017 |
+
/* Gateway messages */
|
2018 |
+
/********************/
|
2019 |
+
class GetGatewayEntryPoints extends GatewayTransaction
|
2020 |
+
{
|
2021 |
+
/**
|
2022 |
+
* @param GetGatewayEntryPointsResult $ggeprGetGatewayEntryPointsResult Passed as reference
|
2023 |
+
* @param GetGatewayEntryPointsOutputData $ggepGetGatewayEntryPointsOutputData Passed as reference
|
2024 |
+
* @return bool
|
2025 |
+
* @throws Exception
|
2026 |
+
*/
|
2027 |
+
function processTransaction(GetGatewayEntryPointsResult &$ggeprGetGatewayEntryPointsResult = null, GetGatewayEntryPointsOutputData &$ggepGetGatewayEntryPointsOutputData = null)
|
2028 |
+
{
|
2029 |
+
$boTransactionSubmitted = false;
|
2030 |
+
$sSOAPClient;
|
2031 |
+
$lgepGatewayEntryPoints;
|
2032 |
+
|
2033 |
+
$ggepGetGatewayEntryPointsOutputData = null;
|
2034 |
+
$goGatewayOutput = null;
|
2035 |
+
|
2036 |
+
$sSOAPClient = new SOAP("GetGatewayEntryPoints", GatewayTransaction::getSOAPNamespace());
|
2037 |
+
|
2038 |
+
$boTransactionSubmitted = GatewayTransaction::processTransactionBase($sSOAPClient, "GetGatewayEntryPointsMessage", "GetGatewayEntryPointsResult", "GetGatewayEntryPointsOutputData", $goGatewayOutput, $lgepGatewayEntryPoints);
|
2039 |
+
|
2040 |
+
if ($boTransactionSubmitted)
|
2041 |
+
{
|
2042 |
+
$ggeprGetGatewayEntryPointsResult = $goGatewayOutput;
|
2043 |
+
|
2044 |
+
$ggepGetGatewayEntryPointsOutputData = new GetGatewayEntryPointsOutputData($lgepGatewayEntryPoints);
|
2045 |
+
}
|
2046 |
+
|
2047 |
+
return $boTransactionSubmitted;
|
2048 |
+
}
|
2049 |
+
|
2050 |
+
//constructor
|
2051 |
+
/**
|
2052 |
+
* @param RequestGatewayEntryPointList $lrgepRequestGatewayEntryPoints
|
2053 |
+
* @param int $nRetryAttempts
|
2054 |
+
* @param NullableInt $nTimeout
|
2055 |
+
*/
|
2056 |
+
public function __construct(RequestGatewayEntryPointList $lrgepRequestGatewayEntryPoints = null, $nRetryAttempts = 1, NullableInt $nTimeout = null)
|
2057 |
+
{
|
2058 |
+
if ($nRetryAttempts == null && $nTimeout == null)
|
2059 |
+
{
|
2060 |
+
GatewayTransaction::__construct($lrgepRequestGatewayEntryPoints, 1, null);
|
2061 |
+
}
|
2062 |
+
else
|
2063 |
+
{
|
2064 |
+
GatewayTransaction::__construct($lrgepRequestGatewayEntryPoints, $nRetryAttempts, $nTimeout);
|
2065 |
+
}
|
2066 |
+
}
|
2067 |
+
|
2068 |
+
}
|
2069 |
+
class CardDetailsTransaction extends GatewayTransaction
|
2070 |
+
{
|
2071 |
+
/**
|
2072 |
+
* @var TransactionDetails
|
2073 |
+
*/
|
2074 |
+
private $m_tdTransactionDetails;
|
2075 |
+
/**
|
2076 |
+
* @var CardDetails
|
2077 |
+
*/
|
2078 |
+
private $m_cdCardDetails;
|
2079 |
+
/**
|
2080 |
+
* @var CustomerDetails
|
2081 |
+
*/
|
2082 |
+
private $m_cdCustomerDetails;
|
2083 |
+
|
2084 |
+
/**
|
2085 |
+
* @return TransactionDetails
|
2086 |
+
*/
|
2087 |
+
public function getTransactionDetails()
|
2088 |
+
{
|
2089 |
+
return $this -> m_tdTransactionDetails;
|
2090 |
+
}
|
2091 |
+
/**
|
2092 |
+
* @return CardDetails
|
2093 |
+
*/
|
2094 |
+
public function getCardDetails()
|
2095 |
+
{
|
2096 |
+
return $this -> m_cdCardDetails;
|
2097 |
+
}
|
2098 |
+
/**
|
2099 |
+
* @return CustomerDetails
|
2100 |
+
*/
|
2101 |
+
public function getCustomerDetails()
|
2102 |
+
{
|
2103 |
+
return $this -> m_cdCustomerDetails;
|
2104 |
+
}
|
2105 |
+
/**
|
2106 |
+
* @param CardDetailsTransactionResult $cdtrCardDetailsTransactionResult Passed by reference
|
2107 |
+
* @param TransactionOutputData $todTransactionOutputData Passed by reference
|
2108 |
+
* @return bool
|
2109 |
+
* @throws Exception
|
2110 |
+
*/
|
2111 |
+
public function processTransaction(CardDetailsTransactionResult &$cdtrCardDetailsTransactionResult = null, TransactionOutputData &$todTransactionOutputData = null)
|
2112 |
+
{
|
2113 |
+
$boTransactionSubmitted = false;
|
2114 |
+
$sSOAPClient;
|
2115 |
+
$lgepGatewayEntryPoints = null;
|
2116 |
+
$goGatewayOutput = null;
|
2117 |
+
|
2118 |
+
$todTransactionOutputData = null;
|
2119 |
+
$cdtrCardDetailsTransactionResult = null;
|
2120 |
+
|
2121 |
+
$sSOAPClient = new SOAP("CardDetailsTransaction", parent::getSOAPNamespace());
|
2122 |
+
|
2123 |
+
// transaction details
|
2124 |
+
if ($this -> m_tdTransactionDetails != null)
|
2125 |
+
{
|
2126 |
+
if ($this -> m_tdTransactionDetails -> getAmount() != null)
|
2127 |
+
{
|
2128 |
+
if ($this -> m_tdTransactionDetails -> getAmount() -> getHasValue())
|
2129 |
+
{
|
2130 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails", "Amount", (string)$this -> m_tdTransactionDetails -> getAmount() -> getValue());
|
2131 |
+
}
|
2132 |
+
}
|
2133 |
+
if ($this -> m_tdTransactionDetails -> getCurrencyCode() != null)
|
2134 |
+
{
|
2135 |
+
if ($this -> m_tdTransactionDetails -> getCurrencyCode() -> getHasValue())
|
2136 |
+
{
|
2137 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails", "CurrencyCode", (string)$this -> m_tdTransactionDetails -> getCurrencyCode() -> getValue());
|
2138 |
+
}
|
2139 |
+
}
|
2140 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getCaptureEnvironment()))
|
2141 |
+
{
|
2142 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails", "CaptureEnvironment", $this -> m_tdTransactionDetails -> getCaptureEnvironment());
|
2143 |
+
}
|
2144 |
+
if ($this -> m_tdTransactionDetails -> getContinuousAuthority() != null)
|
2145 |
+
{
|
2146 |
+
if ($this -> m_tdTransactionDetails -> getContinuousAuthority() -> getHasValue())
|
2147 |
+
{
|
2148 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails", "ContinuousAuthority", (string)$this -> m_tdTransactionDetails -> getContinuousAuthority() -> getValue());
|
2149 |
+
}
|
2150 |
+
}
|
2151 |
+
if ($this -> m_tdTransactionDetails -> getMessageDetails() != null)
|
2152 |
+
{
|
2153 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getMessageDetails() -> getClientReference()))
|
2154 |
+
{
|
2155 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails.MessageDetails", "ClientReference", $this -> m_tdTransactionDetails -> getMessageDetails() -> getClientReference());
|
2156 |
+
}
|
2157 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getMessageDetails() -> getTransactionType()))
|
2158 |
+
{
|
2159 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails.MessageDetails", "TransactionType", $this -> m_tdTransactionDetails -> getMessageDetails() -> getTransactionType());
|
2160 |
+
}
|
2161 |
+
}
|
2162 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() != null)
|
2163 |
+
{
|
2164 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getAuthCode()))
|
2165 |
+
{
|
2166 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.AuthCode", $this -> m_tdTransactionDetails -> getTransactionControl() -> getAuthCode());
|
2167 |
+
}
|
2168 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecureOverridePolicy() != null)
|
2169 |
+
{
|
2170 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecureOverridePolicy() -> getHasValue())
|
2171 |
+
{
|
2172 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.ThreeDSecureOverridePolicy", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecureOverridePolicy() -> getValue()));
|
2173 |
+
}
|
2174 |
+
}
|
2175 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getAVSOverridePolicy()))
|
2176 |
+
{
|
2177 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.AVSOverridePolicy", $this -> m_tdTransactionDetails -> getTransactionControl() -> getAVSOverridePolicy());
|
2178 |
+
}
|
2179 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getCV2OverridePolicy()))
|
2180 |
+
{
|
2181 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.CV2OverridePolicy", ($this -> m_tdTransactionDetails -> getTransactionControl() -> getCV2OverridePolicy()));
|
2182 |
+
}
|
2183 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getDuplicateDelay() != null)
|
2184 |
+
{
|
2185 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getDuplicateDelay() -> getHasValue())
|
2186 |
+
{
|
2187 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.DuplicateDelay", (string)$this -> m_tdTransactionDetails -> getTransactionControl() -> getDuplicateDelay() -> getValue());
|
2188 |
+
}
|
2189 |
+
}
|
2190 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCardType() != null)
|
2191 |
+
{
|
2192 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCardType() -> getHasValue())
|
2193 |
+
{
|
2194 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.EchoCardType", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCardType() -> getValue()));
|
2195 |
+
}
|
2196 |
+
}
|
2197 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() != null)
|
2198 |
+
{
|
2199 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() -> getHasValue())
|
2200 |
+
{
|
2201 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.EchoAVSCheckResult", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() -> getValue()));
|
2202 |
+
}
|
2203 |
+
}
|
2204 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() != null)
|
2205 |
+
{
|
2206 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() -> getHasValue())
|
2207 |
+
{
|
2208 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.EchoAVSCheckResult", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() -> getValue()));
|
2209 |
+
}
|
2210 |
+
}
|
2211 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCV2CheckResult() != null)
|
2212 |
+
{
|
2213 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCV2CheckResult() -> getHasValue())
|
2214 |
+
{
|
2215 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.EchoCV2CheckResult", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCV2CheckResult() -> getValue()));
|
2216 |
+
}
|
2217 |
+
}
|
2218 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAmountReceived() != null)
|
2219 |
+
{
|
2220 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAmountReceived() -> getHasValue())
|
2221 |
+
{
|
2222 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.EchoAmountReceived", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAmountReceived() -> getValue()));
|
2223 |
+
}
|
2224 |
+
}
|
2225 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecurePassthroughData() != null)
|
2226 |
+
{
|
2227 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecurePassthroughData() -> getEnrolmentStatus()))
|
2228 |
+
{
|
2229 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails.TransactionControl.ThreeDSecurePassthroughData", "EnrolmentStatus", $this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecurePassthroughData() -> getEnrolmentStatus());
|
2230 |
+
}
|
2231 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecurePassthroughData() -> getAuthenticationStatus()))
|
2232 |
+
{
|
2233 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails.TransactionControl.ThreeDSecurePassthroughData", "AuthenticationStatus", $this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecurePassthroughData() -> getAuthenticationStatus());
|
2234 |
+
}
|
2235 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecurePassthroughData() -> getElectronicCommerceIndicator()))
|
2236 |
+
{
|
2237 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.ThreeDSecurePassthroughData.ElectronicCommerceIndicator", $this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecurePassthroughData() -> getElectronicCommerceIndicator());
|
2238 |
+
}
|
2239 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecurePassthroughData() -> getAuthenticationValue()))
|
2240 |
+
{
|
2241 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.ThreeDSecurePassthroughData.AuthenticationValue", $this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecurePassthroughData() -> getAuthenticationValue());
|
2242 |
+
}
|
2243 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecurePassthroughData() -> getTransactionIdentifier()))
|
2244 |
+
{
|
2245 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.ThreeDSecurePassthroughData.TransactionIdentifier", $this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecurePassthroughData() -> getTransactionIdentifier());
|
2246 |
+
}
|
2247 |
+
}
|
2248 |
+
}
|
2249 |
+
if ($this -> m_tdTransactionDetails -> getThreeDSecureBrowserDetails() != null)
|
2250 |
+
{
|
2251 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getThreeDSecureBrowserDetails() -> getAcceptHeaders()))
|
2252 |
+
{
|
2253 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.ThreeDSecureBrowserDetails.AcceptHeaders", $this -> m_tdTransactionDetails -> getThreeDSecureBrowserDetails() -> getAcceptHeaders());
|
2254 |
+
}
|
2255 |
+
if ($this -> m_tdTransactionDetails -> getThreeDSecureBrowserDetails() -> getDeviceCategory() != null)
|
2256 |
+
{
|
2257 |
+
if ($this -> m_tdTransactionDetails -> getThreeDSecureBrowserDetails() -> getDeviceCategory() -> getHasValue())
|
2258 |
+
{
|
2259 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails.ThreeDSecureBrowserDetails", "DeviceCategory", (string)$this -> m_tdTransactionDetails -> getThreeDSecureBrowserDetails() -> getDeviceCategory() -> getValue());
|
2260 |
+
}
|
2261 |
+
}
|
2262 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getThreeDSecureBrowserDetails() -> getUserAgent()))
|
2263 |
+
{
|
2264 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.ThreeDSecureBrowserDetails.UserAgent", $this -> m_tdTransactionDetails -> getThreeDSecureBrowserDetails() -> getUserAgent());
|
2265 |
+
}
|
2266 |
+
}
|
2267 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getOrderID()))
|
2268 |
+
{
|
2269 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.OrderID", $this -> m_tdTransactionDetails -> getOrderID());
|
2270 |
+
}
|
2271 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getOrderDescription()))
|
2272 |
+
{
|
2273 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.OrderDescription", $this -> m_tdTransactionDetails -> getOrderDescription());
|
2274 |
+
}
|
2275 |
+
}
|
2276 |
+
// card details
|
2277 |
+
if ($this -> m_cdCardDetails != null)
|
2278 |
+
{
|
2279 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCardDetails -> getCardName()))
|
2280 |
+
{
|
2281 |
+
$sSOAPClient -> addParam("PaymentMessage.CardDetails.CardName", $this -> m_cdCardDetails -> getCardName());
|
2282 |
+
}
|
2283 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCardDetails -> getCV2()))
|
2284 |
+
{
|
2285 |
+
$sSOAPClient -> addParam("PaymentMessage.CardDetails.CV2", $this -> m_cdCardDetails -> getCV2());
|
2286 |
+
}
|
2287 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCardDetails -> getCardNumber()))
|
2288 |
+
{
|
2289 |
+
$sSOAPClient -> addParam("PaymentMessage.CardDetails.CardNumber", $this -> m_cdCardDetails -> getCardNumber());
|
2290 |
+
}
|
2291 |
+
if ($this -> m_cdCardDetails -> getExpiryDate() != null)
|
2292 |
+
{
|
2293 |
+
if ($this -> m_cdCardDetails -> getExpiryDate() -> getMonth() != null)
|
2294 |
+
{
|
2295 |
+
if ($this -> m_cdCardDetails -> getExpiryDate() -> getMonth() -> getHasValue())
|
2296 |
+
{
|
2297 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.CardDetails.ExpiryDate", "Month", (string)$this -> m_cdCardDetails -> getExpiryDate() -> getMonth() -> getValue());
|
2298 |
+
}
|
2299 |
+
}
|
2300 |
+
if ($this -> m_cdCardDetails -> getExpiryDate() -> getYear() != null)
|
2301 |
+
{
|
2302 |
+
if ($this -> m_cdCardDetails -> getExpiryDate() -> getYear() -> getHasValue())
|
2303 |
+
{
|
2304 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.CardDetails.ExpiryDate", "Year", (string)$this -> m_cdCardDetails -> getExpiryDate() -> getYear() -> getValue());
|
2305 |
+
}
|
2306 |
+
}
|
2307 |
+
}
|
2308 |
+
if ($this -> m_cdCardDetails -> getStartDate() != null)
|
2309 |
+
{
|
2310 |
+
if ($this -> m_cdCardDetails -> getStartDate() -> getMonth() != null)
|
2311 |
+
{
|
2312 |
+
if ($this -> m_cdCardDetails -> getStartDate() -> getMonth() -> getHasValue())
|
2313 |
+
{
|
2314 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.CardDetails.StartDate", "Month", (string)$this -> m_cdCardDetails -> getStartDate() -> getMonth() -> getValue());
|
2315 |
+
}
|
2316 |
+
}
|
2317 |
+
if ($this -> m_cdCardDetails -> getStartDate() -> getYear() != null)
|
2318 |
+
{
|
2319 |
+
if ($this -> m_cdCardDetails -> getStartDate() -> getYear() -> getHasValue())
|
2320 |
+
{
|
2321 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.CardDetails.StartDate", "Year", (string)$this -> m_cdCardDetails -> getStartDate() -> getYear() -> getValue());
|
2322 |
+
}
|
2323 |
+
}
|
2324 |
+
}
|
2325 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCardDetails -> getIssueNumber()))
|
2326 |
+
{
|
2327 |
+
$sSOAPClient -> addParam("PaymentMessage.CardDetails.IssueNumber", $this -> m_cdCardDetails -> getIssueNumber());
|
2328 |
+
}
|
2329 |
+
}
|
2330 |
+
// customer details
|
2331 |
+
if ($this -> m_cdCustomerDetails != null)
|
2332 |
+
{
|
2333 |
+
if ($this -> m_cdCustomerDetails -> getBillingAddress() != null)
|
2334 |
+
{
|
2335 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress1()))
|
2336 |
+
{
|
2337 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.Address1", $this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress1());
|
2338 |
+
}
|
2339 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress2()))
|
2340 |
+
{
|
2341 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.Address2", $this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress2());
|
2342 |
+
}
|
2343 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress3()))
|
2344 |
+
{
|
2345 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.Address3", $this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress3());
|
2346 |
+
}
|
2347 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress4()))
|
2348 |
+
{
|
2349 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.Address4", $this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress4());
|
2350 |
+
}
|
2351 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getCity()))
|
2352 |
+
{
|
2353 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.City", $this -> m_cdCustomerDetails -> getBillingAddress() -> getCity());
|
2354 |
+
}
|
2355 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getState()))
|
2356 |
+
{
|
2357 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.State", $this -> m_cdCustomerDetails -> getBillingAddress() -> getState());
|
2358 |
+
}
|
2359 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getPostCode()))
|
2360 |
+
{
|
2361 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.PostCode", $this -> m_cdCustomerDetails -> getBillingAddress() -> getPostCode());
|
2362 |
+
}
|
2363 |
+
if ($this -> m_cdCustomerDetails -> getBillingAddress() -> getCountryCode() != null)
|
2364 |
+
{
|
2365 |
+
if ($this -> m_cdCustomerDetails -> getBillingAddress() -> getCountryCode() -> getHasValue())
|
2366 |
+
{
|
2367 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.CountryCode", (string)$this -> m_cdCustomerDetails -> getBillingAddress() -> getCountryCode() -> getValue());
|
2368 |
+
}
|
2369 |
+
}
|
2370 |
+
}
|
2371 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getEmailAddress()))
|
2372 |
+
{
|
2373 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.EmailAddress", $this -> m_cdCustomerDetails -> getEmailAddress());
|
2374 |
+
}
|
2375 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getPhoneNumber()))
|
2376 |
+
{
|
2377 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.PhoneNumber", $this -> m_cdCustomerDetails -> getPhoneNumber());
|
2378 |
+
}
|
2379 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getCustomerIPAddress()))
|
2380 |
+
{
|
2381 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.CustomerIPAddress", $this -> m_cdCustomerDetails -> getCustomerIPAddress());
|
2382 |
+
}
|
2383 |
+
}
|
2384 |
+
|
2385 |
+
$boTransactionSubmitted = GatewayTransaction::processTransactionBase($sSOAPClient, "PaymentMessage", "CardDetailsTransactionResult", "TransactionOutputData", $goGatewayOutput, $lgepGatewayEntryPoints);
|
2386 |
+
|
2387 |
+
if ($boTransactionSubmitted)
|
2388 |
+
{
|
2389 |
+
$cdtrCardDetailsTransactionResult = SharedFunctionsPaymentSystemShared::getPaymentMessageGatewayOutput($sSOAPClient -> getXmlTag(), "CardDetailsTransactionResult", $goGatewayOutput);
|
2390 |
+
|
2391 |
+
$todTransactionOutputData = SharedFunctionsPaymentSystemShared::getTransactionOutputData($sSOAPClient -> getXmlTag(), $lgepGatewayEntryPoints);
|
2392 |
+
}
|
2393 |
+
|
2394 |
+
return ($boTransactionSubmitted);
|
2395 |
+
}
|
2396 |
+
|
2397 |
+
/**
|
2398 |
+
* @param RequestGatewayEntryPointList $lrgepRequestGatewayEntryPoints
|
2399 |
+
* @param int $nRetryAttempts
|
2400 |
+
* @param NullableInt $nTimeout
|
2401 |
+
*/
|
2402 |
+
public function __construct(RequestGatewayEntryPointList $lrgepRequestGatewayEntryPoints = null, $nRetryAttempts = 1, NullableInt $nTimeout = null)
|
2403 |
+
{
|
2404 |
+
parent::__construct($lrgepRequestGatewayEntryPoints, $nRetryAttempts, $nTimeout);
|
2405 |
+
|
2406 |
+
$this -> m_tdTransactionDetails = new TransactionDetails();
|
2407 |
+
$this -> m_cdCardDetails = new CardDetails();
|
2408 |
+
$this -> m_cdCustomerDetails = new CustomerDetails();
|
2409 |
+
}
|
2410 |
+
|
2411 |
+
}
|
2412 |
+
class CrossReferenceTransaction extends GatewayTransaction
|
2413 |
+
{
|
2414 |
+
/**
|
2415 |
+
* @var TransactionDetails
|
2416 |
+
*/
|
2417 |
+
private $m_tdTransactionDetails;
|
2418 |
+
/**
|
2419 |
+
* @var OverrideCardDetails
|
2420 |
+
*/
|
2421 |
+
private $m_ocdOverrideCardDetails;
|
2422 |
+
/**
|
2423 |
+
* @var CustomerDetails
|
2424 |
+
*/
|
2425 |
+
private $m_cdCustomerDetails;
|
2426 |
+
|
2427 |
+
/**
|
2428 |
+
* @return TransactionDetails
|
2429 |
+
*/
|
2430 |
+
public function getTransactionDetails()
|
2431 |
+
{
|
2432 |
+
return $this -> m_tdTransactionDetails;
|
2433 |
+
}
|
2434 |
+
/**
|
2435 |
+
* @return OverrideCardDetails
|
2436 |
+
*/
|
2437 |
+
public function getOverrideCardDetails()
|
2438 |
+
{
|
2439 |
+
return $this -> m_ocdOverrideCardDetails;
|
2440 |
+
}
|
2441 |
+
/**
|
2442 |
+
* @return CustomerDetails
|
2443 |
+
*/
|
2444 |
+
public function getCustomerDetails()
|
2445 |
+
{
|
2446 |
+
return $this -> m_cdCustomerDetails;
|
2447 |
+
}
|
2448 |
+
/**
|
2449 |
+
* @param CrossReferenceTransactionResult $crtrCrossReferenceTransactionResult Passed by reference
|
2450 |
+
* @param TransactionOutputData $todTransactionOutputData Passed by reference
|
2451 |
+
* @return bool
|
2452 |
+
* @throws Exception
|
2453 |
+
*/
|
2454 |
+
public function processTransaction(CrossReferenceTransactionResult &$crtrCrossReferenceTransactionResult = null, TransactionOutputData &$todTransactionOutputData = null)
|
2455 |
+
{
|
2456 |
+
$boTransactionSubmitted = false;
|
2457 |
+
$sSOAPClient;
|
2458 |
+
$lgepGatewayEntryPoints = null;
|
2459 |
+
|
2460 |
+
$todTransactionOutputData = null;
|
2461 |
+
$goGatewayOutput = null;
|
2462 |
+
|
2463 |
+
$sSOAPClient = new SOAP("CrossReferenceTransaction", GatewayTransaction::getSOAPNamespace());
|
2464 |
+
// transaction details
|
2465 |
+
if ($this -> m_tdTransactionDetails != null)
|
2466 |
+
{
|
2467 |
+
if ($this -> m_tdTransactionDetails -> getAmount() != null)
|
2468 |
+
{
|
2469 |
+
if ($this -> m_tdTransactionDetails -> getAmount() -> getHasValue())
|
2470 |
+
{
|
2471 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails", "Amount", (string)$this -> m_tdTransactionDetails -> getAmount() -> getValue());
|
2472 |
+
}
|
2473 |
+
}
|
2474 |
+
if ($this -> m_tdTransactionDetails -> getCurrencyCode() != null)
|
2475 |
+
{
|
2476 |
+
if ($this -> m_tdTransactionDetails -> getCurrencyCode() -> getHasValue())
|
2477 |
+
{
|
2478 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails", "CurrencyCode", (string)$this -> m_tdTransactionDetails -> getCurrencyCode() -> getValue());
|
2479 |
+
}
|
2480 |
+
}
|
2481 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getCaptureEnvironment()))
|
2482 |
+
{
|
2483 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails", "CaptureEnvironment", $this -> m_tdTransactionDetails -> getCaptureEnvironment());
|
2484 |
+
}
|
2485 |
+
if ($this -> m_tdTransactionDetails -> getContinuousAuthority() != null)
|
2486 |
+
{
|
2487 |
+
if ($this -> m_tdTransactionDetails -> getContinuousAuthority() -> getHasValue())
|
2488 |
+
{
|
2489 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails", "ContinuousAuthority", (string)$this -> m_tdTransactionDetails -> getContinuousAuthority() -> getValue());
|
2490 |
+
}
|
2491 |
+
}
|
2492 |
+
if ($this -> m_tdTransactionDetails -> getMessageDetails() != null)
|
2493 |
+
{
|
2494 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getMessageDetails() -> getClientReference()))
|
2495 |
+
{
|
2496 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails.MessageDetails", "ClientReference", $this -> m_tdTransactionDetails -> getMessageDetails() -> getClientReference());
|
2497 |
+
}
|
2498 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getMessageDetails() -> getPreviousClientReference()))
|
2499 |
+
{
|
2500 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails.MessageDetails", "PreviousClientReference", $this -> m_tdTransactionDetails -> getMessageDetails() -> getPreviousClientReference());
|
2501 |
+
}
|
2502 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getMessageDetails() -> getTransactionType()))
|
2503 |
+
{
|
2504 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails.MessageDetails", "TransactionType", $this -> m_tdTransactionDetails -> getMessageDetails() -> getTransactionType());
|
2505 |
+
}
|
2506 |
+
if ($this -> m_tdTransactionDetails -> getMessageDetails() -> getNewTransaction() != null)
|
2507 |
+
{
|
2508 |
+
if ($this -> m_tdTransactionDetails -> getMessageDetails() -> getNewTransaction() -> getHasValue())
|
2509 |
+
{
|
2510 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails.MessageDetails", "NewTransaction", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getMessageDetails() -> getNewTransaction() -> getValue()));
|
2511 |
+
}
|
2512 |
+
}
|
2513 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getMessageDetails() -> getCrossReference()))
|
2514 |
+
{
|
2515 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.TransactionDetails.MessageDetails", "CrossReference", $this -> m_tdTransactionDetails -> getMessageDetails() -> getCrossReference());
|
2516 |
+
}
|
2517 |
+
}
|
2518 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() != null)
|
2519 |
+
{
|
2520 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getAuthCode()))
|
2521 |
+
{
|
2522 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.AuthCode", $this -> m_tdTransactionDetails -> getTransactionControl() -> getAuthCode());
|
2523 |
+
}
|
2524 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecureOverridePolicy()))
|
2525 |
+
{
|
2526 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecureOverridePolicy() -> getHasValue())
|
2527 |
+
{
|
2528 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.ThreeDSecureOverridePolicy", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getThreeDSecureOverridePolicy() -> getValue()));
|
2529 |
+
}
|
2530 |
+
}
|
2531 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getAVSOverridePolicy()))
|
2532 |
+
{
|
2533 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.AVSOverridePolicy", $this -> m_tdTransactionDetails -> getTransactionControl() -> getAVSOverridePolicy());
|
2534 |
+
}
|
2535 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getTransactionControl() -> getCV2OverridePolicy()))
|
2536 |
+
{
|
2537 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.CV2OverridePolicy", $this -> m_tdTransactionDetails -> getTransactionControl() -> getCV2OverridePolicy());
|
2538 |
+
}
|
2539 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getDuplicateDelay() != null)
|
2540 |
+
{
|
2541 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getDuplicateDelay() -> getHasValue())
|
2542 |
+
{
|
2543 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.DuplicateDelay", (string)($this -> m_tdTransactionDetails -> getTransactionControl() -> getDuplicateDelay() -> getValue()));
|
2544 |
+
}
|
2545 |
+
}
|
2546 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCardType() != null)
|
2547 |
+
{
|
2548 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCardType() -> getHasValue())
|
2549 |
+
{
|
2550 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.EchoCardType", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCardType() -> getValue()));
|
2551 |
+
}
|
2552 |
+
}
|
2553 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() != null)
|
2554 |
+
{
|
2555 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() -> getHasValue())
|
2556 |
+
{
|
2557 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.EchoAVSCheckResult", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() -> getValue()));
|
2558 |
+
}
|
2559 |
+
}
|
2560 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() != null)
|
2561 |
+
{
|
2562 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() -> getHasValue())
|
2563 |
+
{
|
2564 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.EchoAVSCheckResult", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAVSCheckResult() -> getValue()));
|
2565 |
+
}
|
2566 |
+
}
|
2567 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCV2CheckResult() != null)
|
2568 |
+
{
|
2569 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCV2CheckResult() -> getHasValue())
|
2570 |
+
{
|
2571 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.EchoCV2CheckResult", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoCV2CheckResult() -> getValue()));
|
2572 |
+
}
|
2573 |
+
}
|
2574 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAmountReceived() != null)
|
2575 |
+
{
|
2576 |
+
if ($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAmountReceived() -> getHasValue())
|
2577 |
+
{
|
2578 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.TransactionControl.EchoAmountReceived", SharedFunctions::boolToString($this -> m_tdTransactionDetails -> getTransactionControl() -> getEchoAmountReceived() -> getValue()));
|
2579 |
+
}
|
2580 |
+
}
|
2581 |
+
}
|
2582 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getOrderID()))
|
2583 |
+
{
|
2584 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.OrderID", $this -> m_tdTransactionDetails -> getOrderID());
|
2585 |
+
}
|
2586 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdTransactionDetails -> getOrderDescription()))
|
2587 |
+
{
|
2588 |
+
$sSOAPClient -> addParam("PaymentMessage.TransactionDetails.OrderDescription", $this -> m_tdTransactionDetails -> getOrderDescription());
|
2589 |
+
}
|
2590 |
+
}
|
2591 |
+
// card details
|
2592 |
+
if ($this -> m_ocdOverrideCardDetails != null)
|
2593 |
+
{
|
2594 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_ocdOverrideCardDetails -> getCardName()))
|
2595 |
+
{
|
2596 |
+
$sSOAPClient -> addParam("PaymentMessage.OverrideCardDetails.CardName", $this -> m_ocdOverrideCardDetails -> getCardName());
|
2597 |
+
}
|
2598 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_ocdOverrideCardDetails -> getCV2()))
|
2599 |
+
{
|
2600 |
+
$sSOAPClient -> addParam("PaymentMessage.OverrideCardDetails.CV2", $this -> m_ocdOverrideCardDetails -> getCV2());
|
2601 |
+
}
|
2602 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_ocdOverrideCardDetails -> getCardNumber()))
|
2603 |
+
{
|
2604 |
+
$sSOAPClient -> addParam("PaymentMessage.OverrideCardDetails.CardNumber", $this -> m_ocdOverrideCardDetails -> getCardNumber());
|
2605 |
+
}
|
2606 |
+
if ($this -> m_ocdOverrideCardDetails -> getExpiryDate() != null)
|
2607 |
+
{
|
2608 |
+
if ($this -> m_ocdOverrideCardDetails -> getExpiryDate() -> getMonth() != null)
|
2609 |
+
{
|
2610 |
+
if ($this -> m_ocdOverrideCardDetails -> getExpiryDate() -> getMonth() -> getHasValue())
|
2611 |
+
{
|
2612 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.OverrideCardDetails.ExpiryDate", "Month", (string)$this -> m_ocdOverrideCardDetails -> getExpiryDate() -> getMonth() -> getValue());
|
2613 |
+
}
|
2614 |
+
}
|
2615 |
+
if ($this -> m_ocdOverrideCardDetails -> getExpiryDate() -> getYear() != null)
|
2616 |
+
{
|
2617 |
+
if ($this -> m_ocdOverrideCardDetails -> getExpiryDate() -> getYear() -> getHasValue())
|
2618 |
+
{
|
2619 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.OverrideCardDetails.ExpiryDate", "Year", (string)$this -> m_ocdOverrideCardDetails -> getExpiryDate() -> getYear() -> getValue());
|
2620 |
+
}
|
2621 |
+
}
|
2622 |
+
}
|
2623 |
+
if ($this -> m_ocdOverrideCardDetails -> getStartDate() != null)
|
2624 |
+
{
|
2625 |
+
if ($this -> m_ocdOverrideCardDetails -> getStartDate() -> getMonth() != null)
|
2626 |
+
{
|
2627 |
+
if ($this -> m_ocdOverrideCardDetails -> getStartDate() -> getMonth() -> getHasValue())
|
2628 |
+
{
|
2629 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.OverrideCardDetails.StartDate", "Month", (string)$this -> m_ocdOverrideCardDetails -> getStartDate() -> getMonth() -> getValue());
|
2630 |
+
}
|
2631 |
+
}
|
2632 |
+
if ($this -> m_ocdOverrideCardDetails -> getStartDate() -> getYear() != null)
|
2633 |
+
{
|
2634 |
+
if ($this -> m_ocdOverrideCardDetails -> getStartDate() -> getYear() -> getHasValue())
|
2635 |
+
{
|
2636 |
+
$sSOAPClient -> addParamAttribute("PaymentMessage.OverrideCardDetails.StartDate", "Year", (string)$this -> m_ocdOverrideCardDetails -> getStartDate() -> getYear() -> getValue());
|
2637 |
+
}
|
2638 |
+
}
|
2639 |
+
}
|
2640 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_ocdOverrideCardDetails -> getIssueNumber()))
|
2641 |
+
{
|
2642 |
+
$sSOAPClient -> addParam("PaymentMessage.CardDetails.IssueNumber", $this -> m_ocdOverrideCardDetails -> getIssueNumber());
|
2643 |
+
}
|
2644 |
+
}
|
2645 |
+
// customer details
|
2646 |
+
if ($this -> m_cdCustomerDetails != null)
|
2647 |
+
{
|
2648 |
+
if ($this -> m_cdCustomerDetails -> getBillingAddress() != null)
|
2649 |
+
{
|
2650 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress1()))
|
2651 |
+
{
|
2652 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.Address1", $this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress1());
|
2653 |
+
}
|
2654 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress2()))
|
2655 |
+
{
|
2656 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.Address2", $this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress2());
|
2657 |
+
}
|
2658 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress3()))
|
2659 |
+
{
|
2660 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.Address3", $this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress3());
|
2661 |
+
}
|
2662 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress4()))
|
2663 |
+
{
|
2664 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.Address4", $this -> m_cdCustomerDetails -> getBillingAddress() -> getAddress4());
|
2665 |
+
}
|
2666 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getCity()))
|
2667 |
+
{
|
2668 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.City", $this -> m_cdCustomerDetails -> getBillingAddress() -> getCity());
|
2669 |
+
}
|
2670 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getState()))
|
2671 |
+
{
|
2672 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.State", $this -> m_cdCustomerDetails -> getBillingAddress() -> getState());
|
2673 |
+
}
|
2674 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getBillingAddress() -> getPostCode()))
|
2675 |
+
{
|
2676 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.PostCode", (string)$this -> m_cdCustomerDetails -> getBillingAddress() -> getPostCode());
|
2677 |
+
}
|
2678 |
+
if ($this -> m_cdCustomerDetails -> getBillingAddress() -> getCountryCode() != null)
|
2679 |
+
{
|
2680 |
+
if ($this -> m_cdCustomerDetails -> getBillingAddress() -> getCountryCode() -> getHasValue())
|
2681 |
+
{
|
2682 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.BillingAddress.CountryCode", (string)$this -> m_cdCustomerDetails -> getBillingAddress() -> getCountryCode() -> getValue());
|
2683 |
+
}
|
2684 |
+
}
|
2685 |
+
}
|
2686 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getEmailAddress()))
|
2687 |
+
{
|
2688 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.EmailAddress", $this -> m_cdCustomerDetails -> getEmailAddress());
|
2689 |
+
}
|
2690 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getPhoneNumber()))
|
2691 |
+
{
|
2692 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.PhoneNumber", $this -> m_cdCustomerDetails -> getPhoneNumber());
|
2693 |
+
}
|
2694 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_cdCustomerDetails -> getCustomerIPAddress()))
|
2695 |
+
{
|
2696 |
+
$sSOAPClient -> addParam("PaymentMessage.CustomerDetails.CustomerIPAddress", $this -> m_cdCustomerDetails -> getCustomerIPAddress());
|
2697 |
+
}
|
2698 |
+
}
|
2699 |
+
|
2700 |
+
$boTransactionSubmitted = GatewayTransaction::processTransactionBase($sSOAPClient, "PaymentMessage", "CrossReferenceTransactionResult", "TransactionOutputData", $goGatewayOutput, $lgepGatewayEntryPoints);
|
2701 |
+
|
2702 |
+
if ($boTransactionSubmitted)
|
2703 |
+
{
|
2704 |
+
$crtrCrossReferenceTransactionResult = SharedFunctionsPaymentSystemShared::getPaymentMessageGatewayOutput($sSOAPClient -> getXmlTag(), "CrossReferenceTransactionResult", $goGatewayOutput);
|
2705 |
+
|
2706 |
+
$todTransactionOutputData = SharedFunctionsPaymentSystemShared::getTransactionOutputData($sSOAPClient -> getXmlTag(), $lgepGatewayEntryPoints);
|
2707 |
+
}
|
2708 |
+
|
2709 |
+
return $boTransactionSubmitted;
|
2710 |
+
}
|
2711 |
+
|
2712 |
+
//constructor
|
2713 |
+
/**
|
2714 |
+
* @param RequestGatewayEntryPointList $lrgepRequestGatewayEntryPoints
|
2715 |
+
* @param int $nRetryAttempts
|
2716 |
+
* @param NullableInt $nTimeout
|
2717 |
+
*/
|
2718 |
+
public function __construct(RequestGatewayEntryPointList $lrgepRequestGatewayEntryPoints = null, $nRetryAttempts = 1, NullableInt $nTimeout = null)
|
2719 |
+
{
|
2720 |
+
GatewayTransaction::__construct($lrgepRequestGatewayEntryPoints, $nRetryAttempts, $nTimeout);
|
2721 |
+
|
2722 |
+
$this -> m_tdTransactionDetails = new TransactionDetails();
|
2723 |
+
$this -> m_ocdOverrideCardDetails = new OverrideCardDetails();
|
2724 |
+
$this -> m_cdCustomerDetails = new CustomerDetails();
|
2725 |
+
}
|
2726 |
+
|
2727 |
+
}
|
2728 |
+
class ThreeDSecureAuthentication extends GatewayTransaction
|
2729 |
+
{
|
2730 |
+
/**
|
2731 |
+
* @var ThreeDSecureInputData
|
2732 |
+
*/
|
2733 |
+
private $m_tdsidThreeDSecureInputData;
|
2734 |
+
|
2735 |
+
/**
|
2736 |
+
* @return ThreeDSecureInputData
|
2737 |
+
*/
|
2738 |
+
public function getThreeDSecureInputData()
|
2739 |
+
{
|
2740 |
+
return $this -> m_tdsidThreeDSecureInputData;
|
2741 |
+
}
|
2742 |
+
/**
|
2743 |
+
* @param ThreeDSecureAuthenticationResult $tdsarThreeDSecureAuthenticationResult Passed by reference
|
2744 |
+
* @param TransactionOutputData $todTransactionOutputData Passed by reference
|
2745 |
+
* @return bool
|
2746 |
+
* @throws Exception
|
2747 |
+
*/
|
2748 |
+
public function processTransaction(ThreeDSecureAuthenticationResult &$tdsarThreeDSecureAuthenticationResult = null, TransactionOutputData &$todTransactionOutputData = null)
|
2749 |
+
{
|
2750 |
+
$boTransactionSubmitted = false;
|
2751 |
+
$sSOAPClient;
|
2752 |
+
$lgepGatewayEntryPoints = null;
|
2753 |
+
|
2754 |
+
$todTransactionOutputData = null;
|
2755 |
+
$goGatewayOutput = null;
|
2756 |
+
|
2757 |
+
$sSOAPClient = new SOAP("ThreeDSecureAuthentication", GatewayTransaction::getSOAPNamespace());
|
2758 |
+
if ($this -> m_tdsidThreeDSecureInputData != null)
|
2759 |
+
{
|
2760 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdsidThreeDSecureInputData -> getCrossReference()))
|
2761 |
+
{
|
2762 |
+
$sSOAPClient -> addParamAttribute("ThreeDSecureMessage.ThreeDSecureInputData", "CrossReference", $this -> m_tdsidThreeDSecureInputData -> getCrossReference());
|
2763 |
+
}
|
2764 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_tdsidThreeDSecureInputData -> getPaRES()))
|
2765 |
+
{
|
2766 |
+
$sSOAPClient -> addParam("ThreeDSecureMessage.ThreeDSecureInputData.PaRES", $this -> m_tdsidThreeDSecureInputData -> getPaRES());
|
2767 |
+
}
|
2768 |
+
}
|
2769 |
+
|
2770 |
+
$boTransactionSubmitted = GatewayTransaction::processTransactionBase($sSOAPClient, "ThreeDSecureMessage", "ThreeDSecureAuthenticationResult", "TransactionOutputData", $goGatewayOutput, $lgepGatewayEntryPoints);
|
2771 |
+
|
2772 |
+
if ($boTransactionSubmitted)
|
2773 |
+
{
|
2774 |
+
$tdsarThreeDSecureAuthenticationResult = SharedFunctionsPaymentSystemShared::getPaymentMessageGatewayOutput($sSOAPClient -> getXmlTag(), "ThreeDSecureAuthenticationResult", $goGatewayOutput);
|
2775 |
+
|
2776 |
+
$todTransactionOutputData = SharedFunctionsPaymentSystemShared::getTransactionOutputData($sSOAPClient -> getXmlTag(), $lgepGatewayEntryPoints);
|
2777 |
+
}
|
2778 |
+
|
2779 |
+
return $boTransactionSubmitted;
|
2780 |
+
}
|
2781 |
+
|
2782 |
+
//constructor
|
2783 |
+
/**
|
2784 |
+
* @param RequestGatewayEntryPointList $lrgepRequestGatewayEntryPoints
|
2785 |
+
* @param int $nRetryAttempts
|
2786 |
+
* @param NullableInt $nTimeout
|
2787 |
+
*/
|
2788 |
+
public function __construct(RequestGatewayEntryPointList $lrgepRequestGatewayEntryPoints = null, $nRetryAttempts = 1, NullableInt $nTimeout = null)
|
2789 |
+
{
|
2790 |
+
GatewayTransaction::__construct($lrgepRequestGatewayEntryPoints, $nRetryAttempts, $nTimeout);
|
2791 |
+
|
2792 |
+
$this -> m_tdsidThreeDSecureInputData = new ThreeDSecureInputData();
|
2793 |
+
}
|
2794 |
+
|
2795 |
+
}
|
2796 |
+
class GetCardType extends GatewayTransaction
|
2797 |
+
{
|
2798 |
+
/**
|
2799 |
+
* @var string
|
2800 |
+
*/
|
2801 |
+
private $m_szCardNumber;
|
2802 |
+
|
2803 |
+
/**
|
2804 |
+
* @return string
|
2805 |
+
*/
|
2806 |
+
public function getCardNumber()
|
2807 |
+
{
|
2808 |
+
return $this -> m_szCardNumber;
|
2809 |
+
}
|
2810 |
+
/**
|
2811 |
+
* @param string $cardNumber
|
2812 |
+
*/
|
2813 |
+
public function setCardNumber($cardNumber)
|
2814 |
+
{
|
2815 |
+
$this -> m_szCardNumber = $cardNumber;
|
2816 |
+
}
|
2817 |
+
/**
|
2818 |
+
* @param GetCardTypeResult $gctrGetCardTypeResult Passed by reference
|
2819 |
+
* @param GetCardTypeOutputData $gctodGetCardTypeOutputData Passed by reference
|
2820 |
+
* @return bool
|
2821 |
+
* @throws Exception
|
2822 |
+
*/
|
2823 |
+
public function processTransaction(GetCardTypeResult &$gctrGetCardTypeResult = null, GetCardTypeOutputData &$gctodGetCardTypeOutputData = null)
|
2824 |
+
{
|
2825 |
+
$boTransactionSubmitted = false;
|
2826 |
+
$sSOAPClient;
|
2827 |
+
$lgepGatewayEntryPoints = null;
|
2828 |
+
$ctdCardTypeData = null;
|
2829 |
+
|
2830 |
+
$gctodGetCardTypeOutputData = null;
|
2831 |
+
$goGatewayOutput = null;
|
2832 |
+
|
2833 |
+
$sSOAPClient = new SOAP("GetCardType", GatewayTransaction::getSOAPNamespace());
|
2834 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_szCardNumber))
|
2835 |
+
{
|
2836 |
+
$sSOAPClient -> addParam("GetCardTypeMessage.CardNumber", $this -> m_szCardNumber);
|
2837 |
+
}
|
2838 |
+
|
2839 |
+
$boTransactionSubmitted = GatewayTransaction::processTransactionBase($sSOAPClient, "GetCardTypeMessage", "GetCardTypeResult", "GetCardTypeOutputData", $goGatewayOutput, $lgepGatewayEntryPoints);
|
2840 |
+
|
2841 |
+
if ($boTransactionSubmitted)
|
2842 |
+
{
|
2843 |
+
$gctrGetCardTypeResult = $goGatewayOutput;
|
2844 |
+
|
2845 |
+
$ctdCardTypeData = SharedFunctionsPaymentSystemShared::getCardTypeData($sSOAPClient -> getXmlTag(), "GetCardTypeOutputData.CardTypeData");
|
2846 |
+
|
2847 |
+
$gctodGetCardTypeOutputData = new GetCardTypeOutputData($ctdCardTypeData, $lgepGatewayEntryPoints);
|
2848 |
+
}
|
2849 |
+
return $boTransactionSubmitted;
|
2850 |
+
}
|
2851 |
+
|
2852 |
+
//constructor
|
2853 |
+
/**
|
2854 |
+
* @param RequestGatewayEntryPointList $lrgepRequestGatewayEntryPoints
|
2855 |
+
* @param int $nRetryAttempts
|
2856 |
+
* @param NullableInt $nTimeout
|
2857 |
+
*/
|
2858 |
+
public function __construct(RequestGatewayEntryPointList $lrgepRequestGatewayEntryPoints = null, $nRetryAttempts = 1, NullableInt $nTimeout = null)
|
2859 |
+
{
|
2860 |
+
GatewayTransaction::__construct($lrgepRequestGatewayEntryPoints, $nRetryAttempts, $nTimeout);
|
2861 |
+
|
2862 |
+
$this -> m_szCardNumber = "";
|
2863 |
+
}
|
2864 |
+
|
2865 |
+
}
|
2866 |
+
abstract class GatewayTransaction
|
2867 |
+
{
|
2868 |
+
/**
|
2869 |
+
* @var MerchantAuthentication
|
2870 |
+
*/
|
2871 |
+
private $m_maMerchantAuthentication;
|
2872 |
+
/**
|
2873 |
+
* @var RequestGatewayEntryPointList
|
2874 |
+
*/
|
2875 |
+
private $m_lrgepRequestGatewayEntryPoints;
|
2876 |
+
/**
|
2877 |
+
* @var int
|
2878 |
+
*/
|
2879 |
+
private $m_nRetryAttempts;
|
2880 |
+
/**
|
2881 |
+
* @var NullableInt
|
2882 |
+
*/
|
2883 |
+
private $m_nTimeout;
|
2884 |
+
/**
|
2885 |
+
* @var string
|
2886 |
+
*/
|
2887 |
+
private $m_szSOAPNamespace = "https://www.thepaymentgateway.net/";
|
2888 |
+
/**
|
2889 |
+
* @var string
|
2890 |
+
*/
|
2891 |
+
private $m_szLastRequest;
|
2892 |
+
/**
|
2893 |
+
* @var string
|
2894 |
+
*/
|
2895 |
+
private $m_szLastResponse;
|
2896 |
+
/**
|
2897 |
+
* @var Exception
|
2898 |
+
*/
|
2899 |
+
private $m_eLastException;
|
2900 |
+
/**
|
2901 |
+
* @var string
|
2902 |
+
*/
|
2903 |
+
private $m_szEntryPointUsed;
|
2904 |
+
|
2905 |
+
/**
|
2906 |
+
* @return MerchantAuthentication
|
2907 |
+
*/
|
2908 |
+
public function getMerchantAuthentication()
|
2909 |
+
{
|
2910 |
+
return $this -> m_maMerchantAuthentication;
|
2911 |
+
}
|
2912 |
+
/**
|
2913 |
+
* @return RequestGatewayEntryPointList
|
2914 |
+
*/
|
2915 |
+
public function getRequestGatewayEntryPoints()
|
2916 |
+
{
|
2917 |
+
return $this -> m_lrgepRequestGatewayEntryPoints;
|
2918 |
+
}
|
2919 |
+
/**
|
2920 |
+
* @return int
|
2921 |
+
*/
|
2922 |
+
public function getRetryAttempts()
|
2923 |
+
{
|
2924 |
+
return $this -> m_nRetryAttempts;
|
2925 |
+
}
|
2926 |
+
/**
|
2927 |
+
* @return NullableInt
|
2928 |
+
*/
|
2929 |
+
public function getTimeout()
|
2930 |
+
{
|
2931 |
+
return $this -> m_nTimeout;
|
2932 |
+
}
|
2933 |
+
/**
|
2934 |
+
* @return string
|
2935 |
+
*/
|
2936 |
+
public function getSOAPNamespace()
|
2937 |
+
{
|
2938 |
+
return $this -> m_szSOAPNamespace;
|
2939 |
+
}
|
2940 |
+
/**
|
2941 |
+
* @param string $value
|
2942 |
+
*/
|
2943 |
+
public function setSOAPNamespace($value)
|
2944 |
+
{
|
2945 |
+
$this -> m_szSOAPNamespace = $value;
|
2946 |
+
}
|
2947 |
+
/**
|
2948 |
+
* @return string
|
2949 |
+
*/
|
2950 |
+
public function getLastRequest()
|
2951 |
+
{
|
2952 |
+
return $this -> m_szLastRequest;
|
2953 |
+
}
|
2954 |
+
/**
|
2955 |
+
* @return string
|
2956 |
+
*/
|
2957 |
+
public function getLastResponse()
|
2958 |
+
{
|
2959 |
+
return $this -> m_szLastResponse;
|
2960 |
+
}
|
2961 |
+
/**
|
2962 |
+
* @return Exception
|
2963 |
+
*/
|
2964 |
+
public function getLastException()
|
2965 |
+
{
|
2966 |
+
return $this -> m_eLastException;
|
2967 |
+
}
|
2968 |
+
/**
|
2969 |
+
* @return string
|
2970 |
+
*/
|
2971 |
+
public function getEntryPointUsed()
|
2972 |
+
{
|
2973 |
+
return $this -> m_szEntryPointUsed;
|
2974 |
+
}
|
2975 |
+
/**
|
2976 |
+
* @param RequestGatewayEntryPoint $x
|
2977 |
+
* @param RequestGatewayEntryPoint $y
|
2978 |
+
* @return int
|
2979 |
+
*/
|
2980 |
+
public static function compare($x, $y)
|
2981 |
+
{
|
2982 |
+
$rgepFirst = null;
|
2983 |
+
$rgepSecond = null;
|
2984 |
+
|
2985 |
+
$rgepFirst = $x;
|
2986 |
+
$rgepSecond = $y;
|
2987 |
+
|
2988 |
+
return (GatewayTransaction::compareGatewayEntryPoints($rgepFirst, $rgepSecond));
|
2989 |
+
}
|
2990 |
+
/**
|
2991 |
+
* @param RequestGatewayEntryPoint $rgepFirst
|
2992 |
+
* @param RequestGatewayEntryPoint $rgepSecond
|
2993 |
+
* @return int
|
2994 |
+
*/
|
2995 |
+
private static function compareGatewayEntryPoints(RequestGatewayEntryPoint $rgepFirst, RequestGatewayEntryPoint $rgepSecond)
|
2996 |
+
{
|
2997 |
+
$nReturnValue = 0;
|
2998 |
+
// returns >0 if rgepFirst greater than rgepSecond
|
2999 |
+
// returns 0 if they are equal
|
3000 |
+
// returns <0 if rgepFirst less than rgepSecond
|
3001 |
+
|
3002 |
+
// both null, then they are the same
|
3003 |
+
if ($rgepFirst == null && $rgepSecond == null)
|
3004 |
+
{
|
3005 |
+
$nReturnValue = 0;
|
3006 |
+
}
|
3007 |
+
// just first null? then second is greater
|
3008 |
+
elseif ($rgepFirst == null && $rgepSecond != null)
|
3009 |
+
{
|
3010 |
+
$nReturnValue = 1;
|
3011 |
+
}
|
3012 |
+
// just second null? then first is greater
|
3013 |
+
elseif ($rgepFirst != null && $rgepSecond == null)
|
3014 |
+
{
|
3015 |
+
$nReturnValue = -1;
|
3016 |
+
}
|
3017 |
+
// can now assume that first & second both have a value
|
3018 |
+
elseif ($rgepFirst -> getMetric() == $rgepSecond -> getMetric())
|
3019 |
+
{
|
3020 |
+
$nReturnValue = 0;
|
3021 |
+
}
|
3022 |
+
elseif ($rgepFirst -> getMetric() < $rgepSecond -> getMetric())
|
3023 |
+
{
|
3024 |
+
$nReturnValue = -1;
|
3025 |
+
}
|
3026 |
+
elseif ($rgepFirst -> getMetric() > $rgepSecond -> getMetric())
|
3027 |
+
{
|
3028 |
+
$nReturnValue = 1;
|
3029 |
+
}
|
3030 |
+
|
3031 |
+
return $nReturnValue;
|
3032 |
+
}
|
3033 |
+
/**
|
3034 |
+
* @param SOAP $sSOAPClient
|
3035 |
+
* @param string $szMessageXMLPath
|
3036 |
+
* @param string $szGatewayOutputXMLPath
|
3037 |
+
* @param string $szTransactionMessageXMLPath
|
3038 |
+
* @param GatewayOutput $goGatewayOutput
|
3039 |
+
* @param GatewayEntryPointList $lgepGatewayEntryPoints
|
3040 |
+
* @return bool
|
3041 |
+
* @throws Exception
|
3042 |
+
*/
|
3043 |
+
protected function processTransactionBase(SOAP $sSOAPClient, $szMessageXMLPath, $szGatewayOutputXMLPath, $szTransactionMessageXMLPath, GatewayOutput &$goGatewayOutput = null, GatewayEntryPointList &$lgepGatewayEntryPoints = null)
|
3044 |
+
{
|
3045 |
+
$boTransactionSubmitted = false;
|
3046 |
+
$nOverallRetryCount = 0;
|
3047 |
+
$nOverallGatewayEntryPointCount = 0;
|
3048 |
+
$nGatewayEntryPointCount = 0;
|
3049 |
+
$nErrorMessageCount = 0;
|
3050 |
+
$rgepCurrentGatewayEntryPoint;
|
3051 |
+
$nStatusCode;
|
3052 |
+
$szMessage = null;
|
3053 |
+
$lszErrorMessages;
|
3054 |
+
$szString;
|
3055 |
+
$sbXMLString;
|
3056 |
+
$szXMLFormatString;
|
3057 |
+
$nCount = 0;
|
3058 |
+
$szEntryPointURL;
|
3059 |
+
$nMetric;
|
3060 |
+
$gepGatewayEntryPoint = null;
|
3061 |
+
|
3062 |
+
$lgepGatewayEntryPoints = null;
|
3063 |
+
$goGatewayOutput = null;
|
3064 |
+
|
3065 |
+
$this -> m_szEntryPointUsed = null;
|
3066 |
+
|
3067 |
+
if ($sSOAPClient == null)
|
3068 |
+
{
|
3069 |
+
return false;
|
3070 |
+
}
|
3071 |
+
|
3072 |
+
// populate the merchant details
|
3073 |
+
if ($this -> m_maMerchantAuthentication != null)
|
3074 |
+
{
|
3075 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_maMerchantAuthentication -> getMerchantID()))
|
3076 |
+
{
|
3077 |
+
$sSOAPClient -> addParamAttribute($szMessageXMLPath . ".MerchantAuthentication", "MerchantID", $this -> m_maMerchantAuthentication -> getMerchantID());
|
3078 |
+
}
|
3079 |
+
if (!SharedFunctions::isStringNullOrEmpty($this -> m_maMerchantAuthentication -> getPassword()))
|
3080 |
+
{
|
3081 |
+
$sSOAPClient -> addParamAttribute($szMessageXMLPath . ".MerchantAuthentication", "Password", $this -> m_maMerchantAuthentication -> getPassword());
|
3082 |
+
}
|
3083 |
+
}
|
3084 |
+
|
3085 |
+
// first need to sort the gateway entry points into the correct usage order
|
3086 |
+
$number = $this -> m_lrgepRequestGatewayEntryPoints -> sort("GatewayTransaction", "Compare");
|
3087 |
+
|
3088 |
+
// loop over the overall number of transaction attempts
|
3089 |
+
while (!$boTransactionSubmitted && $nOverallRetryCount < $this -> m_nRetryAttempts)
|
3090 |
+
{
|
3091 |
+
$nOverallGatewayEntryPointCount = 0;
|
3092 |
+
|
3093 |
+
// loop over the number of gateway entry points in the list
|
3094 |
+
while (!$boTransactionSubmitted && $nOverallGatewayEntryPointCount < $this -> m_lrgepRequestGatewayEntryPoints -> getCount())
|
3095 |
+
{
|
3096 |
+
$rgepCurrentGatewayEntryPoint = $this -> m_lrgepRequestGatewayEntryPoints -> getAt($nOverallGatewayEntryPointCount);
|
3097 |
+
|
3098 |
+
// ignore if the metric is "-1" this indicates that the entry point is offline
|
3099 |
+
if ($rgepCurrentGatewayEntryPoint -> getMetric() >= 0)
|
3100 |
+
{
|
3101 |
+
$nGatewayEntryPointCount = 0;
|
3102 |
+
$sSOAPClient -> setURL($rgepCurrentGatewayEntryPoint -> getEntryPointURL());
|
3103 |
+
|
3104 |
+
// loop over the number of times to try this specific entry point
|
3105 |
+
while (!$boTransactionSubmitted && $nGatewayEntryPointCount < $rgepCurrentGatewayEntryPoint -> getRetryAttempts())
|
3106 |
+
{
|
3107 |
+
if ($sSOAPClient -> sendRequest())
|
3108 |
+
{
|
3109 |
+
if ($sSOAPClient -> getXmlTag() -> getIntegerValue($szGatewayOutputXMLPath . ".StatusCode", $nStatusCode))
|
3110 |
+
{
|
3111 |
+
// a status code of 50 means that this entry point is not to be used
|
3112 |
+
if ($nStatusCode != 50)
|
3113 |
+
{
|
3114 |
+
$this -> m_szEntryPointUsed = $rgepCurrentGatewayEntryPoint -> getEntryPointURL();
|
3115 |
+
|
3116 |
+
// the transaction was submitted
|
3117 |
+
$boTransactionSubmitted = true;
|
3118 |
+
|
3119 |
+
$sSOAPClient -> getXmlTag() -> getStringValue($szGatewayOutputXMLPath . ".Message", $szMessage);
|
3120 |
+
|
3121 |
+
$nErrorMessageCount = 0;
|
3122 |
+
$lszErrorMessages = new StringList();
|
3123 |
+
$szXmlFormatString1 = $szGatewayOutputXMLPath . ".ErrorMessages.MessageDetail[";
|
3124 |
+
$szXmlFormatString2 = "].Detail";
|
3125 |
+
|
3126 |
+
while ($sSOAPClient -> getXmlTag() -> getStringValue($szXmlFormatString1 . $nErrorMessageCount . $szXmlFormatString2, $szString))
|
3127 |
+
{
|
3128 |
+
$lszErrorMessages -> add($szString);
|
3129 |
+
|
3130 |
+
$nErrorMessageCount++;
|
3131 |
+
}
|
3132 |
+
|
3133 |
+
$goGatewayOutput = new GatewayOutput($nStatusCode, $szMessage, $lszErrorMessages);
|
3134 |
+
|
3135 |
+
// look to see if there are any gateway entry points
|
3136 |
+
$nCount = 0;
|
3137 |
+
$szXmlFormatString1 = $szTransactionMessageXMLPath . ".GatewayEntryPoints.GatewayEntryPoint[";
|
3138 |
+
$szXmlFormatString2 = "]";
|
3139 |
+
|
3140 |
+
while ($sSOAPClient -> getXmlTag() -> getStringValue($szXmlFormatString1 . $nCount . $szXmlFormatString2 . ".EntryPointURL", $szEntryPointURL))
|
3141 |
+
{
|
3142 |
+
if (!$sSOAPClient -> getXmlTag() -> getIntegerValue($szXmlFormatString1 . $nCount . $szXmlFormatString2 . ".Metric", $nMetric))
|
3143 |
+
{
|
3144 |
+
$nMetric = -1;
|
3145 |
+
}
|
3146 |
+
if ($lgepGatewayEntryPoints == null)
|
3147 |
+
{
|
3148 |
+
$lgepGatewayEntryPoints = new GatewayEntryPointList();
|
3149 |
+
}
|
3150 |
+
$lgepGatewayEntryPoints -> add($szEntryPointURL, $nMetric);
|
3151 |
+
$nCount++;
|
3152 |
+
}
|
3153 |
+
}
|
3154 |
+
}
|
3155 |
+
}
|
3156 |
+
|
3157 |
+
$nGatewayEntryPointCount++;
|
3158 |
+
}
|
3159 |
+
}
|
3160 |
+
$nOverallGatewayEntryPointCount++;
|
3161 |
+
}
|
3162 |
+
$nOverallRetryCount++;
|
3163 |
+
}
|
3164 |
+
$this -> m_szLastRequest = $sSOAPClient -> getSOAPPacket();
|
3165 |
+
$this -> m_szLastResponse = $sSOAPClient -> getLastResponse();
|
3166 |
+
$this -> m_eLastException = $sSOAPClient -> getLastException();
|
3167 |
+
|
3168 |
+
return $boTransactionSubmitted;
|
3169 |
+
}
|
3170 |
+
|
3171 |
+
public function __construct(RequestGatewayEntryPointList $lrgepRequestGatewayEntryPoints = null, $nRetryAttempts = 1, NullableInt $nTimeout = null)
|
3172 |
+
{
|
3173 |
+
$this -> m_maMerchantAuthentication = new MerchantAuthentication();
|
3174 |
+
$this -> m_lrgepRequestGatewayEntryPoints = $lrgepRequestGatewayEntryPoints;
|
3175 |
+
$this -> m_nRetryAttempts = $nRetryAttempts;
|
3176 |
+
$this -> m_nTimeout = $nTimeout;
|
3177 |
+
}
|
3178 |
+
|
3179 |
+
}
|
3180 |
+
class SharedFunctionsPaymentSystemShared
|
3181 |
+
{
|
3182 |
+
/**
|
3183 |
+
* @param XmlTag $xtTransactionOutputDataXmlTag
|
3184 |
+
* @param GatewayEntryPointList $lgepGatewayEntryPoints
|
3185 |
+
* @return TransactionOutputData
|
3186 |
+
* @throws Exception
|
3187 |
+
*/
|
3188 |
+
public static function getTransactionOutputData(XmlTag $xtTransactionOutputDataXmlTag, GatewayEntryPointList $lgepGatewayEntryPoints = null)
|
3189 |
+
{
|
3190 |
+
$szCrossReference = "";
|
3191 |
+
$szAddressNumericCheckResult = "";
|
3192 |
+
$szPostCodeCheckResult = "";
|
3193 |
+
$szThreeDSecureAuthenticationCheckResult = "";
|
3194 |
+
$szCV2CheckResult = "";
|
3195 |
+
$nAmountReceived = null;
|
3196 |
+
$szPaREQ = "";
|
3197 |
+
$szACSURL = "";
|
3198 |
+
$ctdCardTypeData = null;
|
3199 |
+
$tdsodThreeDSecureOutputData = null;
|
3200 |
+
$lgvCustomVariables = null;
|
3201 |
+
$nCount = 0;
|
3202 |
+
$szAuthCode = "";
|
3203 |
+
$todTransactionOutputData = null;
|
3204 |
+
|
3205 |
+
if ($xtTransactionOutputDataXmlTag == null)
|
3206 |
+
{
|
3207 |
+
return (null);
|
3208 |
+
}
|
3209 |
+
|
3210 |
+
$xtTransactionOutputDataXmlTag -> getStringValue("TransactionOutputData.CrossReference", $szCrossReference);
|
3211 |
+
$xtTransactionOutputDataXmlTag -> getStringValue("TransactionOutputData.AuthCode", $szAuthCode);
|
3212 |
+
$xtTransactionOutputDataXmlTag -> getStringValue("TransactionOutputData.AddressNumericCheckResult", $szAddressNumericCheckResult);
|
3213 |
+
$xtTransactionOutputDataXmlTag -> getStringValue("TransactionOutputData.PostCodeCheckResult", $szPostCodeCheckResult);
|
3214 |
+
$xtTransactionOutputDataXmlTag -> getStringValue("TransactionOutputData.ThreeDSecureAuthenticationCheckResult", $szThreeDSecureAuthenticationCheckResult);
|
3215 |
+
$xtTransactionOutputDataXmlTag -> getStringValue("TransactionOutputData.CV2CheckResult", $szCV2CheckResult);
|
3216 |
+
|
3217 |
+
$ctdCardTypeData = SharedFunctionsPaymentSystemShared::getCardTypeData($xtTransactionOutputDataXmlTag, "TransactionOutputData.CardTypeData");
|
3218 |
+
if ($xtTransactionOutputDataXmlTag -> getIntegerValue("TransactionOutputData.AmountReceived", $nTempValue))
|
3219 |
+
{
|
3220 |
+
$nAmountReceived = new NullableInt($nTempValue);
|
3221 |
+
}
|
3222 |
+
$xtTransactionOutputDataXmlTag -> getStringValue("TransactionOutputData.ThreeDSecureOutputData.PaREQ", $szPaREQ);
|
3223 |
+
$xtTransactionOutputDataXmlTag -> getStringValue("TransactionOutputData.ThreeDSecureOutputData.ACSURL", $szACSURL);
|
3224 |
+
|
3225 |
+
if (!SharedFunctions::isStringNullOrEmpty($szACSURL) && !SharedFunctions::isStringNullOrEmpty($szPaREQ))
|
3226 |
+
{
|
3227 |
+
$tdsodThreeDSecureOutputData = new ThreeDSecureOutputData($szPaREQ, $szACSURL);
|
3228 |
+
}
|
3229 |
+
|
3230 |
+
$nCount = 0;
|
3231 |
+
$szXmlFormatString1 = "TransactionOutputData.CustomVariables.GenericVariable[";
|
3232 |
+
$szXmlFormatString2 = "]";
|
3233 |
+
|
3234 |
+
while ($xtTransactionOutputDataXmlTag -> getStringValue($szXmlFormatString1 . $nCount . $szXmlFormatString2 . ".Name", $szName))
|
3235 |
+
{
|
3236 |
+
if (!$xtTransactionOutputDataXmlTag -> getValue($szXmlFormatString1 . $nCount . $szXmlFormatString2 . ".Value", $szValue))
|
3237 |
+
{
|
3238 |
+
$szValue = "";
|
3239 |
+
}
|
3240 |
+
if ($lgvCustomVariables == null)
|
3241 |
+
{
|
3242 |
+
$lgvCustomVariables = new GenericVariableList();
|
3243 |
+
}
|
3244 |
+
$lgvCustomVariables -> add($szName, $szValue);
|
3245 |
+
$nCount++;
|
3246 |
+
}
|
3247 |
+
|
3248 |
+
$todTransactionOutputData = new TransactionOutputData($szCrossReference, $szAuthCode, $szAddressNumericCheckResult, $szPostCodeCheckResult, $szThreeDSecureAuthenticationCheckResult, $szCV2CheckResult, $ctdCardTypeData, $nAmountReceived, $tdsodThreeDSecureOutputData, $lgvCustomVariables, $lgepGatewayEntryPoints);
|
3249 |
+
|
3250 |
+
return ($todTransactionOutputData);
|
3251 |
+
}
|
3252 |
+
/**
|
3253 |
+
* @param XmlTag $xtGetCardTypeXmlTag
|
3254 |
+
* @param string $szCardTypeDataXMLPath
|
3255 |
+
* @return CardTypeData
|
3256 |
+
* @throws Exception
|
3257 |
+
*/
|
3258 |
+
public static function getCardTypeData(XmlTag $xtGetCardTypeXmlTag, $szCardTypeDataXMLPath)
|
3259 |
+
{
|
3260 |
+
$ctdCardTypeData = null;
|
3261 |
+
$boTempValue;
|
3262 |
+
$nISOCode = null;
|
3263 |
+
$boLuhnCheckRequired = null;
|
3264 |
+
$szStartDateStatus = null;
|
3265 |
+
$szIssueNumberStatus = null;
|
3266 |
+
$szCardType;
|
3267 |
+
$szIssuer = null;
|
3268 |
+
$nTemp;
|
3269 |
+
$iIssuer;
|
3270 |
+
$szCardClass;
|
3271 |
+
|
3272 |
+
if ($xtGetCardTypeXmlTag == null)
|
3273 |
+
{
|
3274 |
+
return (null);
|
3275 |
+
}
|
3276 |
+
|
3277 |
+
if ($xtGetCardTypeXmlTag -> getStringValue($szCardTypeDataXMLPath . ".CardType", $szCardType))
|
3278 |
+
{
|
3279 |
+
$xtGetCardTypeXmlTag -> getStringValue($szCardTypeDataXMLPath . ".CardClass", $szCardClass);
|
3280 |
+
$xtGetCardTypeXmlTag -> getStringValue($szCardTypeDataXMLPath . ".Issuer", $szIssuer);
|
3281 |
+
if ($xtGetCardTypeXmlTag -> getIntegerValue($szCardTypeDataXMLPath . ".Issuer.ISOCode", $nTemp))
|
3282 |
+
{
|
3283 |
+
$nISOCode = new NullableInt($nTemp);
|
3284 |
+
}
|
3285 |
+
$iIssuer = new Issuer($szIssuer, $nISOCode);
|
3286 |
+
if ($xtGetCardTypeXmlTag -> getBooleanValue($szCardTypeDataXMLPath . ".LuhnCheckRequired", $boTempValue))
|
3287 |
+
{
|
3288 |
+
$boLuhnCheckRequired = new NullableBool($boTempValue);
|
3289 |
+
}
|
3290 |
+
$xtGetCardTypeXmlTag -> getStringValue($szCardTypeDataXMLPath . ".IssueNumberStatus", $szIssueNumberStatus);
|
3291 |
+
$xtGetCardTypeXmlTag -> getStringValue($szCardTypeDataXMLPath . ".StartDateStatus", $szStartDateStatus);
|
3292 |
+
$ctdCardTypeData = new CardTypeData($szCardType, $szCardClass, $iIssuer, $boLuhnCheckRequired, $szIssueNumberStatus, $szStartDateStatus);
|
3293 |
+
}
|
3294 |
+
|
3295 |
+
return ($ctdCardTypeData);
|
3296 |
+
}
|
3297 |
+
/**
|
3298 |
+
* @param XmlTag $xtMessageResultXmlTag
|
3299 |
+
* @param string $szGatewayOutputXMLPath
|
3300 |
+
* @param GatewayOutput $goGatewayOutput
|
3301 |
+
* @return PaymentMessageGatewayOutput
|
3302 |
+
* @throws Exception
|
3303 |
+
*/
|
3304 |
+
public static function getPaymentMessageGatewayOutput(XmlTag $xtMessageResultXmlTag, $szGatewayOutputXMLPath, GatewayOutput $goGatewayOutput = null)
|
3305 |
+
{
|
3306 |
+
$nTempValue = 0;
|
3307 |
+
$boAuthorisationAttempted = null;
|
3308 |
+
$boTempValue;
|
3309 |
+
$nPreviousStatusCode = null;
|
3310 |
+
$szPreviousMessage = null;
|
3311 |
+
$ptrPreviousTransactionResult = null;
|
3312 |
+
$pmgoPaymentMessageGatewayOutput;
|
3313 |
+
|
3314 |
+
if ($xtMessageResultXmlTag == null)
|
3315 |
+
{
|
3316 |
+
return (null);
|
3317 |
+
}
|
3318 |
+
|
3319 |
+
if ($xtMessageResultXmlTag -> getBooleanValue($szGatewayOutputXMLPath . ".AuthorisationAttempted", $boTempValue))
|
3320 |
+
{
|
3321 |
+
$boAuthorisationAttempted = new NullableBool($boTempValue);
|
3322 |
+
}
|
3323 |
+
|
3324 |
+
// check to see if there is any previous transaction data
|
3325 |
+
if ($xtMessageResultXmlTag -> getIntegerValue($szGatewayOutputXMLPath . ".PreviousTransactionResult.StatusCode", $nTempValue))
|
3326 |
+
{
|
3327 |
+
$nPreviousStatusCode = new NullableInt($nTempValue);
|
3328 |
+
}
|
3329 |
+
$xtMessageResultXmlTag -> getStringValue($szGatewayOutputXMLPath . ".PreviousTransactionResult.Message", $szPreviousMessage);
|
3330 |
+
if ($nPreviousStatusCode != null && !SharedFunctions::isStringNullOrEmpty($szPreviousMessage))
|
3331 |
+
{
|
3332 |
+
$ptrPreviousTransactionResult = new PreviousTransactionResult($nPreviousStatusCode, $szPreviousMessage);
|
3333 |
+
}
|
3334 |
+
|
3335 |
+
$pmgoPaymentMessageGatewayOutput = new PaymentMessageGatewayOutput($goGatewayOutput -> getStatusCode(), $goGatewayOutput -> getMessage(), $boAuthorisationAttempted, $ptrPreviousTransactionResult, $goGatewayOutput -> getErrorMessages());
|
3336 |
+
|
3337 |
+
return ($pmgoPaymentMessageGatewayOutput);
|
3338 |
+
}
|
3339 |
+
|
3340 |
+
}
|
app/code/local/PayVector/Tpg/Model/Common/ThePaymentGateway/SOAP.php
ADDED
@@ -0,0 +1,1045 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
//accessing external files
|
3 |
+
require_once("TPG_Common.php");
|
4 |
+
|
5 |
+
class SOAPNamespace
|
6 |
+
{
|
7 |
+
/**
|
8 |
+
* @var string
|
9 |
+
*/
|
10 |
+
private $m_szNamespace;
|
11 |
+
/**
|
12 |
+
* @var string
|
13 |
+
*/
|
14 |
+
private $m_szPrefix;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @return string
|
18 |
+
*/
|
19 |
+
public function getNamespace()
|
20 |
+
{
|
21 |
+
return $this->m_szNamespace;
|
22 |
+
}
|
23 |
+
/**
|
24 |
+
* @return string
|
25 |
+
*/
|
26 |
+
public function getPrefix()
|
27 |
+
{
|
28 |
+
return $this->m_szPrefix;
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @param string $szPrefix
|
33 |
+
* @param string $szNamespace
|
34 |
+
*/
|
35 |
+
public function __construct($szPrefix, $szNamespace)
|
36 |
+
{
|
37 |
+
$this->m_szNamespace = $szNamespace;
|
38 |
+
$this->m_szPrefix = $szPrefix;
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
class SOAPNamespaceList
|
43 |
+
{
|
44 |
+
/**
|
45 |
+
* @var SOAPNamespace[]
|
46 |
+
*/
|
47 |
+
private $m_lsnSOAPNamespaceList;
|
48 |
+
|
49 |
+
/**
|
50 |
+
* @param int $nIndex
|
51 |
+
* @return SOAPNamespace
|
52 |
+
* @throws Exception
|
53 |
+
*/
|
54 |
+
function getAt($nIndex)
|
55 |
+
{
|
56 |
+
if ($nIndex < 0 ||
|
57 |
+
$nIndex >= count($this->m_lsnSOAPNamespaceList))
|
58 |
+
{
|
59 |
+
throw new Exception("Array index out of bounds");
|
60 |
+
}
|
61 |
+
|
62 |
+
return $this->m_lsnSOAPNamespaceList[$nIndex];
|
63 |
+
}
|
64 |
+
/**
|
65 |
+
* @return int
|
66 |
+
*/
|
67 |
+
function getCount()
|
68 |
+
{
|
69 |
+
return count($this->m_lsnSOAPNamespaceList);
|
70 |
+
}
|
71 |
+
/**
|
72 |
+
* @param SOAPNamespace $snSOAPNamespace
|
73 |
+
*/
|
74 |
+
public function add(SOAPNamespace $snSOAPNamespace)
|
75 |
+
{
|
76 |
+
$this->m_lsnSOAPNamespaceList[] = $snSOAPNamespace;
|
77 |
+
}
|
78 |
+
|
79 |
+
//constructor
|
80 |
+
public function __construct()
|
81 |
+
{
|
82 |
+
$this->m_lsnSOAPNamespaceList = array();
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
+
class SOAPParameter
|
87 |
+
{
|
88 |
+
/**
|
89 |
+
* @var string
|
90 |
+
*/
|
91 |
+
private $m_szName;
|
92 |
+
/**
|
93 |
+
* @var string
|
94 |
+
*/
|
95 |
+
private $m_szValue;
|
96 |
+
//private $m_lspaSOAPParamAttributeList = array();
|
97 |
+
/**
|
98 |
+
* @var SOAPParamAttributeList
|
99 |
+
*/
|
100 |
+
private $m_lspaSOAPParamAttributeList;
|
101 |
+
/**
|
102 |
+
* @var SOAPParamList
|
103 |
+
*/
|
104 |
+
private $m_lspSOAPParamList;
|
105 |
+
|
106 |
+
/**
|
107 |
+
* @return string
|
108 |
+
*/
|
109 |
+
public function getName()
|
110 |
+
{
|
111 |
+
return $this->m_szName;
|
112 |
+
}
|
113 |
+
/**
|
114 |
+
* @return string
|
115 |
+
*/
|
116 |
+
public function getValue()
|
117 |
+
{
|
118 |
+
return $this->m_szValue;
|
119 |
+
}
|
120 |
+
/**
|
121 |
+
* @param string $szValue
|
122 |
+
*/
|
123 |
+
public function setValue($szValue)
|
124 |
+
{
|
125 |
+
$this->m_szValue = $szValue;
|
126 |
+
}
|
127 |
+
/**
|
128 |
+
* @return SOAPParamAttributeList
|
129 |
+
*/
|
130 |
+
public function getSOAPParamAttributeList()
|
131 |
+
{
|
132 |
+
return $this->m_lspaSOAPParamAttributeList;
|
133 |
+
}
|
134 |
+
/**
|
135 |
+
* @return SOAPParamList
|
136 |
+
*/
|
137 |
+
public function getSOAPParamList()
|
138 |
+
{
|
139 |
+
return $this->m_lspSOAPParamList;
|
140 |
+
}
|
141 |
+
|
142 |
+
//constructor
|
143 |
+
/**
|
144 |
+
* @param string $szName
|
145 |
+
* @param string $szValue
|
146 |
+
* @param SOAPParamAttributeList $lspaSOAPParamAttributeList
|
147 |
+
* @throws Exception
|
148 |
+
*/
|
149 |
+
public function __construct($szName, $szValue, SOAPParamAttributeList $lspaSOAPParamAttributeList = null)
|
150 |
+
{
|
151 |
+
$nCount = 0;
|
152 |
+
$spaSOAPParamAttribute = null;
|
153 |
+
|
154 |
+
if (!is_string($szName) ||
|
155 |
+
!is_string($szValue))
|
156 |
+
{
|
157 |
+
throw new Exception("Invalid parameter type");
|
158 |
+
}
|
159 |
+
|
160 |
+
$this->m_szName = $szName;
|
161 |
+
//$this->m_szValue = SharedFunctions::replaceCharsInStringWithEntities($szValue);
|
162 |
+
$this->setValue($szValue);
|
163 |
+
|
164 |
+
$this->m_lspSOAPParamList = new SOAPParamList();
|
165 |
+
$this->m_lspaSOAPParamAttributeList = new SOAPParamAttributeList();
|
166 |
+
|
167 |
+
if ($lspaSOAPParamAttributeList != null)
|
168 |
+
{
|
169 |
+
for ($nCount = 0; $nCount < $lspaSOAPParamAttributeList->getCount();$nCount++)
|
170 |
+
{
|
171 |
+
$spaSOAPParamAttribute = new SOAPParamAttribute($lspaSOAPParamAttributeList->getAt($nCount)->getName(), $lspaSOAPParamAttributeList->getAt($nCount)->getValue());
|
172 |
+
|
173 |
+
$this->m_lspaSOAPParamAttributeList->add($spaSOAPParamAttribute);
|
174 |
+
}
|
175 |
+
}
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* @return string
|
180 |
+
* @throws Exception
|
181 |
+
*/
|
182 |
+
function toXMLString()
|
183 |
+
{
|
184 |
+
$sbReturnString = null;
|
185 |
+
$nCount = null;
|
186 |
+
$spParam = null;
|
187 |
+
$spaAttribute = null;
|
188 |
+
$sbString = null;
|
189 |
+
|
190 |
+
$sbReturnString = "";
|
191 |
+
$sbReturnString .= "<" . $this->getName();
|
192 |
+
|
193 |
+
if ($this->m_lspaSOAPParamAttributeList != null)
|
194 |
+
{
|
195 |
+
for ($nCount = 0; $nCount < $this->m_lspaSOAPParamAttributeList->getCount(); $nCount++)
|
196 |
+
{
|
197 |
+
$spaAttribute = $this->m_lspaSOAPParamAttributeList->getAt($nCount);
|
198 |
+
|
199 |
+
if ($spaAttribute != null)
|
200 |
+
{
|
201 |
+
$sbString = "";
|
202 |
+
$sbString .= " " .$spaAttribute->getName(). "=\"" .SharedFunctions::replaceCharsInStringWithEntities($spaAttribute->getValue()). "\"";
|
203 |
+
$sbReturnString .= (string)$sbString;
|
204 |
+
}
|
205 |
+
}
|
206 |
+
}
|
207 |
+
|
208 |
+
if ($this->m_lspSOAPParamList->getCount() == 0 &&
|
209 |
+
$this->getValue() == "")
|
210 |
+
{
|
211 |
+
$sbReturnString .= " />";
|
212 |
+
}
|
213 |
+
else
|
214 |
+
{
|
215 |
+
$sbReturnString .= ">";
|
216 |
+
|
217 |
+
if ($this->getValue() != "")
|
218 |
+
{
|
219 |
+
$sbReturnString .= SharedFunctions::replaceCharsInStringWithEntities($this->getValue());
|
220 |
+
}
|
221 |
+
|
222 |
+
for ($nCount = 0; $nCount < $this->m_lspSOAPParamList->getCount(); $nCount++)
|
223 |
+
{
|
224 |
+
$spParam = $this->m_lspSOAPParamList->getAt($nCount);
|
225 |
+
|
226 |
+
if ($spParam != null)
|
227 |
+
{
|
228 |
+
$sbReturnString .= $spParam->toXMLString();
|
229 |
+
}
|
230 |
+
}
|
231 |
+
|
232 |
+
$sbReturnString .= "</" . $this->getName() . ">";
|
233 |
+
}
|
234 |
+
|
235 |
+
return (string)$sbReturnString;
|
236 |
+
}
|
237 |
+
}
|
238 |
+
|
239 |
+
class SOAPParamList
|
240 |
+
{
|
241 |
+
/**
|
242 |
+
* @var SOAPParameter[]
|
243 |
+
*/
|
244 |
+
private $m_lspSOAPParamList;
|
245 |
+
|
246 |
+
/**
|
247 |
+
* @return int
|
248 |
+
*/
|
249 |
+
function getCount()
|
250 |
+
{
|
251 |
+
return count($this->m_lspSOAPParamList);
|
252 |
+
}
|
253 |
+
/**
|
254 |
+
* @param int $nIndex
|
255 |
+
* @return SOAPParamter
|
256 |
+
* @throws Exception
|
257 |
+
*/
|
258 |
+
public function getAt($nIndex)
|
259 |
+
{
|
260 |
+
if ($nIndex < 0 ||
|
261 |
+
$nIndex > count($this->m_lspSOAPParamList))
|
262 |
+
{
|
263 |
+
throw new Exception("Array index out of bounds");
|
264 |
+
}
|
265 |
+
|
266 |
+
return $this->m_lspSOAPParamList[$nIndex];
|
267 |
+
}
|
268 |
+
/**
|
269 |
+
* @param string $szTagNameToFind
|
270 |
+
* @param int $nIndex
|
271 |
+
* @return null|SOAPParamter
|
272 |
+
* @throws Exception
|
273 |
+
*/
|
274 |
+
public function isSOAPParamInList($szTagNameToFind, $nIndex)
|
275 |
+
{
|
276 |
+
$spReturnParam = null;
|
277 |
+
$boFound = false;
|
278 |
+
$nFound = 0;
|
279 |
+
$nCount = 0;
|
280 |
+
$spCurrentParam = null;
|
281 |
+
|
282 |
+
while(!$boFound &&
|
283 |
+
$nCount < $this->getCount())
|
284 |
+
{
|
285 |
+
$spCurrentParam = $this->getAt($nCount);
|
286 |
+
|
287 |
+
if ($spCurrentParam->getName() == $szTagNameToFind)
|
288 |
+
{
|
289 |
+
if ($nFound == $nIndex)
|
290 |
+
{
|
291 |
+
$boFound = true;
|
292 |
+
$spReturnParam = $spCurrentParam;
|
293 |
+
}
|
294 |
+
else
|
295 |
+
{
|
296 |
+
$nFound++;
|
297 |
+
}
|
298 |
+
}
|
299 |
+
|
300 |
+
$nCount++;
|
301 |
+
}
|
302 |
+
|
303 |
+
return $spReturnParam;
|
304 |
+
}
|
305 |
+
/**
|
306 |
+
* @param SOAPParameter $spSOAPParam
|
307 |
+
*/
|
308 |
+
public function add(SOAPParameter $spSOAPParam)
|
309 |
+
{
|
310 |
+
$this->m_lspSOAPParamList[] = $spSOAPParam;
|
311 |
+
}
|
312 |
+
|
313 |
+
//constructor
|
314 |
+
public function __construct()
|
315 |
+
{
|
316 |
+
$this->m_lspSOAPParamList = array();
|
317 |
+
}
|
318 |
+
}
|
319 |
+
|
320 |
+
class SOAPParamAttribute
|
321 |
+
{
|
322 |
+
/**
|
323 |
+
* @var string
|
324 |
+
*/
|
325 |
+
private $m_szName;
|
326 |
+
/**
|
327 |
+
* @var string
|
328 |
+
*/
|
329 |
+
private $m_szValue;
|
330 |
+
|
331 |
+
/**
|
332 |
+
* @return string
|
333 |
+
*/
|
334 |
+
public function getName()
|
335 |
+
{
|
336 |
+
return $this->m_szName;
|
337 |
+
}
|
338 |
+
/**
|
339 |
+
* @return string
|
340 |
+
*/
|
341 |
+
public function getValue()
|
342 |
+
{
|
343 |
+
return $this->m_szValue;
|
344 |
+
}
|
345 |
+
|
346 |
+
//constructor
|
347 |
+
/**
|
348 |
+
* @param string $szName
|
349 |
+
* @param string $szValue
|
350 |
+
* @throws Exception
|
351 |
+
*/
|
352 |
+
public function __construct($szName, $szValue)
|
353 |
+
{
|
354 |
+
if (!is_string($szName) ||
|
355 |
+
!is_string($szValue))
|
356 |
+
{
|
357 |
+
throw new Exception("Invalid parameter type");
|
358 |
+
}
|
359 |
+
|
360 |
+
$this->m_szName = $szName;
|
361 |
+
$this->m_szValue = $szValue;
|
362 |
+
}
|
363 |
+
}
|
364 |
+
|
365 |
+
class SOAPParamAttributeList
|
366 |
+
{
|
367 |
+
/**
|
368 |
+
* @var SOAPParamAttribute[]
|
369 |
+
*/
|
370 |
+
private $m_lspaSOAPParamAttributeAttributeList;
|
371 |
+
|
372 |
+
/**
|
373 |
+
* @param int $nIndex
|
374 |
+
* @return SOAPParamAttribute
|
375 |
+
* @throws Exception
|
376 |
+
*/
|
377 |
+
public function getAt($nIndex)
|
378 |
+
{
|
379 |
+
if ($nIndex < 0 ||
|
380 |
+
$nIndex >= count($this->m_lspaSOAPParamAttributeAttributeList))
|
381 |
+
{
|
382 |
+
throw new Exception("Array index out of bounds");
|
383 |
+
}
|
384 |
+
|
385 |
+
return $this->m_lspaSOAPParamAttributeAttributeList[$nIndex];
|
386 |
+
}
|
387 |
+
/**
|
388 |
+
* @return int
|
389 |
+
*/
|
390 |
+
public function getCount()
|
391 |
+
{
|
392 |
+
return count($this->m_lspaSOAPParamAttributeAttributeList);
|
393 |
+
}
|
394 |
+
/**
|
395 |
+
* @param SOAPParamAttribute $spaSOAPParamAttributeAttribute
|
396 |
+
*/
|
397 |
+
public function add(SOAPParamAttribute $spaSOAPParamAttributeAttribute)
|
398 |
+
{
|
399 |
+
$this->m_lspaSOAPParamAttributeAttributeList[] = $spaSOAPParamAttributeAttribute;
|
400 |
+
}
|
401 |
+
|
402 |
+
//constructor
|
403 |
+
public function __construct()
|
404 |
+
{
|
405 |
+
$this->m_lspaSOAPParamAttributeAttributeList = array();
|
406 |
+
}
|
407 |
+
}
|
408 |
+
|
409 |
+
class SOAP
|
410 |
+
{
|
411 |
+
/**
|
412 |
+
* @var string
|
413 |
+
*/
|
414 |
+
private $m_szMethod;
|
415 |
+
/**
|
416 |
+
* @var string
|
417 |
+
*/
|
418 |
+
private $m_szMethodURI;
|
419 |
+
/**
|
420 |
+
* @var string
|
421 |
+
*/
|
422 |
+
private $m_szURL;
|
423 |
+
/**
|
424 |
+
* @var string
|
425 |
+
*/
|
426 |
+
private $m_szActionURI;
|
427 |
+
/**
|
428 |
+
* @var string
|
429 |
+
*/
|
430 |
+
private $m_szSOAPEncoding;
|
431 |
+
/**
|
432 |
+
* @var bool
|
433 |
+
*/
|
434 |
+
private $m_boPacketBuilt;
|
435 |
+
/**
|
436 |
+
* @var string
|
437 |
+
*/
|
438 |
+
private $m_szLastResponse;
|
439 |
+
/**
|
440 |
+
* @var string
|
441 |
+
*/
|
442 |
+
private $m_szSOAPPacket;
|
443 |
+
/**
|
444 |
+
* @var XmlParser
|
445 |
+
*/
|
446 |
+
private $m_xmlParser;
|
447 |
+
/**
|
448 |
+
* @var XMLTag
|
449 |
+
*/
|
450 |
+
private $m_xmlTag;
|
451 |
+
/**
|
452 |
+
* @var int
|
453 |
+
*/
|
454 |
+
private $m_nTimeout;
|
455 |
+
/**
|
456 |
+
* @var Exception
|
457 |
+
*/
|
458 |
+
private $m_eLastException;
|
459 |
+
/**
|
460 |
+
* @var SOAPNamespaceList
|
461 |
+
*/
|
462 |
+
private $m_lsnSOAPNamespaceList;
|
463 |
+
/**
|
464 |
+
* @var SOAPParamList
|
465 |
+
*/
|
466 |
+
private $m_lspSOAPParamList;
|
467 |
+
|
468 |
+
/**
|
469 |
+
* @return string
|
470 |
+
*/
|
471 |
+
public function getMethod()
|
472 |
+
{
|
473 |
+
return $this->m_szMethod;
|
474 |
+
}
|
475 |
+
/**
|
476 |
+
* @return string
|
477 |
+
*/
|
478 |
+
public function getMethodURI()
|
479 |
+
{
|
480 |
+
return $this->m_szMethodURI;
|
481 |
+
}
|
482 |
+
/**
|
483 |
+
* @return string
|
484 |
+
*/
|
485 |
+
public function getURL()
|
486 |
+
{
|
487 |
+
return $this->m_szURL;
|
488 |
+
}
|
489 |
+
/**
|
490 |
+
* @param $value
|
491 |
+
*/
|
492 |
+
public function setURL($value)
|
493 |
+
{
|
494 |
+
$this->m_szURL = $value;
|
495 |
+
}
|
496 |
+
/**
|
497 |
+
* @return string
|
498 |
+
*/
|
499 |
+
public function getActionURI()
|
500 |
+
{
|
501 |
+
return $this->m_szActionURI;
|
502 |
+
}
|
503 |
+
/**
|
504 |
+
* @return string
|
505 |
+
*/
|
506 |
+
public function getSOAPEncoding()
|
507 |
+
{
|
508 |
+
return $this->m_szSOAPEncoding;
|
509 |
+
}
|
510 |
+
/**
|
511 |
+
* @return bool
|
512 |
+
*/
|
513 |
+
public function getPacketBuilt()
|
514 |
+
{
|
515 |
+
return $this->m_boPacketBuilt;
|
516 |
+
}
|
517 |
+
/**
|
518 |
+
* @return string
|
519 |
+
*/
|
520 |
+
public function getLastResponse()
|
521 |
+
{
|
522 |
+
return $this->m_szLastResponse;
|
523 |
+
}
|
524 |
+
/**
|
525 |
+
* @return string
|
526 |
+
*/
|
527 |
+
public function getSOAPPacket()
|
528 |
+
{
|
529 |
+
return $this->m_szSOAPPacket;
|
530 |
+
}
|
531 |
+
/**
|
532 |
+
* @return XmlParser
|
533 |
+
*/
|
534 |
+
public function getXmlParser()
|
535 |
+
{
|
536 |
+
return $this->m_xmlParser;
|
537 |
+
}
|
538 |
+
/**
|
539 |
+
* @return XMLTag
|
540 |
+
*/
|
541 |
+
public function getXmlTag()
|
542 |
+
{
|
543 |
+
return $this->m_xmlTag;
|
544 |
+
}
|
545 |
+
/**
|
546 |
+
* @return int
|
547 |
+
*/
|
548 |
+
public function getTimeout()
|
549 |
+
{
|
550 |
+
return $this->m_nTimeout;
|
551 |
+
}
|
552 |
+
/**
|
553 |
+
* @param int $value
|
554 |
+
*/
|
555 |
+
public function setTimeout($value)
|
556 |
+
{
|
557 |
+
$this->m_nTimeout = $value;
|
558 |
+
}
|
559 |
+
/**
|
560 |
+
* @return Exception
|
561 |
+
*/
|
562 |
+
public function getLastException()
|
563 |
+
{
|
564 |
+
$this->m_eLastException;
|
565 |
+
}
|
566 |
+
/**
|
567 |
+
* @throws Exception
|
568 |
+
*/
|
569 |
+
public function buildPacket()
|
570 |
+
{
|
571 |
+
$sbString = null;
|
572 |
+
$sbString2 = null;
|
573 |
+
$snNamespace = null;
|
574 |
+
$szFirstNamespace = null;
|
575 |
+
$szFirstPrefix = null;
|
576 |
+
$nCount = 0;
|
577 |
+
$spSOAPParam = null;
|
578 |
+
|
579 |
+
// build the xml SOAP request
|
580 |
+
// start with the XML version
|
581 |
+
$sbString = "";
|
582 |
+
$sbString .= "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
|
583 |
+
|
584 |
+
if ($this->m_lsnSOAPNamespaceList->getCount() == 0)
|
585 |
+
{
|
586 |
+
$szFirstNamespace = "http://schemas.xmlsoap.org/soap/envelope/";
|
587 |
+
$szFirstPrefix = "soap";
|
588 |
+
}
|
589 |
+
else
|
590 |
+
{
|
591 |
+
$snNamespace = $this->m_lsnSOAPNamespaceList->getAt(0);
|
592 |
+
|
593 |
+
if ($snNamespace == null)
|
594 |
+
{
|
595 |
+
$szFirstNamespace = "http://schemas.xmlsoap.org/soap/envelope/";
|
596 |
+
$szFirstPrefix = "soap";
|
597 |
+
}
|
598 |
+
else
|
599 |
+
{
|
600 |
+
if ($snNamespace->getNamespace() == null ||
|
601 |
+
$snNamespace->getNamespace() == "")
|
602 |
+
{
|
603 |
+
$szFirstNamespace = "http://schemas.xmlsoap.org/soap/envelope/";
|
604 |
+
}
|
605 |
+
else
|
606 |
+
{
|
607 |
+
$szFirstNamespace = $snNamespace->getNamespace();
|
608 |
+
}
|
609 |
+
|
610 |
+
if ($snNamespace->getPrefix() == null ||
|
611 |
+
$snNamespace->getPrefix() == "")
|
612 |
+
{
|
613 |
+
$szFirstPrefix = "soap";
|
614 |
+
}
|
615 |
+
else
|
616 |
+
{
|
617 |
+
$szFirstPrefix = $snNamespace->getPrefix();
|
618 |
+
}
|
619 |
+
}
|
620 |
+
}
|
621 |
+
|
622 |
+
$sbString2 = "";
|
623 |
+
$sbString2 .= "<" .$szFirstPrefix. ":Envelope xmlns:" .$szFirstPrefix. "=\"" .$szFirstNamespace. "\"";
|
624 |
+
|
625 |
+
for ($nCount = 1; $nCount <$this->m_lsnSOAPNamespaceList->getCount(); $nCount++)
|
626 |
+
{
|
627 |
+
$snNamespace = $this->m_lsnSOAPNamespaceList->getAt($nCount);
|
628 |
+
|
629 |
+
if ($snNamespace != null)
|
630 |
+
{
|
631 |
+
if ($snNamespace->getNamespace() != "" &&
|
632 |
+
$snNamespace->getPrefix() != "")
|
633 |
+
{
|
634 |
+
$sbString2 .= " xmlns:" .$snNamespace->getPrefix(). "=\"" .$snNamespace->getNamespace(). "\"";
|
635 |
+
}
|
636 |
+
}
|
637 |
+
}
|
638 |
+
|
639 |
+
$sbString2 .= ">";
|
640 |
+
|
641 |
+
$sbString .= (string)$sbString2;
|
642 |
+
$sbString2 = "";
|
643 |
+
$sbString2 .= "<" .$szFirstPrefix. ":Body>";
|
644 |
+
$sbString .= (string)$sbString2;
|
645 |
+
$sbString2 = "";
|
646 |
+
$sbString2 .= "<" .$this->getMethod(). " xmlns=\"" .$this->getMethodURI(). "\">";
|
647 |
+
$sbString .= (string)$sbString2;
|
648 |
+
|
649 |
+
for ($nCount = 0;$nCount < $this->m_lspSOAPParamList->getCount(); $nCount++)
|
650 |
+
{
|
651 |
+
$spSOAPParam = $this->m_lspSOAPParamList->getAt($nCount);
|
652 |
+
|
653 |
+
if ($spSOAPParam != null)
|
654 |
+
{
|
655 |
+
$sbString .= $spSOAPParam->toXMLString();
|
656 |
+
}
|
657 |
+
}
|
658 |
+
|
659 |
+
$sbString2 = "";
|
660 |
+
$sbString2 .= "</" .$this->getMethod(). ">";
|
661 |
+
$sbString .= (string)$sbString2;
|
662 |
+
$sbString2 = "";
|
663 |
+
$sbString2 .= "</" .$szFirstPrefix. ":Body></" .$szFirstPrefix. ":Envelope>";
|
664 |
+
$sbString .= (string)$sbString2;
|
665 |
+
|
666 |
+
$this->m_szSOAPPacket = (string)$sbString;
|
667 |
+
$this->m_boPacketBuilt = true;
|
668 |
+
}
|
669 |
+
/**
|
670 |
+
* @return bool
|
671 |
+
*/
|
672 |
+
public function sendRequest()
|
673 |
+
{
|
674 |
+
$szString = "";
|
675 |
+
$boReturnValue = false;
|
676 |
+
$szUserAgent = "ThePaymentGateway SOAP Library PHP";
|
677 |
+
|
678 |
+
if (!$this->m_boPacketBuilt)
|
679 |
+
{
|
680 |
+
$this->buildPacket();
|
681 |
+
}
|
682 |
+
|
683 |
+
$this->m_xmlParser = null;
|
684 |
+
$this->m_xmlTag = null;
|
685 |
+
|
686 |
+
try
|
687 |
+
{
|
688 |
+
//intialising the curl for XML parsing
|
689 |
+
$cURL = curl_init();
|
690 |
+
|
691 |
+
//http settings
|
692 |
+
$HttpHeader[] = "SOAPAction:". $this->getActionURI();
|
693 |
+
$HttpHeader[] = "Content-Type: text/xml; charset = utf-8";
|
694 |
+
$HttpHeader[] = "Connection: close";
|
695 |
+
|
696 |
+
/*$http_options = array(CURLOPT_HEADER => false,
|
697 |
+
CURLOPT_HTTPHEADER => $HttpHeader,
|
698 |
+
CURLOPT_POST => true,
|
699 |
+
CURLOPT_URL => $this->getURL(),
|
700 |
+
CURLOPT_USERAGENT => $szUserAgent,
|
701 |
+
CURLOPT_POSTFIELDS => $this->getSOAPPacket(),
|
702 |
+
CURLOPT_RETURNTRANSFER => true,
|
703 |
+
CURLOPT_ENCODING => "UTF-8",
|
704 |
+
CURLOPT_SSL_VERIFYPEER => false, //disabling default peer SSL certificate verification
|
705 |
+
);
|
706 |
+
|
707 |
+
curl_setopt_array($cURL, $http_options);*/
|
708 |
+
|
709 |
+
curl_setopt($cURL, CURLOPT_HEADER, false);
|
710 |
+
curl_setopt($cURL, CURLOPT_HTTPHEADER, $HttpHeader);
|
711 |
+
curl_setopt($cURL, CURLOPT_POST, true);
|
712 |
+
curl_setopt($cURL, CURLOPT_URL, $this->getURL());
|
713 |
+
curl_setopt($cURL, CURLOPT_USERAGENT, $szUserAgent);
|
714 |
+
curl_setopt($cURL, CURLOPT_POSTFIELDS, $this->getSOAPPacket());
|
715 |
+
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
|
716 |
+
curl_setopt($cURL, CURLOPT_ENCODING, "UTF-8");
|
717 |
+
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, true);
|
718 |
+
|
719 |
+
//check if a certificate list is specified in the php.ini file, otherwise use the bundled one
|
720 |
+
$caInfoSetting = ini_get("curl.cainfo");
|
721 |
+
if(empty($caInfoSetting))
|
722 |
+
{
|
723 |
+
curl_setopt($cURL, CURLOPT_CAINFO, __DIR__ . "/cacert.pem");
|
724 |
+
}
|
725 |
+
|
726 |
+
if ($this->getTimeout() != null)
|
727 |
+
{
|
728 |
+
curl_setopt($cURL, CURLOPT_TIMEOUT, $this->getTimeout());
|
729 |
+
}
|
730 |
+
|
731 |
+
//$this->m_szLastResponse = curl_exec($cURL);
|
732 |
+
$szString = curl_exec($cURL);
|
733 |
+
$errorNo = curl_errno($cURL);//test
|
734 |
+
$errorMsg = curl_error($cURL);//test
|
735 |
+
$header = curl_getinfo($cURL);//test
|
736 |
+
curl_close($cURL);
|
737 |
+
|
738 |
+
//HACK - certain versions of PHP seem to cause extra characters to be added to the HTTP Header so that curl doesn't strip the header
|
739 |
+
//the regex makes sure that only XML is passed through to the parser
|
740 |
+
$pattern = '(<\?xml.*</soap:Envelope>)';
|
741 |
+
preg_match($pattern, $szString, $matches, PREG_OFFSET_CAPTURE);
|
742 |
+
|
743 |
+
$szString = $matches[0][0];
|
744 |
+
|
745 |
+
$this->m_szLastResponse = $szString;
|
746 |
+
|
747 |
+
|
748 |
+
$szString = str_replace("<soap:Body>", " ", $szString);
|
749 |
+
$szString = str_replace("</soap:Body>", " ", $szString);
|
750 |
+
|
751 |
+
$this->m_xmlParser = new XmlParser();
|
752 |
+
|
753 |
+
if (!$this->m_xmlParser->parseBuffer($szString))
|
754 |
+
{
|
755 |
+
throw new Exception("Could not parse response string");
|
756 |
+
}
|
757 |
+
else
|
758 |
+
{
|
759 |
+
$szResponsePathString = $this->m_szMethod."Response";
|
760 |
+
|
761 |
+
$this->m_xmlTag = $this->m_xmlParser->getTag($szResponsePathString);
|
762 |
+
|
763 |
+
if ($this->m_xmlTag == null)
|
764 |
+
{
|
765 |
+
throw new Exception("Couldn't find SOAP response tag: ".$szResponsePathString);
|
766 |
+
}
|
767 |
+
$boReturnValue = true;
|
768 |
+
}
|
769 |
+
|
770 |
+
$boReturnValue = true;
|
771 |
+
}
|
772 |
+
catch (Exception $exc)
|
773 |
+
{
|
774 |
+
$boReturnValue = false;
|
775 |
+
$m_eLastException = $exc;
|
776 |
+
//log error to the system log file
|
777 |
+
error_log(
|
778 |
+
"PHP Exception '" .$exc->getMessage() .
|
779 |
+
"' at line " . $exc->getLine() .
|
780 |
+
" in '" . $exc->getFile() .
|
781 |
+
"'. Stack trace: " . $exc->getTraceAsString()
|
782 |
+
);
|
783 |
+
}
|
784 |
+
|
785 |
+
return $boReturnValue;
|
786 |
+
}
|
787 |
+
/**
|
788 |
+
* @param string $szName
|
789 |
+
* @param string $szValue
|
790 |
+
* @param SOAPParamAttributeList $lspaSOAPParamAttributeList
|
791 |
+
*/
|
792 |
+
public function addParam($szName, $szValue, SOAPParamAttributeList $lspaSOAPParamAttributeList = null)
|
793 |
+
{
|
794 |
+
$spSOAPParam;
|
795 |
+
|
796 |
+
$spSOAPParam = new SOAPParameter($szName, $szValue, $lspaSOAPParamAttributeList);
|
797 |
+
|
798 |
+
$this->addParam2($spSOAPParam, true);
|
799 |
+
}
|
800 |
+
/**
|
801 |
+
* @param SOAPParameter $spSOAPParam
|
802 |
+
* @param bool $boOverWriteValue
|
803 |
+
* @throws Exception
|
804 |
+
*/
|
805 |
+
private function addParam2(SOAPParameter $spSOAPParam, $boOverWriteValue)
|
806 |
+
{
|
807 |
+
$lszHierarchicalNames;
|
808 |
+
$nCurrentIndex = 0;
|
809 |
+
$szTagNameToFind;
|
810 |
+
$szString;
|
811 |
+
$nCount = 0;
|
812 |
+
$nCount2 = 0;
|
813 |
+
$lspParamList;
|
814 |
+
$spWorkingSOAPParam;
|
815 |
+
$spNewSOAPParam;
|
816 |
+
$boFound = false;
|
817 |
+
$lspaAttributeList;
|
818 |
+
$spaAttribute;
|
819 |
+
$spaNewAttribute;
|
820 |
+
$spaSOAPParamAttributeList;
|
821 |
+
|
822 |
+
// need to check the name of the incoming item to see if it is a
|
823 |
+
// complex soap parameter
|
824 |
+
$lszHierarchicalNames = new StringList();
|
825 |
+
|
826 |
+
$lszHierarchicalNames = SharedFunctions::getStringListFromCharSeparatedString($spSOAPParam->getName(), ".");
|
827 |
+
|
828 |
+
if ($lszHierarchicalNames->getCount() == 1)
|
829 |
+
{
|
830 |
+
$this->m_lspSOAPParamList->add($spSOAPParam);
|
831 |
+
}
|
832 |
+
else
|
833 |
+
{
|
834 |
+
$lspParamList = $this->m_lspSOAPParamList;
|
835 |
+
|
836 |
+
//complex
|
837 |
+
for ($nCount = 0; $nCount < $lszHierarchicalNames->getCount(); $nCount++)
|
838 |
+
{
|
839 |
+
// get the current tag name
|
840 |
+
$szString = (string)$lszHierarchicalNames->getAt($nCount);
|
841 |
+
//continuework
|
842 |
+
$szTagNameToFind = SharedFunctions::getArrayNameAndIndex($szString, $nCurrentIndex);
|
843 |
+
|
844 |
+
// first thing is to try to find the tag in the list
|
845 |
+
if ($boFound ||
|
846 |
+
$nCount == 0)
|
847 |
+
{
|
848 |
+
// try to find this tag name in the list
|
849 |
+
$spWorkingSOAPParam = $lspParamList->isSOAPParamInList($szTagNameToFind, $nCurrentIndex);
|
850 |
+
|
851 |
+
if ($spWorkingSOAPParam == null)
|
852 |
+
{
|
853 |
+
$boFound = false;
|
854 |
+
}
|
855 |
+
else
|
856 |
+
{
|
857 |
+
$boFound = true;
|
858 |
+
|
859 |
+
// is this the last item in the hierarchy?
|
860 |
+
if ($nCount == ($lszHierarchicalNames->getCount() - 1))
|
861 |
+
{
|
862 |
+
if ($boOverWriteValue)
|
863 |
+
{
|
864 |
+
// change the value
|
865 |
+
$spWorkingSOAPParam->setValue($spSOAPParam->getValue());
|
866 |
+
}
|
867 |
+
|
868 |
+
// add the attributes to the list
|
869 |
+
for ($nCount2 = 0; $nCount2 < $spSOAPParam->getSOAPParamAttributeList()->getCount(); $nCount2++)
|
870 |
+
{
|
871 |
+
//$spaAttribute = $spaSOAPParamAttributeList[$nCount2];
|
872 |
+
$spaAttribute = $spSOAPParam->getSOAPParamAttributeList()->getAt($nCount2);
|
873 |
+
|
874 |
+
if ($spaAttribute != null)
|
875 |
+
{
|
876 |
+
$spaNewAttribute = new SOAPParamAttribute($spaAttribute->getName(), $spaAttribute->getValue());
|
877 |
+
|
878 |
+
$spWorkingSOAPParam->getSOAPParamAttributeList()->add($spaNewAttribute);
|
879 |
+
}
|
880 |
+
}
|
881 |
+
}
|
882 |
+
$lspParamList = $spWorkingSOAPParam->getSOAPParamList();
|
883 |
+
}
|
884 |
+
}
|
885 |
+
|
886 |
+
if (!$boFound)
|
887 |
+
{
|
888 |
+
// is this the last tag?
|
889 |
+
if ($nCount == ($lszHierarchicalNames->getCount() - 1))
|
890 |
+
{
|
891 |
+
$lspaAttributeList = new SOAPParamAttributeList();
|
892 |
+
|
893 |
+
for ($nCount2 = 0; $nCount2 < $spSOAPParam->getSOAPParamAttributeList()->getCount(); $nCount2++)
|
894 |
+
{
|
895 |
+
$spaSOAPParamAttributeList = $spSOAPParam->getSOAPParamAttributeList();
|
896 |
+
|
897 |
+
$spaAttribute = $spaSOAPParamAttributeList->getAt( $nCount2);
|
898 |
+
|
899 |
+
if ($spaAttribute != null)
|
900 |
+
{
|
901 |
+
$spaNewAttribute = new SOAPParamAttribute($spaAttribute->getName(), $spaAttribute->getValue());
|
902 |
+
$lspaAttributeList->add($spaNewAttribute);
|
903 |
+
}
|
904 |
+
}
|
905 |
+
|
906 |
+
$spNewSOAPParam = new SOAPParameter($szTagNameToFind, $spSOAPParam->getValue(), $lspaAttributeList);
|
907 |
+
|
908 |
+
$lspParamList->add($spNewSOAPParam);
|
909 |
+
}
|
910 |
+
else
|
911 |
+
{
|
912 |
+
$spNewSOAPParam = new SOAPParameter($szTagNameToFind, "", null);
|
913 |
+
$lspParamList->add($spNewSOAPParam);
|
914 |
+
$lspParamList = $spNewSOAPParam->getSOAPParamList();
|
915 |
+
}
|
916 |
+
}
|
917 |
+
}
|
918 |
+
}
|
919 |
+
|
920 |
+
$this->m_boPacketBuilt = false;
|
921 |
+
}
|
922 |
+
/**
|
923 |
+
* @param string $szName
|
924 |
+
* @param string $szParamAttributeName
|
925 |
+
* @param string $szParamAttributeValue
|
926 |
+
* @throws Exception
|
927 |
+
*/
|
928 |
+
public function addParamAttribute($szName, $szParamAttributeName, $szParamAttributeValue)
|
929 |
+
{
|
930 |
+
$spSOAPParam;
|
931 |
+
$lspaSOAPParamAttributeList;
|
932 |
+
$spaSOAPParamAttribute;
|
933 |
+
|
934 |
+
if (!is_string($szName) ||
|
935 |
+
!is_string($szParamAttributeName) ||
|
936 |
+
!is_string($szParamAttributeValue))
|
937 |
+
{
|
938 |
+
throw new Exception("Invalid parameter type");
|
939 |
+
}
|
940 |
+
|
941 |
+
$lspaSOAPParamAttributeList = new SOAPParamAttributeList();
|
942 |
+
$spaSOAPParamAttribute = new SOAPParamAttribute($szParamAttributeName, $szParamAttributeValue);
|
943 |
+
$lspaSOAPParamAttributeList->add($spaSOAPParamAttribute);
|
944 |
+
|
945 |
+
$spSOAPParam = new SOAPParameter($szName, "", $lspaSOAPParamAttributeList);
|
946 |
+
|
947 |
+
$this->addParam2($spSOAPParam, false);
|
948 |
+
}
|
949 |
+
|
950 |
+
//overloading constructors
|
951 |
+
/**
|
952 |
+
* @param string $szMethod
|
953 |
+
* @param string $szMethodURI
|
954 |
+
*/
|
955 |
+
private function SOAP1($szMethod, $szMethodURI)
|
956 |
+
{
|
957 |
+
$this->SOAP3($szMethod, $szMethodURI, null, "http://schemas.xmlsoap.org/soap/encoding/", true, null);
|
958 |
+
}
|
959 |
+
/**
|
960 |
+
* @param string $szMethod
|
961 |
+
* @param string $szMethodURI
|
962 |
+
* @param string $szURL
|
963 |
+
*/
|
964 |
+
private function SOAP2($szMethod, $szMethodURI, $szURL)
|
965 |
+
{
|
966 |
+
$this->SOAP3($szMethod, $szMethodURI, $szURL, "http://schemas.xmlsoap.org/soap/encoding/", true, null);
|
967 |
+
}
|
968 |
+
/**
|
969 |
+
* @param string $szMethod
|
970 |
+
* @param string $szMethodURI
|
971 |
+
* @param string $szURL
|
972 |
+
* @param string $szSOAPEncoding
|
973 |
+
* @param bool $boAddDefaultNamespaces
|
974 |
+
* @param SOAPNamespaceList $lsnSOAPNamespaceList
|
975 |
+
* @throws Exception
|
976 |
+
*/
|
977 |
+
private function SOAP3($szMethod, $szMethodURI, $szURL, $szSOAPEncoding, $boAddDefaultNamespaces, SOAPNamespaceList $lsnSOAPNamespaceList = null)
|
978 |
+
{
|
979 |
+
$snSOAPNamespace;
|
980 |
+
$nCount = 0;
|
981 |
+
|
982 |
+
$this->m_szMethod = $szMethod;
|
983 |
+
$this->m_szMethodURI = $szMethodURI;
|
984 |
+
$this->m_szURL = $szURL;
|
985 |
+
$this->m_szSOAPEncoding = $szSOAPEncoding;
|
986 |
+
|
987 |
+
if ($this->m_szMethodURI != "" &&
|
988 |
+
$this->m_szMethod != "")
|
989 |
+
{
|
990 |
+
if ($this->m_szMethodURI[(strlen($this->m_szMethodURI) - 1)] == "/")
|
991 |
+
{
|
992 |
+
$this->m_szActionURI = $this->m_szMethodURI . $this->m_szMethod;
|
993 |
+
}
|
994 |
+
else
|
995 |
+
{
|
996 |
+
$this->m_szActionURI = $this->m_szMethodURI . "/" . $this->m_szMethod;
|
997 |
+
}
|
998 |
+
}
|
999 |
+
|
1000 |
+
$this->m_lsnSOAPNamespaceList = new SOAPNamespaceList();
|
1001 |
+
|
1002 |
+
if ($boAddDefaultNamespaces)
|
1003 |
+
{
|
1004 |
+
$snSOAPNamespace = new SOAPNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
|
1005 |
+
$this->m_lsnSOAPNamespaceList->add($snSOAPNamespace);
|
1006 |
+
$snSOAPNamespace = new SOAPNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
|
1007 |
+
$this->m_lsnSOAPNamespaceList->add($snSOAPNamespace);
|
1008 |
+
$snSOAPNamespace = new SOAPNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
|
1009 |
+
$this->m_lsnSOAPNamespaceList->add($snSOAPNamespace);
|
1010 |
+
}
|
1011 |
+
if ($lsnSOAPNamespaceList != null)
|
1012 |
+
{
|
1013 |
+
for ($nCount = 0; $nCount < count($lsnSOAPNamespaceList); $nCount++)
|
1014 |
+
{
|
1015 |
+
$snSOAPNamespace = new SOAPNamespace($lsnSOAPNamespaceList->getAt($nCount)->getPrefix(), $lsnSOAPNamespaceList->getAt($nCount)->getNamespace());
|
1016 |
+
$this->m_lsnSOAPNamespaceList->add($snSOAPNamespace);
|
1017 |
+
}
|
1018 |
+
}
|
1019 |
+
$this->m_lspSOAPParamList = new SOAPParamList();
|
1020 |
+
|
1021 |
+
$this->m_boPacketBuilt = false;
|
1022 |
+
}
|
1023 |
+
|
1024 |
+
//constructor
|
1025 |
+
public function __construct()
|
1026 |
+
{
|
1027 |
+
$num_args = func_num_args();
|
1028 |
+
$args = func_get_args();
|
1029 |
+
|
1030 |
+
switch ($num_args)
|
1031 |
+
{
|
1032 |
+
case 2:
|
1033 |
+
$this->SOAP1($args[0], $args[1]);
|
1034 |
+
break;
|
1035 |
+
case 3:
|
1036 |
+
$this->SOAP2($args[0], $args[1], $args[2]);
|
1037 |
+
break;
|
1038 |
+
case 6:
|
1039 |
+
$this->SOAP3($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
|
1040 |
+
break;
|
1041 |
+
default:
|
1042 |
+
throw new Exception("Invalid number of parameters for constructor SOAP");
|
1043 |
+
}
|
1044 |
+
}
|
1045 |
+
}
|
app/code/local/PayVector/Tpg/Model/Common/ThePaymentGateway/TPG_Common.php
ADDED
@@ -0,0 +1,1884 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* XMLEntities
|
5 |
+
* @var XMLEntity[] $g_XMLEntities
|
6 |
+
*/
|
7 |
+
$g_XMLEntities = array();
|
8 |
+
$g_XMLEntities[] = new XMLEntity(0x26, "&");
|
9 |
+
$g_XMLEntities[] = new XMLEntity(0x22, """);
|
10 |
+
$g_XMLEntities[] = new XMLEntity(0x27, "'");
|
11 |
+
$g_XMLEntities[] = new XMLEntity(0x3c, "<");
|
12 |
+
$g_XMLEntities[] = new XMLEntity(0x3e, ">");
|
13 |
+
|
14 |
+
abstract class Nullable
|
15 |
+
{
|
16 |
+
/**
|
17 |
+
* @var bool
|
18 |
+
*/
|
19 |
+
protected $m_boHasValue;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @return bool
|
23 |
+
*/
|
24 |
+
function getHasValue()
|
25 |
+
{
|
26 |
+
return $this -> m_boHasValue;
|
27 |
+
}
|
28 |
+
|
29 |
+
public function __construct()
|
30 |
+
{
|
31 |
+
$this -> m_boHasValue = false;
|
32 |
+
}
|
33 |
+
|
34 |
+
}
|
35 |
+
class NullableInt extends Nullable
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* @var int
|
39 |
+
*/
|
40 |
+
private $m_nValue;
|
41 |
+
|
42 |
+
/**
|
43 |
+
* @return int
|
44 |
+
* @throws Exception
|
45 |
+
*/
|
46 |
+
function getValue()
|
47 |
+
{
|
48 |
+
if ($this -> m_boHasValue == false)
|
49 |
+
{
|
50 |
+
throw new Exception("Object has no value");
|
51 |
+
}
|
52 |
+
|
53 |
+
return $this -> m_nValue;
|
54 |
+
}
|
55 |
+
/**
|
56 |
+
* @param int $nValue
|
57 |
+
*/
|
58 |
+
function setValue($nValue)
|
59 |
+
{
|
60 |
+
if (!is_numeric($nValue))
|
61 |
+
{
|
62 |
+
$this -> m_boHasValue = false;
|
63 |
+
$this -> m_nValue = null;
|
64 |
+
}
|
65 |
+
else
|
66 |
+
{
|
67 |
+
$this -> m_boHasValue = true;
|
68 |
+
$this -> m_nValue = $nValue;
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
//constructor
|
73 |
+
/**
|
74 |
+
* @param int|null $nValue
|
75 |
+
*/
|
76 |
+
public function __construct($nValue = null)
|
77 |
+
{
|
78 |
+
Nullable::__construct();
|
79 |
+
|
80 |
+
if (is_numeric($nValue))
|
81 |
+
{
|
82 |
+
$this -> setValue($nValue);
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
+
}
|
87 |
+
class NullableBool extends Nullable
|
88 |
+
{
|
89 |
+
/**
|
90 |
+
* @var bool
|
91 |
+
*/
|
92 |
+
private $m_boValue;
|
93 |
+
|
94 |
+
/**
|
95 |
+
* @return bool
|
96 |
+
* @throws Exception
|
97 |
+
*/
|
98 |
+
public function getValue()
|
99 |
+
{
|
100 |
+
if ($this -> m_boHasValue == false)
|
101 |
+
{
|
102 |
+
throw new Exception("Object has no value");
|
103 |
+
}
|
104 |
+
|
105 |
+
return ($this -> m_boValue);
|
106 |
+
}
|
107 |
+
/**
|
108 |
+
* @param bool $boValue
|
109 |
+
*/
|
110 |
+
public function setValue($boValue)
|
111 |
+
{
|
112 |
+
if (!is_bool($boValue))
|
113 |
+
{
|
114 |
+
$this -> m_boHasValue = false;
|
115 |
+
$this -> m_boValue = null;
|
116 |
+
}
|
117 |
+
else
|
118 |
+
{
|
119 |
+
$this -> m_boHasValue = true;
|
120 |
+
$this -> m_boValue = $boValue;
|
121 |
+
}
|
122 |
+
}
|
123 |
+
|
124 |
+
//constructor
|
125 |
+
/**
|
126 |
+
* @param bool|null $boValue
|
127 |
+
*/
|
128 |
+
public function __construct($boValue = null)
|
129 |
+
{
|
130 |
+
Nullable::__construct();
|
131 |
+
|
132 |
+
if (is_bool($boValue))
|
133 |
+
{
|
134 |
+
$this -> setValue($boValue);
|
135 |
+
}
|
136 |
+
}
|
137 |
+
|
138 |
+
}
|
139 |
+
/******************/
|
140 |
+
/* Common classes */
|
141 |
+
/******************/
|
142 |
+
class StringList
|
143 |
+
{
|
144 |
+
/**
|
145 |
+
* @var array
|
146 |
+
*/
|
147 |
+
private $m_lszStrings;
|
148 |
+
|
149 |
+
/**
|
150 |
+
* @param int $nIndex
|
151 |
+
* @return string
|
152 |
+
* @throws Exception
|
153 |
+
*/
|
154 |
+
public function getAt($nIndex)
|
155 |
+
{
|
156 |
+
if ($nIndex < 0 || $nIndex >= count($this -> m_lszStrings))
|
157 |
+
{
|
158 |
+
throw new Exception("Array index out of bounds");
|
159 |
+
}
|
160 |
+
|
161 |
+
return (string)($this -> m_lszStrings[$nIndex]);
|
162 |
+
}
|
163 |
+
/**
|
164 |
+
* @return int
|
165 |
+
*/
|
166 |
+
function getCount()
|
167 |
+
{
|
168 |
+
return count($this -> m_lszStrings);
|
169 |
+
}
|
170 |
+
/**
|
171 |
+
* @param string $szString
|
172 |
+
* @return string
|
173 |
+
* @throws Exception
|
174 |
+
*/
|
175 |
+
function add($szString)
|
176 |
+
{
|
177 |
+
if (!is_string($szString))
|
178 |
+
{
|
179 |
+
throw new Exception("Invalid parameter type");
|
180 |
+
}
|
181 |
+
|
182 |
+
return ($this -> m_lszStrings[] = $szString);
|
183 |
+
}
|
184 |
+
|
185 |
+
//constructor
|
186 |
+
function __construct()
|
187 |
+
{
|
188 |
+
$this -> m_lszStrings = array();
|
189 |
+
}
|
190 |
+
|
191 |
+
}
|
192 |
+
class ISOCountry
|
193 |
+
{
|
194 |
+
/**
|
195 |
+
* @var string
|
196 |
+
*/
|
197 |
+
private $m_szCountryName;
|
198 |
+
/**
|
199 |
+
* @var string
|
200 |
+
*/
|
201 |
+
private $m_szCountryShort2;
|
202 |
+
/**
|
203 |
+
* @var string
|
204 |
+
*/
|
205 |
+
private $m_szCountryShort3;
|
206 |
+
/**
|
207 |
+
* @var int
|
208 |
+
*/
|
209 |
+
private $m_nISOCode;
|
210 |
+
/**
|
211 |
+
* @var int
|
212 |
+
*/
|
213 |
+
private $m_nListPriority;
|
214 |
+
|
215 |
+
/**
|
216 |
+
* @return string
|
217 |
+
*/
|
218 |
+
public function getCountryName()
|
219 |
+
{
|
220 |
+
return $this -> m_szCountryName;
|
221 |
+
}
|
222 |
+
/**
|
223 |
+
* @return string
|
224 |
+
*/
|
225 |
+
public function getCountryShort2()
|
226 |
+
{
|
227 |
+
return $this -> m_szCountryShort2;
|
228 |
+
}
|
229 |
+
/**
|
230 |
+
* @return string
|
231 |
+
*/
|
232 |
+
public function getCountryShort3()
|
233 |
+
{
|
234 |
+
return $this -> m_szCountryShort3;
|
235 |
+
}
|
236 |
+
/**
|
237 |
+
* @return int
|
238 |
+
*/
|
239 |
+
public function getISOCode()
|
240 |
+
{
|
241 |
+
return $this -> m_nISOCode;
|
242 |
+
}
|
243 |
+
/**
|
244 |
+
* @return int
|
245 |
+
*/
|
246 |
+
public function getListPriority()
|
247 |
+
{
|
248 |
+
return $this -> m_nListPriority;
|
249 |
+
}
|
250 |
+
|
251 |
+
//constructor
|
252 |
+
/**
|
253 |
+
* @param int $nISOCode
|
254 |
+
* @param string $szCountryShort2
|
255 |
+
* @param string $szCountryShort3
|
256 |
+
* @param string $szCountryName
|
257 |
+
* @param int $nListPriority
|
258 |
+
* @throws Exception
|
259 |
+
*/
|
260 |
+
public function __construct($nISOCode, $szCountryShort2, $szCountryShort3, $szCountryName, $nListPriority)
|
261 |
+
{
|
262 |
+
if (!is_int($nISOCode) || !is_string($szCountryName) || !is_string($szCountryShort2) || !is_string($szCountryShort3) || !is_int($nListPriority))
|
263 |
+
{
|
264 |
+
throw new Exception("Invalid parameter type");
|
265 |
+
}
|
266 |
+
|
267 |
+
$this -> m_nISOCode = $nISOCode;
|
268 |
+
$this -> m_szCountryShort2 = $szCountryShort2;
|
269 |
+
$this -> m_szCountryShort3 = $szCountryShort3;
|
270 |
+
$this -> m_szCountryName = $szCountryName;
|
271 |
+
$this -> m_nListPriority = $nListPriority;
|
272 |
+
}
|
273 |
+
|
274 |
+
}
|
275 |
+
class ISOCountryList
|
276 |
+
{
|
277 |
+
/**
|
278 |
+
* @var ISOCountry[]
|
279 |
+
*/
|
280 |
+
private $m_licISOCountries;
|
281 |
+
|
282 |
+
/**
|
283 |
+
* @param string $szCountry
|
284 |
+
* @param ISOCountry $icISOCountry Passed by reference
|
285 |
+
* @return bool
|
286 |
+
*/
|
287 |
+
public function getISOCountry($szCountry, &$icISOCountry)
|
288 |
+
{
|
289 |
+
$boFound = false;
|
290 |
+
$nCount = 0;
|
291 |
+
$icISOCountry2;
|
292 |
+
|
293 |
+
$icISOCountry = null;
|
294 |
+
|
295 |
+
while ($nCount < count($this -> m_licISOCountries))
|
296 |
+
{
|
297 |
+
$icISOCountry2 = $this -> m_licISOCountries[$nCount];
|
298 |
+
|
299 |
+
if (($szCountry == $icISOCountry2 -> getCountryShort2()) || ($szCountry == $icISOCountry2 -> getCountryShort3()) || ($szCountry == $icISOCountry2 -> getISOCode()))
|
300 |
+
{
|
301 |
+
$icISOCountry = new ISOCountry($icISOCountry2 -> getISOCode(), $icISOCountry2 -> getCountryShort2(), $icISOCountry2 -> getCountryShort3(), $icISOCountry2 -> getCountryName(), $icISOCountry2 -> getListPriority());
|
302 |
+
$boFound = true;
|
303 |
+
break;
|
304 |
+
}
|
305 |
+
|
306 |
+
$nCount++;
|
307 |
+
}
|
308 |
+
|
309 |
+
return $boFound;
|
310 |
+
}
|
311 |
+
/**
|
312 |
+
* @return int
|
313 |
+
*/
|
314 |
+
public function getCount()
|
315 |
+
{
|
316 |
+
return count($this -> m_licISOCountries);
|
317 |
+
}
|
318 |
+
/**
|
319 |
+
* @param int $nIndex
|
320 |
+
* @return ISOCountry
|
321 |
+
* @throws Exception
|
322 |
+
*/
|
323 |
+
public function getAt($nIndex)
|
324 |
+
{
|
325 |
+
if ($nIndex < 0 || $nIndex >= count($this -> m_licISOCountries))
|
326 |
+
{
|
327 |
+
throw new Exception("Array index out of bounds");
|
328 |
+
}
|
329 |
+
|
330 |
+
return $this -> m_licISOCountries[$nIndex];
|
331 |
+
}
|
332 |
+
/**
|
333 |
+
* @param int $nISOCode
|
334 |
+
* @param string $szCountryShort2
|
335 |
+
* @param string $szCountryShort3
|
336 |
+
* @param string $szCountryName
|
337 |
+
* @param int $nListPriority
|
338 |
+
*/
|
339 |
+
public function add($nISOCode, $szCountryShort2, $szCountryShort3, $szCountryName, $nListPriority)
|
340 |
+
{
|
341 |
+
$newISOCountry = new ISOCountry($nISOCode, $szCountryShort2, $szCountryShort3, $szCountryName, $nListPriority);
|
342 |
+
|
343 |
+
$this -> m_licISOCountries[] = $newISOCountry;
|
344 |
+
}
|
345 |
+
|
346 |
+
//constructor
|
347 |
+
public function __construct()
|
348 |
+
{
|
349 |
+
$this -> m_licISOCountries = array();
|
350 |
+
}
|
351 |
+
|
352 |
+
}
|
353 |
+
class ISOCurrency
|
354 |
+
{
|
355 |
+
/**
|
356 |
+
* @var int
|
357 |
+
*/
|
358 |
+
private $m_nExponent;
|
359 |
+
/**
|
360 |
+
* @var int
|
361 |
+
*/
|
362 |
+
private $m_nISOCode;
|
363 |
+
/**
|
364 |
+
* @var string
|
365 |
+
*/
|
366 |
+
private $m_szCurrency;
|
367 |
+
/**
|
368 |
+
* @var string
|
369 |
+
*/
|
370 |
+
private $m_szCurrencyShort;
|
371 |
+
|
372 |
+
//public properties
|
373 |
+
/**
|
374 |
+
* @return int
|
375 |
+
*/
|
376 |
+
public function getExponent()
|
377 |
+
{
|
378 |
+
return $this -> m_nExponent;
|
379 |
+
}
|
380 |
+
/**
|
381 |
+
* @return string
|
382 |
+
*/
|
383 |
+
public function getCurrency()
|
384 |
+
{
|
385 |
+
return $this -> m_szCurrency;
|
386 |
+
}
|
387 |
+
/**
|
388 |
+
* @return string
|
389 |
+
*/
|
390 |
+
public function getCurrencyShort()
|
391 |
+
{
|
392 |
+
return $this -> m_szCurrencyShort;
|
393 |
+
}
|
394 |
+
/**
|
395 |
+
* @return int
|
396 |
+
*/
|
397 |
+
public function getISOCode()
|
398 |
+
{
|
399 |
+
return $this -> m_nISOCode;
|
400 |
+
}
|
401 |
+
/**
|
402 |
+
* @param int $nAmount
|
403 |
+
* @param bool $boAppendCurrencyShort
|
404 |
+
* @return string
|
405 |
+
*/
|
406 |
+
public function getAmountCurrencyString($nAmount, $boAppendCurrencyShort = true)
|
407 |
+
{
|
408 |
+
$szReturnString = "";
|
409 |
+
|
410 |
+
$nDivideAmount = pow(10, $this -> m_nExponent);
|
411 |
+
$lfAmount = $nAmount / $nDivideAmount;
|
412 |
+
|
413 |
+
$szFormatString = "%." . $this -> m_nExponent . "f";
|
414 |
+
$szReturnString = sprintf($szFormatString, $lfAmount);
|
415 |
+
|
416 |
+
if ($boAppendCurrencyShort)
|
417 |
+
{
|
418 |
+
$szReturnString = $szReturnString . " " . $this -> m_szCurrencyShort;
|
419 |
+
}
|
420 |
+
|
421 |
+
return ($szReturnString);
|
422 |
+
}
|
423 |
+
|
424 |
+
//constructor
|
425 |
+
/**
|
426 |
+
* @param int $nISOCode
|
427 |
+
* @param string $szCurrency
|
428 |
+
* @param string $szCurrencyShort
|
429 |
+
* @param int $nExponent
|
430 |
+
*/
|
431 |
+
public function __construct($nISOCode, $szCurrency, $szCurrencyShort, $nExponent)
|
432 |
+
{
|
433 |
+
$this -> m_nISOCode = $nISOCode;
|
434 |
+
$this -> m_nExponent = $nExponent;
|
435 |
+
$this -> m_szCurrency = $szCurrency;
|
436 |
+
$this -> m_szCurrencyShort = $szCurrencyShort;
|
437 |
+
}
|
438 |
+
|
439 |
+
}
|
440 |
+
class ISOCurrencyList
|
441 |
+
{
|
442 |
+
/**
|
443 |
+
* @var ISOCurrency[]
|
444 |
+
*/
|
445 |
+
private $m_licISOCurrencies;
|
446 |
+
|
447 |
+
/**
|
448 |
+
* @param string $vCurrency Currency short or ISO code
|
449 |
+
* @param ISOCurrency &$icISOCurrency
|
450 |
+
* @return bool
|
451 |
+
*/
|
452 |
+
public function getISOCurrency($vCurrency, &$icISOCurrency)
|
453 |
+
{
|
454 |
+
$boFound = false;
|
455 |
+
$nCount = 0;
|
456 |
+
$icISOCurrency2;
|
457 |
+
|
458 |
+
$icISOCurrency = null;
|
459 |
+
|
460 |
+
while (!$boFound && $nCount < count($this -> m_licISOCurrencies))
|
461 |
+
{
|
462 |
+
$icISOCurrency2 = $this -> m_licISOCurrencies[$nCount];
|
463 |
+
|
464 |
+
if ($vCurrency == $icISOCurrency2 -> getCurrencyShort() || $vCurrency == $icISOCurrency2 -> getISOCode())
|
465 |
+
{
|
466 |
+
$icISOCurrency = new ISOCurrency($icISOCurrency2 -> getISOCode(), $icISOCurrency2 -> getCurrency(), $icISOCurrency2 -> getCurrencyShort(), $icISOCurrency2 -> getExponent());
|
467 |
+
$boFound = true;
|
468 |
+
}
|
469 |
+
|
470 |
+
$nCount++;
|
471 |
+
}
|
472 |
+
|
473 |
+
return ($boFound);
|
474 |
+
}
|
475 |
+
/**
|
476 |
+
* @return int
|
477 |
+
*/
|
478 |
+
public function getCount()
|
479 |
+
{
|
480 |
+
return count($this -> m_licISOCurrencies);
|
481 |
+
}
|
482 |
+
/**
|
483 |
+
* @param int $nIndex
|
484 |
+
* @return ISOCurrency
|
485 |
+
* @throws Exception
|
486 |
+
*/
|
487 |
+
public function getAt($nIndex)
|
488 |
+
{
|
489 |
+
if ($nIndex < 0 || $nIndex >= count($this -> m_licISOCurrencies))
|
490 |
+
{
|
491 |
+
throw new Exception("Array index out of bounds");
|
492 |
+
}
|
493 |
+
|
494 |
+
return $this -> m_licISOCurrencies[$nIndex];
|
495 |
+
}
|
496 |
+
/**
|
497 |
+
* @param int $nISOCode
|
498 |
+
* @param string $szCurrency
|
499 |
+
* @param string $szCurrencyShort
|
500 |
+
* @param int $nExponent
|
501 |
+
*/
|
502 |
+
public function add($nISOCode, $szCurrency, $szCurrencyShort, $nExponent)
|
503 |
+
{
|
504 |
+
$newISOCurrency = new ISOCurrency($nISOCode, $szCurrency, $szCurrencyShort, $nExponent);
|
505 |
+
|
506 |
+
$this -> m_licISOCurrencies[] = $newISOCurrency;
|
507 |
+
}
|
508 |
+
|
509 |
+
//constructor
|
510 |
+
public function __construct()
|
511 |
+
{
|
512 |
+
$this -> m_licISOCurrencies = array();
|
513 |
+
}
|
514 |
+
|
515 |
+
}
|
516 |
+
class XMLEntity
|
517 |
+
{
|
518 |
+
/**
|
519 |
+
* @var int
|
520 |
+
*/
|
521 |
+
private $m_bCharCode;
|
522 |
+
/**
|
523 |
+
* @var string
|
524 |
+
*/
|
525 |
+
private $m_szReplacement;
|
526 |
+
|
527 |
+
/**
|
528 |
+
* @return int
|
529 |
+
*/
|
530 |
+
public function getCharCode()
|
531 |
+
{
|
532 |
+
return $this -> m_bCharCode;
|
533 |
+
}
|
534 |
+
/**
|
535 |
+
* @return string
|
536 |
+
*/
|
537 |
+
public function getReplacement()
|
538 |
+
{
|
539 |
+
return $this -> m_szReplacement;
|
540 |
+
}
|
541 |
+
|
542 |
+
//constructor
|
543 |
+
/**
|
544 |
+
* @param int $bCharCode Hexadecimal character code
|
545 |
+
* @param string $szReplacement
|
546 |
+
*/
|
547 |
+
public function __construct($bCharCode, $szReplacement)
|
548 |
+
{
|
549 |
+
$this -> m_bCharCode = $bCharCode;
|
550 |
+
$this -> m_szReplacement = $szReplacement;
|
551 |
+
}
|
552 |
+
|
553 |
+
}
|
554 |
+
class XmlAttribute2
|
555 |
+
{
|
556 |
+
/**
|
557 |
+
* @var string
|
558 |
+
*/
|
559 |
+
private $m_szName;
|
560 |
+
/**
|
561 |
+
* @var string
|
562 |
+
*/
|
563 |
+
private $m_szValue;
|
564 |
+
|
565 |
+
//public properties
|
566 |
+
/**
|
567 |
+
* @return string
|
568 |
+
*/
|
569 |
+
public function getName()
|
570 |
+
{
|
571 |
+
return $this -> m_szName;
|
572 |
+
}
|
573 |
+
/**
|
574 |
+
* @param string $szName
|
575 |
+
*/
|
576 |
+
public function setName($szName)
|
577 |
+
{
|
578 |
+
$this -> m_szName = $szName;
|
579 |
+
}
|
580 |
+
/**
|
581 |
+
* @return string
|
582 |
+
*/
|
583 |
+
public function getValue()
|
584 |
+
{
|
585 |
+
return $this -> m_szValue;
|
586 |
+
}
|
587 |
+
/**
|
588 |
+
* @param string $szValue
|
589 |
+
*/
|
590 |
+
public function setValue($szValue)
|
591 |
+
{
|
592 |
+
$this -> m_szValue = $szValue;
|
593 |
+
}
|
594 |
+
/**
|
595 |
+
* @return XmlAttribute
|
596 |
+
*/
|
597 |
+
public function toXmlAttribute()
|
598 |
+
{
|
599 |
+
$xaXmlAttribute = new XmlAttribute($this -> m_szName, $this -> m_szValue);
|
600 |
+
|
601 |
+
return $xaXmlAttribute;
|
602 |
+
}
|
603 |
+
|
604 |
+
}
|
605 |
+
class XmlAttribute2List
|
606 |
+
{
|
607 |
+
/**
|
608 |
+
* @var XmlAttribute2[]
|
609 |
+
*/
|
610 |
+
private $m_lxaXmlAttributeList;
|
611 |
+
|
612 |
+
/**
|
613 |
+
* @return int
|
614 |
+
*/
|
615 |
+
public function getCount()
|
616 |
+
{
|
617 |
+
return count($this -> m_lxaXmlAttributeList);
|
618 |
+
}
|
619 |
+
/**
|
620 |
+
* @param int $nIndex
|
621 |
+
* @return XmlAttribute2
|
622 |
+
* @throws Exception
|
623 |
+
*/
|
624 |
+
public function getAt($nIndex)
|
625 |
+
{
|
626 |
+
if ($nIndex < 0 || $nIndex >= count($this -> m_lxaXmlAttributeList))
|
627 |
+
{
|
628 |
+
throw new Exception("Array index out of bounds");
|
629 |
+
}
|
630 |
+
|
631 |
+
return $this -> m_lxaXmlAttributeList[$nIndex];
|
632 |
+
}
|
633 |
+
/**
|
634 |
+
* @param XmlAttribute2 $xaXmlAttribute
|
635 |
+
*/
|
636 |
+
public function add(XmlAttribute2 $xaXmlAttribute)
|
637 |
+
{
|
638 |
+
if ($xaXmlAttribute != null)
|
639 |
+
{
|
640 |
+
$this -> m_lxaXmlAttributeList[] = $xaXmlAttribute;
|
641 |
+
}
|
642 |
+
}
|
643 |
+
|
644 |
+
//constructor
|
645 |
+
public function __construct()
|
646 |
+
{
|
647 |
+
$this -> m_lxaXmlAttributeList = array();
|
648 |
+
}
|
649 |
+
|
650 |
+
/**
|
651 |
+
* @return XmlAttribute2[]
|
652 |
+
*/
|
653 |
+
public function toListOfXmlAttributeObjects()
|
654 |
+
{
|
655 |
+
$nCount = 0;
|
656 |
+
$lxaXmlAttributeList = array();
|
657 |
+
|
658 |
+
for ($nCount = 0; $nCount < count($this -> m_lxaXmlAttributeList); $nCount++)
|
659 |
+
{
|
660 |
+
$lxaXmlAttributeList[] = $this -> m_lxaXmlAttributeList[$nCount] -> toXmlAttribute();
|
661 |
+
}
|
662 |
+
|
663 |
+
return $lxaXmlAttributeList;
|
664 |
+
}
|
665 |
+
|
666 |
+
}
|
667 |
+
class XmlTag2
|
668 |
+
{
|
669 |
+
/**
|
670 |
+
* @var string
|
671 |
+
*/
|
672 |
+
private $m_szName;
|
673 |
+
/**
|
674 |
+
* @var string
|
675 |
+
*/
|
676 |
+
private $m_szContent;
|
677 |
+
/**
|
678 |
+
* @var XmlTag2List
|
679 |
+
*/
|
680 |
+
private $m_xtlChildTags;
|
681 |
+
/**
|
682 |
+
* @var XmlAttribute2List
|
683 |
+
*/
|
684 |
+
private $m_xalXmlAttributes;
|
685 |
+
|
686 |
+
//public properties
|
687 |
+
/**
|
688 |
+
* @return string
|
689 |
+
*/
|
690 |
+
public function getName()
|
691 |
+
{
|
692 |
+
return $this -> m_szName;
|
693 |
+
}
|
694 |
+
/**
|
695 |
+
* @param $szName
|
696 |
+
*/
|
697 |
+
public function setName($szName)
|
698 |
+
{
|
699 |
+
$this -> m_szName = $szName;
|
700 |
+
}
|
701 |
+
/**
|
702 |
+
* @return string
|
703 |
+
*/
|
704 |
+
public function getContent()
|
705 |
+
{
|
706 |
+
return $this -> m_szContent;
|
707 |
+
}
|
708 |
+
/**
|
709 |
+
* @param string $szContent
|
710 |
+
*/
|
711 |
+
public function setContent($szContent)
|
712 |
+
{
|
713 |
+
$this -> m_szContent = $szContent;
|
714 |
+
}
|
715 |
+
/**
|
716 |
+
* @return XmlAttribute2List
|
717 |
+
*/
|
718 |
+
public function getXmlAttributes()
|
719 |
+
{
|
720 |
+
return $this -> m_xalXmlAttributes;
|
721 |
+
}
|
722 |
+
/**
|
723 |
+
* @return XmlTag2List
|
724 |
+
*/
|
725 |
+
public function getChildTags()
|
726 |
+
{
|
727 |
+
return $this -> m_xtlChildTags;
|
728 |
+
}
|
729 |
+
|
730 |
+
//constructor
|
731 |
+
public function __construct()
|
732 |
+
{
|
733 |
+
$this -> m_xalXmlAttributes = new XmlAttribute2List();
|
734 |
+
$this -> m_xtlChildTags = new XmlTag2List();
|
735 |
+
}
|
736 |
+
|
737 |
+
/**
|
738 |
+
* @return XmlTag
|
739 |
+
*/
|
740 |
+
public function toXmlTag()
|
741 |
+
{
|
742 |
+
$xtXmlTag = new XmlTag($this -> m_szName, $this -> m_szContent, $this -> m_xtlChildTags -> toListOfXmlTagObjects(), $this -> m_xalXmlAttributes -> toListOfXmlAttributeObjects());
|
743 |
+
|
744 |
+
return $xtXmlTag;
|
745 |
+
}
|
746 |
+
|
747 |
+
}
|
748 |
+
class XmlTag2List
|
749 |
+
{
|
750 |
+
/**
|
751 |
+
* @var XMLTag2[]
|
752 |
+
*/
|
753 |
+
private $m_lxtXmlTagList;
|
754 |
+
|
755 |
+
/**
|
756 |
+
* @return int
|
757 |
+
*/
|
758 |
+
public function getCount()
|
759 |
+
{
|
760 |
+
return count($this -> m_lxtXmlTagList);
|
761 |
+
}
|
762 |
+
/**
|
763 |
+
* @param int $nIndex
|
764 |
+
* @return XMLTag2
|
765 |
+
* @throws Exception
|
766 |
+
*/
|
767 |
+
public function getAt($nIndex)
|
768 |
+
{
|
769 |
+
if ($nIndex < 0 || $nIndex >= count($this -> m_lxtXmlTagList))
|
770 |
+
{
|
771 |
+
throw new Exception("Array index out of bounds");
|
772 |
+
}
|
773 |
+
|
774 |
+
return $this -> m_lxtXmlTagList[$nIndex];
|
775 |
+
}
|
776 |
+
/**
|
777 |
+
* @param XmlTag2 $xtXmlTag
|
778 |
+
*/
|
779 |
+
public function add(XmlTag2 $xtXmlTag)
|
780 |
+
{
|
781 |
+
if ($xtXmlTag != null)
|
782 |
+
{
|
783 |
+
$this -> m_lxtXmlTagList[] = $xtXmlTag;
|
784 |
+
}
|
785 |
+
}
|
786 |
+
|
787 |
+
//constructor
|
788 |
+
public function __construct()
|
789 |
+
{
|
790 |
+
$this -> m_lxtXmlTagList = array();
|
791 |
+
}
|
792 |
+
|
793 |
+
/**
|
794 |
+
* @return XMLTag[]
|
795 |
+
*/
|
796 |
+
public function toListOfXmlTagObjects()
|
797 |
+
{
|
798 |
+
$nCount = 0;
|
799 |
+
$lxtXmlTagList = array();
|
800 |
+
|
801 |
+
for ($nCount = 0; $nCount < count($this -> m_lxtXmlTagList); $nCount++)
|
802 |
+
{
|
803 |
+
$lxtXmlTagList[] = $this -> m_lxtXmlTagList[$nCount] -> toXmlTag();
|
804 |
+
}
|
805 |
+
|
806 |
+
return $lxtXmlTagList;
|
807 |
+
}
|
808 |
+
|
809 |
+
}
|
810 |
+
class XmlAttribute
|
811 |
+
{
|
812 |
+
/**
|
813 |
+
* @var string
|
814 |
+
*/
|
815 |
+
private $m_szName;
|
816 |
+
/**
|
817 |
+
* @var string
|
818 |
+
*/
|
819 |
+
private $m_szValue;
|
820 |
+
|
821 |
+
//public properties
|
822 |
+
/**
|
823 |
+
* @return string
|
824 |
+
*/
|
825 |
+
public function getName()
|
826 |
+
{
|
827 |
+
return $this -> m_szName;
|
828 |
+
}
|
829 |
+
/**
|
830 |
+
* @return string
|
831 |
+
*/
|
832 |
+
public function getValue()
|
833 |
+
{
|
834 |
+
return $this -> m_szValue;
|
835 |
+
}
|
836 |
+
|
837 |
+
//constructor
|
838 |
+
/**
|
839 |
+
* @param string $szName
|
840 |
+
* @param string $szValue
|
841 |
+
* @throws Exception
|
842 |
+
*/
|
843 |
+
public function __construct($szName, $szValue)
|
844 |
+
{
|
845 |
+
if (!is_string($szName) || !is_string($szValue))
|
846 |
+
{
|
847 |
+
throw new Exception("Invalid parameter type");
|
848 |
+
}
|
849 |
+
|
850 |
+
$this -> m_szName = $szName;
|
851 |
+
$this -> m_szValue = $szValue;
|
852 |
+
}
|
853 |
+
|
854 |
+
}
|
855 |
+
class XmlAttributeList
|
856 |
+
{
|
857 |
+
/**
|
858 |
+
* @var XmlAttribute2[]
|
859 |
+
*/
|
860 |
+
private $m_lxaXmlAttributeList;
|
861 |
+
|
862 |
+
/**
|
863 |
+
* @param string $szName
|
864 |
+
* @return XmlAttribute2
|
865 |
+
*/
|
866 |
+
public function getXmlAttribute($szName)
|
867 |
+
{
|
868 |
+
$boFound = false;
|
869 |
+
$nCount = 0;
|
870 |
+
$xaXmlAttribute = null;
|
871 |
+
$xaReturnXmlAttribute = null;
|
872 |
+
|
873 |
+
while (!$boFound && $nCount < count($this -> m_lxaXmlAttributeList))
|
874 |
+
{
|
875 |
+
$xaXmlAttribute = $this -> m_lxaXmlAttributeList[$nCount];
|
876 |
+
|
877 |
+
if ($szName == $xaXmlAttribute -> getName())
|
878 |
+
{
|
879 |
+
$xaReturnXmlAttribute = $xaXmlAttribute;
|
880 |
+
$boFound = true;
|
881 |
+
}
|
882 |
+
|
883 |
+
$nCount++;
|
884 |
+
}
|
885 |
+
|
886 |
+
return $xaReturnXmlAttribute;
|
887 |
+
}
|
888 |
+
/**
|
889 |
+
* @return int
|
890 |
+
*/
|
891 |
+
public function getCount()
|
892 |
+
{
|
893 |
+
return count($this -> m_lxaXmlAttributeList);
|
894 |
+
}
|
895 |
+
/**
|
896 |
+
* @param int $nIndex
|
897 |
+
* @return XmlAttribute2
|
898 |
+
* @throws Exception
|
899 |
+
*/
|
900 |
+
public function getAt($nIndex)
|
901 |
+
{
|
902 |
+
if ($nIndex < 0 || $nIndex >= count($this -> m_lxaXmlAttributeList))
|
903 |
+
{
|
904 |
+
throw new Exception("Array index out of bounds");
|
905 |
+
}
|
906 |
+
|
907 |
+
return $this -> m_lxaXmlAttributeList[$nIndex];
|
908 |
+
}
|
909 |
+
|
910 |
+
//constructor
|
911 |
+
/**
|
912 |
+
* @param XmlAttribute2[] $lxaXmlAttributeList
|
913 |
+
*/
|
914 |
+
public function __construct($lxaXmlAttributeList)
|
915 |
+
{
|
916 |
+
$nCount = 0;
|
917 |
+
|
918 |
+
$this -> m_lxaXmlAttributeList = array();
|
919 |
+
|
920 |
+
if ($lxaXmlAttributeList != null)
|
921 |
+
{
|
922 |
+
try
|
923 |
+
{
|
924 |
+
for ($nCount = 0; $nCount < count($lxaXmlAttributeList); $nCount++)
|
925 |
+
{
|
926 |
+
$this -> m_lxaXmlAttributeList[] = $lxaXmlAttributeList[$nCount];
|
927 |
+
}
|
928 |
+
}
|
929 |
+
catch(Exception $e)
|
930 |
+
{
|
931 |
+
}
|
932 |
+
}
|
933 |
+
}
|
934 |
+
|
935 |
+
/**
|
936 |
+
* @return XmlAttribute2[]
|
937 |
+
*/
|
938 |
+
public function getListOfXmlAttributeObjects()
|
939 |
+
{
|
940 |
+
$nCount = 0;
|
941 |
+
$lxaXmlAttributeList = array();
|
942 |
+
|
943 |
+
for ($nCount = 0; $nCount < count($this -> m_lxaXmlAttributeList); $nCount++)
|
944 |
+
{
|
945 |
+
$lxaXmlAttributeList[] = $this -> m_lxaXmlAttributeList[$nCount];
|
946 |
+
}
|
947 |
+
|
948 |
+
return $lxaXmlAttributeList;
|
949 |
+
}
|
950 |
+
|
951 |
+
}
|
952 |
+
class XmlTag
|
953 |
+
{
|
954 |
+
/**
|
955 |
+
* @var string
|
956 |
+
*/
|
957 |
+
private $m_szName;
|
958 |
+
/**
|
959 |
+
* @var string
|
960 |
+
*/
|
961 |
+
private $m_szContent;
|
962 |
+
/**
|
963 |
+
* @var XmlTagList
|
964 |
+
*/
|
965 |
+
private $m_xtlChildTags;
|
966 |
+
/**
|
967 |
+
* @var XmlAttributeList
|
968 |
+
*/
|
969 |
+
private $m_xalXmlAttributes;
|
970 |
+
|
971 |
+
//public properties
|
972 |
+
/**
|
973 |
+
* @return string
|
974 |
+
*/
|
975 |
+
public function getName()
|
976 |
+
{
|
977 |
+
return $this -> m_szName;
|
978 |
+
}
|
979 |
+
/**
|
980 |
+
* @return string
|
981 |
+
*/
|
982 |
+
public function getContent()
|
983 |
+
{
|
984 |
+
return $this -> m_szContent;
|
985 |
+
}
|
986 |
+
/**
|
987 |
+
* @return XmlAttributeList
|
988 |
+
*/
|
989 |
+
public function getXmlAttributes()
|
990 |
+
{
|
991 |
+
return $this -> m_xalXmlAttributes;
|
992 |
+
}
|
993 |
+
/**
|
994 |
+
* @return XmlTagList
|
995 |
+
*/
|
996 |
+
public function getChildTags()
|
997 |
+
{
|
998 |
+
return $this -> m_xtlChildTags;
|
999 |
+
}
|
1000 |
+
/**
|
1001 |
+
* @param string $szXMLVariable
|
1002 |
+
* @param string $szValue
|
1003 |
+
* @return bool
|
1004 |
+
*/
|
1005 |
+
public function getStringValue($szXMLVariable, &$szValue)
|
1006 |
+
{
|
1007 |
+
$boReturnValue = false;
|
1008 |
+
|
1009 |
+
$szValue = "";
|
1010 |
+
|
1011 |
+
if ($this -> m_xtlChildTags != null)
|
1012 |
+
{
|
1013 |
+
$boReturnValue = $this -> m_xtlChildTags -> getValue($szXMLVariable, $szValue);
|
1014 |
+
}
|
1015 |
+
|
1016 |
+
return ($boReturnValue);
|
1017 |
+
}
|
1018 |
+
/**
|
1019 |
+
* @param string $szXMLVariable
|
1020 |
+
* @param int $nValue
|
1021 |
+
* @return bool
|
1022 |
+
*/
|
1023 |
+
public function getIntegerValue($szXMLVariable, &$nValue)
|
1024 |
+
{
|
1025 |
+
$boReturnValue = false;
|
1026 |
+
$szValue = "";
|
1027 |
+
|
1028 |
+
$nValue = false;
|
1029 |
+
if ($this -> m_xtlChildTags != null)
|
1030 |
+
{
|
1031 |
+
$boReturnValue = $this -> m_xtlChildTags -> getValue($szXMLVariable, $szValue);
|
1032 |
+
|
1033 |
+
if ($boReturnValue)
|
1034 |
+
{
|
1035 |
+
if (!is_numeric($szValue))
|
1036 |
+
{
|
1037 |
+
$boReturnValue = false;
|
1038 |
+
}
|
1039 |
+
else
|
1040 |
+
{
|
1041 |
+
try
|
1042 |
+
{
|
1043 |
+
$nValue = intval($szValue);
|
1044 |
+
}
|
1045 |
+
catch (Exception $e)
|
1046 |
+
{
|
1047 |
+
$boReturnValue = false;
|
1048 |
+
}
|
1049 |
+
}
|
1050 |
+
}
|
1051 |
+
}
|
1052 |
+
|
1053 |
+
return ($boReturnValue);
|
1054 |
+
}
|
1055 |
+
/**
|
1056 |
+
* @param string $szXMLVariable
|
1057 |
+
* @param bool $boValue
|
1058 |
+
* @return bool
|
1059 |
+
*/
|
1060 |
+
public function getBooleanValue($szXMLVariable, &$boValue)
|
1061 |
+
{
|
1062 |
+
$boReturnValue = false;
|
1063 |
+
$szValue = "";
|
1064 |
+
|
1065 |
+
$boValue = false;
|
1066 |
+
if ($this -> m_xtlChildTags != null)
|
1067 |
+
{
|
1068 |
+
$boReturnValue = $this -> m_xtlChildTags -> getValue($szXMLVariable, $szValue);
|
1069 |
+
|
1070 |
+
if ($boReturnValue)
|
1071 |
+
{
|
1072 |
+
if ($szValue != "0" && $szValue != "1" && strtoupper($szValue) != "FALSE" && strtoupper($szValue) != "TRUE")
|
1073 |
+
{
|
1074 |
+
$boReturnValue = false;
|
1075 |
+
}
|
1076 |
+
else
|
1077 |
+
{
|
1078 |
+
if (strtoupper($szValue) == "TRUE" || $szValue == "1")
|
1079 |
+
{
|
1080 |
+
$boValue = true;
|
1081 |
+
}
|
1082 |
+
}
|
1083 |
+
}
|
1084 |
+
}
|
1085 |
+
|
1086 |
+
return ($boReturnValue);
|
1087 |
+
}
|
1088 |
+
|
1089 |
+
//constructor
|
1090 |
+
/**
|
1091 |
+
* @param string $szName
|
1092 |
+
* @param string $szContent
|
1093 |
+
* @param XMLTag[] $lxtChildTags
|
1094 |
+
* @param XMLAttribute2[] $lxaXmlAttributes
|
1095 |
+
*/
|
1096 |
+
public function __construct($szName, $szContent, $lxtChildTags, $lxaXmlAttributes)
|
1097 |
+
{
|
1098 |
+
$this -> m_szName = $szName;
|
1099 |
+
$this -> m_szContent = $szContent;
|
1100 |
+
$this -> m_xalXmlAttributes = new XmlAttributeList($lxaXmlAttributes);
|
1101 |
+
$this -> m_xtlChildTags = new XmlTagList($lxtChildTags);
|
1102 |
+
}
|
1103 |
+
|
1104 |
+
}
|
1105 |
+
class XmlTagList
|
1106 |
+
{
|
1107 |
+
/**
|
1108 |
+
* @var XMLTag[]
|
1109 |
+
*/
|
1110 |
+
private $m_lxtXmlTagList;
|
1111 |
+
|
1112 |
+
/**
|
1113 |
+
* @return int
|
1114 |
+
*/
|
1115 |
+
public function getCount()
|
1116 |
+
{
|
1117 |
+
return count($this -> m_lxtXmlTagList);
|
1118 |
+
}
|
1119 |
+
/**
|
1120 |
+
* @param int $nIndex
|
1121 |
+
* @return XmlTag
|
1122 |
+
* @throws Exception
|
1123 |
+
*/
|
1124 |
+
public function getAt($nIndex)
|
1125 |
+
{
|
1126 |
+
if ($nIndex < 0 || $nIndex >= count($this -> m_lxtXmlTagList))
|
1127 |
+
{
|
1128 |
+
throw new Exception("Array index out of bounds");
|
1129 |
+
}
|
1130 |
+
|
1131 |
+
return $this -> m_lxtXmlTagList[$nIndex];
|
1132 |
+
}
|
1133 |
+
/**
|
1134 |
+
* @param string $szName
|
1135 |
+
* @return XmlTag
|
1136 |
+
* @throws Exception
|
1137 |
+
*/
|
1138 |
+
public function getXmlTag($szName)
|
1139 |
+
{
|
1140 |
+
$lszHierarchicalNames = null;
|
1141 |
+
$nCount = 0;
|
1142 |
+
$boAbort = false;
|
1143 |
+
$boFound = false;
|
1144 |
+
$boLastNode = false;
|
1145 |
+
$szString;
|
1146 |
+
$szTagNameToFind;
|
1147 |
+
$nCurrentIndex = 0;
|
1148 |
+
$xtReturnTag = null;
|
1149 |
+
$xtCurrentTag = null;
|
1150 |
+
$nTagCount = 0;
|
1151 |
+
$xtlCurrentTagList = null;
|
1152 |
+
$nCount2 = 0;
|
1153 |
+
|
1154 |
+
if (count($this -> m_lxtXmlTagList) == 0)
|
1155 |
+
{
|
1156 |
+
return null;
|
1157 |
+
}
|
1158 |
+
|
1159 |
+
$lszHierarchicalNames = new StringList();
|
1160 |
+
$lszHierarchicalNames = SharedFunctions::getStringListFromCharSeparatedString($szName, '.');
|
1161 |
+
|
1162 |
+
$xtlCurrentTagList = $this;
|
1163 |
+
|
1164 |
+
// loop over the hierarchical list
|
1165 |
+
for ($nCount = 0; $nCount < $lszHierarchicalNames -> getCount() && !$boAbort; $nCount++)
|
1166 |
+
{
|
1167 |
+
if ($nCount == ($lszHierarchicalNames -> getCount() - 1))
|
1168 |
+
{
|
1169 |
+
$boLastNode = true;
|
1170 |
+
}
|
1171 |
+
|
1172 |
+
$szString = $lszHierarchicalNames -> getAt($nCount);
|
1173 |
+
|
1174 |
+
// look to see if this tag name has the special "[]" array chars
|
1175 |
+
$szTagNameToFind = SharedFunctions::getArrayNameAndIndex($szString, $nCurrentIndex);
|
1176 |
+
|
1177 |
+
$boFound = false;
|
1178 |
+
$nCount2 = 0;
|
1179 |
+
|
1180 |
+
for ($nTagCount = 0; $nTagCount < $xtlCurrentTagList -> getCount() && !$boFound; $nTagCount++)
|
1181 |
+
{
|
1182 |
+
$xtCurrentTag = $xtlCurrentTagList -> getAt($nTagCount);
|
1183 |
+
|
1184 |
+
// if this is the last node then check the attributes of the tag first
|
1185 |
+
|
1186 |
+
if ($xtCurrentTag -> getName() == $szTagNameToFind)
|
1187 |
+
{
|
1188 |
+
if ($nCount2 == $nCurrentIndex)
|
1189 |
+
{
|
1190 |
+
$boFound = true;
|
1191 |
+
}
|
1192 |
+
else
|
1193 |
+
{
|
1194 |
+
$nCount2++;
|
1195 |
+
}
|
1196 |
+
}
|
1197 |
+
|
1198 |
+
if ($boFound)
|
1199 |
+
{
|
1200 |
+
if (!$boLastNode)
|
1201 |
+
{
|
1202 |
+
$xtlCurrentTagList = $xtCurrentTag -> getChildTags();
|
1203 |
+
}
|
1204 |
+
else
|
1205 |
+
{
|
1206 |
+
// don't continue the search
|
1207 |
+
$xtReturnTag = $xtCurrentTag;
|
1208 |
+
}
|
1209 |
+
}
|
1210 |
+
}
|
1211 |
+
|
1212 |
+
if (!$boFound)
|
1213 |
+
{
|
1214 |
+
$boAbort = true;
|
1215 |
+
}
|
1216 |
+
}
|
1217 |
+
|
1218 |
+
return $xtReturnTag;
|
1219 |
+
}
|
1220 |
+
/**
|
1221 |
+
* @param string $szXMLVariable
|
1222 |
+
* @param string $szValue Passed by reference
|
1223 |
+
* @return bool
|
1224 |
+
* @throws Exception
|
1225 |
+
*/
|
1226 |
+
public function getValue($szXMLVariable, &$szValue)
|
1227 |
+
{
|
1228 |
+
$boReturnValue = false;
|
1229 |
+
$lszHierarchicalNames;
|
1230 |
+
$szXMLTagName;
|
1231 |
+
$szLastXMLTagName;
|
1232 |
+
$nCount = 0;
|
1233 |
+
$xtCurrentTag = null;
|
1234 |
+
$xaXmlAttribute = null;
|
1235 |
+
|
1236 |
+
$lszHierarchicalNames = new StringList();
|
1237 |
+
$szValue = null;
|
1238 |
+
$lszHierarchicalNames = SharedFunctions::getStringListFromCharSeparatedString($szXMLVariable, '.');
|
1239 |
+
|
1240 |
+
if ($lszHierarchicalNames -> getCount() == 1)
|
1241 |
+
{
|
1242 |
+
$szXMLTagName = $lszHierarchicalNames -> getAt(0);
|
1243 |
+
|
1244 |
+
$xtCurrentTag = $this -> getXmlTag($szXMLTagName);
|
1245 |
+
|
1246 |
+
if ($xtCurrentTag != null)
|
1247 |
+
{
|
1248 |
+
$xaXmlAttribute = $xtCurrentTag -> getXmlAttributes() -> getXmlAttribute($szXMLTagName);
|
1249 |
+
|
1250 |
+
if ($xaXmlAttribute != null)
|
1251 |
+
{
|
1252 |
+
$szValue = SharedFunctions::replaceEntitiesInStringWithChars($xaXmlAttribute -> getValue());
|
1253 |
+
$boReturnValue = true;
|
1254 |
+
}
|
1255 |
+
else
|
1256 |
+
{
|
1257 |
+
$szValue = SharedFunctions::replaceEntitiesInStringWithChars($xtCurrentTag -> getContent());
|
1258 |
+
$boReturnValue = true;
|
1259 |
+
}
|
1260 |
+
}
|
1261 |
+
}
|
1262 |
+
else
|
1263 |
+
{
|
1264 |
+
if ($lszHierarchicalNames -> getCount() > 1)
|
1265 |
+
{
|
1266 |
+
$szXMLTagName = $lszHierarchicalNames -> getAt(0);
|
1267 |
+
$szLastXMLTagName = $lszHierarchicalNames -> getAt($lszHierarchicalNames -> getCount() - 1);
|
1268 |
+
|
1269 |
+
// need to remove the last variable from the passed name
|
1270 |
+
for ($nCount = 1; $nCount < ($lszHierarchicalNames -> getCount() - 1); $nCount++)
|
1271 |
+
{
|
1272 |
+
$szXMLTagName .= "." . $lszHierarchicalNames -> getAt($nCount);
|
1273 |
+
}
|
1274 |
+
|
1275 |
+
$xtCurrentTag = $this -> getXmlTag($szXMLTagName);
|
1276 |
+
|
1277 |
+
// first check the attributes of this tag
|
1278 |
+
if ($xtCurrentTag != null)
|
1279 |
+
{
|
1280 |
+
$xaXmlAttribute = $xtCurrentTag -> getXmlAttributes() -> getXmlAttribute($szLastXMLTagName);
|
1281 |
+
|
1282 |
+
if ($xaXmlAttribute != null)
|
1283 |
+
{
|
1284 |
+
$szValue = SharedFunctions::replaceEntitiesInStringWithChars($xaXmlAttribute -> getValue());
|
1285 |
+
$boReturnValue = true;
|
1286 |
+
}
|
1287 |
+
else
|
1288 |
+
{
|
1289 |
+
// check to see if it's actually a tag
|
1290 |
+
if ($xtCurrentTag -> getChildTags() != null)
|
1291 |
+
{
|
1292 |
+
$xtCurrentTag = $xtCurrentTag -> getChildTags() -> getXmlTag($szLastXMLTagName);
|
1293 |
+
|
1294 |
+
if ($xtCurrentTag != null)
|
1295 |
+
{
|
1296 |
+
$szValue = SharedFunctions::replaceEntitiesInStringWithChars($xtCurrentTag -> getContent());
|
1297 |
+
$boReturnValue = true;
|
1298 |
+
}
|
1299 |
+
}
|
1300 |
+
}
|
1301 |
+
}
|
1302 |
+
}
|
1303 |
+
}
|
1304 |
+
|
1305 |
+
return ($boReturnValue);
|
1306 |
+
}
|
1307 |
+
|
1308 |
+
//constructor
|
1309 |
+
/**
|
1310 |
+
* @param XMLTag[] $lxtXmlTagList
|
1311 |
+
*/
|
1312 |
+
public function __construct($lxtXmlTagList)
|
1313 |
+
{
|
1314 |
+
$nCount = 0;
|
1315 |
+
|
1316 |
+
$this -> m_lxtXmlTagList = array();
|
1317 |
+
|
1318 |
+
if ($lxtXmlTagList != null)
|
1319 |
+
{
|
1320 |
+
try
|
1321 |
+
{
|
1322 |
+
for ($nCount = 0; $nCount < count($lxtXmlTagList); $nCount++)
|
1323 |
+
{
|
1324 |
+
$this -> m_lxtXmlTagList[] = $lxtXmlTagList[$nCount];
|
1325 |
+
}
|
1326 |
+
}
|
1327 |
+
catch(Exception $e)
|
1328 |
+
{
|
1329 |
+
}
|
1330 |
+
}
|
1331 |
+
}
|
1332 |
+
|
1333 |
+
/**
|
1334 |
+
* @return XMLTag[]
|
1335 |
+
*/
|
1336 |
+
public function getListOfXmlTagObjects()
|
1337 |
+
{
|
1338 |
+
$nCount = 0;
|
1339 |
+
$lxtXmlTagList = array();
|
1340 |
+
|
1341 |
+
for ($nCount = 0; $nCount < count($this -> m_lxtXmlTagList); $nCount++)
|
1342 |
+
{
|
1343 |
+
$lxtXmlTagList[] = $this -> m_lxtXmlTagList[$nCount];
|
1344 |
+
}
|
1345 |
+
|
1346 |
+
return $lxtXmlTagList;
|
1347 |
+
}
|
1348 |
+
|
1349 |
+
}
|
1350 |
+
class XmlParser
|
1351 |
+
{
|
1352 |
+
/**
|
1353 |
+
* @var XmlTagList
|
1354 |
+
*/
|
1355 |
+
private $m_xtlXmlTagList;
|
1356 |
+
|
1357 |
+
/**
|
1358 |
+
* @param string $szXMLVariable
|
1359 |
+
* @param string $szValue
|
1360 |
+
* @return bool
|
1361 |
+
*/
|
1362 |
+
public function getStringValue($szXMLVariable, &$szValue)
|
1363 |
+
{
|
1364 |
+
$boReturnValue = false;
|
1365 |
+
|
1366 |
+
$szValue = "";
|
1367 |
+
|
1368 |
+
if ($this -> m_xtlXmlTagList != null)
|
1369 |
+
{
|
1370 |
+
$boReturnValue = $this -> m_xtlXmlTagList -> getValue($szXMLVariable, $szValue);
|
1371 |
+
}
|
1372 |
+
|
1373 |
+
return ($boReturnValue);
|
1374 |
+
}
|
1375 |
+
/**
|
1376 |
+
* @param string $szXMLVariable
|
1377 |
+
* @param int $nValue
|
1378 |
+
* @return bool
|
1379 |
+
*/
|
1380 |
+
public function getIntegerValue($szXMLVariable, &$nValue)
|
1381 |
+
{
|
1382 |
+
$boReturnValue = false;
|
1383 |
+
$szValue = "";
|
1384 |
+
|
1385 |
+
$nValue = false;
|
1386 |
+
if ($this -> m_xtlXmlTagList != null)
|
1387 |
+
{
|
1388 |
+
$boReturnValue = $this -> m_xtlXmlTagList -> getValue($szXMLVariable, $szValue);
|
1389 |
+
|
1390 |
+
if ($boReturnValue)
|
1391 |
+
{
|
1392 |
+
if (!is_numeric($szValue))
|
1393 |
+
{
|
1394 |
+
$boReturnValue = false;
|
1395 |
+
}
|
1396 |
+
else
|
1397 |
+
{
|
1398 |
+
try
|
1399 |
+
{
|
1400 |
+
$nValue = intval($szValue);
|
1401 |
+
}
|
1402 |
+
catch (Exception $e)
|
1403 |
+
{
|
1404 |
+
$boReturnValue = false;
|
1405 |
+
}
|
1406 |
+
}
|
1407 |
+
}
|
1408 |
+
}
|
1409 |
+
|
1410 |
+
return ($boReturnValue);
|
1411 |
+
}
|
1412 |
+
/**
|
1413 |
+
* @param string $szXMLVariable
|
1414 |
+
* @param bool $boValue
|
1415 |
+
* @return bool
|
1416 |
+
*/
|
1417 |
+
public function getBooleanValue($szXMLVariable, &$boValue)
|
1418 |
+
{
|
1419 |
+
$boReturnValue = false;
|
1420 |
+
$szValue = "";
|
1421 |
+
|
1422 |
+
$boValue = false;
|
1423 |
+
if ($this -> m_xtlXmlTagList != null)
|
1424 |
+
{
|
1425 |
+
$boReturnValue = $this -> m_xtlXmlTagList -> getValue($szXMLVariable, $szValue);
|
1426 |
+
|
1427 |
+
if ($boReturnValue)
|
1428 |
+
{
|
1429 |
+
if ($szValue != "0" && $szValue != "1" && strtoupper($szValue) != "FALSE" && strtoupper($szValue) != "TRUE")
|
1430 |
+
{
|
1431 |
+
$boReturnValue = false;
|
1432 |
+
}
|
1433 |
+
else
|
1434 |
+
{
|
1435 |
+
if (strtoupper($szValue) == "TRUE" || $szValue == "1")
|
1436 |
+
{
|
1437 |
+
$boValue = true;
|
1438 |
+
}
|
1439 |
+
}
|
1440 |
+
}
|
1441 |
+
}
|
1442 |
+
|
1443 |
+
return ($boReturnValue);
|
1444 |
+
}
|
1445 |
+
/**
|
1446 |
+
* @param string $szTagName
|
1447 |
+
* @return XMLTag
|
1448 |
+
*/
|
1449 |
+
public function getTag($szTagName)
|
1450 |
+
{
|
1451 |
+
$xmlReturnTag = null;
|
1452 |
+
|
1453 |
+
if ($this -> m_xtlXmlTagList -> getCount() == 0)
|
1454 |
+
{
|
1455 |
+
return (null);
|
1456 |
+
}
|
1457 |
+
|
1458 |
+
$xmlReturnTag = $this -> m_xtlXmlTagList -> getXmlTag($szTagName);
|
1459 |
+
|
1460 |
+
return ($xmlReturnTag);
|
1461 |
+
}
|
1462 |
+
/**
|
1463 |
+
* @param string $szXmlString
|
1464 |
+
* @return bool
|
1465 |
+
*/
|
1466 |
+
public function parseBuffer($szXmlString)
|
1467 |
+
{
|
1468 |
+
$boReturnValue = false;
|
1469 |
+
|
1470 |
+
try
|
1471 |
+
{
|
1472 |
+
$sxiSimpleXMLIterator = new SimpleXMLIterator($szXmlString);
|
1473 |
+
|
1474 |
+
$xtlXmlTagList = XmlParser::toXmlTagList($sxiSimpleXMLIterator);
|
1475 |
+
$this -> m_xtlXmlTagList = new XmlTagList($xtlXmlTagList -> toListOfXmlTagObjects());
|
1476 |
+
|
1477 |
+
$boReturnValue = true;
|
1478 |
+
}
|
1479 |
+
catch (Exception $e)
|
1480 |
+
{
|
1481 |
+
}
|
1482 |
+
|
1483 |
+
return $boReturnValue;
|
1484 |
+
}
|
1485 |
+
/**
|
1486 |
+
* @param SimpleXMLIterator $sxiSimpleXMLIterator
|
1487 |
+
* @return XmlTag2List
|
1488 |
+
* @throws Exception
|
1489 |
+
*/
|
1490 |
+
private static function toXmlTagList(SimpleXMLIterator $sxiSimpleXMLIterator)
|
1491 |
+
{
|
1492 |
+
$xtlXmlTagList = new XmlTag2List();
|
1493 |
+
|
1494 |
+
for ($sxiSimpleXMLIterator -> rewind(); $sxiSimpleXMLIterator -> valid(); $sxiSimpleXMLIterator -> next())
|
1495 |
+
{
|
1496 |
+
$xtXmlTag = new XmlTag2();
|
1497 |
+
$xtlXmlTagList -> add($xtXmlTag);
|
1498 |
+
$xtXmlTag -> setName($sxiSimpleXMLIterator -> key());
|
1499 |
+
|
1500 |
+
if (strval($sxiSimpleXMLIterator -> current()) != "")
|
1501 |
+
{
|
1502 |
+
$xtXmlTag -> setContent(strval($sxiSimpleXMLIterator -> current()));
|
1503 |
+
}
|
1504 |
+
|
1505 |
+
// get the attributes
|
1506 |
+
foreach ($sxiSimpleXMLIterator->current()->attributes() as $szName => $szValue)
|
1507 |
+
{
|
1508 |
+
$xaXmlAttribute = new XmlAttribute2();
|
1509 |
+
$xaXmlAttribute -> setName($szName);
|
1510 |
+
$xaXmlAttribute -> setValue(strval($szValue));
|
1511 |
+
$xtXmlTag -> getXmlAttributes() -> add($xaXmlAttribute);
|
1512 |
+
}
|
1513 |
+
|
1514 |
+
// parse the child tags
|
1515 |
+
if ($sxiSimpleXMLIterator -> hasChildren())
|
1516 |
+
{
|
1517 |
+
$xtlChildXmlTagList = XmlParser::toXmlTagList($sxiSimpleXMLIterator -> current());
|
1518 |
+
|
1519 |
+
for ($nCount = 0; $nCount < $xtlChildXmlTagList -> getCount(); $nCount++)
|
1520 |
+
{
|
1521 |
+
$xtXmlTag -> getChildTags() -> add($xtlChildXmlTagList -> getAt($nCount));
|
1522 |
+
}
|
1523 |
+
}
|
1524 |
+
}
|
1525 |
+
|
1526 |
+
return $xtlXmlTagList;
|
1527 |
+
}
|
1528 |
+
|
1529 |
+
}
|
1530 |
+
class SharedFunctions
|
1531 |
+
{
|
1532 |
+
/**
|
1533 |
+
* @param string $szString
|
1534 |
+
* @param string $cDelimiter
|
1535 |
+
* @return StringList
|
1536 |
+
* @throws Exception
|
1537 |
+
*/
|
1538 |
+
public static function getStringListFromCharSeparatedString($szString, $cDelimiter)
|
1539 |
+
{
|
1540 |
+
$nCount = 0;
|
1541 |
+
$nLastCount = -1;
|
1542 |
+
$szSubString;
|
1543 |
+
$nStringLength;
|
1544 |
+
$lszStringList;
|
1545 |
+
|
1546 |
+
if ($szString == null || $szString == "" || (string)$cDelimiter == "")
|
1547 |
+
{
|
1548 |
+
return null;
|
1549 |
+
}
|
1550 |
+
|
1551 |
+
$lszStringList = new StringList();
|
1552 |
+
|
1553 |
+
$nStringLength = strlen($szString);
|
1554 |
+
|
1555 |
+
for ($nCount = 0; $nCount < $nStringLength; $nCount++)
|
1556 |
+
{
|
1557 |
+
if ($szString[$nCount] == $cDelimiter)
|
1558 |
+
{
|
1559 |
+
$szSubString = substr($szString, ($nLastCount + 1), ($nCount - $nLastCount - 1));
|
1560 |
+
$nLastCount = $nCount;
|
1561 |
+
$lszStringList -> add($szSubString);
|
1562 |
+
|
1563 |
+
if ($nCount == $nStringLength)
|
1564 |
+
{
|
1565 |
+
$lszStringList -> add("");
|
1566 |
+
}
|
1567 |
+
}
|
1568 |
+
else
|
1569 |
+
{
|
1570 |
+
if ($nCount == ($nStringLength - 1))
|
1571 |
+
{
|
1572 |
+
$szSubString = substr($szString, ($nLastCount + 1), ($nCount - $nLastCount));
|
1573 |
+
$lszStringList -> add($szSubString);
|
1574 |
+
}
|
1575 |
+
}
|
1576 |
+
}
|
1577 |
+
|
1578 |
+
return $lszStringList;
|
1579 |
+
}
|
1580 |
+
/**
|
1581 |
+
* @param string $szName
|
1582 |
+
* @param int $nIndex Passed by reference
|
1583 |
+
* @return string
|
1584 |
+
*/
|
1585 |
+
public static function getArrayNameAndIndex($szName, &$nIndex)
|
1586 |
+
{
|
1587 |
+
$szReturnString;
|
1588 |
+
$nCount = 0;
|
1589 |
+
$szSubString;
|
1590 |
+
$boFound = false;
|
1591 |
+
$boAbort = false;
|
1592 |
+
$boAtLeastOneDigitFound = false;
|
1593 |
+
|
1594 |
+
if ($szName == "")
|
1595 |
+
{
|
1596 |
+
$nIndex = 0;
|
1597 |
+
return $szName;
|
1598 |
+
}
|
1599 |
+
|
1600 |
+
$szReturnString = $szName;
|
1601 |
+
$nIndex = 0;
|
1602 |
+
|
1603 |
+
if ($szName[(strlen($szName) - 1)] == ']')
|
1604 |
+
{
|
1605 |
+
$nCount = strlen($szName) - 2;
|
1606 |
+
|
1607 |
+
while (!$boFound && !$boAbort && $nCount >= 0)
|
1608 |
+
{
|
1609 |
+
// if we've found the closing array brace
|
1610 |
+
if ($szName[$nCount] == '[')
|
1611 |
+
{
|
1612 |
+
$boFound = true;
|
1613 |
+
}
|
1614 |
+
else
|
1615 |
+
{
|
1616 |
+
if (!is_numeric($szName[$nCount]))
|
1617 |
+
{
|
1618 |
+
$boAbort = true;
|
1619 |
+
}
|
1620 |
+
else
|
1621 |
+
{
|
1622 |
+
$boAtLeastOneDigitFound = true;
|
1623 |
+
$nCount--;
|
1624 |
+
}
|
1625 |
+
}
|
1626 |
+
}
|
1627 |
+
|
1628 |
+
// did we finish successfully?
|
1629 |
+
if ($boFound && $boAtLeastOneDigitFound)
|
1630 |
+
{
|
1631 |
+
$szSubString = substr($szName, ($nCount + 1), (strlen($szName) - $nCount - 2));
|
1632 |
+
$szReturnString = substr($szName, 0, $nCount);
|
1633 |
+
$nIndex = (int)($szSubString);
|
1634 |
+
}
|
1635 |
+
}
|
1636 |
+
|
1637 |
+
return $szReturnString;
|
1638 |
+
}
|
1639 |
+
/**
|
1640 |
+
* @param string $str
|
1641 |
+
* @return string
|
1642 |
+
*/
|
1643 |
+
public static function stringToByteArray($str)
|
1644 |
+
{
|
1645 |
+
$encoded;
|
1646 |
+
|
1647 |
+
$encoded = utf8_encode($str);
|
1648 |
+
|
1649 |
+
return $encoded;
|
1650 |
+
}
|
1651 |
+
/**
|
1652 |
+
* @param string $aByte
|
1653 |
+
* @return string
|
1654 |
+
*/
|
1655 |
+
public static function byteArrayToString($aByte)
|
1656 |
+
{
|
1657 |
+
return utf8_decode($aByte);
|
1658 |
+
}
|
1659 |
+
/**
|
1660 |
+
* @param int $nNumber
|
1661 |
+
* @param int $nPaddingAmount
|
1662 |
+
* @param string $cPaddingChar
|
1663 |
+
* @return string
|
1664 |
+
*/
|
1665 |
+
public static function forwardPaddedNumberString($nNumber, $nPaddingAmount, $cPaddingChar)
|
1666 |
+
{
|
1667 |
+
$szReturnString;
|
1668 |
+
$sbString;
|
1669 |
+
$nCount = 0;
|
1670 |
+
|
1671 |
+
$szReturnString = (string)$nNumber;
|
1672 |
+
|
1673 |
+
if (strlen($szReturnString) < $nPaddingAmount && $nPaddingAmount > 0)
|
1674 |
+
{
|
1675 |
+
$sbString = "";
|
1676 |
+
|
1677 |
+
for ($nCount = 0; $nCount < ($nPaddingAmount - strlen($szReturnString)); $nCount++)
|
1678 |
+
{
|
1679 |
+
$sbString .= $cPaddingChar;
|
1680 |
+
}
|
1681 |
+
|
1682 |
+
$sbString .= $szReturnString;
|
1683 |
+
$szReturnString = (string)$sbString;
|
1684 |
+
}
|
1685 |
+
|
1686 |
+
return $szReturnString;
|
1687 |
+
}
|
1688 |
+
/**
|
1689 |
+
* @param string $szString
|
1690 |
+
* @return string
|
1691 |
+
*/
|
1692 |
+
public static function stripAllWhitespace($szString)
|
1693 |
+
{
|
1694 |
+
$sbReturnString;
|
1695 |
+
$nCount = 0;
|
1696 |
+
|
1697 |
+
if ($szString == null)
|
1698 |
+
{
|
1699 |
+
return (null);
|
1700 |
+
}
|
1701 |
+
|
1702 |
+
$sbReturnString = "";
|
1703 |
+
|
1704 |
+
for ($nCount = 0; $nCount < strlen($szString); $nCount++)
|
1705 |
+
{
|
1706 |
+
if ($szString[$nCount] != ' ' && $szString[$nCount] != '\t' && $szString[$nCount] != '\n' && $szString[$nCount] != '\r')
|
1707 |
+
{
|
1708 |
+
$sbReturnString .= $szString[$nCount];
|
1709 |
+
}
|
1710 |
+
}
|
1711 |
+
|
1712 |
+
return (string)$sbReturnString;
|
1713 |
+
}
|
1714 |
+
/**
|
1715 |
+
* @param string $szString
|
1716 |
+
* @return bool
|
1717 |
+
*/
|
1718 |
+
public static function isStringNullOrEmpty($szString)
|
1719 |
+
{
|
1720 |
+
$boReturnValue = false;
|
1721 |
+
|
1722 |
+
if ($szString == null || $szString == "")
|
1723 |
+
{
|
1724 |
+
$boReturnValue = true;
|
1725 |
+
}
|
1726 |
+
|
1727 |
+
return ($boReturnValue);
|
1728 |
+
}
|
1729 |
+
/**
|
1730 |
+
* @param string $szString
|
1731 |
+
* @return null|string
|
1732 |
+
*/
|
1733 |
+
public static function replaceCharsInStringWithEntities($szString)
|
1734 |
+
{
|
1735 |
+
//give access to enum like associated array
|
1736 |
+
global $g_XMLEntities;
|
1737 |
+
|
1738 |
+
$szReturnString;
|
1739 |
+
$nCount;
|
1740 |
+
$boFound;
|
1741 |
+
$nHTMLEntityCount;
|
1742 |
+
|
1743 |
+
$szReturnString = null;
|
1744 |
+
|
1745 |
+
for ($nCount = 0; $nCount < strlen($szString); $nCount++)
|
1746 |
+
{
|
1747 |
+
$boFound = false;
|
1748 |
+
$nHTMLEntityCount = 0;
|
1749 |
+
|
1750 |
+
while (!$boFound && $nHTMLEntityCount < count($g_XMLEntities))
|
1751 |
+
{
|
1752 |
+
//$test1 = htmlspecialchars('&');
|
1753 |
+
|
1754 |
+
if ($g_XMLEntities[$nHTMLEntityCount] -> getReplacement() == htmlspecialchars($szString[$nCount]))
|
1755 |
+
{
|
1756 |
+
$boFound = true;
|
1757 |
+
}
|
1758 |
+
else
|
1759 |
+
{
|
1760 |
+
$nHTMLEntityCount++;
|
1761 |
+
}
|
1762 |
+
}
|
1763 |
+
|
1764 |
+
if ($boFound)
|
1765 |
+
{
|
1766 |
+
$szReturnString .= $g_XMLEntities[$nHTMLEntityCount] -> getReplacement();
|
1767 |
+
}
|
1768 |
+
else
|
1769 |
+
{
|
1770 |
+
$szReturnString .= $szString[$nCount];
|
1771 |
+
}
|
1772 |
+
}
|
1773 |
+
|
1774 |
+
return $szReturnString;
|
1775 |
+
}
|
1776 |
+
/**
|
1777 |
+
* @param string $szString
|
1778 |
+
* @return null|string
|
1779 |
+
*/
|
1780 |
+
public static function replaceEntitiesInStringWithChars($szString)
|
1781 |
+
{
|
1782 |
+
$szReturnString = null;
|
1783 |
+
$nCount;
|
1784 |
+
$boFound = false;
|
1785 |
+
$boFoundAmpersand = false;
|
1786 |
+
$nHTMLEntityCount;
|
1787 |
+
$szAmpersandBuffer = "";
|
1788 |
+
$nAmpersandBufferCount = 0;
|
1789 |
+
|
1790 |
+
for ($nCount = 0; $nCount < strlen($szString); $nCount++)
|
1791 |
+
{
|
1792 |
+
$boFound = false;
|
1793 |
+
$nHTMLEntityCount = 0;
|
1794 |
+
|
1795 |
+
if (!$boFoundAmpersand)
|
1796 |
+
{
|
1797 |
+
if ($szString[$nCount] == '&')
|
1798 |
+
{
|
1799 |
+
$boFoundAmpersand = true;
|
1800 |
+
$szAmpersandBuffer = (string)$szString[$nCount];
|
1801 |
+
$nAmpersandBufferCount = 0;
|
1802 |
+
}
|
1803 |
+
else
|
1804 |
+
{
|
1805 |
+
$szReturnString .= $szString[$nCount];
|
1806 |
+
}
|
1807 |
+
}
|
1808 |
+
else
|
1809 |
+
{
|
1810 |
+
$szAmpersandBuffer .= $szString[$nCount];
|
1811 |
+
|
1812 |
+
if ($nAmpersandBufferCount < (10 - 2))
|
1813 |
+
{
|
1814 |
+
if ($szString[$nCount] == ';')
|
1815 |
+
{
|
1816 |
+
$boFound = true;
|
1817 |
+
$boFoundAmpersand = false;
|
1818 |
+
}
|
1819 |
+
else
|
1820 |
+
{
|
1821 |
+
$nAmpersandBufferCount++;
|
1822 |
+
}
|
1823 |
+
}
|
1824 |
+
else
|
1825 |
+
{
|
1826 |
+
$szReturnString .= $szAmpersandBuffer;
|
1827 |
+
$boFoundAmpersand = false;
|
1828 |
+
}
|
1829 |
+
}
|
1830 |
+
|
1831 |
+
if ($boFound)
|
1832 |
+
{
|
1833 |
+
// need to find the entity in the list
|
1834 |
+
$boFoundEntity = false;
|
1835 |
+
$nXMLEntityCount = 0;
|
1836 |
+
|
1837 |
+
while (!$boFoundEntity && $nXMLEntityCount < count($g_XMLEntities))
|
1838 |
+
{
|
1839 |
+
if (strtoupper($g_XMLEntities[$nXMLEntityCount] -> getReplacement()) == strtoupper($szAmpersandBuffer))
|
1840 |
+
{
|
1841 |
+
$boFoundEntity = true;
|
1842 |
+
}
|
1843 |
+
else
|
1844 |
+
{
|
1845 |
+
$nXMLEntityCount++;
|
1846 |
+
}
|
1847 |
+
}
|
1848 |
+
|
1849 |
+
if ($boFoundEntity)
|
1850 |
+
{
|
1851 |
+
$szReturnString .= $g_XMLEntities[$nXMLEntityCount] -> getCharCode();
|
1852 |
+
}
|
1853 |
+
else
|
1854 |
+
{
|
1855 |
+
$szReturnString .= $szAmpersandBuffer;
|
1856 |
+
}
|
1857 |
+
$boFound = false;
|
1858 |
+
}
|
1859 |
+
}
|
1860 |
+
|
1861 |
+
if ($boFoundAmpersand && !$boFound)
|
1862 |
+
{
|
1863 |
+
$szReturnString .= $szAmpersandBuffer;
|
1864 |
+
}
|
1865 |
+
|
1866 |
+
return $szReturnString;
|
1867 |
+
}
|
1868 |
+
/**
|
1869 |
+
* @param bool $boValue
|
1870 |
+
* @return string
|
1871 |
+
*/
|
1872 |
+
public static function boolToString($boValue)
|
1873 |
+
{
|
1874 |
+
if ($boValue == true)
|
1875 |
+
{
|
1876 |
+
return "true";
|
1877 |
+
}
|
1878 |
+
elseif ($boValue == false)
|
1879 |
+
{
|
1880 |
+
return "false";
|
1881 |
+
}
|
1882 |
+
}
|
1883 |
+
|
1884 |
+
}
|
app/code/local/PayVector/Tpg/Model/Common/ThePaymentGateway/cacert.pem
ADDED
@@ -0,0 +1,3785 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
##
|
2 |
+
## ca-bundle.crt -- Bundle of CA Root Certificates
|
3 |
+
##
|
4 |
+
## Certificate data from Mozilla as of: Tue Jan 28 09:38:07 2014
|
5 |
+
##
|
6 |
+
## This is a bundle of X.509 certificates of public Certificate Authorities
|
7 |
+
## (CA). These were automatically extracted from Mozilla's root certificates
|
8 |
+
## file (certdata.txt). This file can be found in the mozilla source tree:
|
9 |
+
## http://mxr.mozilla.org/mozilla-release/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
|
10 |
+
##
|
11 |
+
## It contains the certificates in PEM format and therefore
|
12 |
+
## can be directly used with curl / libcurl / php_curl, or with
|
13 |
+
## an Apache+mod_ssl webserver for SSL client authentication.
|
14 |
+
## Just configure this file as the SSLCACertificateFile.
|
15 |
+
##
|
16 |
+
|
17 |
+
|
18 |
+
GTE CyberTrust Global Root
|
19 |
+
==========================
|
20 |
+
-----BEGIN CERTIFICATE-----
|
21 |
+
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
|
22 |
+
Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
|
23 |
+
A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
|
24 |
+
MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
|
25 |
+
Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
|
26 |
+
IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
|
27 |
+
sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
|
28 |
+
HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
|
29 |
+
AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
|
30 |
+
M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
|
31 |
+
NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
|
32 |
+
-----END CERTIFICATE-----
|
33 |
+
|
34 |
+
Thawte Server CA
|
35 |
+
================
|
36 |
+
-----BEGIN CERTIFICATE-----
|
37 |
+
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
38 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
39 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
|
40 |
+
AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
|
41 |
+
b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
|
42 |
+
BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
|
43 |
+
c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
|
44 |
+
A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
|
45 |
+
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
|
46 |
+
/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
|
47 |
+
1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
|
48 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
|
49 |
+
GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
|
50 |
+
GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
|
51 |
+
-----END CERTIFICATE-----
|
52 |
+
|
53 |
+
Thawte Premium Server CA
|
54 |
+
========================
|
55 |
+
-----BEGIN CERTIFICATE-----
|
56 |
+
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
57 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
58 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
|
59 |
+
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
|
60 |
+
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
|
61 |
+
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
|
62 |
+
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
|
63 |
+
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
|
64 |
+
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
|
65 |
+
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
|
66 |
+
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
|
67 |
+
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
|
68 |
+
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
|
69 |
+
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
|
70 |
+
UCemDaYj+bvLpgcUQg==
|
71 |
+
-----END CERTIFICATE-----
|
72 |
+
|
73 |
+
Equifax Secure CA
|
74 |
+
=================
|
75 |
+
-----BEGIN CERTIFICATE-----
|
76 |
+
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
|
77 |
+
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
78 |
+
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
|
79 |
+
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
|
80 |
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
|
81 |
+
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
|
82 |
+
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
|
83 |
+
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
|
84 |
+
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
|
85 |
+
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
|
86 |
+
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
|
87 |
+
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
|
88 |
+
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
|
89 |
+
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
|
90 |
+
70+sB3c4
|
91 |
+
-----END CERTIFICATE-----
|
92 |
+
|
93 |
+
Verisign Class 3 Public Primary Certification Authority
|
94 |
+
=======================================================
|
95 |
+
-----BEGIN CERTIFICATE-----
|
96 |
+
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
97 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
98 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
99 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
100 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
101 |
+
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
102 |
+
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
103 |
+
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
|
104 |
+
TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
|
105 |
+
WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
|
106 |
+
Tqj/ZA1k
|
107 |
+
-----END CERTIFICATE-----
|
108 |
+
|
109 |
+
Verisign Class 3 Public Primary Certification Authority - G2
|
110 |
+
============================================================
|
111 |
+
-----BEGIN CERTIFICATE-----
|
112 |
+
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
113 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
114 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
115 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
116 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
117 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
118 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
119 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
120 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
|
121 |
+
FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
|
122 |
+
lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
|
123 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
|
124 |
+
1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
|
125 |
+
Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
|
126 |
+
-----END CERTIFICATE-----
|
127 |
+
|
128 |
+
GlobalSign Root CA
|
129 |
+
==================
|
130 |
+
-----BEGIN CERTIFICATE-----
|
131 |
+
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
|
132 |
+
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
|
133 |
+
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
|
134 |
+
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
|
135 |
+
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
|
136 |
+
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
|
137 |
+
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
|
138 |
+
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
|
139 |
+
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
|
140 |
+
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
141 |
+
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
|
142 |
+
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
|
143 |
+
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
|
144 |
+
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
|
145 |
+
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
|
146 |
+
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
147 |
+
-----END CERTIFICATE-----
|
148 |
+
|
149 |
+
GlobalSign Root CA - R2
|
150 |
+
=======================
|
151 |
+
-----BEGIN CERTIFICATE-----
|
152 |
+
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
|
153 |
+
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
154 |
+
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
155 |
+
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
156 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
|
157 |
+
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
|
158 |
+
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
|
159 |
+
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
|
160 |
+
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
|
161 |
+
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
162 |
+
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
|
163 |
+
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
|
164 |
+
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
165 |
+
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
|
166 |
+
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
|
167 |
+
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
168 |
+
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
169 |
+
-----END CERTIFICATE-----
|
170 |
+
|
171 |
+
ValiCert Class 1 VA
|
172 |
+
===================
|
173 |
+
-----BEGIN CERTIFICATE-----
|
174 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
175 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
176 |
+
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
177 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
|
178 |
+
MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
179 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
|
180 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
181 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
182 |
+
A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
|
183 |
+
GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
|
184 |
+
DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
|
185 |
+
lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
|
186 |
+
icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
|
187 |
+
Orf1LXLI
|
188 |
+
-----END CERTIFICATE-----
|
189 |
+
|
190 |
+
ValiCert Class 2 VA
|
191 |
+
===================
|
192 |
+
-----BEGIN CERTIFICATE-----
|
193 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
194 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
195 |
+
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
196 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
197 |
+
MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
198 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
|
199 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
200 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
201 |
+
A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
|
202 |
+
CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
|
203 |
+
ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
|
204 |
+
SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
|
205 |
+
UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
|
206 |
+
W9ViH0Pd
|
207 |
+
-----END CERTIFICATE-----
|
208 |
+
|
209 |
+
RSA Root Certificate 1
|
210 |
+
======================
|
211 |
+
-----BEGIN CERTIFICATE-----
|
212 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
213 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
214 |
+
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
215 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
216 |
+
MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
217 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
|
218 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
219 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
220 |
+
A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
|
221 |
+
3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
|
222 |
+
BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
|
223 |
+
3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
|
224 |
+
V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
|
225 |
+
on+jjBXu
|
226 |
+
-----END CERTIFICATE-----
|
227 |
+
|
228 |
+
Verisign Class 3 Public Primary Certification Authority - G3
|
229 |
+
============================================================
|
230 |
+
-----BEGIN CERTIFICATE-----
|
231 |
+
MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
232 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
233 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
234 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
235 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
236 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
237 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
238 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
|
239 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
240 |
+
ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
|
241 |
+
EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
|
242 |
+
cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
|
243 |
+
EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
|
244 |
+
055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
245 |
+
ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
|
246 |
+
j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
|
247 |
+
/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
|
248 |
+
xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
|
249 |
+
t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
|
250 |
+
-----END CERTIFICATE-----
|
251 |
+
|
252 |
+
Verisign Class 4 Public Primary Certification Authority - G3
|
253 |
+
============================================================
|
254 |
+
-----BEGIN CERTIFICATE-----
|
255 |
+
MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
256 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
257 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
258 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
259 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
260 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
261 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
262 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
|
263 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
264 |
+
ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
|
265 |
+
tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
|
266 |
+
8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
|
267 |
+
Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
|
268 |
+
Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
269 |
+
j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
|
270 |
+
mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
|
271 |
+
fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
|
272 |
+
RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
|
273 |
+
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
|
274 |
+
-----END CERTIFICATE-----
|
275 |
+
|
276 |
+
Entrust.net Secure Server CA
|
277 |
+
============================
|
278 |
+
-----BEGIN CERTIFICATE-----
|
279 |
+
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
|
280 |
+
BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
|
281 |
+
cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
|
282 |
+
ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
283 |
+
cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
|
284 |
+
A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
|
285 |
+
eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
|
286 |
+
dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
|
287 |
+
aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
|
288 |
+
aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
|
289 |
+
gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
|
290 |
+
ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
|
291 |
+
CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
|
292 |
+
dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
293 |
+
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
|
294 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
295 |
+
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
|
296 |
+
NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
|
297 |
+
HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
|
298 |
+
BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
|
299 |
+
Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
|
300 |
+
n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
301 |
+
-----END CERTIFICATE-----
|
302 |
+
|
303 |
+
Entrust.net Premium 2048 Secure Server CA
|
304 |
+
=========================================
|
305 |
+
-----BEGIN CERTIFICATE-----
|
306 |
+
MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
307 |
+
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
308 |
+
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
309 |
+
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
|
310 |
+
NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
311 |
+
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
312 |
+
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
313 |
+
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
314 |
+
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
|
315 |
+
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
|
316 |
+
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
|
317 |
+
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
|
318 |
+
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E
|
319 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ
|
320 |
+
KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy
|
321 |
+
T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
|
322 |
+
zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT
|
323 |
+
J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e
|
324 |
+
nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE=
|
325 |
+
-----END CERTIFICATE-----
|
326 |
+
|
327 |
+
Baltimore CyberTrust Root
|
328 |
+
=========================
|
329 |
+
-----BEGIN CERTIFICATE-----
|
330 |
+
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
|
331 |
+
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
|
332 |
+
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
|
333 |
+
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
|
334 |
+
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
|
335 |
+
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
|
336 |
+
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
|
337 |
+
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
|
338 |
+
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
|
339 |
+
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
|
340 |
+
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
|
341 |
+
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
|
342 |
+
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
|
343 |
+
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
|
344 |
+
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
|
345 |
+
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
346 |
+
-----END CERTIFICATE-----
|
347 |
+
|
348 |
+
Equifax Secure Global eBusiness CA
|
349 |
+
==================================
|
350 |
+
-----BEGIN CERTIFICATE-----
|
351 |
+
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
352 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
|
353 |
+
bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
|
354 |
+
HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
|
355 |
+
b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
|
356 |
+
PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
|
357 |
+
qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
|
358 |
+
hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
|
359 |
+
BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
|
360 |
+
MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
|
361 |
+
I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
|
362 |
+
NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
|
363 |
+
-----END CERTIFICATE-----
|
364 |
+
|
365 |
+
Equifax Secure eBusiness CA 1
|
366 |
+
=============================
|
367 |
+
-----BEGIN CERTIFICATE-----
|
368 |
+
MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
369 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
|
370 |
+
LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
|
371 |
+
ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
|
372 |
+
IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
|
373 |
+
1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
|
374 |
+
IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
|
375 |
+
MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
|
376 |
+
Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
|
377 |
+
AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
|
378 |
+
lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
|
379 |
+
KpYrtWKmpj29f5JZzVoqgrI3eQ==
|
380 |
+
-----END CERTIFICATE-----
|
381 |
+
|
382 |
+
AddTrust Low-Value Services Root
|
383 |
+
================================
|
384 |
+
-----BEGIN CERTIFICATE-----
|
385 |
+
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
386 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
|
387 |
+
cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
|
388 |
+
CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
|
389 |
+
ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
|
390 |
+
AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
|
391 |
+
54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
|
392 |
+
oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
|
393 |
+
Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
|
394 |
+
GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
|
395 |
+
HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
|
396 |
+
AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
|
397 |
+
RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
|
398 |
+
HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
|
399 |
+
ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
|
400 |
+
iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
|
401 |
+
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
|
402 |
+
mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
|
403 |
+
ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
|
404 |
+
-----END CERTIFICATE-----
|
405 |
+
|
406 |
+
AddTrust External Root
|
407 |
+
======================
|
408 |
+
-----BEGIN CERTIFICATE-----
|
409 |
+
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
410 |
+
QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
|
411 |
+
VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
|
412 |
+
NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
|
413 |
+
cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
|
414 |
+
Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
|
415 |
+
+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
|
416 |
+
Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
|
417 |
+
aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
|
418 |
+
2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
|
419 |
+
7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
|
420 |
+
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
|
421 |
+
VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
|
422 |
+
VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
|
423 |
+
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
|
424 |
+
j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
425 |
+
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
|
426 |
+
e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
|
427 |
+
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
428 |
+
-----END CERTIFICATE-----
|
429 |
+
|
430 |
+
AddTrust Public Services Root
|
431 |
+
=============================
|
432 |
+
-----BEGIN CERTIFICATE-----
|
433 |
+
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
434 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
|
435 |
+
cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
|
436 |
+
BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
|
437 |
+
dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
|
438 |
+
AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
|
439 |
+
nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
|
440 |
+
d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
|
441 |
+
Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
|
442 |
+
HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
|
443 |
+
A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
444 |
+
/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
|
445 |
+
FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
|
446 |
+
A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
|
447 |
+
JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
|
448 |
+
+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
|
449 |
+
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
|
450 |
+
Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
|
451 |
+
EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
|
452 |
+
-----END CERTIFICATE-----
|
453 |
+
|
454 |
+
AddTrust Qualified Certificates Root
|
455 |
+
====================================
|
456 |
+
-----BEGIN CERTIFICATE-----
|
457 |
+
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
458 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
|
459 |
+
cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
|
460 |
+
CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
|
461 |
+
IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
|
462 |
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
|
463 |
+
64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
|
464 |
+
KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
|
465 |
+
L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
|
466 |
+
wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
|
467 |
+
MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
|
468 |
+
BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
|
469 |
+
BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
|
470 |
+
azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
|
471 |
+
ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
|
472 |
+
GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
|
473 |
+
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
|
474 |
+
RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
|
475 |
+
iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
|
476 |
+
-----END CERTIFICATE-----
|
477 |
+
|
478 |
+
Entrust Root Certification Authority
|
479 |
+
====================================
|
480 |
+
-----BEGIN CERTIFICATE-----
|
481 |
+
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
|
482 |
+
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
|
483 |
+
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
|
484 |
+
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
|
485 |
+
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
|
486 |
+
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
|
487 |
+
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
|
488 |
+
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
489 |
+
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
|
490 |
+
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
|
491 |
+
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
|
492 |
+
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
|
493 |
+
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
|
494 |
+
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
|
495 |
+
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
|
496 |
+
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
497 |
+
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
|
498 |
+
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
|
499 |
+
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
|
500 |
+
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
|
501 |
+
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
502 |
+
-----END CERTIFICATE-----
|
503 |
+
|
504 |
+
RSA Security 2048 v3
|
505 |
+
====================
|
506 |
+
-----BEGIN CERTIFICATE-----
|
507 |
+
MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
|
508 |
+
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
|
509 |
+
MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
|
510 |
+
BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
511 |
+
AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
|
512 |
+
Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
|
513 |
+
WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
|
514 |
+
KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
|
515 |
+
+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
|
516 |
+
MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
|
517 |
+
FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
|
518 |
+
v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
|
519 |
+
0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
|
520 |
+
VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
|
521 |
+
nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
|
522 |
+
pKnXwiJPZ9d37CAFYd4=
|
523 |
+
-----END CERTIFICATE-----
|
524 |
+
|
525 |
+
GeoTrust Global CA
|
526 |
+
==================
|
527 |
+
-----BEGIN CERTIFICATE-----
|
528 |
+
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
|
529 |
+
Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
|
530 |
+
MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
531 |
+
LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
532 |
+
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
|
533 |
+
BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
|
534 |
+
8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
|
535 |
+
T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
|
536 |
+
vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
|
537 |
+
AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
|
538 |
+
DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
|
539 |
+
zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
|
540 |
+
d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
|
541 |
+
mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
|
542 |
+
XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
|
543 |
+
Mw==
|
544 |
+
-----END CERTIFICATE-----
|
545 |
+
|
546 |
+
GeoTrust Global CA 2
|
547 |
+
====================
|
548 |
+
-----BEGIN CERTIFICATE-----
|
549 |
+
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
550 |
+
R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
|
551 |
+
MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
552 |
+
LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
553 |
+
ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
|
554 |
+
NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
|
555 |
+
LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
|
556 |
+
Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
|
557 |
+
HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
|
558 |
+
MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
|
559 |
+
K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
|
560 |
+
srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
|
561 |
+
ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
|
562 |
+
OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
|
563 |
+
x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
|
564 |
+
H4z1Ir+rzoPz4iIprn2DQKi6bA==
|
565 |
+
-----END CERTIFICATE-----
|
566 |
+
|
567 |
+
GeoTrust Universal CA
|
568 |
+
=====================
|
569 |
+
-----BEGIN CERTIFICATE-----
|
570 |
+
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
|
594 |
+
P/rmMuGNG2+k5o7Y+SlIis5z/iw=
|
595 |
+
-----END CERTIFICATE-----
|
596 |
+
|
597 |
+
GeoTrust Universal CA 2
|
598 |
+
=======================
|
599 |
+
-----BEGIN CERTIFICATE-----
|
600 |
+
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
|
624 |
+
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
|
625 |
+
-----END CERTIFICATE-----
|
626 |
+
|
627 |
+
America Online Root Certification Authority 1
|
628 |
+
=============================================
|
629 |
+
-----BEGIN CERTIFICATE-----
|
630 |
+
MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
631 |
+
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
|
632 |
+
Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
|
633 |
+
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
|
634 |
+
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
|
635 |
+
ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
|
636 |
+
v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
|
637 |
+
DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
|
638 |
+
sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
|
639 |
+
8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
|
640 |
+
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
|
641 |
+
o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
|
642 |
+
GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
|
643 |
+
VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
|
644 |
+
3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
|
645 |
+
Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
|
646 |
+
sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
|
647 |
+
-----END CERTIFICATE-----
|
648 |
+
|
649 |
+
America Online Root Certification Authority 2
|
650 |
+
=============================================
|
651 |
+
-----BEGIN CERTIFICATE-----
|
652 |
+
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
|
677 |
+
cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
|
678 |
+
-----END CERTIFICATE-----
|
679 |
+
|
680 |
+
Visa eCommerce Root
|
681 |
+
===================
|
682 |
+
-----BEGIN CERTIFICATE-----
|
683 |
+
MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
|
684 |
+
EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
|
685 |
+
QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
|
686 |
+
WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
|
687 |
+
VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
|
688 |
+
bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
|
689 |
+
F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
|
690 |
+
RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
|
691 |
+
TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
|
692 |
+
/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
|
693 |
+
GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
|
694 |
+
MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
|
695 |
+
CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
|
696 |
+
YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
|
697 |
+
zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
|
698 |
+
YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
|
699 |
+
398znM/jra6O1I7mT1GvFpLgXPYHDw==
|
700 |
+
-----END CERTIFICATE-----
|
701 |
+
|
702 |
+
Certum Root CA
|
703 |
+
==============
|
704 |
+
-----BEGIN CERTIFICATE-----
|
705 |
+
MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
|
706 |
+
ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
|
707 |
+
Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
|
708 |
+
by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
|
709 |
+
wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
|
710 |
+
kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
|
711 |
+
89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
|
712 |
+
Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
|
713 |
+
NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
714 |
+
hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
|
715 |
+
GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
|
716 |
+
GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
|
717 |
+
0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
|
718 |
+
qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
|
719 |
+
-----END CERTIFICATE-----
|
720 |
+
|
721 |
+
Comodo AAA Services root
|
722 |
+
========================
|
723 |
+
-----BEGIN CERTIFICATE-----
|
724 |
+
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
725 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
726 |
+
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
|
727 |
+
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
|
728 |
+
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
729 |
+
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
730 |
+
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
|
731 |
+
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
|
732 |
+
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
|
733 |
+
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
|
734 |
+
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
|
735 |
+
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
|
736 |
+
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
|
737 |
+
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
|
738 |
+
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
|
739 |
+
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
740 |
+
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
741 |
+
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
|
742 |
+
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
743 |
+
-----END CERTIFICATE-----
|
744 |
+
|
745 |
+
Comodo Secure Services root
|
746 |
+
===========================
|
747 |
+
-----BEGIN CERTIFICATE-----
|
748 |
+
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
749 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
750 |
+
TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
|
751 |
+
MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
|
752 |
+
Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
|
753 |
+
BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
754 |
+
ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
|
755 |
+
9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
|
756 |
+
rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
|
757 |
+
oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
|
758 |
+
p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
|
759 |
+
FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
|
760 |
+
gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
|
761 |
+
YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
|
762 |
+
aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
|
763 |
+
4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
|
764 |
+
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
|
765 |
+
DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
|
766 |
+
pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
|
767 |
+
RR3B7Hzs/Sk=
|
768 |
+
-----END CERTIFICATE-----
|
769 |
+
|
770 |
+
Comodo Trusted Services root
|
771 |
+
============================
|
772 |
+
-----BEGIN CERTIFICATE-----
|
773 |
+
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
774 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
775 |
+
TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
|
776 |
+
MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
|
777 |
+
bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
|
778 |
+
IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
779 |
+
AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
|
780 |
+
3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
|
781 |
+
/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
|
782 |
+
juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
|
783 |
+
ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
|
784 |
+
DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
785 |
+
/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
|
786 |
+
ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
|
787 |
+
cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
|
788 |
+
uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
|
789 |
+
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
|
790 |
+
BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
|
791 |
+
R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
|
792 |
+
9y5Xt5hwXsjEeLBi
|
793 |
+
-----END CERTIFICATE-----
|
794 |
+
|
795 |
+
QuoVadis Root CA
|
796 |
+
================
|
797 |
+
-----BEGIN CERTIFICATE-----
|
798 |
+
MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
|
799 |
+
ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
800 |
+
eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
|
801 |
+
MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
|
802 |
+
cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
|
803 |
+
EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
804 |
+
AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
|
805 |
+
J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
|
806 |
+
F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
|
807 |
+
YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
|
808 |
+
AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
|
809 |
+
PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
|
810 |
+
ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
|
811 |
+
MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
|
812 |
+
YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
813 |
+
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
|
814 |
+
Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
|
815 |
+
Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
|
816 |
+
BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
|
817 |
+
FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
|
818 |
+
aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
|
819 |
+
tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
|
820 |
+
fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
|
821 |
+
LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
|
822 |
+
gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
|
823 |
+
5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
|
824 |
+
5nrQNiOKSnQ2+Q==
|
825 |
+
-----END CERTIFICATE-----
|
826 |
+
|
827 |
+
QuoVadis Root CA 2
|
828 |
+
==================
|
829 |
+
-----BEGIN CERTIFICATE-----
|
830 |
+
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
|
856 |
+
-----END CERTIFICATE-----
|
857 |
+
|
858 |
+
QuoVadis Root CA 3
|
859 |
+
==================
|
860 |
+
-----BEGIN CERTIFICATE-----
|
861 |
+
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
862 |
+
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
|
863 |
+
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
864 |
+
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
865 |
+
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
|
866 |
+
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
|
867 |
+
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
|
868 |
+
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
|
869 |
+
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
|
870 |
+
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
|
871 |
+
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
|
872 |
+
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
|
873 |
+
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
|
874 |
+
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
|
875 |
+
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
|
876 |
+
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
|
877 |
+
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
|
878 |
+
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
|
879 |
+
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
|
880 |
+
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
|
881 |
+
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
|
882 |
+
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
|
883 |
+
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
|
884 |
+
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
|
885 |
+
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
|
886 |
+
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
|
887 |
+
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
|
888 |
+
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
|
889 |
+
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
|
890 |
+
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
|
891 |
+
-----END CERTIFICATE-----
|
892 |
+
|
893 |
+
Security Communication Root CA
|
894 |
+
==============================
|
895 |
+
-----BEGIN CERTIFICATE-----
|
896 |
+
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
897 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
898 |
+
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
899 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
900 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
|
901 |
+
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
|
902 |
+
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
|
903 |
+
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
|
904 |
+
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
|
905 |
+
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
|
906 |
+
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
|
907 |
+
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
|
908 |
+
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
|
909 |
+
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
|
910 |
+
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
|
911 |
+
FL39vmwLAw==
|
912 |
+
-----END CERTIFICATE-----
|
913 |
+
|
914 |
+
Sonera Class 2 Root CA
|
915 |
+
======================
|
916 |
+
-----BEGIN CERTIFICATE-----
|
917 |
+
MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
918 |
+
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
|
919 |
+
NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
920 |
+
IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
|
921 |
+
/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
|
922 |
+
dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
|
923 |
+
f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
|
924 |
+
tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
|
925 |
+
nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
|
926 |
+
XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
|
927 |
+
0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
|
928 |
+
cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
|
929 |
+
Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
|
930 |
+
EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
|
931 |
+
llpwrN9M
|
932 |
+
-----END CERTIFICATE-----
|
933 |
+
|
934 |
+
Staat der Nederlanden Root CA
|
935 |
+
=============================
|
936 |
+
-----BEGIN CERTIFICATE-----
|
937 |
+
MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
|
938 |
+
ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
|
939 |
+
Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
|
940 |
+
HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
|
941 |
+
bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
|
942 |
+
vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
|
943 |
+
jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
|
944 |
+
C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
|
945 |
+
vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
|
946 |
+
22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
|
947 |
+
HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
|
948 |
+
dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
|
949 |
+
BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
|
950 |
+
EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
|
951 |
+
MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
|
952 |
+
nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
|
953 |
+
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
|
954 |
+
-----END CERTIFICATE-----
|
955 |
+
|
956 |
+
TDC Internet Root CA
|
957 |
+
====================
|
958 |
+
-----BEGIN CERTIFICATE-----
|
959 |
+
MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
|
960 |
+
ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
|
961 |
+
NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
|
962 |
+
ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
963 |
+
MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
|
964 |
+
xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
|
965 |
+
znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
|
966 |
+
5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
|
967 |
+
otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
|
968 |
+
AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
|
969 |
+
VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
|
970 |
+
MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
|
971 |
+
AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
|
972 |
+
UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
|
973 |
+
CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
|
974 |
+
gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
|
975 |
+
2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
|
976 |
+
O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
|
977 |
+
Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
|
978 |
+
-----END CERTIFICATE-----
|
979 |
+
|
980 |
+
UTN DATACorp SGC Root CA
|
981 |
+
========================
|
982 |
+
-----BEGIN CERTIFICATE-----
|
983 |
+
MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
|
984 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
985 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
|
986 |
+
BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
|
987 |
+
MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
|
988 |
+
HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
|
989 |
+
dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
990 |
+
AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
|
991 |
+
raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
|
992 |
+
wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
|
993 |
+
9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
|
994 |
+
33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
|
995 |
+
DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
|
996 |
+
BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
|
997 |
+
LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
|
998 |
+
DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
|
999 |
+
Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
|
1000 |
+
I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
|
1001 |
+
EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
|
1002 |
+
DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
|
1003 |
+
-----END CERTIFICATE-----
|
1004 |
+
|
1005 |
+
UTN USERFirst Hardware Root CA
|
1006 |
+
==============================
|
1007 |
+
-----BEGIN CERTIFICATE-----
|
1008 |
+
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
|
1009 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1010 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
|
1011 |
+
BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
|
1012 |
+
OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
|
1013 |
+
eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
|
1014 |
+
ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
|
1015 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
|
1016 |
+
wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
|
1017 |
+
tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
|
1018 |
+
i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
|
1019 |
+
Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
|
1020 |
+
gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
|
1021 |
+
lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
|
1022 |
+
UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
|
1023 |
+
BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
1024 |
+
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
|
1025 |
+
XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
|
1026 |
+
lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
|
1027 |
+
iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
|
1028 |
+
nfhmqA==
|
1029 |
+
-----END CERTIFICATE-----
|
1030 |
+
|
1031 |
+
Camerfirma Chambers of Commerce Root
|
1032 |
+
====================================
|
1033 |
+
-----BEGIN CERTIFICATE-----
|
1034 |
+
MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1035 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1036 |
+
ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
|
1037 |
+
NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
|
1038 |
+
cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
|
1039 |
+
MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
|
1040 |
+
AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
|
1041 |
+
xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
|
1042 |
+
NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
|
1043 |
+
DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
|
1044 |
+
d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
|
1045 |
+
EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
|
1046 |
+
cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
|
1047 |
+
AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
|
1048 |
+
bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
|
1049 |
+
VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
|
1050 |
+
aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
|
1051 |
+
fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
|
1052 |
+
L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
|
1053 |
+
UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
|
1054 |
+
ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
|
1055 |
+
erfutGWaIZDgqtCYvDi1czyL+Nw=
|
1056 |
+
-----END CERTIFICATE-----
|
1057 |
+
|
1058 |
+
Camerfirma Global Chambersign Root
|
1059 |
+
==================================
|
1060 |
+
-----BEGIN CERTIFICATE-----
|
1061 |
+
MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1062 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1063 |
+
ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
|
1064 |
+
NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
|
1065 |
+
YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
|
1066 |
+
MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
|
1067 |
+
ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
|
1068 |
+
1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
|
1069 |
+
by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
|
1070 |
+
6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
|
1071 |
+
8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
|
1072 |
+
BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
|
1073 |
+
aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
|
1074 |
+
Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
|
1075 |
+
aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
|
1076 |
+
ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
|
1077 |
+
bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
|
1078 |
+
PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
|
1079 |
+
gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
|
1080 |
+
PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
|
1081 |
+
IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
|
1082 |
+
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
|
1083 |
+
-----END CERTIFICATE-----
|
1084 |
+
|
1085 |
+
NetLock Notary (Class A) Root
|
1086 |
+
=============================
|
1087 |
+
-----BEGIN CERTIFICATE-----
|
1088 |
+
MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
|
1089 |
+
EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1090 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
|
1091 |
+
ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
|
1092 |
+
DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
|
1093 |
+
EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
|
1094 |
+
VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
|
1095 |
+
cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
|
1096 |
+
D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
|
1097 |
+
z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
|
1098 |
+
/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
|
1099 |
+
tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
|
1100 |
+
4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
|
1101 |
+
A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
|
1102 |
+
Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
|
1103 |
+
bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
|
1104 |
+
IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
|
1105 |
+
LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
|
1106 |
+
ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
|
1107 |
+
IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
|
1108 |
+
IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
|
1109 |
+
b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
|
1110 |
+
bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
|
1111 |
+
Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
|
1112 |
+
bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
|
1113 |
+
ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
|
1114 |
+
ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
|
1115 |
+
CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
|
1116 |
+
KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
|
1117 |
+
8CgHrTwXZoi1/baI
|
1118 |
+
-----END CERTIFICATE-----
|
1119 |
+
|
1120 |
+
NetLock Business (Class B) Root
|
1121 |
+
===============================
|
1122 |
+
-----BEGIN CERTIFICATE-----
|
1123 |
+
MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1124 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1125 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
|
1126 |
+
VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
|
1127 |
+
VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
|
1128 |
+
bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
|
1129 |
+
VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
1130 |
+
iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
|
1131 |
+
o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
|
1132 |
+
1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
1133 |
+
HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
|
1134 |
+
RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
|
1135 |
+
dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
|
1136 |
+
ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
|
1137 |
+
c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
|
1138 |
+
YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
|
1139 |
+
c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
|
1140 |
+
Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
|
1141 |
+
bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
|
1142 |
+
IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
|
1143 |
+
YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
|
1144 |
+
cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
|
1145 |
+
43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
|
1146 |
+
stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
|
1147 |
+
-----END CERTIFICATE-----
|
1148 |
+
|
1149 |
+
NetLock Express (Class C) Root
|
1150 |
+
==============================
|
1151 |
+
-----BEGIN CERTIFICATE-----
|
1152 |
+
MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1153 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1154 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
|
1155 |
+
KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
|
1156 |
+
BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1157 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
|
1158 |
+
ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
|
1159 |
+
jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
|
1160 |
+
W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
|
1161 |
+
euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
|
1162 |
+
DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
|
1163 |
+
RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
|
1164 |
+
YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
|
1165 |
+
IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
|
1166 |
+
aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
|
1167 |
+
ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
|
1168 |
+
ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
|
1169 |
+
dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
|
1170 |
+
emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
|
1171 |
+
IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
|
1172 |
+
UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
|
1173 |
+
YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
|
1174 |
+
xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
|
1175 |
+
gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
|
1176 |
+
-----END CERTIFICATE-----
|
1177 |
+
|
1178 |
+
XRamp Global CA Root
|
1179 |
+
====================
|
1180 |
+
-----BEGIN CERTIFICATE-----
|
1181 |
+
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
|
1182 |
+
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
|
1183 |
+
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
|
1184 |
+
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
|
1185 |
+
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
|
1186 |
+
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1187 |
+
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
|
1188 |
+
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
|
1189 |
+
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
|
1190 |
+
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
|
1191 |
+
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
|
1192 |
+
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
1193 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
|
1194 |
+
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
|
1195 |
+
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
|
1196 |
+
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
|
1197 |
+
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
|
1198 |
+
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
|
1199 |
+
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
|
1200 |
+
-----END CERTIFICATE-----
|
1201 |
+
|
1202 |
+
Go Daddy Class 2 CA
|
1203 |
+
===================
|
1204 |
+
-----BEGIN CERTIFICATE-----
|
1205 |
+
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
|
1206 |
+
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
|
1207 |
+
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
|
1208 |
+
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
|
1209 |
+
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
|
1210 |
+
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
|
1211 |
+
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
|
1212 |
+
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
|
1213 |
+
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
|
1214 |
+
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
|
1215 |
+
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
|
1216 |
+
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
|
1217 |
+
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
|
1218 |
+
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
|
1219 |
+
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
|
1220 |
+
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
1221 |
+
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
|
1222 |
+
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
|
1223 |
+
vZ8=
|
1224 |
+
-----END CERTIFICATE-----
|
1225 |
+
|
1226 |
+
Starfield Class 2 CA
|
1227 |
+
====================
|
1228 |
+
-----BEGIN CERTIFICATE-----
|
1229 |
+
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
|
1230 |
+
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
|
1231 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
|
1232 |
+
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
|
1233 |
+
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
|
1234 |
+
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
|
1235 |
+
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
|
1236 |
+
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
|
1237 |
+
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
|
1238 |
+
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
|
1239 |
+
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
|
1240 |
+
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
|
1241 |
+
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
|
1242 |
+
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
|
1243 |
+
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
|
1244 |
+
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
|
1245 |
+
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
|
1246 |
+
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
|
1247 |
+
QBFGmh95DmK/D5fs4C8fF5Q=
|
1248 |
+
-----END CERTIFICATE-----
|
1249 |
+
|
1250 |
+
StartCom Certification Authority
|
1251 |
+
================================
|
1252 |
+
-----BEGIN CERTIFICATE-----
|
1253 |
+
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
1254 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
1255 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
1256 |
+
NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
1257 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
1258 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
1259 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
1260 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
1261 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
1262 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
1263 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
1264 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
1265 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
1266 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
1267 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
1268 |
+
37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
|
1269 |
+
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
|
1270 |
+
Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
|
1271 |
+
YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
|
1272 |
+
AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
|
1273 |
+
Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
|
1274 |
+
U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
|
1275 |
+
LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
|
1276 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
|
1277 |
+
cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
|
1278 |
+
dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
|
1279 |
+
AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
|
1280 |
+
3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
|
1281 |
+
vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
|
1282 |
+
fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
|
1283 |
+
fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
|
1284 |
+
EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
|
1285 |
+
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
|
1286 |
+
1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
|
1287 |
+
lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
|
1288 |
+
g14=
|
1289 |
+
-----END CERTIFICATE-----
|
1290 |
+
|
1291 |
+
Taiwan GRCA
|
1292 |
+
===========
|
1293 |
+
-----BEGIN CERTIFICATE-----
|
1294 |
+
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
|
1319 |
+
-----END CERTIFICATE-----
|
1320 |
+
|
1321 |
+
Firmaprofesional Root CA
|
1322 |
+
========================
|
1323 |
+
-----BEGIN CERTIFICATE-----
|
1324 |
+
MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
|
1325 |
+
GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
|
1326 |
+
Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
|
1327 |
+
ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
|
1328 |
+
MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
|
1329 |
+
OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
|
1330 |
+
ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
|
1331 |
+
AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
|
1332 |
+
j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
|
1333 |
+
lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
|
1334 |
+
3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
|
1335 |
+
NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
|
1336 |
+
KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
|
1337 |
+
AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
|
1338 |
+
DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
|
1339 |
+
ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
|
1340 |
+
u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
|
1341 |
+
wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
|
1342 |
+
7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
|
1343 |
+
VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
|
1344 |
+
-----END CERTIFICATE-----
|
1345 |
+
|
1346 |
+
Swisscom Root CA 1
|
1347 |
+
==================
|
1348 |
+
-----BEGIN CERTIFICATE-----
|
1349 |
+
MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
|
1350 |
+
EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
|
1351 |
+
dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
|
1352 |
+
MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
|
1353 |
+
aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
|
1354 |
+
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
|
1355 |
+
MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
|
1356 |
+
NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
|
1357 |
+
AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
|
1358 |
+
b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
|
1359 |
+
7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
|
1360 |
+
cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
|
1361 |
+
WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
|
1362 |
+
haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
|
1363 |
+
MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
|
1364 |
+
HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
|
1365 |
+
BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
|
1366 |
+
MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
|
1367 |
+
jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
|
1368 |
+
MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
|
1369 |
+
VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
|
1370 |
+
vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
|
1371 |
+
OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
|
1372 |
+
1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
|
1373 |
+
nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
|
1374 |
+
x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
|
1375 |
+
NY6E0F/6MBr1mmz0DlP5OlvRHA==
|
1376 |
+
-----END CERTIFICATE-----
|
1377 |
+
|
1378 |
+
DigiCert Assured ID Root CA
|
1379 |
+
===========================
|
1380 |
+
-----BEGIN CERTIFICATE-----
|
1381 |
+
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
|
1382 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
1383 |
+
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
|
1384 |
+
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
1385 |
+
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
|
1386 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
|
1387 |
+
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
|
1388 |
+
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
|
1389 |
+
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
|
1390 |
+
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
|
1391 |
+
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
|
1392 |
+
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
|
1393 |
+
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
|
1394 |
+
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
|
1395 |
+
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
|
1396 |
+
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
1397 |
+
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
1398 |
+
-----END CERTIFICATE-----
|
1399 |
+
|
1400 |
+
DigiCert Global Root CA
|
1401 |
+
=======================
|
1402 |
+
-----BEGIN CERTIFICATE-----
|
1403 |
+
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
|
1404 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
1405 |
+
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
|
1406 |
+
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
1407 |
+
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
|
1408 |
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
|
1409 |
+
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
|
1410 |
+
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
|
1411 |
+
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
|
1412 |
+
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
|
1413 |
+
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
|
1414 |
+
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
|
1415 |
+
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
|
1416 |
+
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
|
1417 |
+
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
|
1418 |
+
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
1419 |
+
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
1420 |
+
-----END CERTIFICATE-----
|
1421 |
+
|
1422 |
+
DigiCert High Assurance EV Root CA
|
1423 |
+
==================================
|
1424 |
+
-----BEGIN CERTIFICATE-----
|
1425 |
+
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
|
1426 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
|
1427 |
+
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
|
1428 |
+
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
|
1429 |
+
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
|
1430 |
+
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
|
1431 |
+
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
|
1432 |
+
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
|
1433 |
+
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
|
1434 |
+
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
|
1435 |
+
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
|
1436 |
+
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
|
1437 |
+
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
|
1438 |
+
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
|
1439 |
+
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
|
1440 |
+
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
1441 |
+
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
|
1442 |
+
-----END CERTIFICATE-----
|
1443 |
+
|
1444 |
+
Certplus Class 2 Primary CA
|
1445 |
+
===========================
|
1446 |
+
-----BEGIN CERTIFICATE-----
|
1447 |
+
MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
|
1448 |
+
BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
|
1449 |
+
OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
|
1450 |
+
dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
1451 |
+
ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
|
1452 |
+
5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
|
1453 |
+
Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
|
1454 |
+
YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
|
1455 |
+
e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
|
1456 |
+
CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
|
1457 |
+
YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
|
1458 |
+
L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
|
1459 |
+
P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
|
1460 |
+
TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
|
1461 |
+
7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
|
1462 |
+
//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
|
1463 |
+
l7+ijrRU
|
1464 |
+
-----END CERTIFICATE-----
|
1465 |
+
|
1466 |
+
DST Root CA X3
|
1467 |
+
==============
|
1468 |
+
-----BEGIN CERTIFICATE-----
|
1469 |
+
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
|
1470 |
+
ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
|
1471 |
+
DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
|
1472 |
+
cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
|
1473 |
+
ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
|
1474 |
+
rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
|
1475 |
+
UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
|
1476 |
+
xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
|
1477 |
+
utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
|
1478 |
+
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
|
1479 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
|
1480 |
+
dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
|
1481 |
+
GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
|
1482 |
+
RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
|
1483 |
+
fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
|
1484 |
+
-----END CERTIFICATE-----
|
1485 |
+
|
1486 |
+
DST ACES CA X6
|
1487 |
+
==============
|
1488 |
+
-----BEGIN CERTIFICATE-----
|
1489 |
+
MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
|
1490 |
+
EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
|
1491 |
+
MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
|
1492 |
+
MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
|
1493 |
+
CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1494 |
+
AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
|
1495 |
+
DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
|
1496 |
+
pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
|
1497 |
+
GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
|
1498 |
+
MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
|
1499 |
+
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
|
1500 |
+
Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
|
1501 |
+
dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
|
1502 |
+
CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
|
1503 |
+
5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
|
1504 |
+
Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
|
1505 |
+
nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
|
1506 |
+
vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
|
1507 |
+
oKfN5XozNmr6mis=
|
1508 |
+
-----END CERTIFICATE-----
|
1509 |
+
|
1510 |
+
TURKTRUST Certificate Services Provider Root 1
|
1511 |
+
==============================================
|
1512 |
+
-----BEGIN CERTIFICATE-----
|
1513 |
+
MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1514 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
|
1515 |
+
MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
|
1516 |
+
acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
|
1517 |
+
MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
|
1518 |
+
U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
|
1519 |
+
TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
|
1520 |
+
aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1521 |
+
AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
|
1522 |
+
yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
|
1523 |
+
Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
|
1524 |
+
8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
|
1525 |
+
W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
|
1526 |
+
BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
|
1527 |
+
sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
|
1528 |
+
q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
|
1529 |
+
B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
|
1530 |
+
nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
|
1531 |
+
-----END CERTIFICATE-----
|
1532 |
+
|
1533 |
+
TURKTRUST Certificate Services Provider Root 2
|
1534 |
+
==============================================
|
1535 |
+
-----BEGIN CERTIFICATE-----
|
1536 |
+
MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1537 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
|
1538 |
+
MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
|
1539 |
+
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
|
1540 |
+
MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
|
1541 |
+
dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
|
1542 |
+
A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
|
1543 |
+
acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
|
1544 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
|
1545 |
+
LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
|
1546 |
+
x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
|
1547 |
+
QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
|
1548 |
+
5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
|
1549 |
+
AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
|
1550 |
+
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
|
1551 |
+
Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
|
1552 |
+
Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
|
1553 |
+
hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
|
1554 |
+
9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
|
1555 |
+
UrbnBEI=
|
1556 |
+
-----END CERTIFICATE-----
|
1557 |
+
|
1558 |
+
SwissSign Gold CA - G2
|
1559 |
+
======================
|
1560 |
+
-----BEGIN CERTIFICATE-----
|
1561 |
+
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
|
1587 |
+
-----END CERTIFICATE-----
|
1588 |
+
|
1589 |
+
SwissSign Silver CA - G2
|
1590 |
+
========================
|
1591 |
+
-----BEGIN CERTIFICATE-----
|
1592 |
+
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
|
1618 |
+
-----END CERTIFICATE-----
|
1619 |
+
|
1620 |
+
GeoTrust Primary Certification Authority
|
1621 |
+
========================================
|
1622 |
+
-----BEGIN CERTIFICATE-----
|
1623 |
+
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
|
1624 |
+
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
|
1625 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
|
1626 |
+
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
|
1627 |
+
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
1628 |
+
CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
|
1629 |
+
b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
|
1630 |
+
nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
|
1631 |
+
RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
|
1632 |
+
tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
1633 |
+
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
|
1634 |
+
hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
|
1635 |
+
Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
|
1636 |
+
NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
|
1637 |
+
Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
|
1638 |
+
1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
|
1639 |
+
-----END CERTIFICATE-----
|
1640 |
+
|
1641 |
+
thawte Primary Root CA
|
1642 |
+
======================
|
1643 |
+
-----BEGIN CERTIFICATE-----
|
1644 |
+
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
|
1645 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
1646 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
1647 |
+
cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
|
1648 |
+
MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
|
1649 |
+
SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
|
1650 |
+
KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
|
1651 |
+
FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
|
1652 |
+
oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
|
1653 |
+
1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
|
1654 |
+
q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
|
1655 |
+
aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
|
1656 |
+
afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
1657 |
+
VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
|
1658 |
+
AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
|
1659 |
+
uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
|
1660 |
+
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
|
1661 |
+
jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
|
1662 |
+
z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
|
1663 |
+
-----END CERTIFICATE-----
|
1664 |
+
|
1665 |
+
VeriSign Class 3 Public Primary Certification Authority - G5
|
1666 |
+
============================================================
|
1667 |
+
-----BEGIN CERTIFICATE-----
|
1668 |
+
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
|
1669 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
1670 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
1671 |
+
IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
|
1672 |
+
ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
|
1673 |
+
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
|
1674 |
+
biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
|
1675 |
+
dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
|
1676 |
+
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
1677 |
+
ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
|
1678 |
+
j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
|
1679 |
+
Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
|
1680 |
+
Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
|
1681 |
+
fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
|
1682 |
+
BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
|
1683 |
+
Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
|
1684 |
+
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
|
1685 |
+
SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
|
1686 |
+
X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
|
1687 |
+
KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
|
1688 |
+
Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
|
1689 |
+
ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
|
1690 |
+
-----END CERTIFICATE-----
|
1691 |
+
|
1692 |
+
SecureTrust CA
|
1693 |
+
==============
|
1694 |
+
-----BEGIN CERTIFICATE-----
|
1695 |
+
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
|
1696 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
|
1697 |
+
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
|
1698 |
+
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
|
1699 |
+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
|
1700 |
+
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
|
1701 |
+
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
|
1702 |
+
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
|
1703 |
+
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
|
1704 |
+
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
|
1705 |
+
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
|
1706 |
+
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
1707 |
+
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
|
1708 |
+
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
|
1709 |
+
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
|
1710 |
+
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
|
1711 |
+
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
|
1712 |
+
-----END CERTIFICATE-----
|
1713 |
+
|
1714 |
+
Secure Global CA
|
1715 |
+
================
|
1716 |
+
-----BEGIN CERTIFICATE-----
|
1717 |
+
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
|
1718 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
|
1719 |
+
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
|
1720 |
+
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
|
1721 |
+
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
|
1722 |
+
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
|
1723 |
+
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
|
1724 |
+
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
|
1725 |
+
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
|
1726 |
+
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
1727 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
|
1728 |
+
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
|
1729 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
|
1730 |
+
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
|
1731 |
+
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
|
1732 |
+
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
|
1733 |
+
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
|
1734 |
+
-----END CERTIFICATE-----
|
1735 |
+
|
1736 |
+
COMODO Certification Authority
|
1737 |
+
==============================
|
1738 |
+
-----BEGIN CERTIFICATE-----
|
1739 |
+
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
|
1740 |
+
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
|
1741 |
+
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
|
1742 |
+
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
|
1743 |
+
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
|
1744 |
+
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
1745 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
|
1746 |
+
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
|
1747 |
+
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
|
1748 |
+
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
|
1749 |
+
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
|
1750 |
+
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
|
1751 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
|
1752 |
+
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
|
1753 |
+
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
|
1754 |
+
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
1755 |
+
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
|
1756 |
+
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
|
1757 |
+
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
|
1758 |
+
-----END CERTIFICATE-----
|
1759 |
+
|
1760 |
+
Network Solutions Certificate Authority
|
1761 |
+
=======================================
|
1762 |
+
-----BEGIN CERTIFICATE-----
|
1763 |
+
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
|
1764 |
+
EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
|
1765 |
+
IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
|
1766 |
+
MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
1767 |
+
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
1768 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
|
1769 |
+
jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
|
1770 |
+
aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
|
1771 |
+
crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
|
1772 |
+
/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
|
1773 |
+
AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
|
1774 |
+
BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
|
1775 |
+
bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
|
1776 |
+
A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
|
1777 |
+
4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
|
1778 |
+
GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
1779 |
+
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
|
1780 |
+
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
1781 |
+
-----END CERTIFICATE-----
|
1782 |
+
|
1783 |
+
WellsSecure Public Root Certificate Authority
|
1784 |
+
=============================================
|
1785 |
+
-----BEGIN CERTIFICATE-----
|
1786 |
+
MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
|
1787 |
+
F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
|
1788 |
+
NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
1789 |
+
MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
|
1790 |
+
bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
|
1791 |
+
VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
1792 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
|
1793 |
+
iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
|
1794 |
+
i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
|
1795 |
+
bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
|
1796 |
+
K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
|
1797 |
+
AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
|
1798 |
+
cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
|
1799 |
+
lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
|
1800 |
+
i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
|
1801 |
+
GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
|
1802 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
|
1803 |
+
K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
|
1804 |
+
bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
|
1805 |
+
qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
|
1806 |
+
E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
|
1807 |
+
tylv2G0xffX8oRAHh84vWdw+WNs=
|
1808 |
+
-----END CERTIFICATE-----
|
1809 |
+
|
1810 |
+
COMODO ECC Certification Authority
|
1811 |
+
==================================
|
1812 |
+
-----BEGIN CERTIFICATE-----
|
1813 |
+
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
|
1814 |
+
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
|
1815 |
+
ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
|
1816 |
+
dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
|
1817 |
+
GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
|
1818 |
+
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
|
1819 |
+
b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
|
1820 |
+
4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
|
1821 |
+
wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
|
1822 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
|
1823 |
+
FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
|
1824 |
+
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
|
1825 |
+
-----END CERTIFICATE-----
|
1826 |
+
|
1827 |
+
IGC/A
|
1828 |
+
=====
|
1829 |
+
-----BEGIN CERTIFICATE-----
|
1830 |
+
MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
|
1831 |
+
VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
|
1832 |
+
Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
|
1833 |
+
MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
|
1834 |
+
EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
|
1835 |
+
STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
|
1836 |
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
|
1837 |
+
TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
|
1838 |
+
So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
|
1839 |
+
HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
|
1840 |
+
frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
|
1841 |
+
tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
|
1842 |
+
egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
|
1843 |
+
iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
|
1844 |
+
q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
|
1845 |
+
MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
|
1846 |
+
Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
|
1847 |
+
lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
|
1848 |
+
0mBWWg==
|
1849 |
+
-----END CERTIFICATE-----
|
1850 |
+
|
1851 |
+
Security Communication EV RootCA1
|
1852 |
+
=================================
|
1853 |
+
-----BEGIN CERTIFICATE-----
|
1854 |
+
MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
1855 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
|
1856 |
+
dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
|
1857 |
+
BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
|
1858 |
+
Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
1859 |
+
AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
|
1860 |
+
/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
|
1861 |
+
WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
|
1862 |
+
ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
|
1863 |
+
bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
|
1864 |
+
9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
|
1865 |
+
SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
|
1866 |
+
iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
|
1867 |
+
Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
|
1868 |
+
mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
|
1869 |
+
T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
|
1870 |
+
-----END CERTIFICATE-----
|
1871 |
+
|
1872 |
+
OISTE WISeKey Global Root GA CA
|
1873 |
+
===============================
|
1874 |
+
-----BEGIN CERTIFICATE-----
|
1875 |
+
MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
|
1876 |
+
BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
|
1877 |
+
A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
|
1878 |
+
bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
|
1879 |
+
VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
|
1880 |
+
IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
|
1881 |
+
IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
|
1882 |
+
Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
|
1883 |
+
Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
|
1884 |
+
d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
|
1885 |
+
/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
|
1886 |
+
LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
|
1887 |
+
AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
1888 |
+
KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
|
1889 |
+
MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
|
1890 |
+
+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
|
1891 |
+
hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
|
1892 |
+
okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
|
1893 |
+
-----END CERTIFICATE-----
|
1894 |
+
|
1895 |
+
Microsec e-Szigno Root CA
|
1896 |
+
=========================
|
1897 |
+
-----BEGIN CERTIFICATE-----
|
1898 |
+
MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
|
1899 |
+
BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
|
1900 |
+
EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
|
1901 |
+
MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
|
1902 |
+
dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
|
1903 |
+
GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
1904 |
+
AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
|
1905 |
+
d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
|
1906 |
+
oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
|
1907 |
+
QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
|
1908 |
+
PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
|
1909 |
+
MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
|
1910 |
+
IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
|
1911 |
+
VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
|
1912 |
+
LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
|
1913 |
+
dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
|
1914 |
+
AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
|
1915 |
+
4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
|
1916 |
+
AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
|
1917 |
+
egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
|
1918 |
+
Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
|
1919 |
+
PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
|
1920 |
+
c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
|
1921 |
+
cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
|
1922 |
+
IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
|
1923 |
+
WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
|
1924 |
+
MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
|
1925 |
+
MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
|
1926 |
+
Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
|
1927 |
+
HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
|
1928 |
+
nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
|
1929 |
+
aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
|
1930 |
+
86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
|
1931 |
+
yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
|
1932 |
+
S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
|
1933 |
+
-----END CERTIFICATE-----
|
1934 |
+
|
1935 |
+
Certigna
|
1936 |
+
========
|
1937 |
+
-----BEGIN CERTIFICATE-----
|
1938 |
+
MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
|
1939 |
+
EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
|
1940 |
+
MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
|
1941 |
+
Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
|
1942 |
+
XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
|
1943 |
+
GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
|
1944 |
+
ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
|
1945 |
+
DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
|
1946 |
+
Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
|
1947 |
+
tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
|
1948 |
+
BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
|
1949 |
+
SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
|
1950 |
+
hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
|
1951 |
+
ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
|
1952 |
+
PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
|
1953 |
+
1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
|
1954 |
+
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
|
1955 |
+
-----END CERTIFICATE-----
|
1956 |
+
|
1957 |
+
AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
|
1958 |
+
======================================
|
1959 |
+
-----BEGIN CERTIFICATE-----
|
1960 |
+
MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
|
1961 |
+
AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
|
1962 |
+
LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
|
1963 |
+
HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
|
1964 |
+
U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
|
1965 |
+
IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
|
1966 |
+
AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
|
1967 |
+
yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
|
1968 |
+
2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
|
1969 |
+
4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
|
1970 |
+
2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
|
1971 |
+
8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
|
1972 |
+
HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
|
1973 |
+
Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
|
1974 |
+
5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
|
1975 |
+
czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
1976 |
+
AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
|
1977 |
+
ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
|
1978 |
+
BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
|
1979 |
+
cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
|
1980 |
+
AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
|
1981 |
+
EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
|
1982 |
+
/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
|
1983 |
+
MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
|
1984 |
+
3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
|
1985 |
+
eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
|
1986 |
+
/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
|
1987 |
+
RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
|
1988 |
+
Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
|
1989 |
+
-----END CERTIFICATE-----
|
1990 |
+
|
1991 |
+
TC TrustCenter Class 2 CA II
|
1992 |
+
============================
|
1993 |
+
-----BEGIN CERTIFICATE-----
|
1994 |
+
MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
1995 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
1996 |
+
IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
|
1997 |
+
MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
1998 |
+
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
|
1999 |
+
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2000 |
+
AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
|
2001 |
+
IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
|
2002 |
+
xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
|
2003 |
+
Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
|
2004 |
+
SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2005 |
+
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
|
2006 |
+
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2007 |
+
Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2008 |
+
cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2009 |
+
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2010 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
|
2011 |
+
dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
|
2012 |
+
KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
|
2013 |
+
TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
|
2014 |
+
JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
|
2015 |
+
vQ==
|
2016 |
+
-----END CERTIFICATE-----
|
2017 |
+
|
2018 |
+
TC TrustCenter Class 3 CA II
|
2019 |
+
============================
|
2020 |
+
-----BEGIN CERTIFICATE-----
|
2021 |
+
MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
2022 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
2023 |
+
IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
|
2024 |
+
MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
2025 |
+
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
|
2026 |
+
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2027 |
+
AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
|
2028 |
+
yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
|
2029 |
+
6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
|
2030 |
+
uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
|
2031 |
+
2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2032 |
+
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
|
2033 |
+
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2034 |
+
Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2035 |
+
cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2036 |
+
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2037 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
|
2038 |
+
O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
|
2039 |
+
yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
|
2040 |
+
IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
|
2041 |
+
092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
|
2042 |
+
5A==
|
2043 |
+
-----END CERTIFICATE-----
|
2044 |
+
|
2045 |
+
TC TrustCenter Universal CA I
|
2046 |
+
=============================
|
2047 |
+
-----BEGIN CERTIFICATE-----
|
2048 |
+
MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
|
2049 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
|
2050 |
+
IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
|
2051 |
+
MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
|
2052 |
+
VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
|
2053 |
+
JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
|
2054 |
+
ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
|
2055 |
+
qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
|
2056 |
+
xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
|
2057 |
+
ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
|
2058 |
+
gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
|
2059 |
+
BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
2060 |
+
AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
|
2061 |
+
1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
|
2062 |
+
vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
|
2063 |
+
ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
|
2064 |
+
ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
|
2065 |
+
7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
|
2066 |
+
-----END CERTIFICATE-----
|
2067 |
+
|
2068 |
+
Deutsche Telekom Root CA 2
|
2069 |
+
==========================
|
2070 |
+
-----BEGIN CERTIFICATE-----
|
2071 |
+
MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
|
2072 |
+
RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
|
2073 |
+
A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
|
2074 |
+
MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
|
2075 |
+
A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
|
2076 |
+
b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
|
2077 |
+
bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
|
2078 |
+
KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
|
2079 |
+
AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
|
2080 |
+
Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
|
2081 |
+
jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
|
2082 |
+
HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
|
2083 |
+
E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
|
2084 |
+
zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
|
2085 |
+
rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
|
2086 |
+
dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
|
2087 |
+
Cm26OWMohpLzGITY+9HPBVZkVw==
|
2088 |
+
-----END CERTIFICATE-----
|
2089 |
+
|
2090 |
+
ComSign Secured CA
|
2091 |
+
==================
|
2092 |
+
-----BEGIN CERTIFICATE-----
|
2093 |
+
MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
|
2094 |
+
AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
|
2095 |
+
NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
|
2096 |
+
QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2097 |
+
ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
|
2098 |
+
49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
|
2099 |
+
7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
|
2100 |
+
kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
|
2101 |
+
9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
|
2102 |
+
AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
|
2103 |
+
U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
|
2104 |
+
j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
|
2105 |
+
AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
|
2106 |
+
BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
|
2107 |
+
FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
|
2108 |
+
51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
|
2109 |
+
OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
|
2110 |
+
-----END CERTIFICATE-----
|
2111 |
+
|
2112 |
+
Cybertrust Global Root
|
2113 |
+
======================
|
2114 |
+
-----BEGIN CERTIFICATE-----
|
2115 |
+
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
|
2116 |
+
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
|
2117 |
+
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
|
2118 |
+
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
2119 |
+
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
|
2120 |
+
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
|
2121 |
+
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
|
2122 |
+
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
|
2123 |
+
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
|
2124 |
+
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
|
2125 |
+
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
|
2126 |
+
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
|
2127 |
+
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
|
2128 |
+
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
|
2129 |
+
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
|
2130 |
+
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
|
2131 |
+
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
|
2132 |
+
-----END CERTIFICATE-----
|
2133 |
+
|
2134 |
+
ePKI Root Certification Authority
|
2135 |
+
=================================
|
2136 |
+
-----BEGIN CERTIFICATE-----
|
2137 |
+
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
|
2163 |
+
-----END CERTIFICATE-----
|
2164 |
+
|
2165 |
+
T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
|
2166 |
+
=============================================================================================================================
|
2167 |
+
-----BEGIN CERTIFICATE-----
|
2168 |
+
MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
|
2169 |
+
DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
|
2170 |
+
aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
|
2171 |
+
b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
|
2172 |
+
BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
|
2173 |
+
S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
|
2174 |
+
MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
|
2175 |
+
IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
|
2176 |
+
n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
|
2177 |
+
IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
|
2178 |
+
dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
|
2179 |
+
cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
|
2180 |
+
AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
|
2181 |
+
Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
|
2182 |
+
xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
|
2183 |
+
6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
|
2184 |
+
hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
|
2185 |
+
BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
|
2186 |
+
MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
|
2187 |
+
N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
|
2188 |
+
y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
|
2189 |
+
LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
|
2190 |
+
dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
|
2191 |
+
-----END CERTIFICATE-----
|
2192 |
+
|
2193 |
+
Buypass Class 2 CA 1
|
2194 |
+
====================
|
2195 |
+
-----BEGIN CERTIFICATE-----
|
2196 |
+
MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2197 |
+
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
|
2198 |
+
MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2199 |
+
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
|
2200 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
|
2201 |
+
cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
|
2202 |
+
0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
|
2203 |
+
0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
|
2204 |
+
uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
|
2205 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
|
2206 |
+
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
|
2207 |
+
1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
|
2208 |
+
7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
|
2209 |
+
fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
|
2210 |
+
wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
|
2211 |
+
-----END CERTIFICATE-----
|
2212 |
+
|
2213 |
+
Buypass Class 3 CA 1
|
2214 |
+
====================
|
2215 |
+
-----BEGIN CERTIFICATE-----
|
2216 |
+
MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2217 |
+
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
|
2218 |
+
MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2219 |
+
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
|
2220 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
|
2221 |
+
ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
|
2222 |
+
n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
|
2223 |
+
AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
|
2224 |
+
1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
|
2225 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
|
2226 |
+
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
|
2227 |
+
pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
|
2228 |
+
EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
|
2229 |
+
htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
|
2230 |
+
el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
|
2231 |
+
-----END CERTIFICATE-----
|
2232 |
+
|
2233 |
+
EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
|
2234 |
+
==========================================================================
|
2235 |
+
-----BEGIN CERTIFICATE-----
|
2236 |
+
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
|
2263 |
+
-----END CERTIFICATE-----
|
2264 |
+
|
2265 |
+
certSIGN ROOT CA
|
2266 |
+
================
|
2267 |
+
-----BEGIN CERTIFICATE-----
|
2268 |
+
MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
|
2269 |
+
VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
|
2270 |
+
Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
|
2271 |
+
CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
|
2272 |
+
JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
|
2273 |
+
rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
|
2274 |
+
ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
|
2275 |
+
0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
|
2276 |
+
AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
|
2277 |
+
Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
|
2278 |
+
AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
|
2279 |
+
SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
|
2280 |
+
x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
|
2281 |
+
vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
|
2282 |
+
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
|
2283 |
+
-----END CERTIFICATE-----
|
2284 |
+
|
2285 |
+
CNNIC ROOT
|
2286 |
+
==========
|
2287 |
+
-----BEGIN CERTIFICATE-----
|
2288 |
+
MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
|
2289 |
+
ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
|
2290 |
+
OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
|
2291 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
|
2292 |
+
o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
|
2293 |
+
VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
|
2294 |
+
VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
|
2295 |
+
czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
|
2296 |
+
y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
|
2297 |
+
wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
|
2298 |
+
lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
|
2299 |
+
Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
|
2300 |
+
O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
|
2301 |
+
BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
|
2302 |
+
G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
|
2303 |
+
mxE=
|
2304 |
+
-----END CERTIFICATE-----
|
2305 |
+
|
2306 |
+
ApplicationCA - Japanese Government
|
2307 |
+
===================================
|
2308 |
+
-----BEGIN CERTIFICATE-----
|
2309 |
+
MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
|
2310 |
+
SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
|
2311 |
+
MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
|
2312 |
+
cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
2313 |
+
CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
|
2314 |
+
fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
|
2315 |
+
wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
|
2316 |
+
jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
|
2317 |
+
nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
|
2318 |
+
WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
|
2319 |
+
BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
|
2320 |
+
vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
|
2321 |
+
o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
|
2322 |
+
/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
|
2323 |
+
io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
|
2324 |
+
dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
|
2325 |
+
rosot4LKGAfmt1t06SAZf7IbiVQ=
|
2326 |
+
-----END CERTIFICATE-----
|
2327 |
+
|
2328 |
+
GeoTrust Primary Certification Authority - G3
|
2329 |
+
=============================================
|
2330 |
+
-----BEGIN CERTIFICATE-----
|
2331 |
+
MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
|
2332 |
+
BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
|
2333 |
+
IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
|
2334 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
|
2335 |
+
NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
|
2336 |
+
YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
|
2337 |
+
LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
|
2338 |
+
hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
|
2339 |
+
K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
|
2340 |
+
c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
|
2341 |
+
IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
|
2342 |
+
dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
|
2343 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
|
2344 |
+
2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
|
2345 |
+
cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
|
2346 |
+
Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
|
2347 |
+
AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
|
2348 |
+
t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
|
2349 |
+
-----END CERTIFICATE-----
|
2350 |
+
|
2351 |
+
thawte Primary Root CA - G2
|
2352 |
+
===========================
|
2353 |
+
-----BEGIN CERTIFICATE-----
|
2354 |
+
MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
|
2355 |
+
VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
|
2356 |
+
IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
|
2357 |
+
Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
|
2358 |
+
MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
|
2359 |
+
b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
|
2360 |
+
IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
|
2361 |
+
LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
|
2362 |
+
8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
|
2363 |
+
mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
|
2364 |
+
G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
|
2365 |
+
rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
|
2366 |
+
-----END CERTIFICATE-----
|
2367 |
+
|
2368 |
+
thawte Primary Root CA - G3
|
2369 |
+
===========================
|
2370 |
+
-----BEGIN CERTIFICATE-----
|
2371 |
+
MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
|
2372 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2373 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2374 |
+
cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
|
2375 |
+
ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
|
2376 |
+
d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
|
2377 |
+
VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
|
2378 |
+
A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2379 |
+
MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
|
2380 |
+
P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
|
2381 |
+
+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
|
2382 |
+
7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
|
2383 |
+
vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
|
2384 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
|
2385 |
+
KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
|
2386 |
+
A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
|
2387 |
+
t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
|
2388 |
+
8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
|
2389 |
+
er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
|
2390 |
+
-----END CERTIFICATE-----
|
2391 |
+
|
2392 |
+
GeoTrust Primary Certification Authority - G2
|
2393 |
+
=============================================
|
2394 |
+
-----BEGIN CERTIFICATE-----
|
2395 |
+
MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
|
2396 |
+
VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
|
2397 |
+
Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
|
2398 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
|
2399 |
+
OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
|
2400 |
+
MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
|
2401 |
+
b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
|
2402 |
+
BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
|
2403 |
+
KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
|
2404 |
+
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
|
2405 |
+
EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
|
2406 |
+
ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
|
2407 |
+
npaqBA+K
|
2408 |
+
-----END CERTIFICATE-----
|
2409 |
+
|
2410 |
+
VeriSign Universal Root Certification Authority
|
2411 |
+
===============================================
|
2412 |
+
-----BEGIN CERTIFICATE-----
|
2413 |
+
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
|
2414 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2415 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2416 |
+
IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
|
2417 |
+
IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
|
2418 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
2419 |
+
cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
2420 |
+
IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
|
2421 |
+
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
|
2422 |
+
1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
|
2423 |
+
MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
|
2424 |
+
9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
|
2425 |
+
AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
|
2426 |
+
tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
|
2427 |
+
CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
|
2428 |
+
a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
|
2429 |
+
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
|
2430 |
+
Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
|
2431 |
+
Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
|
2432 |
+
P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
|
2433 |
+
wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
|
2434 |
+
mJO37M2CYfE45k+XmCpajQ==
|
2435 |
+
-----END CERTIFICATE-----
|
2436 |
+
|
2437 |
+
VeriSign Class 3 Public Primary Certification Authority - G4
|
2438 |
+
============================================================
|
2439 |
+
-----BEGIN CERTIFICATE-----
|
2440 |
+
MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
|
2441 |
+
VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
|
2442 |
+
b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
|
2443 |
+
ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
|
2444 |
+
YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
|
2445 |
+
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
|
2446 |
+
cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
|
2447 |
+
b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
2448 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
|
2449 |
+
Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
|
2450 |
+
rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
|
2451 |
+
/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
|
2452 |
+
HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
|
2453 |
+
Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
|
2454 |
+
A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
|
2455 |
+
AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
|
2456 |
+
-----END CERTIFICATE-----
|
2457 |
+
|
2458 |
+
NetLock Arany (Class Gold) FÅ‘tanúsÃtvány
|
2459 |
+
============================================
|
2460 |
+
-----BEGIN CERTIFICATE-----
|
2461 |
+
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
|
2462 |
+
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
|
2463 |
+
dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
|
2464 |
+
cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
|
2465 |
+
MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
|
2466 |
+
ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
|
2467 |
+
biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
|
2468 |
+
c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
|
2469 |
+
0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
|
2470 |
+
/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
|
2471 |
+
H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
|
2472 |
+
fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
|
2473 |
+
neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
|
2474 |
+
BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
|
2475 |
+
qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
|
2476 |
+
YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
|
2477 |
+
bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
|
2478 |
+
NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
|
2479 |
+
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
|
2480 |
+
-----END CERTIFICATE-----
|
2481 |
+
|
2482 |
+
Staat der Nederlanden Root CA - G2
|
2483 |
+
==================================
|
2484 |
+
-----BEGIN CERTIFICATE-----
|
2485 |
+
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
|
2511 |
+
66+KAQ==
|
2512 |
+
-----END CERTIFICATE-----
|
2513 |
+
|
2514 |
+
CA Disig
|
2515 |
+
========
|
2516 |
+
-----BEGIN CERTIFICATE-----
|
2517 |
+
MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
|
2518 |
+
QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
|
2519 |
+
MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
|
2520 |
+
bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
|
2521 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
|
2522 |
+
GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
|
2523 |
+
Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
|
2524 |
+
hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
|
2525 |
+
ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
|
2526 |
+
gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
|
2527 |
+
AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
|
2528 |
+
aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
|
2529 |
+
ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
|
2530 |
+
BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
|
2531 |
+
WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
|
2532 |
+
mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
|
2533 |
+
CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
|
2534 |
+
ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
|
2535 |
+
4Z7CRneC9VkGjCFMhwnN5ag=
|
2536 |
+
-----END CERTIFICATE-----
|
2537 |
+
|
2538 |
+
Juur-SK
|
2539 |
+
=======
|
2540 |
+
-----BEGIN CERTIFICATE-----
|
2541 |
+
MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
|
2542 |
+
c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
|
2543 |
+
DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
|
2544 |
+
SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
|
2545 |
+
aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
2546 |
+
ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
|
2547 |
+
TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
|
2548 |
+
+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
|
2549 |
+
UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
|
2550 |
+
Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
|
2551 |
+
MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
|
2552 |
+
HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
|
2553 |
+
AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
|
2554 |
+
cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
|
2555 |
+
AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
|
2556 |
+
cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
|
2557 |
+
FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
|
2558 |
+
A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
|
2559 |
+
ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
|
2560 |
+
abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
|
2561 |
+
IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
|
2562 |
+
Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
|
2563 |
+
yyqcjg==
|
2564 |
+
-----END CERTIFICATE-----
|
2565 |
+
|
2566 |
+
Hongkong Post Root CA 1
|
2567 |
+
=======================
|
2568 |
+
-----BEGIN CERTIFICATE-----
|
2569 |
+
MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
|
2570 |
+
DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
|
2571 |
+
NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
|
2572 |
+
IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
|
2573 |
+
AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
|
2574 |
+
ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
|
2575 |
+
auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
|
2576 |
+
qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
|
2577 |
+
V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
|
2578 |
+
HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
|
2579 |
+
h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
|
2580 |
+
l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
|
2581 |
+
IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
|
2582 |
+
T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
|
2583 |
+
c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
|
2584 |
+
-----END CERTIFICATE-----
|
2585 |
+
|
2586 |
+
SecureSign RootCA11
|
2587 |
+
===================
|
2588 |
+
-----BEGIN CERTIFICATE-----
|
2589 |
+
MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
|
2590 |
+
SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
|
2591 |
+
b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
|
2592 |
+
KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
|
2593 |
+
cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
|
2594 |
+
TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
|
2595 |
+
wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
|
2596 |
+
g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
|
2597 |
+
O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
|
2598 |
+
bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
|
2599 |
+
t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
|
2600 |
+
OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
|
2601 |
+
bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
|
2602 |
+
Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
|
2603 |
+
y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
|
2604 |
+
lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
|
2605 |
+
-----END CERTIFICATE-----
|
2606 |
+
|
2607 |
+
ACEDICOM Root
|
2608 |
+
=============
|
2609 |
+
-----BEGIN CERTIFICATE-----
|
2610 |
+
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
|
2636 |
+
-----END CERTIFICATE-----
|
2637 |
+
|
2638 |
+
Verisign Class 3 Public Primary Certification Authority
|
2639 |
+
=======================================================
|
2640 |
+
-----BEGIN CERTIFICATE-----
|
2641 |
+
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
2642 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
2643 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
2644 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
2645 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
2646 |
+
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
2647 |
+
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
2648 |
+
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
|
2649 |
+
CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
|
2650 |
+
bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
|
2651 |
+
D/xwzoiQ
|
2652 |
+
-----END CERTIFICATE-----
|
2653 |
+
|
2654 |
+
Microsec e-Szigno Root CA 2009
|
2655 |
+
==============================
|
2656 |
+
-----BEGIN CERTIFICATE-----
|
2657 |
+
MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
|
2658 |
+
MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
|
2659 |
+
c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
|
2660 |
+
dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
|
2661 |
+
BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
|
2662 |
+
U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
|
2663 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
|
2664 |
+
fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
|
2665 |
+
0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
|
2666 |
+
pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
|
2667 |
+
1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
|
2668 |
+
AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
|
2669 |
+
QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
|
2670 |
+
FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
|
2671 |
+
lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
|
2672 |
+
I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
|
2673 |
+
tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
|
2674 |
+
yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
|
2675 |
+
LXpUq3DDfSJlgnCW
|
2676 |
+
-----END CERTIFICATE-----
|
2677 |
+
|
2678 |
+
E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
|
2679 |
+
===================================================
|
2680 |
+
-----BEGIN CERTIFICATE-----
|
2681 |
+
MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
|
2682 |
+
EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
|
2683 |
+
ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
|
2684 |
+
MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
|
2685 |
+
cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
|
2686 |
+
aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2687 |
+
AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
|
2688 |
+
8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
|
2689 |
+
jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
|
2690 |
+
JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
|
2691 |
+
9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
|
2692 |
+
AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
|
2693 |
+
SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
|
2694 |
+
F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
|
2695 |
+
D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
|
2696 |
+
Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
|
2697 |
+
fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
|
2698 |
+
-----END CERTIFICATE-----
|
2699 |
+
|
2700 |
+
GlobalSign Root CA - R3
|
2701 |
+
=======================
|
2702 |
+
-----BEGIN CERTIFICATE-----
|
2703 |
+
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
|
2704 |
+
YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
2705 |
+
bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
2706 |
+
aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
2707 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
|
2708 |
+
iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
|
2709 |
+
0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
|
2710 |
+
rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
|
2711 |
+
OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
|
2712 |
+
xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
2713 |
+
FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
|
2714 |
+
lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
|
2715 |
+
EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
|
2716 |
+
bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
|
2717 |
+
YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
|
2718 |
+
kpeDMdmztcpHWD9f
|
2719 |
+
-----END CERTIFICATE-----
|
2720 |
+
|
2721 |
+
Autoridad de Certificacion Firmaprofesional CIF A62634068
|
2722 |
+
=========================================================
|
2723 |
+
-----BEGIN CERTIFICATE-----
|
2724 |
+
MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
|
2725 |
+
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
|
2726 |
+
MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
|
2727 |
+
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
|
2728 |
+
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
|
2729 |
+
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
|
2730 |
+
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
|
2731 |
+
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
|
2732 |
+
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
|
2733 |
+
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
|
2734 |
+
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
|
2735 |
+
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
|
2736 |
+
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
|
2737 |
+
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
|
2738 |
+
EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
|
2739 |
+
DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
|
2740 |
+
cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
|
2741 |
+
bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
|
2742 |
+
ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
|
2743 |
+
51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
|
2744 |
+
R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
|
2745 |
+
T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
|
2746 |
+
Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
|
2747 |
+
osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
|
2748 |
+
crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
|
2749 |
+
saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
|
2750 |
+
KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
|
2751 |
+
6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
|
2752 |
+
-----END CERTIFICATE-----
|
2753 |
+
|
2754 |
+
Izenpe.com
|
2755 |
+
==========
|
2756 |
+
-----BEGIN CERTIFICATE-----
|
2757 |
+
MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
|
2758 |
+
EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
|
2759 |
+
MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
|
2760 |
+
QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
|
2761 |
+
03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
|
2762 |
+
ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
|
2763 |
+
+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
|
2764 |
+
PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
|
2765 |
+
OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
|
2766 |
+
F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
|
2767 |
+
0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
|
2768 |
+
0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
|
2769 |
+
leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
|
2770 |
+
AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
|
2771 |
+
SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
|
2772 |
+
NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
|
2773 |
+
MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
2774 |
+
BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
|
2775 |
+
Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
|
2776 |
+
kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
|
2777 |
+
hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
|
2778 |
+
g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
|
2779 |
+
aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
|
2780 |
+
nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
|
2781 |
+
ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
|
2782 |
+
Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
|
2783 |
+
WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
|
2784 |
+
-----END CERTIFICATE-----
|
2785 |
+
|
2786 |
+
Chambers of Commerce Root - 2008
|
2787 |
+
================================
|
2788 |
+
-----BEGIN CERTIFICATE-----
|
2789 |
+
MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
|
2790 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
2791 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
2792 |
+
QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
|
2793 |
+
Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
|
2794 |
+
ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
|
2795 |
+
EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
|
2796 |
+
cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
2797 |
+
AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
|
2798 |
+
XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
|
2799 |
+
h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
|
2800 |
+
ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
|
2801 |
+
NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
|
2802 |
+
D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
|
2803 |
+
lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
|
2804 |
+
0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
|
2805 |
+
ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
|
2806 |
+
EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
|
2807 |
+
G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
|
2808 |
+
BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
|
2809 |
+
bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
|
2810 |
+
bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
|
2811 |
+
CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
|
2812 |
+
AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
|
2813 |
+
wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
|
2814 |
+
3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
|
2815 |
+
RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
|
2816 |
+
M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
|
2817 |
+
YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
|
2818 |
+
9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
|
2819 |
+
zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
|
2820 |
+
nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
|
2821 |
+
OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
|
2822 |
+
-----END CERTIFICATE-----
|
2823 |
+
|
2824 |
+
Global Chambersign Root - 2008
|
2825 |
+
==============================
|
2826 |
+
-----BEGIN CERTIFICATE-----
|
2827 |
+
MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
|
2828 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
2829 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
2830 |
+
QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
|
2831 |
+
NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
|
2832 |
+
Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
|
2833 |
+
QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
|
2834 |
+
aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
|
2835 |
+
VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
|
2836 |
+
XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
|
2837 |
+
ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
|
2838 |
+
/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
|
2839 |
+
TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
|
2840 |
+
H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
|
2841 |
+
Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
|
2842 |
+
HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
|
2843 |
+
wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
|
2844 |
+
AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
|
2845 |
+
BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
|
2846 |
+
BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
|
2847 |
+
aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
|
2848 |
+
aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
|
2849 |
+
1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
|
2850 |
+
dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
|
2851 |
+
/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
|
2852 |
+
ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
|
2853 |
+
dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
|
2854 |
+
9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
|
2855 |
+
foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
|
2856 |
+
qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
|
2857 |
+
P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
|
2858 |
+
c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
|
2859 |
+
09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
|
2860 |
+
-----END CERTIFICATE-----
|
2861 |
+
|
2862 |
+
Go Daddy Root Certificate Authority - G2
|
2863 |
+
========================================
|
2864 |
+
-----BEGIN CERTIFICATE-----
|
2865 |
+
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
2866 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
|
2867 |
+
MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
|
2868 |
+
MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
|
2869 |
+
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
|
2870 |
+
A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
|
2871 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
|
2872 |
+
9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
|
2873 |
+
+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
|
2874 |
+
fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
|
2875 |
+
NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
|
2876 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
|
2877 |
+
BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
|
2878 |
+
vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
|
2879 |
+
5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
|
2880 |
+
N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
|
2881 |
+
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
|
2882 |
+
-----END CERTIFICATE-----
|
2883 |
+
|
2884 |
+
Starfield Root Certificate Authority - G2
|
2885 |
+
=========================================
|
2886 |
+
-----BEGIN CERTIFICATE-----
|
2887 |
+
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
2888 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
2889 |
+
b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
|
2890 |
+
eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
|
2891 |
+
DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
|
2892 |
+
VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
|
2893 |
+
dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
|
2894 |
+
W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
|
2895 |
+
bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
|
2896 |
+
N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
|
2897 |
+
ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
|
2898 |
+
JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
2899 |
+
AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
|
2900 |
+
TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
|
2901 |
+
4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
|
2902 |
+
F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
|
2903 |
+
pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
|
2904 |
+
c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
|
2905 |
+
-----END CERTIFICATE-----
|
2906 |
+
|
2907 |
+
Starfield Services Root Certificate Authority - G2
|
2908 |
+
==================================================
|
2909 |
+
-----BEGIN CERTIFICATE-----
|
2910 |
+
MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
2911 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
2912 |
+
b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
|
2913 |
+
IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
|
2914 |
+
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
|
2915 |
+
dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
|
2916 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2917 |
+
AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
|
2918 |
+
h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
|
2919 |
+
hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
|
2920 |
+
LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
|
2921 |
+
rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
|
2922 |
+
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
|
2923 |
+
SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
|
2924 |
+
E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
|
2925 |
+
xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
|
2926 |
+
iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
|
2927 |
+
YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
|
2928 |
+
-----END CERTIFICATE-----
|
2929 |
+
|
2930 |
+
AffirmTrust Commercial
|
2931 |
+
======================
|
2932 |
+
-----BEGIN CERTIFICATE-----
|
2933 |
+
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
2934 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
|
2935 |
+
MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
2936 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
|
2937 |
+
AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
|
2938 |
+
DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
|
2939 |
+
C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
|
2940 |
+
BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
|
2941 |
+
MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
|
2942 |
+
HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
2943 |
+
AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
|
2944 |
+
hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
|
2945 |
+
qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
|
2946 |
+
0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
|
2947 |
+
sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
|
2948 |
+
-----END CERTIFICATE-----
|
2949 |
+
|
2950 |
+
AffirmTrust Networking
|
2951 |
+
======================
|
2952 |
+
-----BEGIN CERTIFICATE-----
|
2953 |
+
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
2954 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
|
2955 |
+
MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
2956 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
|
2957 |
+
AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
|
2958 |
+
Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
|
2959 |
+
dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
|
2960 |
+
/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
|
2961 |
+
h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
|
2962 |
+
HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
2963 |
+
AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
|
2964 |
+
UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
|
2965 |
+
12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
|
2966 |
+
WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
|
2967 |
+
/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
|
2968 |
+
-----END CERTIFICATE-----
|
2969 |
+
|
2970 |
+
AffirmTrust Premium
|
2971 |
+
===================
|
2972 |
+
-----BEGIN CERTIFICATE-----
|
2973 |
+
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
|
2997 |
+
-----END CERTIFICATE-----
|
2998 |
+
|
2999 |
+
AffirmTrust Premium ECC
|
3000 |
+
=======================
|
3001 |
+
-----BEGIN CERTIFICATE-----
|
3002 |
+
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
|
3003 |
+
BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
|
3004 |
+
MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
|
3005 |
+
cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
|
3006 |
+
IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
|
3007 |
+
N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
|
3008 |
+
BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
|
3009 |
+
BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
|
3010 |
+
57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
|
3011 |
+
eQ==
|
3012 |
+
-----END CERTIFICATE-----
|
3013 |
+
|
3014 |
+
Certum Trusted Network CA
|
3015 |
+
=========================
|
3016 |
+
-----BEGIN CERTIFICATE-----
|
3017 |
+
MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
|
3018 |
+
ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
|
3019 |
+
biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
|
3020 |
+
MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
|
3021 |
+
ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
3022 |
+
MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
3023 |
+
AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
|
3024 |
+
l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
|
3025 |
+
J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
|
3026 |
+
fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
|
3027 |
+
cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
|
3028 |
+
Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
|
3029 |
+
DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
|
3030 |
+
jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
|
3031 |
+
mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
|
3032 |
+
Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
|
3033 |
+
03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
|
3034 |
+
-----END CERTIFICATE-----
|
3035 |
+
|
3036 |
+
Certinomis - Autorité Racine
|
3037 |
+
=============================
|
3038 |
+
-----BEGIN CERTIFICATE-----
|
3039 |
+
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
|
3064 |
+
vgt2Fl43N+bYdJeimUV5
|
3065 |
+
-----END CERTIFICATE-----
|
3066 |
+
|
3067 |
+
Root CA Generalitat Valenciana
|
3068 |
+
==============================
|
3069 |
+
-----BEGIN CERTIFICATE-----
|
3070 |
+
MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
|
3071 |
+
ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
|
3072 |
+
IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
|
3073 |
+
WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
|
3074 |
+
CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
|
3075 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
|
3076 |
+
F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
|
3077 |
+
ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
|
3078 |
+
D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
|
3079 |
+
JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
|
3080 |
+
AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
|
3081 |
+
dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
|
3082 |
+
ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
|
3083 |
+
AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
|
3084 |
+
YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
|
3085 |
+
AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
|
3086 |
+
aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
|
3087 |
+
AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
|
3088 |
+
YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
|
3089 |
+
AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
|
3090 |
+
OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
|
3091 |
+
dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
|
3092 |
+
BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
|
3093 |
+
A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
|
3094 |
+
b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
|
3095 |
+
TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
|
3096 |
+
Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
|
3097 |
+
NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
|
3098 |
+
iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
|
3099 |
+
+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
|
3100 |
+
-----END CERTIFICATE-----
|
3101 |
+
|
3102 |
+
A-Trust-nQual-03
|
3103 |
+
================
|
3104 |
+
-----BEGIN CERTIFICATE-----
|
3105 |
+
MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
|
3106 |
+
Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
|
3107 |
+
a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
|
3108 |
+
dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
|
3109 |
+
RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
|
3110 |
+
ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
|
3111 |
+
c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
|
3112 |
+
zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
|
3113 |
+
yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
|
3114 |
+
SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
|
3115 |
+
iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
|
3116 |
+
cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
|
3117 |
+
eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
|
3118 |
+
ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
|
3119 |
+
sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
|
3120 |
+
JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
|
3121 |
+
mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
|
3122 |
+
ahq97BvIxYSazQ==
|
3123 |
+
-----END CERTIFICATE-----
|
3124 |
+
|
3125 |
+
TWCA Root Certification Authority
|
3126 |
+
=================================
|
3127 |
+
-----BEGIN CERTIFICATE-----
|
3128 |
+
MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
|
3129 |
+
VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
|
3130 |
+
dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
|
3131 |
+
EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
|
3132 |
+
IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
3133 |
+
AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
|
3134 |
+
QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
|
3135 |
+
oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
|
3136 |
+
4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
|
3137 |
+
y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
|
3138 |
+
BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
|
3139 |
+
9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
|
3140 |
+
mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
|
3141 |
+
QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
|
3142 |
+
T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
|
3143 |
+
Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
|
3144 |
+
-----END CERTIFICATE-----
|
3145 |
+
|
3146 |
+
Security Communication RootCA2
|
3147 |
+
==============================
|
3148 |
+
-----BEGIN CERTIFICATE-----
|
3149 |
+
MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
3150 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
|
3151 |
+
dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
|
3152 |
+
SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
|
3153 |
+
aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
3154 |
+
ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
|
3155 |
+
+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
|
3156 |
+
3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
|
3157 |
+
spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
|
3158 |
+
EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
|
3159 |
+
QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
|
3160 |
+
CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
|
3161 |
+
u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
|
3162 |
+
3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
|
3163 |
+
tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
|
3164 |
+
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
|
3165 |
+
-----END CERTIFICATE-----
|
3166 |
+
|
3167 |
+
EC-ACC
|
3168 |
+
======
|
3169 |
+
-----BEGIN CERTIFICATE-----
|
3170 |
+
MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
|
3171 |
+
BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
|
3172 |
+
ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
|
3173 |
+
VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
|
3174 |
+
CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
|
3175 |
+
BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
|
3176 |
+
MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
|
3177 |
+
SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
|
3178 |
+
Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
|
3179 |
+
cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
|
3180 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
|
3181 |
+
w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
|
3182 |
+
ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
|
3183 |
+
HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
|
3184 |
+
E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
|
3185 |
+
0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
|
3186 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
|
3187 |
+
VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
|
3188 |
+
Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
|
3189 |
+
dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
|
3190 |
+
lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
|
3191 |
+
Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
|
3192 |
+
l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
|
3193 |
+
E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
|
3194 |
+
5EI=
|
3195 |
+
-----END CERTIFICATE-----
|
3196 |
+
|
3197 |
+
Hellenic Academic and Research Institutions RootCA 2011
|
3198 |
+
=======================================================
|
3199 |
+
-----BEGIN CERTIFICATE-----
|
3200 |
+
MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
|
3201 |
+
O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
|
3202 |
+
aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
3203 |
+
IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
|
3204 |
+
AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
3205 |
+
IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
|
3206 |
+
IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
3207 |
+
AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
|
3208 |
+
1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
|
3209 |
+
71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
|
3210 |
+
8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
|
3211 |
+
3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
|
3212 |
+
MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
|
3213 |
+
MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
|
3214 |
+
b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
|
3215 |
+
XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
|
3216 |
+
TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
|
3217 |
+
/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
|
3218 |
+
7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
|
3219 |
+
-----END CERTIFICATE-----
|
3220 |
+
|
3221 |
+
Actalis Authentication Root CA
|
3222 |
+
==============================
|
3223 |
+
-----BEGIN CERTIFICATE-----
|
3224 |
+
MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
|
3225 |
+
BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
|
3226 |
+
AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
|
3227 |
+
MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
|
3228 |
+
IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
|
3229 |
+
IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
|
3230 |
+
wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
|
3231 |
+
by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
|
3232 |
+
zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
|
3233 |
+
YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
|
3234 |
+
oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
|
3235 |
+
EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
|
3236 |
+
hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
|
3237 |
+
EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
|
3238 |
+
jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
|
3239 |
+
iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
|
3240 |
+
ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
|
3241 |
+
WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
|
3242 |
+
JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
|
3243 |
+
K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
|
3244 |
+
Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
|
3245 |
+
4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
|
3246 |
+
2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
|
3247 |
+
lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
|
3248 |
+
OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
|
3249 |
+
vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
|
3250 |
+
-----END CERTIFICATE-----
|
3251 |
+
|
3252 |
+
Trustis FPS Root CA
|
3253 |
+
===================
|
3254 |
+
-----BEGIN CERTIFICATE-----
|
3255 |
+
MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
|
3256 |
+
EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
|
3257 |
+
IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
|
3258 |
+
BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
|
3259 |
+
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
|
3260 |
+
RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
|
3261 |
+
H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
|
3262 |
+
cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
|
3263 |
+
o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
|
3264 |
+
AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
|
3265 |
+
BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
|
3266 |
+
GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
|
3267 |
+
yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
|
3268 |
+
8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
|
3269 |
+
l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
|
3270 |
+
iB6XzCGcKQENZetX2fNXlrtIzYE=
|
3271 |
+
-----END CERTIFICATE-----
|
3272 |
+
|
3273 |
+
StartCom Certification Authority
|
3274 |
+
================================
|
3275 |
+
-----BEGIN CERTIFICATE-----
|
3276 |
+
MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
3277 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
3278 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
3279 |
+
NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
3280 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
3281 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
3282 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
3283 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
3284 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
3285 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
3286 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
3287 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
3288 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
3289 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
3290 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
3291 |
+
37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
|
3292 |
+
VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
|
3293 |
+
Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
|
3294 |
+
dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
|
3295 |
+
c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
|
3296 |
+
bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
|
3297 |
+
aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
|
3298 |
+
aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
|
3299 |
+
L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
|
3300 |
+
cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
|
3301 |
+
fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
|
3302 |
+
N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
|
3303 |
+
Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
|
3304 |
+
tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
|
3305 |
+
e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
|
3306 |
+
2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
|
3307 |
+
HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
|
3308 |
+
JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
|
3309 |
+
D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
|
3310 |
+
-----END CERTIFICATE-----
|
3311 |
+
|
3312 |
+
StartCom Certification Authority G2
|
3313 |
+
===================================
|
3314 |
+
-----BEGIN CERTIFICATE-----
|
3315 |
+
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
|
3339 |
+
obp573PYtlNXLfbQ4ddI
|
3340 |
+
-----END CERTIFICATE-----
|
3341 |
+
|
3342 |
+
Buypass Class 2 Root CA
|
3343 |
+
=======================
|
3344 |
+
-----BEGIN CERTIFICATE-----
|
3345 |
+
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
|
3369 |
+
rJgWVqA=
|
3370 |
+
-----END CERTIFICATE-----
|
3371 |
+
|
3372 |
+
Buypass Class 3 Root CA
|
3373 |
+
=======================
|
3374 |
+
-----BEGIN CERTIFICATE-----
|
3375 |
+
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
|
3399 |
+
Cp/HuZc=
|
3400 |
+
-----END CERTIFICATE-----
|
3401 |
+
|
3402 |
+
T-TeleSec GlobalRoot Class 3
|
3403 |
+
============================
|
3404 |
+
-----BEGIN CERTIFICATE-----
|
3405 |
+
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
|
3406 |
+
IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
|
3407 |
+
cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
|
3408 |
+
MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
|
3409 |
+
dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
|
3410 |
+
ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
|
3411 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
|
3412 |
+
9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
|
3413 |
+
NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
|
3414 |
+
iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
|
3415 |
+
0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
|
3416 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
|
3417 |
+
AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
|
3418 |
+
fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
|
3419 |
+
ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
|
3420 |
+
P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
|
3421 |
+
e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
|
3422 |
+
-----END CERTIFICATE-----
|
3423 |
+
|
3424 |
+
EE Certification Centre Root CA
|
3425 |
+
===============================
|
3426 |
+
-----BEGIN CERTIFICATE-----
|
3427 |
+
MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
|
3428 |
+
EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
|
3429 |
+
dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
|
3430 |
+
MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
|
3431 |
+
UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
|
3432 |
+
ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
3433 |
+
DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
|
3434 |
+
TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
|
3435 |
+
rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
|
3436 |
+
93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
|
3437 |
+
P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
|
3438 |
+
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
|
3439 |
+
MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
|
3440 |
+
BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
|
3441 |
+
xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
|
3442 |
+
lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
|
3443 |
+
uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
|
3444 |
+
3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
|
3445 |
+
dcGWxZ0=
|
3446 |
+
-----END CERTIFICATE-----
|
3447 |
+
|
3448 |
+
TURKTRUST Certificate Services Provider Root 2007
|
3449 |
+
=================================================
|
3450 |
+
-----BEGIN CERTIFICATE-----
|
3451 |
+
MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
3452 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
|
3453 |
+
MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
|
3454 |
+
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X
|
3455 |
+
DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl
|
3456 |
+
a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN
|
3457 |
+
BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
|
3458 |
+
bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw
|
3459 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N
|
3460 |
+
YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv
|
3461 |
+
KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya
|
3462 |
+
KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT
|
3463 |
+
rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC
|
3464 |
+
AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP
|
3465 |
+
BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s
|
3466 |
+
Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I
|
3467 |
+
aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO
|
3468 |
+
Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb
|
3469 |
+
BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK
|
3470 |
+
poRq0Tl9
|
3471 |
+
-----END CERTIFICATE-----
|
3472 |
+
|
3473 |
+
D-TRUST Root Class 3 CA 2 2009
|
3474 |
+
==============================
|
3475 |
+
-----BEGIN CERTIFICATE-----
|
3476 |
+
MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK
|
3477 |
+
DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe
|
3478 |
+
Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE
|
3479 |
+
LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw
|
3480 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD
|
3481 |
+
ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA
|
3482 |
+
BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv
|
3483 |
+
KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z
|
3484 |
+
p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC
|
3485 |
+
AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ
|
3486 |
+
4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y
|
3487 |
+
eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw
|
3488 |
+
MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G
|
3489 |
+
PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw
|
3490 |
+
OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm
|
3491 |
+
2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
|
3492 |
+
o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV
|
3493 |
+
dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph
|
3494 |
+
X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I=
|
3495 |
+
-----END CERTIFICATE-----
|
3496 |
+
|
3497 |
+
D-TRUST Root Class 3 CA 2 EV 2009
|
3498 |
+
=================================
|
3499 |
+
-----BEGIN CERTIFICATE-----
|
3500 |
+
MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
|
3501 |
+
DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
|
3502 |
+
OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
|
3503 |
+
DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
|
3504 |
+
OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS
|
3505 |
+
egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh
|
3506 |
+
zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T
|
3507 |
+
7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60
|
3508 |
+
sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35
|
3509 |
+
11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv
|
3510 |
+
cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v
|
3511 |
+
ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El
|
3512 |
+
MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp
|
3513 |
+
b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh
|
3514 |
+
c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+
|
3515 |
+
PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
|
3516 |
+
nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX
|
3517 |
+
ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA
|
3518 |
+
NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv
|
3519 |
+
w9y4AyHqnxbxLFS1
|
3520 |
+
-----END CERTIFICATE-----
|
3521 |
+
|
3522 |
+
PSCProcert
|
3523 |
+
==========
|
3524 |
+
-----BEGIN CERTIFICATE-----
|
3525 |
+
MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1dG9yaWRhZCBk
|
3526 |
+
ZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9sYW5vMQswCQYDVQQGEwJWRTEQ
|
3527 |
+
MA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lz
|
3528 |
+
dGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBl
|
3529 |
+
cmludGVuZGVuY2lhIGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUw
|
3530 |
+
IwYJKoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEwMFoXDTIw
|
3531 |
+
MTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHByb2NlcnQubmV0LnZlMQ8w
|
3532 |
+
DQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGExKjAoBgNVBAsTIVByb3ZlZWRvciBkZSBD
|
3533 |
+
ZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZp
|
3534 |
+
Y2FjaW9uIEVsZWN0cm9uaWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIw
|
3535 |
+
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo97BVC
|
3536 |
+
wfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74BCXfgI8Qhd19L3uA
|
3537 |
+
3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38GieU89RLAu9MLmV+QfI4tL3czkkoh
|
3538 |
+
RqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmO
|
3539 |
+
EO8GqQKJ/+MMbpfg353bIdD0PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG2
|
3540 |
+
0qCZyFSTXai20b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH
|
3541 |
+
0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/6mnbVSKVUyqU
|
3542 |
+
td+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1mv6JpIzi4mWCZDlZTOpx+FIyw
|
3543 |
+
Bm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvp
|
3544 |
+
r2uKGcfLFFb14dq12fy/czja+eevbqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/
|
3545 |
+
AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAz
|
3546 |
+
Ni0wMB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFDgBStuyId
|
3547 |
+
xuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRp
|
3548 |
+
ZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQH
|
3549 |
+
EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5h
|
3550 |
+
Y2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5k
|
3551 |
+
ZW5jaWEgZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG
|
3552 |
+
9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME0GA1UdEQRG
|
3553 |
+
MESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0wMDAwMDKgGwYFYIZeAgKgEgwQUklG
|
3554 |
+
LUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEagRKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52
|
3555 |
+
ZS9sY3IvQ0VSVElGSUNBRE8tUkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNy
|
3556 |
+
YWl6LnN1c2NlcnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v
|
3557 |
+
Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsGAQUFBwIBFh5o
|
3558 |
+
dHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcNAQELBQADggIBACtZ6yKZu4Sq
|
3559 |
+
T96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmN
|
3560 |
+
g7+mvTV+LFwxNG9s2/NkAZiqlCxB3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4q
|
3561 |
+
uxtxj7mkoP3YldmvWb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1
|
3562 |
+
n8GhHVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHmpHmJWhSn
|
3563 |
+
FFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXzsOfIt+FTvZLm8wyWuevo
|
3564 |
+
5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bEqCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq
|
3565 |
+
3TNWOByyrYDT13K9mmyZY+gAu0F2BbdbmRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5
|
3566 |
+
poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y
|
3567 |
+
eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
|
3568 |
+
-----END CERTIFICATE-----
|
3569 |
+
|
3570 |
+
China Internet Network Information Center EV Certificates Root
|
3571 |
+
==============================================================
|
3572 |
+
-----BEGIN CERTIFICATE-----
|
3573 |
+
MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV
|
3574 |
+
BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D
|
3575 |
+
aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg
|
3576 |
+
Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG
|
3577 |
+
A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM
|
3578 |
+
PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl
|
3579 |
+
cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y
|
3580 |
+
jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV
|
3581 |
+
98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H
|
3582 |
+
klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23
|
3583 |
+
KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC
|
3584 |
+
7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV
|
3585 |
+
HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD
|
3586 |
+
glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5
|
3587 |
+
0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM
|
3588 |
+
7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws
|
3589 |
+
ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0
|
3590 |
+
5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8=
|
3591 |
+
-----END CERTIFICATE-----
|
3592 |
+
|
3593 |
+
Swisscom Root CA 2
|
3594 |
+
==================
|
3595 |
+
-----BEGIN CERTIFICATE-----
|
3596 |
+
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
|
3622 |
+
5OfNeOI5wSsSnqaeG8XmDtkx2Q==
|
3623 |
+
-----END CERTIFICATE-----
|
3624 |
+
|
3625 |
+
Swisscom Root EV CA 2
|
3626 |
+
=====================
|
3627 |
+
-----BEGIN CERTIFICATE-----
|
3628 |
+
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
|
3654 |
+
l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc=
|
3655 |
+
-----END CERTIFICATE-----
|
3656 |
+
|
3657 |
+
CA Disig Root R1
|
3658 |
+
================
|
3659 |
+
-----BEGIN CERTIFICATE-----
|
3660 |
+
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
|
3684 |
+
a7+h89n07eLw4+1knj0vllJPgFOL
|
3685 |
+
-----END CERTIFICATE-----
|
3686 |
+
|
3687 |
+
CA Disig Root R2
|
3688 |
+
================
|
3689 |
+
-----BEGIN CERTIFICATE-----
|
3690 |
+
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
|
3714 |
+
7+ZtsH8tZ/3zbBt1RqPlShfppNcL
|
3715 |
+
-----END CERTIFICATE-----
|
3716 |
+
|
3717 |
+
ACCVRAIZ1
|
3718 |
+
=========
|
3719 |
+
-----BEGIN CERTIFICATE-----
|
3720 |
+
MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB
|
3721 |
+
SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1
|
3722 |
+
MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH
|
3723 |
+
UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
3724 |
+
DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM
|
3725 |
+
jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0
|
3726 |
+
RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD
|
3727 |
+
aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ
|
3728 |
+
0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG
|
3729 |
+
WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7
|
3730 |
+
8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR
|
3731 |
+
5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J
|
3732 |
+
9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK
|
3733 |
+
Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw
|
3734 |
+
Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu
|
3735 |
+
Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
|
3736 |
+
VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM
|
3737 |
+
Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA
|
3738 |
+
QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh
|
3739 |
+
AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA
|
3740 |
+
YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj
|
3741 |
+
AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA
|
3742 |
+
IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk
|
3743 |
+
aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0
|
3744 |
+
dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2
|
3745 |
+
MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI
|
3746 |
+
hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E
|
3747 |
+
R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN
|
3748 |
+
YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49
|
3749 |
+
nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ
|
3750 |
+
TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3
|
3751 |
+
sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
|
3752 |
+
I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg
|
3753 |
+
Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd
|
3754 |
+
3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p
|
3755 |
+
EfbRD0tVNEYqi4Y7
|
3756 |
+
-----END CERTIFICATE-----
|
3757 |
+
|
3758 |
+
TWCA Global Root CA
|
3759 |
+
===================
|
3760 |
+
-----BEGIN CERTIFICATE-----
|
3761 |
+
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
|
3785 |
+
-----END CERTIFICATE-----
|
app/code/local/PayVector/Tpg/Model/Direct.php
ADDED
@@ -0,0 +1,1536 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
include("Common/ThePaymentGateway/PaymentSystem.php");
|
4 |
+
include_once("Common/PaymentFormHelper.php");
|
5 |
+
include("Common/ISOCurrencies.php");
|
6 |
+
include("Common/ISOCountries.php");
|
7 |
+
include("Source/HashMethod.php");
|
8 |
+
|
9 |
+
class PayVector_Tpg_Model_Direct extends Mage_Payment_Model_Method_Abstract
|
10 |
+
{
|
11 |
+
/**
|
12 |
+
* unique internal payment method identifier
|
13 |
+
*
|
14 |
+
* @var string [a-z0-9_]
|
15 |
+
*/
|
16 |
+
protected $_code = 'tpg';
|
17 |
+
protected $_formBlockType = 'tpg/form';
|
18 |
+
protected $_infoBlockType = 'tpg/info';
|
19 |
+
|
20 |
+
protected $_isGateway = true;
|
21 |
+
protected $_canAuthorize = true;
|
22 |
+
protected $_canCapture = true;
|
23 |
+
protected $_canCapturePartial = false;
|
24 |
+
protected $_canRefund = true;
|
25 |
+
protected $_canVoid = true;
|
26 |
+
protected $_canUseInternal = true;
|
27 |
+
protected $_canUseCheckout = true;
|
28 |
+
protected $_canUseForMultishipping = true;
|
29 |
+
protected $_canSaveCc = false;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Assign data to info model instance
|
33 |
+
*
|
34 |
+
* @param mixed $data
|
35 |
+
* @return Mage_Payment_Model_Info
|
36 |
+
*/
|
37 |
+
public function assignData($data)
|
38 |
+
{
|
39 |
+
if(!($data instanceof Varien_Object))
|
40 |
+
{
|
41 |
+
$data = new Varien_Object($data);
|
42 |
+
}
|
43 |
+
$info = $this->getInfoInstance();
|
44 |
+
$info->setCcOwner($data->getCcOwner())
|
45 |
+
->setCcLast4(substr($data->getCcNumber(), -4))
|
46 |
+
->setCcNumber($data->getCcNumber())
|
47 |
+
->setCcCid($data->getCcCid())
|
48 |
+
->setCcExpMonth($data->getCcExpMonth())
|
49 |
+
->setCcExpYear($data->getCcExpYear())
|
50 |
+
->setCcSsStartMonth($data->getCcSsStartMonth())
|
51 |
+
->setCcSsStartYear($data->getCcSsStartYear())
|
52 |
+
->setCcSsIssue($data->getCcSsIssue());
|
53 |
+
|
54 |
+
return $this;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Validate payment method information object
|
59 |
+
*
|
60 |
+
* @param Mage_Payment_Model_Info $info
|
61 |
+
* @return Mage_Payment_Model_Method_Abstract
|
62 |
+
*/
|
63 |
+
public function validate()
|
64 |
+
{
|
65 |
+
// NOTE : cancel out the core Magento validator functionality, the payment gateway will overtake this task
|
66 |
+
return $this;
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Authorize - core Mage pre-authorization functionality
|
71 |
+
*
|
72 |
+
* @param Varien_Object $orderPayment
|
73 |
+
* @return Mage_Payment_Model_Method_Abstract
|
74 |
+
*/
|
75 |
+
public function authorize(Varien_Object $payment, $amount)
|
76 |
+
{
|
77 |
+
$error = false;
|
78 |
+
//if this is a cross reference transaction then skip mode checking as it must be Direct/API
|
79 |
+
if(isset($_POST['payment']['payment_type']) && $_POST['payment']['payment_type'] === "stored_card")
|
80 |
+
{
|
81 |
+
$paymentAction = $this->getConfigData('payment_action');
|
82 |
+
if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE_CAPTURE)
|
83 |
+
{
|
84 |
+
$szTransactionType = "SALE";
|
85 |
+
}
|
86 |
+
else if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE)
|
87 |
+
{
|
88 |
+
$szTransactionType = "PREAUTH";
|
89 |
+
}
|
90 |
+
else
|
91 |
+
{
|
92 |
+
Mage::throwException('Unknown payment action: ' . $paymentAction);
|
93 |
+
}
|
94 |
+
$error = $this->_runCrossReferenceTransaction($payment, $szTransactionType, $amount, true);
|
95 |
+
}
|
96 |
+
else
|
97 |
+
{
|
98 |
+
$mode = $this->getConfigData('mode');
|
99 |
+
// TODO : need to finish for non Direct API methods
|
100 |
+
switch($mode)
|
101 |
+
{
|
102 |
+
case PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_DIRECT_API:
|
103 |
+
$error = $this->_runTransaction($payment, $amount);
|
104 |
+
break;
|
105 |
+
case PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_HOSTED_PAYMENT_FORM:
|
106 |
+
$error = $this->_runHostedPaymentTransaction($payment, $amount);
|
107 |
+
break;
|
108 |
+
case PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_TRANSPARENT_REDIRECT:
|
109 |
+
$error = $this->_runTransparentRedirectTransaction($payment, $amount);
|
110 |
+
//Mage::throwException('TR not supported');
|
111 |
+
break;
|
112 |
+
default:
|
113 |
+
Mage::throwException('Invalid payment type: ' . $this->getConfigData('mode'));
|
114 |
+
break;
|
115 |
+
}
|
116 |
+
}
|
117 |
+
if($error)
|
118 |
+
{
|
119 |
+
Mage::throwException($error);
|
120 |
+
}
|
121 |
+
|
122 |
+
return $this;
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Capture payment - immediate settlement payments
|
127 |
+
*
|
128 |
+
* @param Varien_Object $payment
|
129 |
+
* @return Mage_Payment_Model_Method_Abstract
|
130 |
+
*/
|
131 |
+
public function capture(Varien_Object $payment, $amount)
|
132 |
+
{
|
133 |
+
$error = false;
|
134 |
+
$session = Mage::getSingleton('checkout/session');
|
135 |
+
$mode = $this->getConfigData('mode');
|
136 |
+
$nVersion = $this->getVersion();
|
137 |
+
if($amount <= 0)
|
138 |
+
{
|
139 |
+
Mage::throwException(Mage::helper('paygate')->__('Invalid amount for authorization.'));
|
140 |
+
}
|
141 |
+
else
|
142 |
+
{
|
143 |
+
if($session->getThreedsecurerequired())
|
144 |
+
{
|
145 |
+
$md = $session->getMd();
|
146 |
+
$pares = $session->getPares();
|
147 |
+
$session->setThreedsecurerequired(null);
|
148 |
+
$this->_run3DSecureTransaction($payment, $pares, $md);
|
149 |
+
|
150 |
+
return $this;
|
151 |
+
}
|
152 |
+
if($session->getRedirectedPayment())
|
153 |
+
{
|
154 |
+
$szStatusCode = $session->getStatuscode();
|
155 |
+
$szMessage = $session->getMessage();
|
156 |
+
$szPreviousStatusCode = $session->getPreviousstatuscode();
|
157 |
+
$szPreviousMessage = $session->getPreviousmessage();
|
158 |
+
$szOrderID = $session->getOrderid();
|
159 |
+
$szCrossReference = $session->getCrossReference();
|
160 |
+
// check whether it is a hosted payment or a transparent redirect action
|
161 |
+
$boIsHostedPaymentAction = $session->getIshostedpayment();
|
162 |
+
$session->setRedirectedPayment(null);
|
163 |
+
$session->setIshostedpayment(null);
|
164 |
+
$this->_runRedirectedPaymentComplete($payment, $boIsHostedPaymentAction, $szStatusCode, $szMessage, $szPreviousStatusCode, $szPreviousMessage, $szOrderID, $szCrossReference);
|
165 |
+
|
166 |
+
return $this;
|
167 |
+
}
|
168 |
+
if($session->getIsCollectionCrossReferenceTransaction())
|
169 |
+
{
|
170 |
+
// do a CrossReference transaction
|
171 |
+
$error = $this->_runCrossReferenceTransaction($payment, "COLLECTION", $amount);
|
172 |
+
}
|
173 |
+
else
|
174 |
+
{
|
175 |
+
// fresh payment request
|
176 |
+
$session->setThreedsecurerequired(null)
|
177 |
+
->setRedirectedPayment(null)
|
178 |
+
->setIshostedpayment(null)
|
179 |
+
->setHostedPayment(null)
|
180 |
+
->setMd(null)
|
181 |
+
->setPareq(null)
|
182 |
+
->setAcsurl(null)
|
183 |
+
->setPaymentprocessorresponse(null);
|
184 |
+
$payment->setAmount($amount);
|
185 |
+
switch($mode)
|
186 |
+
{
|
187 |
+
case PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_DIRECT_API:
|
188 |
+
$error = $this->_runTransaction($payment, $amount);
|
189 |
+
break;
|
190 |
+
case PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_HOSTED_PAYMENT_FORM:
|
191 |
+
$error = $this->_runHostedPaymentTransaction($payment, $amount);
|
192 |
+
break;
|
193 |
+
case PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_TRANSPARENT_REDIRECT:
|
194 |
+
$error = $this->_runTransparentRedirectTransaction($payment, $amount);
|
195 |
+
break;
|
196 |
+
default:
|
197 |
+
Mage::throwException('Invalid payment type: ' . $this->getConfigData('mode'));
|
198 |
+
break;
|
199 |
+
}
|
200 |
+
}
|
201 |
+
}
|
202 |
+
if($error)
|
203 |
+
{
|
204 |
+
Mage::throwException($error);
|
205 |
+
}
|
206 |
+
else
|
207 |
+
{
|
208 |
+
if($nVersion == 1324 || $nVersion == 1330)
|
209 |
+
{
|
210 |
+
$payment->setIsInvoicePaid(true);
|
211 |
+
}
|
212 |
+
}
|
213 |
+
|
214 |
+
return $this;
|
215 |
+
}
|
216 |
+
|
217 |
+
/**
|
218 |
+
* Processing the transaction using the direct integration
|
219 |
+
*
|
220 |
+
* @param Varien_Object $orderPayment
|
221 |
+
* @param float $amount
|
222 |
+
* @return bool
|
223 |
+
*/
|
224 |
+
public function _runTransaction(Varien_Object $payment, $amount)
|
225 |
+
{
|
226 |
+
$MerchantID = $this->getConfigData('merchantid');
|
227 |
+
$Password = $this->getConfigData('password');
|
228 |
+
$SecretKey = $this->getConfigData('secretkey');
|
229 |
+
// assign payment form field values to variables
|
230 |
+
$order = $payment->getOrder();
|
231 |
+
$szOrderID = $payment->getOrder()->increment_id;
|
232 |
+
$szOrderDescription = '';
|
233 |
+
$szCardName = $payment->getCcOwner();
|
234 |
+
$szCardNumber = $payment->getCcNumber();
|
235 |
+
//save card last four to the session so that it persists through a redirect on 3DS
|
236 |
+
Mage::getModel('customer/session')->setData('payvector_card_last_four', substr($payment->getCcNumber(), -4));
|
237 |
+
$szIssueNumber = $payment->getCcSsIssue();
|
238 |
+
$szCV2 = $payment->getCcCid();
|
239 |
+
$szCurrencyShort = $order->getOrderCurrency()->getCurrencyCode();
|
240 |
+
// address details
|
241 |
+
$billingAddress = $order->getBillingAddress();
|
242 |
+
$szAddress1 = $billingAddress->getStreet1();
|
243 |
+
$szAddress2 = $billingAddress->getStreet2();
|
244 |
+
$szAddress3 = $billingAddress->getStreet3();
|
245 |
+
$szAddress4 = $billingAddress->getStreet4();
|
246 |
+
$szCity = $billingAddress->getCity();
|
247 |
+
$szState = $billingAddress->getRegion();
|
248 |
+
$szPostCode = $billingAddress->getPostcode();
|
249 |
+
$szISO2CountryCode = $billingAddress->getCountry();
|
250 |
+
$szEmailAddress = $billingAddress->getCustomerEmail();
|
251 |
+
$szPhoneNumber = $billingAddress->getTelephone();
|
252 |
+
$iclISOCurrencyList = ISOCurrencies::getISOCurrencyList();
|
253 |
+
$iclISOCountryList = ISOCountries::getISOCountryList();
|
254 |
+
|
255 |
+
$rgeplRequestGatewayEntryPointList = $this->_getGatewayEntryPointList();
|
256 |
+
|
257 |
+
$paymentAction = $this->getConfigData('payment_action');
|
258 |
+
if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE_CAPTURE)
|
259 |
+
{
|
260 |
+
$szTransactionType = "SALE";
|
261 |
+
}
|
262 |
+
else if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE)
|
263 |
+
{
|
264 |
+
$szTransactionType = "PREAUTH";
|
265 |
+
}
|
266 |
+
else
|
267 |
+
{
|
268 |
+
Mage::throwException('Unknown payment action: ' . $paymentAction);
|
269 |
+
}
|
270 |
+
$cdtCardDetailsTransaction = new CardDetailsTransaction($rgeplRequestGatewayEntryPointList);
|
271 |
+
$cdtCardDetailsTransaction->getMerchantAuthentication()->setMerchantID($MerchantID);
|
272 |
+
$cdtCardDetailsTransaction->getMerchantAuthentication()->setPassword($Password);
|
273 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getMessageDetails()->setTransactionType($szTransactionType);
|
274 |
+
if($szCurrencyShort != '' &&
|
275 |
+
$iclISOCurrencyList->getISOCurrency($szCurrencyShort, $icISOCurrency)
|
276 |
+
)
|
277 |
+
{
|
278 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getCurrencyCode()->setValue($icISOCurrency->getISOCode());
|
279 |
+
}
|
280 |
+
$nDecimalAmount = $this->_getRoundedAmount($amount, $icISOCurrency->getExponent());
|
281 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getAmount()->setValue($nDecimalAmount);
|
282 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->setOrderID($szOrderID);
|
283 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->setOrderDescription($szOrderDescription);
|
284 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoCardType()->setValue(true);
|
285 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoAmountReceived()->setValue(true);
|
286 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoAVSCheckResult()->setValue(true);
|
287 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoCV2CheckResult()->setValue(true);
|
288 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getThreeDSecureOverridePolicy()->setValue(true);
|
289 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getDuplicateDelay()->setValue(60);
|
290 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getThreeDSecureBrowserDetails()->getDeviceCategory()->setValue(0);
|
291 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getThreeDSecureBrowserDetails()->setAcceptHeaders("*/*");
|
292 |
+
$cdtCardDetailsTransaction->getTransactionDetails()->getThreeDSecureBrowserDetails()->setUserAgent($_SERVER["HTTP_USER_AGENT"]);
|
293 |
+
$cdtCardDetailsTransaction->getCardDetails()->setCardName($szCardName);
|
294 |
+
$cdtCardDetailsTransaction->getCardDetails()->setCardNumber($szCardNumber);
|
295 |
+
if($payment->getCcExpMonth() != "")
|
296 |
+
{
|
297 |
+
$cdtCardDetailsTransaction->getCardDetails()->getExpiryDate()->getMonth()->setValue($payment->getCcExpMonth());
|
298 |
+
}
|
299 |
+
if($payment->getCcExpYear() != "")
|
300 |
+
{
|
301 |
+
$cdtCardDetailsTransaction->getCardDetails()->getExpiryDate()->getYear()->setValue($payment->getCcExpYear());
|
302 |
+
}
|
303 |
+
if($payment->getCcSsStartMonth() != "")
|
304 |
+
{
|
305 |
+
$cdtCardDetailsTransaction->getCardDetails()->getStartDate()->getMonth()->setValue($payment->getCcSsStartMonth());
|
306 |
+
}
|
307 |
+
if($payment->getCcSsStartYear() != "")
|
308 |
+
{
|
309 |
+
$cdtCardDetailsTransaction->getCardDetails()->getStartDate()->getYear()->setValue($payment->getCcSsStartYear());
|
310 |
+
}
|
311 |
+
$cdtCardDetailsTransaction->getCardDetails()->setIssueNumber($szIssueNumber);
|
312 |
+
$cdtCardDetailsTransaction->getCardDetails()->setCV2($szCV2);
|
313 |
+
$cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress1($szAddress1);
|
314 |
+
$cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress2($szAddress2);
|
315 |
+
$cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress3($szAddress3);
|
316 |
+
$cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress4($szAddress4);
|
317 |
+
$cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setCity($szCity);
|
318 |
+
$cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setState($szState);
|
319 |
+
$cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setPostCode($szPostCode);
|
320 |
+
$szCountryShort = $this->_getISO3Code($szISO2CountryCode);
|
321 |
+
if($iclISOCountryList->getISOCountry($szCountryShort, $icISOCountry))
|
322 |
+
{
|
323 |
+
$cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->getCountryCode()->setValue($icISOCountry->getISOCode());
|
324 |
+
}
|
325 |
+
$cdtCardDetailsTransaction->getCustomerDetails()->setEmailAddress($szEmailAddress);
|
326 |
+
$cdtCardDetailsTransaction->getCustomerDetails()->setPhoneNumber($szPhoneNumber);
|
327 |
+
$boTransactionProcessed = $cdtCardDetailsTransaction->processTransaction($cdtrCardDetailsTransactionResult, $todTransactionOutputData);
|
328 |
+
$error = $this->_handleTransactionResults($payment, $boTransactionProcessed, $cdtCardDetailsTransaction, $cdtrCardDetailsTransactionResult, $todTransactionOutputData);
|
329 |
+
|
330 |
+
return $error;
|
331 |
+
}
|
332 |
+
|
333 |
+
/**
|
334 |
+
* Processing the transaction using the hosted payment form integration
|
335 |
+
*
|
336 |
+
* @param Varien_Object $payment
|
337 |
+
* @param float $amount
|
338 |
+
*/
|
339 |
+
public function _runHostedPaymentTransaction(Varien_Object $payment, $amount)
|
340 |
+
{
|
341 |
+
$session = Mage::getSingleton('checkout/session');
|
342 |
+
$nVersion = $this->getVersion();
|
343 |
+
$szMerchantID = $this->getConfigData('merchantid');
|
344 |
+
$szPassword = $this->getConfigData('password');
|
345 |
+
$szPreSharedKey = $this->getConfigData('presharedkey');
|
346 |
+
$hmHashMethod = $this->getConfigData('hashmethod');
|
347 |
+
$boCV2Mandatory = 'false';
|
348 |
+
$boAddress1Mandatory = 'false';
|
349 |
+
$boCityMandatory = 'false';
|
350 |
+
$boPostCodeMandatory = 'false';
|
351 |
+
$boStateMandatory = 'false';
|
352 |
+
$boCountryMandatory = 'false';
|
353 |
+
$szEchoCardType = 'true';
|
354 |
+
$rdmResultDeliveryMethod = $this->getConfigData('resultdeliverymethod');
|
355 |
+
$szServerResultURL = '';
|
356 |
+
// set to always true to display the result on the Hosted Payment Form
|
357 |
+
$boPaymentFormDisplaysResult = '';
|
358 |
+
|
359 |
+
//Set callback URL
|
360 |
+
if($rdmResultDeliveryMethod === PayVector_Tpg_Model_Source_ResultDeliveryMethod::RESULT_DELIVERY_METHOD_SERVER_PULL)
|
361 |
+
{
|
362 |
+
$szCallbackURL = Mage::getUrl('tpg/payment/serverpullresult', array('_secure' => true));
|
363 |
+
}
|
364 |
+
else
|
365 |
+
{
|
366 |
+
$szCallbackURL = Mage::getUrl('tpg/payment/callbackhostedpayment', array('_secure' => true));
|
367 |
+
}
|
368 |
+
|
369 |
+
//For SERVER method then set ServerResultURL
|
370 |
+
if($rdmResultDeliveryMethod === PayVector_Tpg_Model_Source_ResultDeliveryMethod::RESULT_DELIVERY_METHOD_SERVER)
|
371 |
+
{
|
372 |
+
$szServerResultURL = Mage::getUrl('tpg/payment/serverresult', array('_secure' => true));
|
373 |
+
$boPaymentFormDisplaysResult = 'true';
|
374 |
+
}
|
375 |
+
|
376 |
+
// switch($rdmResultDeliveryMethod)
|
377 |
+
// {
|
378 |
+
// case PayVector_Tpg_Model_Source_ResultDeliveryMethod::RESULT_DELIVERY_METHOD_POST:
|
379 |
+
// $szCallbackURL = Mage::getUrl('tpg/payment/callbackhostedpayment', array('_secure' => true));
|
380 |
+
// break;
|
381 |
+
// case PayVector_Tpg_Model_Source_ResultDeliveryMethod::RESULT_DELIVERY_METHOD_SERVER:
|
382 |
+
// $szCallbackURL = Mage::getUrl('tpg/payment/callbackhostedpayment', array('_secure' => true));
|
383 |
+
// $szServerResultURL = Mage::getUrl('tpg/payment/serverresult', array('_secure' => true));
|
384 |
+
// $boPaymentFormDisplaysResult = 'true';
|
385 |
+
// break;
|
386 |
+
// case PayVector_Tpg_Model_Source_ResultDeliveryMethod::RESULT_DELIVERY_METHOD_SERVER_PULL:
|
387 |
+
// $szCallbackURL = Mage::getUrl('tpg/payment/serverpullresult', array('_secure' => true));
|
388 |
+
// break;
|
389 |
+
// }
|
390 |
+
|
391 |
+
$order = $payment->getOrder();
|
392 |
+
$billingAddress = $order->getBillingAddress();
|
393 |
+
$iclISOCurrencyList = ISOCurrencies::getISOCurrencyList();
|
394 |
+
$iclISOCountryList = ISOCountries::getISOCountryList();
|
395 |
+
$cookie = Mage::getSingleton('core/cookie');
|
396 |
+
$arCookieArray = $cookie->get();
|
397 |
+
$arCookieKeysArray = array_keys($arCookieArray);
|
398 |
+
$nKeysArrayLength = count($arCookieKeysArray);
|
399 |
+
$szCookiePath = $cookie->getPath();
|
400 |
+
$szCookieDomain = $cookie->getDomain();
|
401 |
+
$szServerResultURLCookieVariables = '';
|
402 |
+
$szServerResultURLFormVariables = '';
|
403 |
+
$szServerResultURLQueryStringVariables = '';
|
404 |
+
//ServerResutlURLCookieVariables string format: cookie1=123&path=/&domain=www.domain.com@@cookie2=456&path=/&domain=www.domain.com
|
405 |
+
for($nCount = 0; $nCount < $nKeysArrayLength; $nCount++)
|
406 |
+
{
|
407 |
+
$szEncodedCookieValue = urlencode($arCookieArray[$arCookieKeysArray[$nCount]]);
|
408 |
+
$szServerResultURLCookieVariables .= $arCookieKeysArray[$nCount] . "=" . $szEncodedCookieValue . "&path=" . $szCookiePath . "&domain=" . $szCookieDomain;
|
409 |
+
if($nCount < $nKeysArrayLength - 1)
|
410 |
+
{
|
411 |
+
$szServerResultURLCookieVariables .= "@@";
|
412 |
+
}
|
413 |
+
}
|
414 |
+
$szCurrencyShort = $order->getOrderCurrency()->getCurrencyCode();
|
415 |
+
if($szCurrencyShort != '' &&
|
416 |
+
$iclISOCurrencyList->getISOCurrency($szCurrencyShort, $icISOCurrency)
|
417 |
+
)
|
418 |
+
{
|
419 |
+
$nCurrencyCode = $icISOCurrency->getISOCode();
|
420 |
+
}
|
421 |
+
$nAmount = $this->_getRoundedAmount($amount, $icISOCurrency->getExponent());
|
422 |
+
$szISO2CountryCode = $billingAddress->getCountry();
|
423 |
+
$szCountryShort = $this->_getISO3Code($szISO2CountryCode);
|
424 |
+
if($iclISOCountryList->getISOCountry($szCountryShort, $icISOCountry))
|
425 |
+
{
|
426 |
+
$nCountryCode = $icISOCountry->getISOCode();
|
427 |
+
}
|
428 |
+
$szOrderID = $payment->getOrder()->increment_id;
|
429 |
+
//date time with 2008-12-01 14:12:00 +01:00 format
|
430 |
+
$szTransactionDateTime = date('Y-m-d H:i:s P');
|
431 |
+
$szOrderDescription = '';
|
432 |
+
//$szTransactionType = "SALE";
|
433 |
+
$paymentAction = $this->getConfigData('payment_action');
|
434 |
+
if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE_CAPTURE)
|
435 |
+
{
|
436 |
+
$szTransactionType = "SALE";
|
437 |
+
}
|
438 |
+
else if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE)
|
439 |
+
{
|
440 |
+
$szTransactionType = "PREAUTH";
|
441 |
+
}
|
442 |
+
else
|
443 |
+
{
|
444 |
+
Mage::throwException('Unknown payment action: ' . $paymentAction);
|
445 |
+
}
|
446 |
+
$szCustomerName = $billingAddress->getfirstname();
|
447 |
+
if($billingAddress->getfirstname())
|
448 |
+
{
|
449 |
+
$szCustomerName = $szCustomerName . ' ' . $billingAddress->getlastname();
|
450 |
+
}
|
451 |
+
$szAddress1 = $billingAddress->getStreet1();
|
452 |
+
$szAddress2 = $billingAddress->getStreet2();
|
453 |
+
$szAddress3 = $billingAddress->getStreet3();
|
454 |
+
$szAddress4 = $billingAddress->getStreet4();
|
455 |
+
$szCity = $billingAddress->getCity();
|
456 |
+
$szState = $billingAddress->getRegion();
|
457 |
+
$szPostCode = $billingAddress->getPostcode();
|
458 |
+
if($this->getConfigData('cv2mandatory'))
|
459 |
+
{
|
460 |
+
$boCV2Mandatory = 'true';
|
461 |
+
}
|
462 |
+
if($this->getConfigData('address1mandatory'))
|
463 |
+
{
|
464 |
+
$boAddress1Mandatory = 'true';
|
465 |
+
}
|
466 |
+
if($this->getConfigData('citymandatory'))
|
467 |
+
{
|
468 |
+
$boCityMandatory = 'true';
|
469 |
+
}
|
470 |
+
if($this->getConfigData('postcodemandatory'))
|
471 |
+
{
|
472 |
+
$boPostCodeMandatory = 'true';
|
473 |
+
}
|
474 |
+
if($this->getConfigData('statemandatory'))
|
475 |
+
{
|
476 |
+
$boStateMandatory = 'true';
|
477 |
+
}
|
478 |
+
if($this->getConfigData('countrymandatory'))
|
479 |
+
{
|
480 |
+
$boCountryMandatory = 'true';
|
481 |
+
}
|
482 |
+
if($this->getConfigData('paymentformdisplaysresult'))
|
483 |
+
{
|
484 |
+
$boPaymentFormDisplaysResult = 'true';
|
485 |
+
}
|
486 |
+
$szHashDigest =
|
487 |
+
TPG_PaymentFormHelper::calculateHashDigest(
|
488 |
+
$szMerchantID,
|
489 |
+
$szPassword,
|
490 |
+
$hmHashMethod,
|
491 |
+
$szPreSharedKey,
|
492 |
+
$nAmount,
|
493 |
+
$nCurrencyCode,
|
494 |
+
$szEchoCardType,
|
495 |
+
$szOrderID,
|
496 |
+
$szTransactionType,
|
497 |
+
$szTransactionDateTime,
|
498 |
+
$szCallbackURL,
|
499 |
+
$szOrderDescription,
|
500 |
+
$szCustomerName,
|
501 |
+
$szAddress1,
|
502 |
+
$szAddress2,
|
503 |
+
$szAddress3,
|
504 |
+
$szAddress4,
|
505 |
+
$szCity,
|
506 |
+
$szState,
|
507 |
+
$szPostCode,
|
508 |
+
$nCountryCode,
|
509 |
+
$boCV2Mandatory,
|
510 |
+
$boAddress1Mandatory,
|
511 |
+
$boCityMandatory,
|
512 |
+
$boPostCodeMandatory,
|
513 |
+
$boStateMandatory,
|
514 |
+
$boCountryMandatory,
|
515 |
+
$rdmResultDeliveryMethod,
|
516 |
+
$szServerResultURL,
|
517 |
+
$boPaymentFormDisplaysResult,
|
518 |
+
$szServerResultURLCookieVariables,
|
519 |
+
$szServerResultURLFormVariables,
|
520 |
+
$szServerResultURLQueryStringVariables
|
521 |
+
);
|
522 |
+
$session->setHashdigest($szHashDigest)
|
523 |
+
->setMerchantid($szMerchantID)
|
524 |
+
->setAmount($nAmount)
|
525 |
+
->setCurrencycode($nCurrencyCode)
|
526 |
+
->setEchoCardType($szEchoCardType)
|
527 |
+
->setOrderid($szOrderID)
|
528 |
+
->setTransactiontype($szTransactionType)
|
529 |
+
->setTransactiondatetime($szTransactionDateTime)
|
530 |
+
->setCallbackurl($szCallbackURL)
|
531 |
+
->setOrderdescription($szOrderDescription)
|
532 |
+
->setCustomername($szCustomerName)
|
533 |
+
->setAddress1($szAddress1)
|
534 |
+
->setAddress2($szAddress2)
|
535 |
+
->setAddress3($szAddress3)
|
536 |
+
->setAddress4($szAddress4)
|
537 |
+
->setCity($szCity)
|
538 |
+
->setState($szState)
|
539 |
+
->setPostcode($szPostCode)
|
540 |
+
->setCountrycode($nCountryCode)
|
541 |
+
->setCv2mandatory($boCV2Mandatory)
|
542 |
+
->setAddress1mandatory($boAddress1Mandatory)
|
543 |
+
->setCitymandatory($boCityMandatory)
|
544 |
+
->setPostcodemandatory($boPostCodeMandatory)
|
545 |
+
->setStatemandatory($boStateMandatory)
|
546 |
+
->setCountrymandatory($boCountryMandatory)
|
547 |
+
->setResultdeliverymethod($rdmResultDeliveryMethod)
|
548 |
+
->setServerresulturl($szServerResultURL)
|
549 |
+
->setPaymentformdisplaysresult($boPaymentFormDisplaysResult)
|
550 |
+
->setServerresulturlcookievariables($szServerResultURLCookieVariables)
|
551 |
+
->setServerresulturlformvariables($szServerResultURLFormVariables)
|
552 |
+
->setServerresulturlquerystringvariables($szServerResultURLQueryStringVariables);
|
553 |
+
if($nVersion >= 1410)
|
554 |
+
{
|
555 |
+
$session->setRedirectionMethod('_runRedirectedPaymentComplete');
|
556 |
+
$payment->getOrder()->setIsHostedPaymentPending(true);
|
557 |
+
}
|
558 |
+
/* serve out a dummy CrossReference as the TransactionId - this need to be done to enable the "Refund" button
|
559 |
+
in the Magento CreditMemo internal refund mechanism */
|
560 |
+
$payment->setTransactionId($szOrderID . "_" . date('YmdHis'));
|
561 |
+
}
|
562 |
+
|
563 |
+
/**
|
564 |
+
* Processing the transaction using the transparent redirect integration
|
565 |
+
*
|
566 |
+
* @param Varien_Object $payment
|
567 |
+
* @param float $amount
|
568 |
+
*/
|
569 |
+
public function _runTransparentRedirectTransaction(Varien_Object $payment, $amount)
|
570 |
+
{
|
571 |
+
$GLOBALS['m_boPayInvoice'] = false;
|
572 |
+
$payment->setIsTransactionPending(true);
|
573 |
+
$nVersion = $this->getVersion();
|
574 |
+
$szMerchantID = $this->getConfigData('merchantid');
|
575 |
+
$szPassword = $this->getConfigData('password');
|
576 |
+
$szPreSharedKey = $this->getConfigData('presharedkey');
|
577 |
+
$hmHashMethod = $this->getConfigData('hashmethod');
|
578 |
+
$szCallbackURL = Mage::getUrl('tpg/payment/callbacktransparentredirect', array('_secure' => true));
|
579 |
+
$order = $payment->getOrder();
|
580 |
+
$billingAddress = $order->getBillingAddress();
|
581 |
+
$iclISOCurrencyList = ISOCurrencies::getISOCurrencyList();
|
582 |
+
$iclISOCountryList = ISOCountries::getISOCountryList();
|
583 |
+
$szStartDateMonth = '';
|
584 |
+
$szStartDateYear = '';
|
585 |
+
$szCurrencyShort = $order->getOrderCurrency()->getCurrencyCode();
|
586 |
+
if($szCurrencyShort != '' &&
|
587 |
+
$iclISOCurrencyList->getISOCurrency($szCurrencyShort, $icISOCurrency)
|
588 |
+
)
|
589 |
+
{
|
590 |
+
$nCurrencyCode = $icISOCurrency->getISOCode();
|
591 |
+
}
|
592 |
+
$nAmount = $this->_getRoundedAmount($amount, $icISOCurrency->getExponent());
|
593 |
+
$szOrderID = $payment->getOrder()->increment_id;
|
594 |
+
//date time with 2008-12-01 14:12:00 +01:00 format
|
595 |
+
$szTransactionDateTime = date('Y-m-d H:i:s P');
|
596 |
+
$szOrderDescription = '';
|
597 |
+
//$szTransactionType = 'SALE';
|
598 |
+
$paymentAction = $this->getConfigData('payment_action');
|
599 |
+
if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE_CAPTURE)
|
600 |
+
{
|
601 |
+
$szTransactionType = "SALE";
|
602 |
+
}
|
603 |
+
else if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE)
|
604 |
+
{
|
605 |
+
$szTransactionType = "PREAUTH";
|
606 |
+
}
|
607 |
+
else
|
608 |
+
{
|
609 |
+
Mage::throwException('Unknown payment action: ' . $paymentAction);
|
610 |
+
}
|
611 |
+
$szAddress1 = $billingAddress->getStreet1();
|
612 |
+
$szAddress2 = $billingAddress->getStreet2();
|
613 |
+
$szAddress3 = $billingAddress->getStreet3();
|
614 |
+
$szAddress4 = $billingAddress->getStreet4();
|
615 |
+
$szCity = $billingAddress->getCity();
|
616 |
+
$szState = $billingAddress->getRegion();
|
617 |
+
$szPostCode = $billingAddress->getPostcode();
|
618 |
+
$szISO2CountryCode = $billingAddress->getCountry();
|
619 |
+
$szCountryShort = $this->_getISO3Code($szISO2CountryCode);
|
620 |
+
if($iclISOCountryList->getISOCountry($szCountryShort, $icISOCountry))
|
621 |
+
{
|
622 |
+
$nCountryCode = $icISOCountry->getISOCode();
|
623 |
+
}
|
624 |
+
$szCardName = $payment->getCcOwner();
|
625 |
+
$szCardNumber = $payment->getCcNumber();
|
626 |
+
$szExpiryDateMonth = $payment->getCcExpMonth();
|
627 |
+
$szExpiryDateYear = $payment->getCcExpYear();
|
628 |
+
if($payment->getCcSsStartMonth() != '')
|
629 |
+
{
|
630 |
+
$szStartDateMonth = $payment->getCcSsStartMonth();
|
631 |
+
}
|
632 |
+
if($payment->getCcSsStartYear() != '')
|
633 |
+
{
|
634 |
+
$szStartDateYear = $payment->getCcSsStartYear();
|
635 |
+
}
|
636 |
+
$szIssueNumber = $payment->getCcSsIssue();
|
637 |
+
$szCV2 = $payment->getCcCid();
|
638 |
+
$szHashDigest =
|
639 |
+
TPG_PaymentFormHelper::calculateTransparentRedirectHashDigest(
|
640 |
+
$szMerchantID,
|
641 |
+
$szPassword,
|
642 |
+
$hmHashMethod,
|
643 |
+
$szPreSharedKey,
|
644 |
+
$nAmount,
|
645 |
+
$nCurrencyCode,
|
646 |
+
$szOrderID,
|
647 |
+
$szTransactionType,
|
648 |
+
$szTransactionDateTime,
|
649 |
+
$szCallbackURL,
|
650 |
+
$szOrderDescription
|
651 |
+
);
|
652 |
+
Mage::getSingleton('checkout/session')->setHashdigest($szHashDigest)
|
653 |
+
->setMerchantid($szMerchantID)
|
654 |
+
->setAmount($nAmount)
|
655 |
+
->setCurrencycode($nCurrencyCode)
|
656 |
+
->setOrderid($szOrderID)
|
657 |
+
->setTransactiontype($szTransactionType)
|
658 |
+
->setTransactiondatetime($szTransactionDateTime)
|
659 |
+
->setCallbackurl($szCallbackURL)
|
660 |
+
->setOrderdescription($szOrderDescription)
|
661 |
+
->setAddress1($szAddress1)
|
662 |
+
->setAddress2($szAddress2)
|
663 |
+
->setAddress3($szAddress3)
|
664 |
+
->setAddress4($szAddress4)
|
665 |
+
->setCity($szCity)
|
666 |
+
->setState($szState)
|
667 |
+
->setPostcode($szPostCode)
|
668 |
+
->setCountrycode($nCountryCode)
|
669 |
+
->setCardname($szCardName)
|
670 |
+
->setCardnumber($szCardNumber)
|
671 |
+
->setExpirydatemonth($szExpiryDateMonth)
|
672 |
+
->setExpirydateyear($szExpiryDateYear)
|
673 |
+
->setStartdatemonth($szStartDateMonth)
|
674 |
+
->setStartdateyear($szStartDateYear)
|
675 |
+
->setIssuenumber($szIssueNumber)
|
676 |
+
->setCv2($szCV2);
|
677 |
+
if($nVersion >= 1410)
|
678 |
+
{
|
679 |
+
Mage::getSingleton('checkout/session')->setRedirectionMethod('_runRedirectedPaymentComplete');
|
680 |
+
$payment->getOrder()->setIsHostedPaymentPending(true);
|
681 |
+
}
|
682 |
+
/* serve out a dummy CrossReference as the TransactionId - this need to be done to enable the "Refund" button
|
683 |
+
in the Magento CreditMemo internal refund mechanism */
|
684 |
+
$payment->setTransactionId($szOrderID . "_" . date('YmdHis'));
|
685 |
+
}
|
686 |
+
|
687 |
+
/**
|
688 |
+
* Processing the 3D Secure transaction
|
689 |
+
*
|
690 |
+
* @param Varien_Object $payment
|
691 |
+
* @param int $amount
|
692 |
+
* @param string $szPaRes
|
693 |
+
* @param string $szMD
|
694 |
+
*/
|
695 |
+
public function _run3DSecureTransaction(Varien_Object $payment, $szPaRes, $szMD)
|
696 |
+
{
|
697 |
+
$MerchantID = $this->getConfigData('merchantid');
|
698 |
+
$Password = $this->getConfigData('password');
|
699 |
+
$SecretKey = $this->getConfigData('secretkey');
|
700 |
+
$rgeplRequestGatewayEntryPointList = $this->_getGatewayEntryPointList();
|
701 |
+
|
702 |
+
$tdsaThreeDSecureAuthentication = new ThreeDSecureAuthentication($rgeplRequestGatewayEntryPointList);
|
703 |
+
$tdsaThreeDSecureAuthentication->getMerchantAuthentication()->setMerchantID($MerchantID);
|
704 |
+
$tdsaThreeDSecureAuthentication->getMerchantAuthentication()->setPassword($Password);
|
705 |
+
$tdsaThreeDSecureAuthentication->getThreeDSecureInputData()->setCrossReference($szMD);
|
706 |
+
$tdsaThreeDSecureAuthentication->getThreeDSecureInputData()->setPaRES($szPaRes);
|
707 |
+
$boTransactionProcessed = $tdsaThreeDSecureAuthentication->processTransaction($tdsarThreeDSecureAuthenticationResult, $todTransactionOutputData);
|
708 |
+
$error = $this->_handleTransactionResults($payment, $boTransactionProcessed, $tdsaThreeDSecureAuthentication, $tdsarThreeDSecureAuthenticationResult, $todTransactionOutputData);
|
709 |
+
|
710 |
+
if($error)
|
711 |
+
{
|
712 |
+
Mage::throwException($error);
|
713 |
+
}
|
714 |
+
|
715 |
+
return $this;
|
716 |
+
}
|
717 |
+
|
718 |
+
/**
|
719 |
+
* @param Varien_Object $payment
|
720 |
+
* @param bool $boIsHostedPaymentAction
|
721 |
+
* @param string $szStatusCode
|
722 |
+
* @param string $szMessage
|
723 |
+
* @param string $szPreviousStatusCode
|
724 |
+
* @param string $szPreviousMessage
|
725 |
+
* @param string $szOrderID
|
726 |
+
* @param string $szCrossReference
|
727 |
+
* @param string $szCardType
|
728 |
+
* @return PayVector_Tpg_Model_Direct
|
729 |
+
* @throws Mage_Core_Exception
|
730 |
+
*/
|
731 |
+
public function _runRedirectedPaymentComplete(
|
732 |
+
Varien_Object $payment,
|
733 |
+
$boIsHostedPaymentAction,
|
734 |
+
$szStatusCode, $szMessage,
|
735 |
+
$szPreviousStatusCode,
|
736 |
+
$szPreviousMessage,
|
737 |
+
$szOrderID,
|
738 |
+
$szCrossReference,
|
739 |
+
$szCardType
|
740 |
+
)
|
741 |
+
{
|
742 |
+
$error = false;
|
743 |
+
$message = null;
|
744 |
+
$session = Mage::getSingleton('checkout/session');
|
745 |
+
$nVersion = $this->getVersion();
|
746 |
+
if($boIsHostedPaymentAction == true)
|
747 |
+
{
|
748 |
+
$szWording = "Hosted Payment Form ";
|
749 |
+
}
|
750 |
+
else
|
751 |
+
{
|
752 |
+
$szWording = "Transparent Redirect ";
|
753 |
+
}
|
754 |
+
$message = "Payment Processor Response: " . $szMessage;
|
755 |
+
|
756 |
+
//save cross reference so the user can use saved card functionality for future transactions
|
757 |
+
$payment->setTransactionId($szCrossReference);
|
758 |
+
$payment->setCcType($szCardType);
|
759 |
+
|
760 |
+
switch($szStatusCode)
|
761 |
+
{
|
762 |
+
case "0":
|
763 |
+
Mage::log($szWording . "transaction successfully completed. " . $message);
|
764 |
+
// need to store the new CrossReference and only store it against the payment object in the payment controller class
|
765 |
+
$session->setNewCrossReference($szCrossReference);
|
766 |
+
break;
|
767 |
+
case "20":
|
768 |
+
Mage::log("Duplicate " . $szWording . "transaction. " . $message);
|
769 |
+
$message =
|
770 |
+
$message .
|
771 |
+
". A duplicate transaction means that a transaction with these details has already been processed by the payment provider. The details of the original transaction - Previous Transaction Response: " .
|
772 |
+
$szPreviousMessage;
|
773 |
+
if($szPreviousStatusCode != "0")
|
774 |
+
{
|
775 |
+
$error = true;
|
776 |
+
}
|
777 |
+
break;
|
778 |
+
case "5":
|
779 |
+
Mage::log($szWording . "transaction couldn't be completed. " . $message);
|
780 |
+
$error = true;
|
781 |
+
//$message = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_183 . "<br />" . $message;
|
782 |
+
break;
|
783 |
+
case "30":
|
784 |
+
default:
|
785 |
+
Mage::log($szWording . "transaction couldn't be completed. " . $message);
|
786 |
+
$error = true;
|
787 |
+
break;
|
788 |
+
}
|
789 |
+
$session->setPaymentprocessorresponse($message);
|
790 |
+
// store the CrossReference and other data
|
791 |
+
$this->setPaymentAdditionalInformation($payment, $szCrossReference);
|
792 |
+
if($error == true)
|
793 |
+
{
|
794 |
+
$message = Mage::helper('tpg')->__($message);
|
795 |
+
Mage::throwException($message);
|
796 |
+
}
|
797 |
+
else
|
798 |
+
{
|
799 |
+
$payment->setStatus(self::STATUS_APPROVED);
|
800 |
+
if($nVersion == 1324 || $nVersion == 1330)
|
801 |
+
{
|
802 |
+
$payment->setIsInvoicePaid(true);
|
803 |
+
Mage::getSingleton('core/session')->addSuccess($message);
|
804 |
+
}
|
805 |
+
}
|
806 |
+
|
807 |
+
return $this;
|
808 |
+
}
|
809 |
+
|
810 |
+
/**
|
811 |
+
* Override the core Mage function to get the URL to be redirected from the Onepage
|
812 |
+
*
|
813 |
+
* @return string
|
814 |
+
*/
|
815 |
+
public function getOrderPlaceRedirectUrl()
|
816 |
+
{
|
817 |
+
$result = false;
|
818 |
+
$session = Mage::getSingleton('checkout/session');
|
819 |
+
$nVersion = $this->getVersion();
|
820 |
+
$mode = $this->getConfigData('mode');
|
821 |
+
if($session->getMd() &&
|
822 |
+
$session->getAcsurl() &&
|
823 |
+
$session->getPareq()
|
824 |
+
)
|
825 |
+
{
|
826 |
+
// Direct (API) for 3D Secure payments
|
827 |
+
if($nVersion >= 1410)
|
828 |
+
{
|
829 |
+
// need to re-add the ordered item quantity to stock as per not completed 3DS transaction
|
830 |
+
if($mode != PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_TRANSPARENT_REDIRECT)
|
831 |
+
{
|
832 |
+
$order = Mage::getModel('sales/order')->load(Mage::getSingleton('checkout/session')->getLastOrderId());
|
833 |
+
$this->addOrderedItemsToStock($order);
|
834 |
+
}
|
835 |
+
}
|
836 |
+
$result = Mage::getUrl('tpg/payment/threedsecure', array('_secure' => true));
|
837 |
+
}
|
838 |
+
if($session->getHashdigest())
|
839 |
+
{
|
840 |
+
// Hosted Payment Form and Transparent Redirect payments
|
841 |
+
if($nVersion >= 1410)
|
842 |
+
{
|
843 |
+
// need to re-add the ordered item quantity to stock as per not completed 3DS transaction
|
844 |
+
if(!Mage::getSingleton('checkout/session')->getPares())
|
845 |
+
{
|
846 |
+
$order = Mage::getModel('sales/order')->load(Mage::getSingleton('checkout/session')->getLastOrderId());
|
847 |
+
$this->addOrderedItemsToStock($order);
|
848 |
+
}
|
849 |
+
}
|
850 |
+
$result = Mage::getUrl('tpg/payment/redirect', array('_secure' => true));
|
851 |
+
}
|
852 |
+
|
853 |
+
return $result;
|
854 |
+
}
|
855 |
+
|
856 |
+
/**
|
857 |
+
* Get the correct payment processor domain
|
858 |
+
*
|
859 |
+
* @return string
|
860 |
+
*/
|
861 |
+
private function _getPaymentProcessorFullDomain()
|
862 |
+
{
|
863 |
+
$szPaymentProcessorFullDomain = null;
|
864 |
+
// get the stored config setting
|
865 |
+
$szPaymentProcessorDomain = $this->getConfigData('paymentprocessordomain');
|
866 |
+
$szPaymentProcessorPort = $this->getConfigData('paymentprocessorport');
|
867 |
+
if($szPaymentProcessorPort == '443')
|
868 |
+
{
|
869 |
+
$szPaymentProcessorFullDomain = $szPaymentProcessorDomain . "/";
|
870 |
+
}
|
871 |
+
else
|
872 |
+
{
|
873 |
+
$szPaymentProcessorFullDomain = $szPaymentProcessorDomain . ":" . $szPaymentProcessorPort . "/";
|
874 |
+
}
|
875 |
+
|
876 |
+
return $szPaymentProcessorFullDomain;
|
877 |
+
}
|
878 |
+
|
879 |
+
/**
|
880 |
+
* Get the country ISO3 code from the ISO2 code
|
881 |
+
*
|
882 |
+
* @param ISO2Code
|
883 |
+
* @return string|null
|
884 |
+
*/
|
885 |
+
private function _getISO3Code($szISO2Code)
|
886 |
+
{
|
887 |
+
$szISO3Code = null;
|
888 |
+
$collection = null;
|
889 |
+
$boFound = false;
|
890 |
+
$nCount = 1;
|
891 |
+
$collection = Mage::getModel('directory/country_api')->items();
|
892 |
+
while($boFound == false &&
|
893 |
+
$nCount < count($collection))
|
894 |
+
{
|
895 |
+
$item = $collection[$nCount];
|
896 |
+
if($item['iso2_code'] == $szISO2Code)
|
897 |
+
{
|
898 |
+
$boFound = true;
|
899 |
+
$szISO3Code = $item['iso3_code'];
|
900 |
+
}
|
901 |
+
$nCount++;
|
902 |
+
}
|
903 |
+
|
904 |
+
return $szISO3Code;
|
905 |
+
}
|
906 |
+
|
907 |
+
/**
|
908 |
+
* Transform the string Magento version number into an integer ready for comparison
|
909 |
+
*
|
910 |
+
* @return int
|
911 |
+
*/
|
912 |
+
public function getVersion()
|
913 |
+
{
|
914 |
+
$magentoVersion = Mage::getVersion();
|
915 |
+
$pattern = '/[^\d]/';
|
916 |
+
$magentoVersion = preg_replace($pattern, '', $magentoVersion);
|
917 |
+
while(strlen($magentoVersion) < 4)
|
918 |
+
{
|
919 |
+
$magentoVersion .= '0';
|
920 |
+
}
|
921 |
+
$magentoVersion = (int) $magentoVersion;
|
922 |
+
|
923 |
+
return $magentoVersion;
|
924 |
+
}
|
925 |
+
|
926 |
+
/**
|
927 |
+
* @param float $amount
|
928 |
+
* @param int $nExponent
|
929 |
+
* @return float
|
930 |
+
*/
|
931 |
+
private function _getRoundedAmount($amount, $nExponent)
|
932 |
+
{
|
933 |
+
// round the amount before use
|
934 |
+
$amount = round($amount, $nExponent);
|
935 |
+
$power = pow(10, $nExponent);
|
936 |
+
$nDecimalAmount = $amount * $power;
|
937 |
+
|
938 |
+
return $nDecimalAmount;
|
939 |
+
}
|
940 |
+
|
941 |
+
/**
|
942 |
+
* Depreciated function - sets the additional_information column data in the sales_flat_order_payment table
|
943 |
+
*
|
944 |
+
* @param Varien_Object $payment
|
945 |
+
* @param string $szCrossReference
|
946 |
+
* @param string $szTransactionType
|
947 |
+
* @param string $szTransactionDate
|
948 |
+
*/
|
949 |
+
public function setPaymentAdditionalInformation($payment, $szCrossReference)
|
950 |
+
{
|
951 |
+
$arAdditionalInformationArray = array();
|
952 |
+
$paymentAction = $this->getConfigData('payment_action');
|
953 |
+
if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE_CAPTURE)
|
954 |
+
{
|
955 |
+
$szTransactionType = "SALE";
|
956 |
+
}
|
957 |
+
else if($paymentAction == Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE)
|
958 |
+
{
|
959 |
+
$szTransactionType = "PREAUTH";
|
960 |
+
}
|
961 |
+
else
|
962 |
+
{
|
963 |
+
Mage::throwException('Unknown payment action: ' . $paymentAction);
|
964 |
+
}
|
965 |
+
$szTransactionDate = date("Ymd");
|
966 |
+
$arAdditionalInformationArray["CrossReference"] = $szCrossReference;
|
967 |
+
$arAdditionalInformationArray["TransactionType"] = $szTransactionType;
|
968 |
+
$arAdditionalInformationArray["TransactionDateTime"] = $szTransactionDate;
|
969 |
+
$payment->setAdditionalInformation($arAdditionalInformationArray);
|
970 |
+
}
|
971 |
+
|
972 |
+
/**
|
973 |
+
* Deduct the order items from the stock
|
974 |
+
*
|
975 |
+
* @param unknown_type $order
|
976 |
+
*/
|
977 |
+
public function subtractOrderedItemsFromStock($order)
|
978 |
+
{
|
979 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
980 |
+
$isCustomStockManagementEnabled = Mage::getModel('tpg/direct')->getConfigData('customstockmanagementenabled');
|
981 |
+
if($nVersion >= 1410 &&
|
982 |
+
$isCustomStockManagementEnabled
|
983 |
+
)
|
984 |
+
{
|
985 |
+
$items = $order->getAllItems();
|
986 |
+
foreach($items as $itemId => $item)
|
987 |
+
{
|
988 |
+
// ordered quantity of the item from stock
|
989 |
+
$quantity = $item->getQtyOrdered();
|
990 |
+
$productId = $item->getProductId();
|
991 |
+
$stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
|
992 |
+
$stockManagement = $stock->getManageStock();
|
993 |
+
if($stockManagement)
|
994 |
+
{
|
995 |
+
$stock->setQty($stock->getQty() - $quantity);
|
996 |
+
$stock->save();
|
997 |
+
}
|
998 |
+
}
|
999 |
+
}
|
1000 |
+
}
|
1001 |
+
|
1002 |
+
/**
|
1003 |
+
* Re-add the order items to the stock to balance the incorrect stock management before a payment is completed
|
1004 |
+
*
|
1005 |
+
* @param unknown_type $order
|
1006 |
+
*/
|
1007 |
+
public function addOrderedItemsToStock($order)
|
1008 |
+
{
|
1009 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
1010 |
+
$isCustomStockManagementEnabled = Mage::getModel('tpg/direct')->getConfigData('customstockmanagementenabled');
|
1011 |
+
if($nVersion >= 1410 &&
|
1012 |
+
$isCustomStockManagementEnabled
|
1013 |
+
)
|
1014 |
+
{
|
1015 |
+
$items = $order->getAllItems();
|
1016 |
+
foreach($items as $itemId => $item)
|
1017 |
+
{
|
1018 |
+
// ordered quantity of the item from stock
|
1019 |
+
$quantity = $item->getQtyOrdered();
|
1020 |
+
$productId = $item->getProductId();
|
1021 |
+
$stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
|
1022 |
+
$stockManagement = $stock->getManageStock();
|
1023 |
+
if($stockManagement)
|
1024 |
+
{
|
1025 |
+
$stock->setQty($stock->getQty() + $quantity);
|
1026 |
+
$stock->save();
|
1027 |
+
}
|
1028 |
+
}
|
1029 |
+
}
|
1030 |
+
}
|
1031 |
+
|
1032 |
+
/**
|
1033 |
+
* Override the refund function to run a CrossReference transaction
|
1034 |
+
*
|
1035 |
+
* @param Varien_Object $payment
|
1036 |
+
* @param int $amount
|
1037 |
+
* @return PayVector_Tpg_Model_Direct
|
1038 |
+
*/
|
1039 |
+
public function refund(Varien_Object $payment, $amount)
|
1040 |
+
{
|
1041 |
+
$error = false;
|
1042 |
+
$szTransactionType = "REFUND";
|
1043 |
+
$orderStatus = 'TPG_refunded';
|
1044 |
+
$szMessage = 'Payment refunded';
|
1045 |
+
if($amount > 0)
|
1046 |
+
{
|
1047 |
+
$error = $this->_runCrossReferenceTransaction($payment, $szTransactionType, $amount);
|
1048 |
+
}
|
1049 |
+
else
|
1050 |
+
{
|
1051 |
+
$error = 'Error in refunding the payment';
|
1052 |
+
}
|
1053 |
+
if($error === false)
|
1054 |
+
{
|
1055 |
+
$order = $payment->getOrder();
|
1056 |
+
$payment = $order->getPayment();
|
1057 |
+
$arAdditionalInformationArray = $payment->getAdditionalInformation();
|
1058 |
+
$arAdditionalInformationArray["Refunded"] = 1;
|
1059 |
+
$payment->setAdditionalInformation($arAdditionalInformationArray);
|
1060 |
+
$payment->save();
|
1061 |
+
$order->setState('canceled', $orderStatus, $szMessage, false);
|
1062 |
+
$order->save();
|
1063 |
+
}
|
1064 |
+
else
|
1065 |
+
{
|
1066 |
+
Mage::throwException($error);
|
1067 |
+
}
|
1068 |
+
|
1069 |
+
return $this;
|
1070 |
+
}
|
1071 |
+
|
1072 |
+
/**
|
1073 |
+
* PayVector VOID functionality
|
1074 |
+
* Note: if a transaction (payment) is once voided (canceled) it isn't possible to redo this action
|
1075 |
+
*
|
1076 |
+
* @param Varien_Object $payment
|
1077 |
+
* @return bool
|
1078 |
+
*/
|
1079 |
+
public function ircVoid(Varien_Object $payment)
|
1080 |
+
{
|
1081 |
+
$error = false;
|
1082 |
+
$szTransactionType = "VOID";
|
1083 |
+
$orderStatus = "TPG_voided";
|
1084 |
+
// attempt a VOID and accordingly to the last saved transaction id (CrossReference) set the new message
|
1085 |
+
$szLastTransId = $payment->getLastTransId();
|
1086 |
+
$transaction = $payment->getTransaction($szLastTransId);
|
1087 |
+
$szMagentoTxnType = $transaction->getTxnType();
|
1088 |
+
$szMessage = "Payment voided";
|
1089 |
+
if($szMagentoTxnType == "capture")
|
1090 |
+
{
|
1091 |
+
$szMessage = "Payment voided";
|
1092 |
+
}
|
1093 |
+
else if($szMagentoTxnType == "authorization")
|
1094 |
+
{
|
1095 |
+
$szMessage = "PreAuthorization voided";
|
1096 |
+
}
|
1097 |
+
else if($szMagentoTxnType == "refund")
|
1098 |
+
{
|
1099 |
+
$szMessage = "Refund voided";
|
1100 |
+
}
|
1101 |
+
else
|
1102 |
+
{
|
1103 |
+
// general message
|
1104 |
+
$szMessage = "Payment voided";
|
1105 |
+
}
|
1106 |
+
$error = $this->_runCrossReferenceTransaction($payment, $szTransactionType);
|
1107 |
+
if($error === false)
|
1108 |
+
{
|
1109 |
+
$order = $payment->getOrder();
|
1110 |
+
$invoices = $order->getInvoiceCollection();
|
1111 |
+
$payment = $order->getPayment();
|
1112 |
+
$arAdditionalInformationArray = $payment->getAdditionalInformation();
|
1113 |
+
$arAdditionalInformationArray["Voided"] = 1;
|
1114 |
+
$payment->setAdditionalInformation($arAdditionalInformationArray);
|
1115 |
+
$payment->save();
|
1116 |
+
// cancel the invoices
|
1117 |
+
foreach($invoices as $invoice)
|
1118 |
+
{
|
1119 |
+
$invoice->cancel();
|
1120 |
+
$invoice->save();
|
1121 |
+
}
|
1122 |
+
// update the order
|
1123 |
+
$order->setActionBy($payment->getLggdInAdminUname())
|
1124 |
+
->setActionDate(date('Y-m-d H:i:s'))
|
1125 |
+
->setVoided(1)
|
1126 |
+
->setState('canceled', $orderStatus, $szMessage, false);
|
1127 |
+
$order->save();
|
1128 |
+
$result = "0";
|
1129 |
+
}
|
1130 |
+
else
|
1131 |
+
{
|
1132 |
+
$result = $error;
|
1133 |
+
}
|
1134 |
+
|
1135 |
+
return $result;
|
1136 |
+
}
|
1137 |
+
|
1138 |
+
/**
|
1139 |
+
* PayVector COLLECTION functionality (capture called in Magento)
|
1140 |
+
*
|
1141 |
+
* @param Varien_Object $payment
|
1142 |
+
* @param string $szOrderID
|
1143 |
+
* @param string $szCrossReference
|
1144 |
+
* @return bool
|
1145 |
+
*/
|
1146 |
+
public function ircCollection(Varien_Object $payment, $szOrderID, $szCrossReference)
|
1147 |
+
{
|
1148 |
+
$szTransactionType = "COLLECTION";
|
1149 |
+
$orderStatus = 'TPG_collected';
|
1150 |
+
$szMessage = 'Preauthorization successfully collected';
|
1151 |
+
$state = Mage_Sales_Model_Order::STATE_PROCESSING;
|
1152 |
+
$error = $this->_captureAuthorizedPayment($payment);
|
1153 |
+
if($error === false)
|
1154 |
+
{
|
1155 |
+
$order = $payment->getOrder();
|
1156 |
+
$invoices = $order->getInvoiceCollection();
|
1157 |
+
$payment = $order->getPayment();
|
1158 |
+
$arAdditionalInformationArray = $payment->getAdditionalInformation();
|
1159 |
+
$arAdditionalInformationArray["Collected"] = 1;
|
1160 |
+
$payment->setAdditionalInformation($arAdditionalInformationArray);
|
1161 |
+
$payment->save();
|
1162 |
+
// update the invoices to paid status
|
1163 |
+
foreach($invoices as $invoice)
|
1164 |
+
{
|
1165 |
+
$invoice->pay()->save();
|
1166 |
+
}
|
1167 |
+
$order->setActionBy($payment->getLggdInAdminUname())
|
1168 |
+
->setActionDate(date('Y-m-d H:i:s'))
|
1169 |
+
->setState($state, $orderStatus, $szMessage, false);
|
1170 |
+
$order->save();
|
1171 |
+
$result = "0";
|
1172 |
+
}
|
1173 |
+
else
|
1174 |
+
{
|
1175 |
+
$result = $error;
|
1176 |
+
}
|
1177 |
+
|
1178 |
+
return $result;
|
1179 |
+
}
|
1180 |
+
|
1181 |
+
/**
|
1182 |
+
* Private capture function for an authorized payment
|
1183 |
+
*
|
1184 |
+
* @param Varien_Object $payment
|
1185 |
+
* @return unknown
|
1186 |
+
*/
|
1187 |
+
private function _captureAuthorizedPayment(Varien_Object $payment)
|
1188 |
+
{
|
1189 |
+
$error = false;
|
1190 |
+
$session = Mage::getSingleton('checkout/session');
|
1191 |
+
try
|
1192 |
+
{
|
1193 |
+
// set the COLLECTION variable to true
|
1194 |
+
$session->setIsCollectionCrossReferenceTransaction(true);
|
1195 |
+
$invoice = $payment->getOrder()->prepareInvoice();
|
1196 |
+
$invoice->register();
|
1197 |
+
if($this->_canCapture)
|
1198 |
+
{
|
1199 |
+
$invoice->capture();
|
1200 |
+
}
|
1201 |
+
$payment->getOrder()->addRelatedObject($invoice);
|
1202 |
+
$payment->setCreatedInvoice($invoice);
|
1203 |
+
}
|
1204 |
+
catch(Exception $exc)
|
1205 |
+
{
|
1206 |
+
$error = "Couldn't capture pre-authorized payment. Message: " . $exc->getMessage();
|
1207 |
+
Mage::log($exc->getMessage());
|
1208 |
+
}
|
1209 |
+
// remove the COLLECTION session variable once finished the COLLECTION attempt
|
1210 |
+
$session->setIsCollectionCrossReferenceTransaction(null);
|
1211 |
+
|
1212 |
+
return $error;
|
1213 |
+
}
|
1214 |
+
|
1215 |
+
/**
|
1216 |
+
* Internal CrossReference function for all VOID, REFUND, COLLECTION transaction types
|
1217 |
+
*
|
1218 |
+
* @param Varien_Object $payment
|
1219 |
+
* @param string $szTransactionType
|
1220 |
+
* @param float $amount
|
1221 |
+
* @param bool $threeDSecureOverridePolicy Whether 3DSecure should be run on this transaction
|
1222 |
+
* @return string|bool
|
1223 |
+
*/
|
1224 |
+
private function _runCrossReferenceTransaction(Varien_Object $payment, $szTransactionType, $amount = false, $threeDSecureOverridePolicy = null)
|
1225 |
+
{
|
1226 |
+
$error = false;
|
1227 |
+
$boTransactionProcessed = false;
|
1228 |
+
$szMerchantID = $this->getConfigData('merchantid');
|
1229 |
+
$szPassword = $this->getConfigData('password');
|
1230 |
+
$iclISOCurrencyList = ISOCurrencies::getISOCurrencyList();
|
1231 |
+
$iclISOCurrencyList;
|
1232 |
+
$order = $payment->getOrder();
|
1233 |
+
$szOrderID = $order->getRealOrderId();;
|
1234 |
+
//$szCrossReference = $payment->getLastTransId();
|
1235 |
+
$additionalInformation = $payment->getAdditionalInformation();
|
1236 |
+
$szCrossReference = $additionalInformation["CrossReference"];
|
1237 |
+
$szCrossReference = $payment->getLastTransId();
|
1238 |
+
//if cross reference isn't found then look for the customers last transaction
|
1239 |
+
if(!isset($szCrossReference))
|
1240 |
+
{
|
1241 |
+
if(Mage::getSingleton('customer/session')->isLoggedIn())
|
1242 |
+
{
|
1243 |
+
$customer = Mage::getSingleton('customer/session')->getCustomer();
|
1244 |
+
$customerID = $customer->getId();
|
1245 |
+
$orderPaymentTableName = Mage::getSingleton('core/resource')->getTableName('sales/order_payment');
|
1246 |
+
$orderCollection = Mage::getModel('sales/order')->getCollection()
|
1247 |
+
->addFilter('customer_id', $customerID);
|
1248 |
+
$orderCollection->getSelect()
|
1249 |
+
->join(
|
1250 |
+
array("order_payment" => $orderPaymentTableName),
|
1251 |
+
"main_table.entity_id=order_payment.entity_id",
|
1252 |
+
"order_payment.last_trans_id"
|
1253 |
+
);
|
1254 |
+
//check if a cross reference was set in any of the previous transactions by this customer
|
1255 |
+
foreach($orderCollection as $order)
|
1256 |
+
{
|
1257 |
+
$szCrossReference = $order->getLastTransId();
|
1258 |
+
if(isset($szCrossReference))
|
1259 |
+
{
|
1260 |
+
break;
|
1261 |
+
}
|
1262 |
+
}
|
1263 |
+
}
|
1264 |
+
}
|
1265 |
+
// check the CrossReference and TransactionType parameters
|
1266 |
+
if(!$szCrossReference)
|
1267 |
+
{
|
1268 |
+
$error = 'Error occurred for ' . $szTransactionType . ': Missing Cross Reference';
|
1269 |
+
}
|
1270 |
+
if(!$szTransactionType)
|
1271 |
+
{
|
1272 |
+
$error = 'Error occurred for ' . $szTransactionType . ': Missing Transaction Type';
|
1273 |
+
}
|
1274 |
+
if($error === false)
|
1275 |
+
{
|
1276 |
+
$PaymentProcessorFullDomain = $this->_getPaymentProcessorFullDomain();
|
1277 |
+
$rgeplRequestGatewayEntryPointList = new RequestGatewayEntryPointList();
|
1278 |
+
$rgeplRequestGatewayEntryPointList->add("https://gw1." . $PaymentProcessorFullDomain, 100, 2);
|
1279 |
+
$rgeplRequestGatewayEntryPointList->add("https://gw2." . $PaymentProcessorFullDomain, 200, 2);
|
1280 |
+
$rgeplRequestGatewayEntryPointList->add("https://gw3." . $PaymentProcessorFullDomain, 300, 2);
|
1281 |
+
|
1282 |
+
$rgeplRequestGatewayEntryPointList = $this->_getGatewayEntryPointList();
|
1283 |
+
|
1284 |
+
$crtCrossReferenceTransaction = new CrossReferenceTransaction($rgeplRequestGatewayEntryPointList);
|
1285 |
+
$crtCrossReferenceTransaction->getMerchantAuthentication()->setMerchantID($szMerchantID);
|
1286 |
+
$crtCrossReferenceTransaction->getMerchantAuthentication()->setPassword($szPassword);
|
1287 |
+
// if no amount is specified get the grand total amount
|
1288 |
+
if($amount === false)
|
1289 |
+
{
|
1290 |
+
$nAmount = $order->getBaseGrandTotal();
|
1291 |
+
}
|
1292 |
+
else
|
1293 |
+
{
|
1294 |
+
$nAmount = $amount;
|
1295 |
+
}
|
1296 |
+
$szCurrencyShort = $order->getOrderCurrency()->getCurrencyCode();
|
1297 |
+
if($szCurrencyShort != '' && $iclISOCurrencyList->getISOCurrency($szCurrencyShort, $icISOCurrency))
|
1298 |
+
{
|
1299 |
+
$nCurrencyCode = new NullableInt($icISOCurrency->getISOCode());
|
1300 |
+
$crtCrossReferenceTransaction->getTransactionDetails()->getCurrencyCode()->setValue($icISOCurrency->getISOCode());
|
1301 |
+
}
|
1302 |
+
// round the amount before use
|
1303 |
+
$nAmount = round($nAmount, $icISOCurrency->getExponent());
|
1304 |
+
$power = pow(10, $icISOCurrency->getExponent());
|
1305 |
+
$nDecimalAmount = $nAmount * $power;
|
1306 |
+
$crtCrossReferenceTransaction->getTransactionDetails()->setOrderID($szOrderID);
|
1307 |
+
$crtCrossReferenceTransaction->getTransactionDetails()->getAmount()->setValue($nDecimalAmount);
|
1308 |
+
$crtCrossReferenceTransaction->getTransactionDetails()->getMessageDetails()->setCrossReference($szCrossReference);
|
1309 |
+
$crtCrossReferenceTransaction->getTransactionDetails()->getMessageDetails()->setTransactionType($szTransactionType);
|
1310 |
+
if(isset($threeDSecureOverridePolicy))
|
1311 |
+
{
|
1312 |
+
$crtCrossReferenceTransaction->getTransactionDetails()->getTransactionControl()->getThreeDSecureOverridePolicy()->setValue($threeDSecureOverridePolicy);
|
1313 |
+
}
|
1314 |
+
$crtCrossReferenceTransaction->getTransactionDetails()->getTransactionControl()->getEchoCardType()->setValue(true);
|
1315 |
+
try
|
1316 |
+
{
|
1317 |
+
$boTransactionProcessed = $crtCrossReferenceTransaction->processTransaction($crtrCrossReferenceTransactionResult, $todTransactionOutputData);
|
1318 |
+
}
|
1319 |
+
catch(Exception $exc)
|
1320 |
+
{
|
1321 |
+
Mage::log("exception: " . $exc->getMessage());
|
1322 |
+
}
|
1323 |
+
$error = $this->_handleTransactionResults($payment, $boTransactionProcessed, $crtCrossReferenceTransaction, $crtrCrossReferenceTransactionResult, $todTransactionOutputData);
|
1324 |
+
// if ($boTransactionProcessed == false)
|
1325 |
+
// {
|
1326 |
+
// // could not communicate with the payment gateway
|
1327 |
+
// $error = "Couldn't complete ".$szTransactionType." transaction. Details: ".$crtCrossReferenceTransaction->getLastException();
|
1328 |
+
// $szLogMessage = $error;
|
1329 |
+
// }
|
1330 |
+
// else
|
1331 |
+
// {
|
1332 |
+
// switch($crtrCrossReferenceTransactionResult->getStatusCode())
|
1333 |
+
// {
|
1334 |
+
// case 0:
|
1335 |
+
// $error = false;
|
1336 |
+
// $szNewCrossReference = $todTransactionOutputData->getCrossReference();
|
1337 |
+
// $szLogMessage = $szTransactionType . " CrossReference transaction successfully completed. Response object: ";
|
1338 |
+
//
|
1339 |
+
// $payment->setTransactionId($szNewCrossReference)
|
1340 |
+
// ->setParentTransactionId($szCrossReference)
|
1341 |
+
// ->setIsTransactionClosed(1);
|
1342 |
+
// $payment->save();
|
1343 |
+
// break;
|
1344 |
+
// default:
|
1345 |
+
// $szLogMessage = $crtrCrossReferenceTransactionResult->getMessage();
|
1346 |
+
// if ($crtrCrossReferenceTransactionResult->getErrorMessages()->getCount() > 0)
|
1347 |
+
// {
|
1348 |
+
// $szLogMessage = $szLogMessage.".";
|
1349 |
+
//
|
1350 |
+
// for ($LoopIndex = 0; $LoopIndex < $crtrCrossReferenceTransactionResult->getErrorMessages()->getCount(); $LoopIndex++)
|
1351 |
+
// {
|
1352 |
+
// $szLogMessage = $szLogMessage.$crtrCrossReferenceTransactionResult->getErrorMessages()->getAt($LoopIndex).";";
|
1353 |
+
// }
|
1354 |
+
// $szLogMessage = $szLogMessage." ";
|
1355 |
+
// }
|
1356 |
+
//
|
1357 |
+
// $error = "Couldn't complete ".$szTransactionType." transaction for CrossReference: " . $szCrossReference . ". Payment Response: ".$szLogMessage;
|
1358 |
+
// $szLogMessage = $szTransactionType . " CrossReference transaction failed. Response object: ";
|
1359 |
+
// break;
|
1360 |
+
// }
|
1361 |
+
//
|
1362 |
+
// $szLogMessage = $szLogMessage.print_r($crtrCrossReferenceTransactionResult, 1);
|
1363 |
+
// }
|
1364 |
+
//
|
1365 |
+
// Mage::log($szLogMessage);
|
1366 |
+
}
|
1367 |
+
|
1368 |
+
return $error;
|
1369 |
+
}
|
1370 |
+
|
1371 |
+
private function _getGatewayEntryPointList()
|
1372 |
+
{
|
1373 |
+
$rgeplRequestGatewayEntryPointList = new RequestGatewayEntryPointList();
|
1374 |
+
|
1375 |
+
/* @var PayVector_Tpg_Model_Gatewayentrypoints $gatewayEntryPointsTable */
|
1376 |
+
$gatewayEntryPointsTable = Mage::getModel('tpg/gatewayentrypoints');
|
1377 |
+
$geplGatewayEntryPointListXML = $gatewayEntryPointsTable->getEntryPoints();
|
1378 |
+
|
1379 |
+
if($geplGatewayEntryPointListXML !== null && $geplGatewayEntryPointListXML !== false)
|
1380 |
+
{
|
1381 |
+
$geplGatewayEntryPointList = GatewayEntryPointList::fromXmlString($geplGatewayEntryPointListXML);
|
1382 |
+
for($nCount = 0; $nCount < $geplGatewayEntryPointList->getCount(); $nCount++)
|
1383 |
+
{
|
1384 |
+
$geplGatewayEntryPoint = $geplGatewayEntryPointList->getAt($nCount);
|
1385 |
+
$rgeplRequestGatewayEntryPointList->add($geplGatewayEntryPoint->getEntryPointURL(), $geplGatewayEntryPoint->getMetric(), 1);
|
1386 |
+
}
|
1387 |
+
}
|
1388 |
+
else
|
1389 |
+
{
|
1390 |
+
// if we don't have a recent list in the database then just use blind processing
|
1391 |
+
$paymentProcessorFullDomain = $this->_getPaymentProcessorFullDomain();
|
1392 |
+
$rgeplRequestGatewayEntryPointList->add("https://gw1." . $paymentProcessorFullDomain, 100, 2);
|
1393 |
+
$rgeplRequestGatewayEntryPointList->add("https://gw2." . $paymentProcessorFullDomain, 200, 2);
|
1394 |
+
$rgeplRequestGatewayEntryPointList->add("https://gw3." . $paymentProcessorFullDomain, 300, 2);
|
1395 |
+
}
|
1396 |
+
return $rgeplRequestGatewayEntryPointList;
|
1397 |
+
}
|
1398 |
+
|
1399 |
+
/**
|
1400 |
+
* @param PayVector_Sales_Model_Order_Payment $payment
|
1401 |
+
* @param bool $boTransactionProcessed
|
1402 |
+
* @param GatewayTransaction $toTransactionObject
|
1403 |
+
* @param GatewayOutput $troTransactionResultObject
|
1404 |
+
* @param TransactionOutputData $todTransactionOutputData
|
1405 |
+
* @return string|bool
|
1406 |
+
*/
|
1407 |
+
private function _handleTransactionResults($payment, $boTransactionProcessed, $toTransactionObject, $troTransactionResultObject, $todTransactionOutputData)
|
1408 |
+
{
|
1409 |
+
$order = $payment->getOrder();
|
1410 |
+
$szOrderID = $payment->increment_id;
|
1411 |
+
$nVersion = $this->getVersion();
|
1412 |
+
if($boTransactionProcessed === false)
|
1413 |
+
{
|
1414 |
+
// could not communicate with the payment gateway
|
1415 |
+
$error = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_261;
|
1416 |
+
if($toTransactionObject->getLastException())
|
1417 |
+
{
|
1418 |
+
$error .= " [ " . $toTransactionObject->getLastException() . " ]";
|
1419 |
+
}
|
1420 |
+
$szLogMessage =
|
1421 |
+
"Couldn't complete transaction. Details: " . print_r($troTransactionResultObject, 1) . " " . print_r($todTransactionOutputData, 1); //Couldn't communicate with payment gateway.
|
1422 |
+
Mage::log($szLogMessage);
|
1423 |
+
Mage::log("Last exception: " . print_r($toTransactionObject->getLastException(), 1));
|
1424 |
+
}
|
1425 |
+
else
|
1426 |
+
{
|
1427 |
+
$currentTimestamp = Mage::getSingleton('core/date')->gmtDate();
|
1428 |
+
$gatewayEntryPointsListXML = $todTransactionOutputData->getGatewayEntryPoints()->toXmlString();
|
1429 |
+
|
1430 |
+
$gatewayEntryPointsTable = Mage::getResourceModel('tpg/gatewayentrypoints');
|
1431 |
+
$gatewayEntryPointsTable->saveEntryPoints($gatewayEntryPointsListXML, $currentTimestamp);
|
1432 |
+
|
1433 |
+
$szLogMessage = "Transaction could not be completed for OrderID: " . $szOrderID . ". Result details: ";
|
1434 |
+
$szNotificationMessage = 'Payment Processor Response: ' . $troTransactionResultObject->getMessage();
|
1435 |
+
$szCrossReference = $todTransactionOutputData->getCrossReference();
|
1436 |
+
/* serve out the CrossReference as the TransactionId - this need to be done to enable the "Refund" button
|
1437 |
+
in the Magento CreditMemo internal refund mechanism */
|
1438 |
+
$payment->setTransactionId($szCrossReference);
|
1439 |
+
switch($troTransactionResultObject->getStatusCode())
|
1440 |
+
{
|
1441 |
+
case 0:
|
1442 |
+
// status code of 0 - means transaction successful
|
1443 |
+
$szLogMessage = "Transaction successfully completed for OrderID: " . $szOrderID . ". Response object: ";
|
1444 |
+
// serve out the CrossReference as a TransactionId in the Magento system
|
1445 |
+
$order->setCustomerNote($szNotificationMessage);
|
1446 |
+
$this->setPaymentAdditionalInformation($payment, $szCrossReference);
|
1447 |
+
$payment->setCcType($todTransactionOutputData->getCardTypeData()->getCardType());
|
1448 |
+
$payment->setCcLast4(Mage::getModel('customer/session')->getData('payvector_card_last_four'));
|
1449 |
+
// deactivate the current quote - fixing the cart not emptied bug
|
1450 |
+
Mage::getSingleton('checkout/session')->getQuote()->setIsActive(false)->save();
|
1451 |
+
// add the success message
|
1452 |
+
Mage::getSingleton('core/session')->addSuccess($szNotificationMessage);
|
1453 |
+
break;
|
1454 |
+
case 3:
|
1455 |
+
// status code of 3 - means 3D Secure authentication required
|
1456 |
+
$szLogMessage = "3D Secure Authentication required for OrderID: " . $szOrderID . ". Response object: ";
|
1457 |
+
$szNotificationMessage = '';
|
1458 |
+
$szPaReq = $todTransactionOutputData->getThreeDSecureOutputData()->getPaREQ();
|
1459 |
+
$szACSURL = $todTransactionOutputData->getThreeDSecureOutputData()->getACSURL();
|
1460 |
+
Mage::getSingleton('checkout/session')->setMd($szCrossReference)
|
1461 |
+
->setAcsurl($szACSURL)
|
1462 |
+
->setPareq($szPaReq);
|
1463 |
+
if($nVersion >= 1410)
|
1464 |
+
{
|
1465 |
+
Mage::getSingleton('checkout/session')->setRedirectionMethod('_run3DSecureTransaction');
|
1466 |
+
$order->setIsThreeDSecurePending(true);
|
1467 |
+
}
|
1468 |
+
break;
|
1469 |
+
case 5:
|
1470 |
+
// status code of 5 - means transaction declined
|
1471 |
+
$error = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_182;
|
1472 |
+
$error .= $szNotificationMessage;
|
1473 |
+
break;
|
1474 |
+
case 20:
|
1475 |
+
// status code of 20 - means duplicate transaction
|
1476 |
+
$szPreviousTransactionMessage = $troTransactionResultObject->getPreviousTransactionResult()->getMessage();
|
1477 |
+
$szLogMessage =
|
1478 |
+
"Duplicate transaction for OrderID: " .
|
1479 |
+
$szOrderID .
|
1480 |
+
". A duplicate transaction means that a transaction with these details has already been processed by the payment provider. The details of the original transaction: " .
|
1481 |
+
$szPreviousTransactionMessage .
|
1482 |
+
". Response object: ";
|
1483 |
+
$szNotificationMessage =
|
1484 |
+
$szNotificationMessage .
|
1485 |
+
". A duplicate transaction means that a transaction with these details has already been processed by the payment provider. The details of the original transaction - Previous Transaction Response: " .
|
1486 |
+
$szPreviousTransactionMessage;
|
1487 |
+
if($troTransactionResultObject->getPreviousTransactionResult()->getStatusCode()->getValue() != 0)
|
1488 |
+
{
|
1489 |
+
$error = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_182;
|
1490 |
+
$error .= $szNotificationMessage;
|
1491 |
+
}
|
1492 |
+
else
|
1493 |
+
{
|
1494 |
+
Mage::getSingleton('core/session')->addSuccess($szNotificationMessage);
|
1495 |
+
}
|
1496 |
+
break;
|
1497 |
+
case 30:
|
1498 |
+
// status code of 30 - means an error occurred
|
1499 |
+
$error = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_183;
|
1500 |
+
$error .= $szNotificationMessage;
|
1501 |
+
$szLogMessage = "Transaction could not be completed for OrderID: " . $szOrderID . ". Error message: " . $troTransactionResultObject->getMessage();
|
1502 |
+
if($troTransactionResultObject->getErrorMessages()->getCount() > 0)
|
1503 |
+
{
|
1504 |
+
$szLogMessage = $szLogMessage . ".";
|
1505 |
+
for($LoopIndex = 0; $LoopIndex < $troTransactionResultObject->getErrorMessages()->getCount(); $LoopIndex++)
|
1506 |
+
{
|
1507 |
+
$szLogMessage = $szLogMessage . $troTransactionResultObject->getErrorMessages()->getAt($LoopIndex) . ";";
|
1508 |
+
}
|
1509 |
+
$szLogMessage = $szLogMessage . " ";
|
1510 |
+
}
|
1511 |
+
$szLogMessage = $szLogMessage . ' Response object: ';
|
1512 |
+
break;
|
1513 |
+
default:
|
1514 |
+
// unhandled status code
|
1515 |
+
$error = $szNotificationMessage;
|
1516 |
+
break;
|
1517 |
+
}
|
1518 |
+
$szLogMessage = $szLogMessage . print_r($troTransactionResultObject, 1);
|
1519 |
+
Mage::log($szLogMessage);
|
1520 |
+
}
|
1521 |
+
if($error)
|
1522 |
+
{
|
1523 |
+
$payment->setStatus('FAIL')
|
1524 |
+
->setCcApproval('FAIL');
|
1525 |
+
}
|
1526 |
+
else
|
1527 |
+
{
|
1528 |
+
if($nVersion == 1324 || $nVersion == 1330)
|
1529 |
+
{
|
1530 |
+
$payment->setIsInvoicePaid(true);
|
1531 |
+
}
|
1532 |
+
}
|
1533 |
+
|
1534 |
+
return $error;
|
1535 |
+
}
|
1536 |
+
}
|
app/code/local/PayVector/Tpg/Model/Gatewayentrypoints.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Gatewayentrypoints extends Mage_Core_Model_Mysql4_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->_init('tpg/gatewayentrypoints', 'gateway_entry_point_object');
|
8 |
+
}
|
9 |
+
|
10 |
+
public function saveEntryPoints($gatewayEntryPointListXML, $dateTimeProcessed)
|
11 |
+
{
|
12 |
+
$newData = array(
|
13 |
+
'gateway_entry_point_object' => $gatewayEntryPointListXML,
|
14 |
+
'date_time_processed' => $dateTimeProcessed
|
15 |
+
);
|
16 |
+
|
17 |
+
$this->_getWriteAdapter()->update($this->getMainTable(), $newData);
|
18 |
+
return $this;
|
19 |
+
}
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @return null|string
|
23 |
+
*/
|
24 |
+
public function getEntryPoints()
|
25 |
+
{
|
26 |
+
$offsetTimestamp = Mage::getSingleton('core/date')->gmtTimestamp() - 600;
|
27 |
+
$offsetDateTime = date('Y-m-d H:i:s', $offsetTimestamp);
|
28 |
+
$select = (string) $this->_getReadAdapter()->select()->from($this->getMainTable(), 'gateway_entry_point_object')->where('date_time_processed >= ?', $offsetDateTime);
|
29 |
+
|
30 |
+
$query = $this->_getReadAdapter()->query($select);
|
31 |
+
$query->execute();
|
32 |
+
return $query->fetchColumn();
|
33 |
+
}
|
34 |
+
}
|
app/code/local/PayVector/Tpg/Model/Request.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Request extends Varien_Object
|
4 |
+
{
|
5 |
+
public function __call($method, $args)
|
6 |
+
{
|
7 |
+
switch (substr($method, 0, 3))
|
8 |
+
{
|
9 |
+
case 'get' :
|
10 |
+
$key = substr($method,3);
|
11 |
+
$data = $this->getData($key, isset($args[0]) ? $args[0] : null);
|
12 |
+
return $data;
|
13 |
+
case 'set' :
|
14 |
+
$key = substr($method,3);
|
15 |
+
$result = $this->setData($key, isset($args[0]) ? $args[0] : null);
|
16 |
+
return $result;
|
17 |
+
default:
|
18 |
+
return parent::__call($method, $args);
|
19 |
+
}
|
20 |
+
throw new Varien_Exception("Invalid method ".get_class($this)."::".$method."(".print_r($args,1).")");
|
21 |
+
}
|
22 |
+
}
|
app/code/local/PayVector/Tpg/Model/Resource/Eav/Mysql4/Setup.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Resource_Eav_Mysql4_Setup extends Mage_Eav_Model_Entity_Setup
|
4 |
+
{
|
5 |
+
|
6 |
+
}
|
app/code/local/PayVector/Tpg/Model/Resource/Gatewayentrypoints.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Resource_Gatewayentrypoints extends Mage_Core_Model_Resource_Db_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->_init('tpg/gatewayentrypoints', 'gateway_entry_point_object');
|
8 |
+
}
|
9 |
+
}
|
app/code/local/PayVector/Tpg/Model/Resource/Gatewayentrypoints/Collection.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Resource_Gatewayentrypoints_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract {
|
4 |
+
protected function _construct()
|
5 |
+
{
|
6 |
+
$this->_init('tpg/gatewayentrypoints');
|
7 |
+
}
|
8 |
+
}
|
app/code/local/PayVector/Tpg/Model/Resource/Setup.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Resource_Setup extends Mage_Core_Model_Resource_Setup
|
4 |
+
{
|
5 |
+
|
6 |
+
}
|
app/code/local/PayVector/Tpg/Model/Source/HashMethod.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Source_HashMethod
|
4 |
+
{
|
5 |
+
// public enum for the payment types
|
6 |
+
const HASH_METHOD_MD5 = 'md5';
|
7 |
+
const HASH_METHOD_SHA1 = 'sha1';
|
8 |
+
const HASH_METHOD_HMACMD5 = 'hmacmd5';
|
9 |
+
const HASH_METHOD_HMACSHA1 = 'hmacsha1';
|
10 |
+
|
11 |
+
public function toOptionArray()
|
12 |
+
{
|
13 |
+
return array
|
14 |
+
(
|
15 |
+
array(
|
16 |
+
'value' => self::HASH_METHOD_MD5,
|
17 |
+
'label' => Mage::helper('tpg')->__('MD5')
|
18 |
+
),
|
19 |
+
array(
|
20 |
+
'value' => self::HASH_METHOD_SHA1,
|
21 |
+
'label' => Mage::helper('tpg')->__('SHA1')
|
22 |
+
),
|
23 |
+
array(
|
24 |
+
'value' => self::HASH_METHOD_HMACMD5,
|
25 |
+
'label' => Mage::helper('tpg')->__('HMACMD5')
|
26 |
+
),
|
27 |
+
array(
|
28 |
+
'value' => self::HASH_METHOD_HMACSHA1,
|
29 |
+
'label' => Mage::helper('tpg')->__('HMACSHA1')
|
30 |
+
)
|
31 |
+
);
|
32 |
+
}
|
33 |
+
}
|
app/code/local/PayVector/Tpg/Model/Source/OrderStatus.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Source_OrderStatus
|
4 |
+
{
|
5 |
+
public function toOptionArray()
|
6 |
+
{
|
7 |
+
return array(
|
8 |
+
// override the order status and ONLY offer "pending" by default
|
9 |
+
array(
|
10 |
+
'value' => 'processing',
|
11 |
+
'label' => Mage::helper('tpg')->__('Processing')
|
12 |
+
),
|
13 |
+
);
|
14 |
+
}
|
15 |
+
}
|
app/code/local/PayVector/Tpg/Model/Source/PaymentAction.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Source_PaymentAction extends Mage_Paygate_Model_Authorizenet_Source_PaymentAction
|
4 |
+
{
|
5 |
+
public function toOptionArray()
|
6 |
+
{
|
7 |
+
return array
|
8 |
+
(
|
9 |
+
// override the core class to ONLY allow capture transactions (immediate settlement)
|
10 |
+
array
|
11 |
+
(
|
12 |
+
'value' => Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE,
|
13 |
+
'label' => Mage::helper('paygate')->__('PREAUTH')
|
14 |
+
),
|
15 |
+
array
|
16 |
+
(
|
17 |
+
'value' => Mage_Paygate_Model_Authorizenet::ACTION_AUTHORIZE_CAPTURE,
|
18 |
+
'label' => Mage::helper('paygate')->__('SALE')
|
19 |
+
)
|
20 |
+
);
|
21 |
+
}
|
22 |
+
}
|
app/code/local/PayVector/Tpg/Model/Source/PaymentMode.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Source_PaymentMode
|
4 |
+
{
|
5 |
+
// public enum for the payment types
|
6 |
+
const PAYMENT_MODE_DIRECT_API = 'direct';
|
7 |
+
const PAYMENT_MODE_HOSTED_PAYMENT_FORM = 'hosted';
|
8 |
+
const PAYMENT_MODE_TRANSPARENT_REDIRECT = 'transparent';
|
9 |
+
|
10 |
+
public function toOptionArray()
|
11 |
+
{
|
12 |
+
return array
|
13 |
+
(
|
14 |
+
array(
|
15 |
+
'value' => self::PAYMENT_MODE_DIRECT_API,
|
16 |
+
'label' => Mage::helper('tpg')->__('Direct (API)')
|
17 |
+
),
|
18 |
+
array(
|
19 |
+
'value' => self::PAYMENT_MODE_HOSTED_PAYMENT_FORM,
|
20 |
+
'label' => Mage::helper('tpg')->__('Hosted Payment Form')
|
21 |
+
)
|
22 |
+
);
|
23 |
+
/*,
|
24 |
+
array(
|
25 |
+
'value' => self::PAYMENT_MODE_TRANSPARENT_REDIRECT,
|
26 |
+
'label' => Mage::helper('tpg')->__('Transparent Redirect')
|
27 |
+
),
|
28 |
+
);*/
|
29 |
+
}
|
30 |
+
}
|
app/code/local/PayVector/Tpg/Model/Source/ResultDeliveryMethod.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PayVector_Tpg_Model_Source_ResultDeliveryMethod
|
4 |
+
{
|
5 |
+
// public enum for the payment types
|
6 |
+
const RESULT_DELIVERY_METHOD_POST = 'POST';
|
7 |
+
const RESULT_DELIVERY_METHOD_SERVER = 'SERVER';
|
8 |
+
const RESULT_DELIVERY_METHOD_SERVER_PULL = 'SERVER_PULL';
|
9 |
+
|
10 |
+
public function toOptionArray()
|
11 |
+
{
|
12 |
+
return array
|
13 |
+
(
|
14 |
+
array(
|
15 |
+
'value' => self::RESULT_DELIVERY_METHOD_POST,
|
16 |
+
'label' => Mage::helper('tpg')->__('Post')
|
17 |
+
),
|
18 |
+
/*array(
|
19 |
+
'value' => self::RESULT_DELIVERY_METHOD_SERVER,
|
20 |
+
'label' => Mage::helper('tpg')->__('Server')
|
21 |
+
),*/
|
22 |
+
array(
|
23 |
+
'value' => self::RESULT_DELIVERY_METHOD_SERVER_PULL,
|
24 |
+
'label' => Mage::helper('tpg')->__('Server Pull')
|
25 |
+
),
|
26 |
+
);
|
27 |
+
}
|
28 |
+
}
|
app/code/local/PayVector/Tpg/controllers/PaymentController.php
ADDED
@@ -0,0 +1,1027 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Standard Checkout Controller
|
5 |
+
*
|
6 |
+
*/
|
7 |
+
class PayVector_Tpg_PaymentController extends Mage_Core_Controller_Front_Action
|
8 |
+
{
|
9 |
+
protected function _expireAjax()
|
10 |
+
{
|
11 |
+
if(!Mage::getSingleton('checkout/session')->getQuote()->hasItems())
|
12 |
+
{
|
13 |
+
$this->getResponse()->setHeader('HTTP/1.1', '403 Session Expired');
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
}
|
17 |
+
|
18 |
+
public function errorAction()
|
19 |
+
{
|
20 |
+
//$this->_redirect('checkout/cart');
|
21 |
+
$this->_redirect('checkout/onepage/failure');
|
22 |
+
#$this->loadLayout();
|
23 |
+
#$this->renderLayout();
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* When a customer cancel payment.
|
28 |
+
*/
|
29 |
+
public function cancelAction()
|
30 |
+
{
|
31 |
+
$session = Mage::getSingleton('checkout/session');
|
32 |
+
$session->setQuoteId($session->getPaypalStandardQuoteId(true));
|
33 |
+
$this->_redirect('checkout/cart');
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Action logic for Hosted Payment mode
|
38 |
+
*
|
39 |
+
*/
|
40 |
+
public function redirectAction()
|
41 |
+
{
|
42 |
+
$this->getResponse()->setBody($this->getLayout()->createBlock('tpg/redirect')->toHtml());
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Action logic for 3D Secure redirection
|
47 |
+
*
|
48 |
+
*/
|
49 |
+
public function threedsecureAction()
|
50 |
+
{
|
51 |
+
$this->getResponse()->setBody($this->getLayout()->createBlock('tpg/threedsecure')->toHtml());
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Action logic for handling the reception of the 3D Secure authentication result (PaRes)
|
56 |
+
*
|
57 |
+
* @return unknown
|
58 |
+
*/
|
59 |
+
public function callback3dAction()
|
60 |
+
{
|
61 |
+
$boError = false;
|
62 |
+
$szMessage = '';
|
63 |
+
$checkout = Mage::getSingleton('checkout/type_onepage');
|
64 |
+
$session = Mage::getSingleton('checkout/session');
|
65 |
+
$szPaymentProcessorResponse = '';
|
66 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
67 |
+
$order = Mage::getModel('sales/order');
|
68 |
+
$order->load(Mage::getSingleton('checkout/session')->getLastOrderId());
|
69 |
+
$boCartIsEmpty = false;
|
70 |
+
try
|
71 |
+
{
|
72 |
+
$szPaRes = $this->getRequest()->getPost('PaRes');
|
73 |
+
$szMD = $this->getRequest()->getPost('MD');
|
74 |
+
// check if the cart is not empty, ie: after successful completion back button clicked in the browser
|
75 |
+
$payVectorOrderId = Mage::getSingleton('checkout/session')->getTpgOrderId();
|
76 |
+
$szOrderStatus = $order->getStatus();
|
77 |
+
if($szOrderStatus != 'irc_paid' &&
|
78 |
+
$szOrderStatus != 'irc_preauth'
|
79 |
+
)
|
80 |
+
{
|
81 |
+
// cart is not empty
|
82 |
+
// complete the 3D Secure transaction with the 3D Authorization result
|
83 |
+
$checkout->saveOrderAfter3dSecure($szPaRes, $szMD);
|
84 |
+
$szPaymentProcessorResponse = $session->getPaymentprocessorresponse();
|
85 |
+
}
|
86 |
+
else
|
87 |
+
{
|
88 |
+
// cart is empty
|
89 |
+
$boCartIsEmpty = true;
|
90 |
+
$szPaymentProcessorResponse = null;
|
91 |
+
}
|
92 |
+
}
|
93 |
+
catch(Exception $exc)
|
94 |
+
{
|
95 |
+
$boError = true;
|
96 |
+
Mage::logException($exc);
|
97 |
+
if(isset($_SESSION['tpg_message']))
|
98 |
+
{
|
99 |
+
$szMessage = $_SESSION['tpg_message'];
|
100 |
+
unset($_SESSION['tpg_message']);
|
101 |
+
}
|
102 |
+
else
|
103 |
+
{
|
104 |
+
$szMessage = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_7655;
|
105 |
+
}
|
106 |
+
}
|
107 |
+
if($boError)
|
108 |
+
{
|
109 |
+
if($szPaymentProcessorResponse != null &&
|
110 |
+
$szPaymentProcessorResponse != ''
|
111 |
+
)
|
112 |
+
{
|
113 |
+
$szMessage .= '<br/>' . $szPaymentProcessorResponse;
|
114 |
+
}
|
115 |
+
if($nVersion >= 1410)
|
116 |
+
{
|
117 |
+
if($order)
|
118 |
+
{
|
119 |
+
$orderState = 'pending_payment';
|
120 |
+
$orderStatus = 'irc_failed_threed_secure';
|
121 |
+
$order->setCustomerNote(Mage::helper('tpg')->__('3D Secure Authentication Failed'));
|
122 |
+
$order->setState($orderState, $orderStatus, $szPaymentProcessorResponse, false);
|
123 |
+
$order->save();
|
124 |
+
}
|
125 |
+
}
|
126 |
+
if($nVersion == 1324 || $nVersion == 1330)
|
127 |
+
{
|
128 |
+
Mage::getSingleton('checkout/session')->addError($szMessage);
|
129 |
+
}
|
130 |
+
else
|
131 |
+
{
|
132 |
+
Mage::getSingleton('core/session')->addError($szMessage);
|
133 |
+
}
|
134 |
+
$this->_clearSessionVariables();
|
135 |
+
// report out an fatal error
|
136 |
+
$this->_redirect('checkout/onepage/failure');
|
137 |
+
}
|
138 |
+
else
|
139 |
+
{
|
140 |
+
// set the quote as inactive after back from paypal
|
141 |
+
Mage::getSingleton('checkout/session')->getQuote()->setIsActive(false)->save();
|
142 |
+
// if the cart is empty do not attempt to update the invoices
|
143 |
+
if($boCartIsEmpty == false)
|
144 |
+
{
|
145 |
+
// send confirmation email to customer
|
146 |
+
if($order->getId())
|
147 |
+
{
|
148 |
+
$order->sendNewOrderEmail();
|
149 |
+
}
|
150 |
+
if($nVersion >= 1410)
|
151 |
+
{
|
152 |
+
// TODO : no need to remove stock item as the system will do it in 1.6 version
|
153 |
+
if($nVersion < 1600)
|
154 |
+
{
|
155 |
+
Mage::getModel('tpg/direct')->subtractOrderedItemsFromStock($order);
|
156 |
+
}
|
157 |
+
$this->_updateInvoices($order, $szPaymentProcessorResponse);
|
158 |
+
}
|
159 |
+
if($nVersion != 1324 && $nVersion != 1330)
|
160 |
+
{
|
161 |
+
if($szPaymentProcessorResponse != '')
|
162 |
+
{
|
163 |
+
Mage::getSingleton('core/session')->addSuccess($szPaymentProcessorResponse);
|
164 |
+
}
|
165 |
+
}
|
166 |
+
}
|
167 |
+
$this->_redirect('checkout/onepage/success', array('_secure' => true));
|
168 |
+
}
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Action logic for handling the result from the Hosted Payment page
|
173 |
+
*
|
174 |
+
*/
|
175 |
+
public function callbackhostedpaymentAction()
|
176 |
+
{
|
177 |
+
$boError = false;
|
178 |
+
$formVariables = array();
|
179 |
+
$model = Mage::getModel('tpg/direct');
|
180 |
+
$szOrderID = $this->getRequest()->getPost('OrderID');
|
181 |
+
/* @var PayVector_Checkout_Model_Type_Onepage $checkout */
|
182 |
+
$checkout = Mage::getSingleton('checkout/type_onepage');
|
183 |
+
$session = Mage::getSingleton('checkout/session');
|
184 |
+
$szPaymentProcessorResponse = '';
|
185 |
+
$order = Mage::getModel('sales/order');
|
186 |
+
$order->load(Mage::getSingleton('checkout/session')->getLastOrderId());
|
187 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
188 |
+
$boCartIsEmpty = false;
|
189 |
+
try
|
190 |
+
{
|
191 |
+
$hmHashMethod = $model->getConfigData('hashmethod');
|
192 |
+
$szPassword = $model->getConfigData('password');
|
193 |
+
$szPreSharedKey = $model->getConfigData('presharedkey');
|
194 |
+
$formVariables['HashDigest'] = $this->getRequest()->getPost('HashDigest');
|
195 |
+
$formVariables['MerchantID'] = $this->getRequest()->getPost('MerchantID');
|
196 |
+
$formVariables['StatusCode'] = $this->getRequest()->getPost('StatusCode');
|
197 |
+
$formVariables['Message'] = $this->getRequest()->getPost('Message');
|
198 |
+
$formVariables['PreviousStatusCode'] = $this->getRequest()->getPost('PreviousStatusCode');
|
199 |
+
$formVariables['PreviousMessage'] = $this->getRequest()->getPost('PreviousMessage');
|
200 |
+
$formVariables['CrossReference'] = $this->getRequest()->getPost('CrossReference');
|
201 |
+
$formVariables['Amount'] = $this->getRequest()->getPost('Amount');
|
202 |
+
$formVariables['CurrencyCode'] = $this->getRequest()->getPost('CurrencyCode');
|
203 |
+
$formVariables['CardType'] = $this->getRequest()->getPost('CardType');
|
204 |
+
$formVariables['CardClass'] = $this->getRequest()->getPost('CardClass');
|
205 |
+
$formVariables['CardIssuer'] = $this->getRequest()->getPost('CardIssuer');
|
206 |
+
$formVariables['CardIssuerCountryCode'] = $this->getRequest()->getPost('CardIssuerCountryCode');
|
207 |
+
$formVariables['OrderID'] = $this->getRequest()->getPost('OrderID');
|
208 |
+
$formVariables['TransactionType'] = $this->getRequest()->getPost('TransactionType');
|
209 |
+
$formVariables['TransactionDateTime'] = $this->getRequest()->getPost('TransactionDateTime');
|
210 |
+
$formVariables['OrderDescription'] = $this->getRequest()->getPost('OrderDescription');
|
211 |
+
$formVariables['CustomerName'] = $this->getRequest()->getPost('CustomerName');
|
212 |
+
$formVariables['Address1'] = $this->getRequest()->getPost('Address1');
|
213 |
+
$formVariables['Address2'] = $this->getRequest()->getPost('Address2');
|
214 |
+
$formVariables['Address3'] = $this->getRequest()->getPost('Address3');
|
215 |
+
$formVariables['Address4'] = $this->getRequest()->getPost('Address4');
|
216 |
+
$formVariables['City'] = $this->getRequest()->getPost('City');
|
217 |
+
$formVariables['State'] = $this->getRequest()->getPost('State');
|
218 |
+
$formVariables['PostCode'] = $this->getRequest()->getPost('PostCode');
|
219 |
+
$formVariables['CountryCode'] = $this->getRequest()->getPost('CountryCode');
|
220 |
+
if(!TPG_PaymentFormHelper::compareHostedPaymentFormHashDigest($formVariables, $szPassword, $hmHashMethod, $szPreSharedKey))
|
221 |
+
{
|
222 |
+
$boError = true;
|
223 |
+
$szNotificationMessage = "The payment was rejected for a SECURITY reason: the incoming payment data was tampered with.";
|
224 |
+
Mage::log("The Hosted Payment Form transaction couldn't be completed for the following reason: [" . $szNotificationMessage . "]. Form variables: " . print_r($formVariables, 1));
|
225 |
+
}
|
226 |
+
else
|
227 |
+
{
|
228 |
+
$payVectorOrderId = Mage::getSingleton('checkout/session')->getTpgOrderId();
|
229 |
+
$szOrderStatus = $order->getStatus();
|
230 |
+
$szStatusCode = $formVariables['StatusCode'];
|
231 |
+
$szMessage = $formVariables['Message'];
|
232 |
+
$szPreviousStatusCode = $formVariables['PreviousStatusCode'];
|
233 |
+
$szPreviousMessage = $formVariables['PreviousMessage'];
|
234 |
+
$szOrderID = $formVariables['OrderID'];
|
235 |
+
$szCrossReference = $formVariables['CrossReference'];
|
236 |
+
$szCardType = $formVariables['CardType'];
|
237 |
+
|
238 |
+
if($szOrderStatus != 'irc_paid' && $szOrderStatus != 'irc_preauth')
|
239 |
+
{
|
240 |
+
$checkout->saveOrderAfterRedirectedPaymentAction(
|
241 |
+
true,
|
242 |
+
$szStatusCode,
|
243 |
+
$szMessage,
|
244 |
+
$szPreviousStatusCode,
|
245 |
+
$szPreviousMessage,
|
246 |
+
$szOrderID,
|
247 |
+
$szCrossReference,
|
248 |
+
$szCardType
|
249 |
+
);
|
250 |
+
}
|
251 |
+
else
|
252 |
+
{
|
253 |
+
// cart is empty
|
254 |
+
$boCartIsEmpty = true;
|
255 |
+
$szPaymentProcessorResponse = null;
|
256 |
+
// check the StatusCode as the customer might have just clicked the BACK button and re-submitted the card details
|
257 |
+
// which can cause a charge back to the merchant
|
258 |
+
$this->_fixBackButtonBug($szOrderID, $szStatusCode, $szMessage, $szPreviousStatusCode, $szPreviousMessage);
|
259 |
+
}
|
260 |
+
}
|
261 |
+
}
|
262 |
+
catch(Exception $exc)
|
263 |
+
{
|
264 |
+
$boError = true;
|
265 |
+
$szPaymentProcessorResponse = $exc->getMessage();
|
266 |
+
$szNotificationMessage = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_183;
|
267 |
+
Mage::logException($exc);
|
268 |
+
}
|
269 |
+
$szPaymentProcessorResponse = $session->getPaymentprocessorresponse();
|
270 |
+
if($boError)
|
271 |
+
{
|
272 |
+
if($szPaymentProcessorResponse != null &&
|
273 |
+
$szPaymentProcessorResponse != ''
|
274 |
+
)
|
275 |
+
{
|
276 |
+
$szNotificationMessage .= '<br/>' . $szPaymentProcessorResponse;
|
277 |
+
}
|
278 |
+
$model->setPaymentAdditionalInformation($order->getPayment(), $this->getRequest()->getPost('CrossReference'));
|
279 |
+
//$order->getPayment()->setTransactionId($this->getRequest()->getPost('CrossReference'));
|
280 |
+
if($nVersion >= 1410)
|
281 |
+
{
|
282 |
+
if($order)
|
283 |
+
{
|
284 |
+
$orderState = 'pending_payment';
|
285 |
+
$orderStatus = 'irc_failed_hosted_payment';
|
286 |
+
$order->setCustomerNote(Mage::helper('tpg')->__('Hosted Payment Failed'));
|
287 |
+
$order->setState($orderState, $orderStatus, $szPaymentProcessorResponse, false);
|
288 |
+
$order->save();
|
289 |
+
}
|
290 |
+
}
|
291 |
+
if($nVersion == 1324 || $nVersion == 1330)
|
292 |
+
{
|
293 |
+
Mage::getSingleton('checkout/session')->addError($szNotificationMessage);
|
294 |
+
}
|
295 |
+
else
|
296 |
+
{
|
297 |
+
Mage::getSingleton('core/session')->addError($szNotificationMessage);
|
298 |
+
}
|
299 |
+
$order->save();
|
300 |
+
$this->_clearSessionVariables();
|
301 |
+
$this->_redirect('checkout/onepage/failure');
|
302 |
+
}
|
303 |
+
else
|
304 |
+
{
|
305 |
+
// set the quote as inactive after back from paypal
|
306 |
+
Mage::getSingleton('checkout/session')->getQuote()->setIsActive(false)->save();
|
307 |
+
if($boCartIsEmpty == false)
|
308 |
+
{
|
309 |
+
// send confirmation email to customer
|
310 |
+
if($order->getId())
|
311 |
+
{
|
312 |
+
$order->sendNewOrderEmail();
|
313 |
+
}
|
314 |
+
if($nVersion >= 1410)
|
315 |
+
{
|
316 |
+
// TODO : no need to remove stock item as the system will do it in 1.6 version
|
317 |
+
if($nVersion < 1600)
|
318 |
+
{
|
319 |
+
$model->subtractOrderedItemsFromStock($order);
|
320 |
+
}
|
321 |
+
$this->_updateInvoices($order, $szPaymentProcessorResponse);
|
322 |
+
}
|
323 |
+
if($nVersion != 1324 && $nVersion != 1330)
|
324 |
+
{
|
325 |
+
if($szPaymentProcessorResponse != '')
|
326 |
+
{
|
327 |
+
Mage::getSingleton('core/session')->addSuccess($szPaymentProcessorResponse);
|
328 |
+
}
|
329 |
+
}
|
330 |
+
}
|
331 |
+
$this->_redirect('checkout/onepage/success', array('_secure' => true));
|
332 |
+
}
|
333 |
+
}
|
334 |
+
|
335 |
+
/**
|
336 |
+
* Action logic for handling the server to server communication in case of Result Delivery Method = SERVER
|
337 |
+
*
|
338 |
+
*/
|
339 |
+
public function serverresultAction()
|
340 |
+
{
|
341 |
+
$boError = false;
|
342 |
+
$model = Mage::getModel('tpg/direct');
|
343 |
+
$checkout = Mage::getSingleton('checkout/type_onepage');
|
344 |
+
$szOrderID = $this->getRequest()->getPost('OrderID');
|
345 |
+
$szMessage = $this->getRequest()->getPost('Message');
|
346 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
347 |
+
try
|
348 |
+
{
|
349 |
+
// finish off the transaction: if StatusCode = 0 create an order otherwise do nothing
|
350 |
+
$checkout->saveOrderAfterRedirectedPaymentAction(
|
351 |
+
true,
|
352 |
+
$this->getRequest()->getPost('StatusCode'),
|
353 |
+
$szMessage,
|
354 |
+
$this->getRequest()->getPost('PreviousStatusCode'),
|
355 |
+
$this->getRequest()->getPost('PreviousMessage'),
|
356 |
+
$this->getRequest()->getPost('OrderID'),
|
357 |
+
$this->getRequest()->getPost('CrossReference')
|
358 |
+
);
|
359 |
+
}
|
360 |
+
catch(Exception $exc)
|
361 |
+
{
|
362 |
+
$boError = true;
|
363 |
+
$szNotificationMessage = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_183;
|
364 |
+
$szErrorMessage = $exc->getMessage();
|
365 |
+
Mage::logException($exc);
|
366 |
+
}
|
367 |
+
if($boError == true)
|
368 |
+
{
|
369 |
+
$this->getResponse()->setBody('StatusCode=30&Message=' . $szErrorMessage);
|
370 |
+
}
|
371 |
+
else
|
372 |
+
{
|
373 |
+
$order = Mage::getModel('sales/order');
|
374 |
+
$order->load(Mage::getSingleton('checkout/session')->getLastOrderId());
|
375 |
+
// set the quote as inactive after back from paypal
|
376 |
+
Mage::getSingleton('checkout/session')->getQuote()->setIsActive(false)->save();
|
377 |
+
// send confirmation email to customer
|
378 |
+
if($order->getId())
|
379 |
+
{
|
380 |
+
$order->sendNewOrderEmail();
|
381 |
+
}
|
382 |
+
// if the payment was successful clear the session so that if the customer navigates back to the Magento store
|
383 |
+
// the shopping cart will be emptied rather than 'uncomplete'
|
384 |
+
if($this->getRequest()->getPost('StatusCode') == '0')
|
385 |
+
{
|
386 |
+
Mage::getSingleton('checkout/session')->clear();
|
387 |
+
if($nVersion >= 1410)
|
388 |
+
{
|
389 |
+
if($nVersion < 1600)
|
390 |
+
{
|
391 |
+
$model->subtractOrderedItemsFromStock($order);
|
392 |
+
}
|
393 |
+
$this->_updateInvoices($order, $szMessage);
|
394 |
+
}
|
395 |
+
}
|
396 |
+
$this->getResponse()->setBody('StatusCode=0');
|
397 |
+
}
|
398 |
+
}
|
399 |
+
|
400 |
+
/*
|
401 |
+
* Action logic to handle the SERVER_PUSH web request to the PaymentFormResultHandler.ashx to get the transaction result details
|
402 |
+
*/
|
403 |
+
public function serverpullresultAction()
|
404 |
+
{
|
405 |
+
$boError = false;
|
406 |
+
$nStartIndex = false;
|
407 |
+
//
|
408 |
+
$szHashDigest = false;
|
409 |
+
$szMerchantID = false;
|
410 |
+
$szCrossReference = false;
|
411 |
+
$szOrderID = false;
|
412 |
+
//
|
413 |
+
$nErrorNumber = false;
|
414 |
+
$szErrorMessage = false;
|
415 |
+
$model = Mage::getModel('tpg/direct');
|
416 |
+
$checkout = Mage::getSingleton('checkout/type_onepage');
|
417 |
+
$szServerPullURL = $model->getConfigData('serverpullresultactionurl');
|
418 |
+
$szMerchantID = $model->getConfigData('merchantid');
|
419 |
+
$szPassword = $model->getConfigData('password');
|
420 |
+
$hmHashMethod = $model->getConfigData('hashmethod');
|
421 |
+
$szPreSharedKey = $model->getConfigData('presharedkey');
|
422 |
+
$szURLVariableString = $this->getRequest()->getRequestUri();
|
423 |
+
$nStartIndex = strpos($szURLVariableString, "?");
|
424 |
+
$order = Mage::getModel('sales/order');
|
425 |
+
$order->load(Mage::getSingleton('checkout/session')->getLastOrderId());
|
426 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
427 |
+
if(!is_int($nStartIndex))
|
428 |
+
{
|
429 |
+
$szErrorMessage = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_309;
|
430 |
+
Mage::log(PayVector_Tpg_Model_Common_GlobalErrors::ERROR_309 . " Request URI: " . $szURLVariableString);
|
431 |
+
}
|
432 |
+
else
|
433 |
+
{
|
434 |
+
$szURLVariableString = substr($szURLVariableString, $nStartIndex + 1);
|
435 |
+
$arFormVariables = TPG_PaymentFormHelper::getVariableCollectionFromString($szURLVariableString);
|
436 |
+
if(!TPG_PaymentFormHelper::compareServerHashDigest($arFormVariables, $szPassword, $hmHashMethod, $szPreSharedKey))
|
437 |
+
{
|
438 |
+
// report an error message
|
439 |
+
$szErrorMessage = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_304;
|
440 |
+
}
|
441 |
+
else
|
442 |
+
{
|
443 |
+
$szOrderID = $arFormVariables["OrderID"];
|
444 |
+
$szCrossReference = $arFormVariables["CrossReference"];
|
445 |
+
$szPostFields = "MerchantID=" . urlencode($szMerchantID) . "&Password=" . urlencode($szPassword) . "&CrossReference=" . urlencode($szCrossReference);
|
446 |
+
//$szPostFields = "MerchantID=".$szMerchantID."&Password=".$szPassword."&CrossReference=".$szCrossReference;
|
447 |
+
$cCurl = curl_init();
|
448 |
+
curl_setopt($cCurl, CURLOPT_URL, $szServerPullURL);
|
449 |
+
curl_setopt($cCurl, CURLOPT_POST, true);
|
450 |
+
curl_setopt($cCurl, CURLOPT_POSTFIELDS, $szPostFields);
|
451 |
+
curl_setopt($cCurl, CURLOPT_RETURNTRANSFER, true);
|
452 |
+
curl_setopt($cCurl, CURLOPT_ENCODING, "UTF-8");
|
453 |
+
curl_setopt($cCurl, CURLOPT_SSL_VERIFYPEER, false);
|
454 |
+
curl_setopt($cCurl, CURLOPT_SSL_VERIFYHOST, false);
|
455 |
+
$response = curl_exec($cCurl);
|
456 |
+
$nErrorNumber = curl_errno($cCurl);
|
457 |
+
$szErrorMessage = curl_error($cCurl);
|
458 |
+
curl_close($cCurl);
|
459 |
+
if(is_int($nErrorNumber) &&
|
460 |
+
$nErrorNumber > 0
|
461 |
+
)
|
462 |
+
{
|
463 |
+
Mage::log(
|
464 |
+
"Error happened while trying to retrieve the transaction result details for a SERVER_PULL method for CrossReference: " .
|
465 |
+
$szCrossReference .
|
466 |
+
". Error code: " .
|
467 |
+
$nErrorNumber .
|
468 |
+
", message: " .
|
469 |
+
$szErrorMessage
|
470 |
+
);
|
471 |
+
// suppress the message and use customer friendly instead
|
472 |
+
$szErrorMessage = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_329 . " Message: " . $szErrorMessage;
|
473 |
+
}
|
474 |
+
else
|
475 |
+
{
|
476 |
+
// synchronize of the Magento backend with the transcation result
|
477 |
+
try
|
478 |
+
{
|
479 |
+
// get the response items
|
480 |
+
$responseItems = TPG_PaymentFormHelper::getVariableCollectionFromString($response);
|
481 |
+
$szStatusCode = $responseItems["StatusCode"];
|
482 |
+
$szMessage = $responseItems["Message"];
|
483 |
+
$transactionResult = $responseItems["TransactionResult"];
|
484 |
+
if($szStatusCode !== '0')
|
485 |
+
{
|
486 |
+
$szErrorMessage = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_381;
|
487 |
+
$szErrorMessage .= " Message: " . $szMessage;
|
488 |
+
}
|
489 |
+
else
|
490 |
+
{
|
491 |
+
// URL decode the transaction result variable and get the transaction result sub variables
|
492 |
+
$transactionResult = urldecode($transactionResult);
|
493 |
+
$transactionResult = TPG_PaymentFormHelper::getVariableCollectionFromString($transactionResult);
|
494 |
+
// create the order item in the Magento backend
|
495 |
+
$szStatusCode = isset($transactionResult["StatusCode"]) ? $transactionResult["StatusCode"] : false;
|
496 |
+
$szMessage = isset($transactionResult["Message"]) ? $transactionResult["Message"] : false;
|
497 |
+
$szPreviousStatusCode = $szStatusCode;
|
498 |
+
$szPreviousMessage = $szMessage;
|
499 |
+
$checkout->saveOrderAfterRedirectedPaymentAction(
|
500 |
+
true,
|
501 |
+
$szStatusCode,
|
502 |
+
$szMessage,
|
503 |
+
$szPreviousStatusCode,
|
504 |
+
$szPreviousMessage,
|
505 |
+
$szOrderID,
|
506 |
+
$szCrossReference
|
507 |
+
);
|
508 |
+
}
|
509 |
+
}
|
510 |
+
catch(Exception $exc)
|
511 |
+
{
|
512 |
+
$boError = true;
|
513 |
+
$szPaymentProcessorResponse = $exc->getMessage();
|
514 |
+
$szErrorMessage = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_183;
|
515 |
+
Mage::logException($exc);
|
516 |
+
}
|
517 |
+
}
|
518 |
+
}
|
519 |
+
}
|
520 |
+
if($boError)
|
521 |
+
{
|
522 |
+
if($szPaymentProcessorResponse != null &&
|
523 |
+
$szPaymentProcessorResponse != ''
|
524 |
+
)
|
525 |
+
{
|
526 |
+
$szErrorMessage .= '<br/>' . $szPaymentProcessorResponse;
|
527 |
+
}
|
528 |
+
$model->setPaymentAdditionalInformation($order->getPayment(), $szCrossReference);
|
529 |
+
//$order->getPayment()->setTransactionId($szCrossReference);
|
530 |
+
if($nVersion >= 1410)
|
531 |
+
{
|
532 |
+
if($order)
|
533 |
+
{
|
534 |
+
$orderState = 'pending_payment';
|
535 |
+
$orderStatus = 'irc_failed_hosted_payment';
|
536 |
+
$order->setCustomerNote(Mage::helper('tpg')->__('Hosted Payment Failed'));
|
537 |
+
$order->setState($orderState, $orderStatus, $szErrorMessage, false);
|
538 |
+
$order->save();
|
539 |
+
}
|
540 |
+
}
|
541 |
+
if($nVersion == 1324 || $nVersion == 1330)
|
542 |
+
{
|
543 |
+
Mage::getSingleton('checkout/session')->addError($szErrorMessage);
|
544 |
+
}
|
545 |
+
else
|
546 |
+
{
|
547 |
+
Mage::getSingleton('core/session')->addError($szErrorMessage);
|
548 |
+
}
|
549 |
+
$order->save();
|
550 |
+
$this->_clearSessionVariables();
|
551 |
+
$this->_redirect('checkout/onepage/failure');
|
552 |
+
}
|
553 |
+
else
|
554 |
+
{
|
555 |
+
// set the quote as inactive after back from paypal
|
556 |
+
Mage::getSingleton('checkout/session')->getQuote()->setIsActive(false)->save();
|
557 |
+
// send confirmation email to customer
|
558 |
+
if($order->getId())
|
559 |
+
{
|
560 |
+
$order->sendNewOrderEmail();
|
561 |
+
}
|
562 |
+
if($nVersion >= 1410)
|
563 |
+
{
|
564 |
+
if($nVersion < 1600)
|
565 |
+
{
|
566 |
+
$model->subtractOrderedItemsFromStock($order);
|
567 |
+
}
|
568 |
+
$this->_updateInvoices($order, $szMessage);
|
569 |
+
}
|
570 |
+
if($nVersion != 1324 && $nVersion != 1330)
|
571 |
+
{
|
572 |
+
Mage::getSingleton('core/session')->addSuccess('Payment Processor Response: ' . $szMessage);
|
573 |
+
}
|
574 |
+
$this->_redirect('checkout/onepage/success', array('_secure' => true));
|
575 |
+
}
|
576 |
+
}
|
577 |
+
|
578 |
+
/**
|
579 |
+
* Action logic for handling the result set from the Transparent Redirect page
|
580 |
+
*
|
581 |
+
*/
|
582 |
+
public function callbacktransparentredirectAction()
|
583 |
+
{
|
584 |
+
$model = Mage::getModel('tpg/direct');
|
585 |
+
$order = Mage::getModel('sales/order');
|
586 |
+
$order->load(Mage::getSingleton('checkout/session')->getLastOrderId());
|
587 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
588 |
+
try
|
589 |
+
{
|
590 |
+
$hmHashMethod = $model->getConfigData('hashmethod');
|
591 |
+
$szPassword = $model->getConfigData('password');
|
592 |
+
$szPreSharedKey = $model->getConfigData('presharedkey');
|
593 |
+
$szPaREQ = $this->getRequest()->getPost('PaREQ');
|
594 |
+
$szPaRES = $this->getRequest()->getPost('PaRes');
|
595 |
+
$nStatusCode = $this->getRequest()->getPost('StatusCode');
|
596 |
+
if(isset($szPaREQ))
|
597 |
+
{
|
598 |
+
// 3D Secure authentication required
|
599 |
+
self::_threeDSecureAuthenticationRequired($szPassword, $hmHashMethod, $szPreSharedKey);
|
600 |
+
}
|
601 |
+
else if(isset($szPaRES))
|
602 |
+
{
|
603 |
+
// 3D Secure post authentication
|
604 |
+
self::_postThreeDSecureAuthentication($szPassword, $hmHashMethod, $szPreSharedKey);
|
605 |
+
}
|
606 |
+
else
|
607 |
+
{
|
608 |
+
// payment complete
|
609 |
+
self::_paymentComplete($szPassword, $hmHashMethod, $szPreSharedKey);
|
610 |
+
}
|
611 |
+
}
|
612 |
+
catch(Exception $exc)
|
613 |
+
{
|
614 |
+
$error = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_260;
|
615 |
+
Mage::logException($exc);
|
616 |
+
if($nVersion >= 1410)
|
617 |
+
{
|
618 |
+
if($order)
|
619 |
+
{
|
620 |
+
$orderState = 'pending_payment';
|
621 |
+
$orderStatus = 'irc_failed_hosted_payment';
|
622 |
+
$order->setCustomerNote(Mage::helper('tpg')->__('Transparent Redirect Payment Failed'));
|
623 |
+
$order->setState($orderState, $orderStatus, $exc->getMessage(), false);
|
624 |
+
$order->save();
|
625 |
+
}
|
626 |
+
}
|
627 |
+
if($nVersion == 1324 || $nVersion == 1330)
|
628 |
+
{
|
629 |
+
Mage::getSingleton('checkout/session')->addError($error);
|
630 |
+
}
|
631 |
+
else
|
632 |
+
{
|
633 |
+
Mage::getSingleton('core/session')->addError($error);
|
634 |
+
}
|
635 |
+
$this->_clearSessionVariables();
|
636 |
+
$this->_redirect('checkout/onepage/failure');
|
637 |
+
}
|
638 |
+
}
|
639 |
+
|
640 |
+
private function _threeDSecureAuthenticationRequired($szPassword, $hmHashMethod, $szPreSharedKey)
|
641 |
+
{
|
642 |
+
$error = false;
|
643 |
+
$formVariables = array();
|
644 |
+
$formVariables['HashDigest'] = $this->getRequest()->getPost('HashDigest');
|
645 |
+
$formVariables['MerchantID'] = $this->getRequest()->getPost('MerchantID');
|
646 |
+
$formVariables['StatusCode'] = $this->getRequest()->getPost('StatusCode');
|
647 |
+
$formVariables['Message'] = $this->getRequest()->getPost('Message');
|
648 |
+
$formVariables['CrossReference'] = $this->getRequest()->getPost('CrossReference');
|
649 |
+
$formVariables['OrderID'] = $this->getRequest()->getPost('OrderID');
|
650 |
+
$formVariables['TransactionDateTime'] = $this->getRequest()->getPost('TransactionDateTime');
|
651 |
+
$formVariables['ACSURL'] = $this->getRequest()->getPost('ACSURL');
|
652 |
+
$formVariables['PaREQ'] = $this->getRequest()->getPost('PaREQ');
|
653 |
+
if(!TPG_PaymentFormHelper::compareThreeDSecureAuthenticationRequiredHashDigest($formVariables, $szPassword, $hmHashMethod, $szPreSharedKey))
|
654 |
+
{
|
655 |
+
$error = "The payment was rejected for a SECURITY reason: the incoming payment data was tampered with.";
|
656 |
+
Mage::log("The Transparent Redirect transaction couldn't be completed for the following reason: " . $error . " Form variables: " . print_r($formVariables, 1));
|
657 |
+
}
|
658 |
+
if($error)
|
659 |
+
{
|
660 |
+
$this->_clearSessionVariables();
|
661 |
+
//Mage::getSingleton('core/session')->addError($error);
|
662 |
+
//$this->_redirect('checkout/onepage/failure');
|
663 |
+
Mage::throwException($error);
|
664 |
+
}
|
665 |
+
else
|
666 |
+
{
|
667 |
+
// redirect to a secure 3DS authentication page
|
668 |
+
Mage::getSingleton('checkout/session')->setMd($formVariables['CrossReference'])
|
669 |
+
->setAcsurl($formVariables['ACSURL'])
|
670 |
+
->setPareq($formVariables['PaREQ'])
|
671 |
+
->setTermurl('tpg/payment/callbacktransparentredirect');
|
672 |
+
// redirect to a 3D Secure page
|
673 |
+
$this->_redirect('tpg/payment/threedsecure');
|
674 |
+
}
|
675 |
+
}
|
676 |
+
|
677 |
+
private function _postThreeDSecureAuthentication($szPassword, $hmHashMethod, $szPreSharedKey)
|
678 |
+
{
|
679 |
+
$error = false;
|
680 |
+
$formVariables = array();
|
681 |
+
$model = Mage::getModel('tpg/direct');
|
682 |
+
$szPaRES = $this->getRequest()->getPost('PaRes');
|
683 |
+
$szCrossReference = $this->getRequest()->getPost('MD');
|
684 |
+
$szMerchantID = $model->getConfigData('merchantid');
|
685 |
+
$szTransactionDateTime = date('Y-m-d H:i:s P');
|
686 |
+
$szCallbackURL = Mage::getUrl('tpg/payment/callbacktransparentredirect', array('_secure' => true));
|
687 |
+
$szHashDigest =
|
688 |
+
TPG_PaymentFormHelper::calculatePostThreeDSecureAuthenticationHashDigest(
|
689 |
+
$szMerchantID,
|
690 |
+
$szPassword,
|
691 |
+
$hmHashMethod,
|
692 |
+
$szPreSharedKey,
|
693 |
+
$szPaRES,
|
694 |
+
$szCrossReference,
|
695 |
+
$szTransactionDateTime,
|
696 |
+
$szCallbackURL
|
697 |
+
);
|
698 |
+
Mage::getSingleton('checkout/session')->setHashdigest($szHashDigest)
|
699 |
+
->setMerchantid($szMerchantID)
|
700 |
+
->setCrossreference($szCrossReference)
|
701 |
+
->setTransactiondatetime($szTransactionDateTime)
|
702 |
+
->setCallbackurl($szCallbackURL)
|
703 |
+
->setPares($szPaRES);
|
704 |
+
// redirect to the redirection bridge page
|
705 |
+
$this->_redirect('tpg/payment/redirect');
|
706 |
+
}
|
707 |
+
|
708 |
+
private function _paymentComplete($szPassword, $hmHashMethod, $szPreSharedKey)
|
709 |
+
{
|
710 |
+
$boError = false;
|
711 |
+
$formVariables = array();
|
712 |
+
$model = Mage::getModel('tpg/direct');
|
713 |
+
$szOrderID = $this->getRequest()->getPost('OrderID');
|
714 |
+
$checkout = Mage::getSingleton('checkout/type_onepage');
|
715 |
+
$session = Mage::getSingleton('checkout/session');
|
716 |
+
$szPaymentProcessorResponse = '';
|
717 |
+
$order = Mage::getModel('sales/order');
|
718 |
+
$order->load(Mage::getSingleton('checkout/session')->getLastOrderId());
|
719 |
+
$nVersion = Mage::getModel('tpg/direct')->getVersion();
|
720 |
+
$boCartIsEmpty = false;
|
721 |
+
try
|
722 |
+
{
|
723 |
+
$formVariables['HashDigest'] = $this->getRequest()->getPost('HashDigest');
|
724 |
+
$formVariables['MerchantID'] = $this->getRequest()->getPost('MerchantID');
|
725 |
+
$formVariables['StatusCode'] = $this->getRequest()->getPost('StatusCode');
|
726 |
+
$formVariables['Message'] = $this->getRequest()->getPost('Message');
|
727 |
+
$formVariables['PreviousStatusCode'] = $this->getRequest()->getPost('PreviousStatusCode');
|
728 |
+
$formVariables['PreviousMessage'] = $this->getRequest()->getPost('PreviousMessage');
|
729 |
+
$formVariables['CrossReference'] = $this->getRequest()->getPost('CrossReference');
|
730 |
+
$formVariables['AddressNumericCheckResult'] = $this->getRequest()->getPost('AddressNumericCheckResult');
|
731 |
+
$formVariables['PostCodeCheckResult'] = $this->getRequest()->getPost('PostCodeCheckResult');
|
732 |
+
$formVariables['CV2CheckResult'] = $this->getRequest()->getPost('CV2CheckResult');
|
733 |
+
$formVariables['ThreeDSecureAuthenticationCheckResult'] = $this->getRequest()->getPost('ThreeDSecureAuthenticationCheckResult');
|
734 |
+
$formVariables['CardType'] = $this->getRequest()->getPost('CardType');
|
735 |
+
$formVariables['CardClass'] = $this->getRequest()->getPost('CardClass');
|
736 |
+
$formVariables['CardIssuer'] = $this->getRequest()->getPost('CardIssuer');
|
737 |
+
$formVariables['CardIssuerCountryCode'] = $this->getRequest()->getPost('CardIssuerCountryCode');
|
738 |
+
$formVariables['Amount'] = $this->getRequest()->getPost('Amount');
|
739 |
+
$formVariables['CurrencyCode'] = $this->getRequest()->getPost('CurrencyCode');
|
740 |
+
$formVariables['OrderID'] = $this->getRequest()->getPost('OrderID');
|
741 |
+
$formVariables['TransactionType'] = $this->getRequest()->getPost('TransactionType');
|
742 |
+
$formVariables['TransactionDateTime'] = $this->getRequest()->getPost('TransactionDateTime');
|
743 |
+
$formVariables['OrderDescription'] = $this->getRequest()->getPost('OrderDescription');
|
744 |
+
$formVariables['Address1'] = $this->getRequest()->getPost('Address1');
|
745 |
+
$formVariables['Address2'] = $this->getRequest()->getPost('Address2');
|
746 |
+
$formVariables['Address3'] = $this->getRequest()->getPost('Address3');
|
747 |
+
$formVariables['Address4'] = $this->getRequest()->getPost('Address4');
|
748 |
+
$formVariables['City'] = $this->getRequest()->getPost('City');
|
749 |
+
$formVariables['State'] = $this->getRequest()->getPost('State');
|
750 |
+
$formVariables['PostCode'] = $this->getRequest()->getPost('PostCode');
|
751 |
+
$formVariables['CountryCode'] = $this->getRequest()->getPost('CountryCode');
|
752 |
+
$formVariables['EmailAddress'] = $this->getRequest()->getPost('EmailAddress');
|
753 |
+
$formVariables['PhoneNumber'] = $this->getRequest()->getPost('PhoneNumber');
|
754 |
+
if(!TPG_PaymentFormHelper::comparePaymentCompleteHashDigest($formVariables, $szPassword, $hmHashMethod, $szPreSharedKey))
|
755 |
+
{
|
756 |
+
$boError = true;
|
757 |
+
$szNotificationMessage = "The payment was rejected for a SECURITY reason: the incoming payment data was tampered with.";
|
758 |
+
Mage::log("The Transparent Redirect transaction couldn't be completed for the following reason: [" . $szNotificationMessage . "] Form variables: " . print_r($formVariables, 1));
|
759 |
+
}
|
760 |
+
else
|
761 |
+
{
|
762 |
+
$payVectorOrderId = Mage::getSingleton('checkout/session')->getTpgOrderId();
|
763 |
+
$szOrderStatus = $order->getStatus();
|
764 |
+
if($szOrderStatus != 'irc_paid' &&
|
765 |
+
$szOrderStatus != 'irc_preauth'
|
766 |
+
)
|
767 |
+
{
|
768 |
+
$checkout->saveOrderAfterRedirectedPaymentAction(
|
769 |
+
false,
|
770 |
+
$this->getRequest()->getPost('StatusCode'),
|
771 |
+
$this->getRequest()->getPost('Message'),
|
772 |
+
$this->getRequest()->getPost('PreviousStatusCode'),
|
773 |
+
$this->getRequest()->getPost('PreviousMessage'),
|
774 |
+
$this->getRequest()->getPost('OrderID'),
|
775 |
+
$this->getRequest()->getPost('CrossReference')
|
776 |
+
);
|
777 |
+
}
|
778 |
+
else
|
779 |
+
{
|
780 |
+
$boCartIsEmpty = true;
|
781 |
+
$szPaymentProcessorResponse = null;
|
782 |
+
// chek the StatusCode as the customer might have just clicked the BACK button and re-submitted the card details
|
783 |
+
// which can cause a charge back to the merchant
|
784 |
+
$szStatusCode = $this->getRequest()->getPost('StatusCode');
|
785 |
+
$szMessage = $this->getRequest()->getPost('Message');
|
786 |
+
$szPreviousStatusCode = $this->getRequest()->getPost('PreviousStatusCode');
|
787 |
+
$szPreviousMessage = $this->getRequest()->getPost('PreviousMessage');
|
788 |
+
$szOrderID = $this->getRequest()->getPost('OrderID');
|
789 |
+
$this->_fixBackButtonBug($szOrderID, $szStatusCode, $szMessage, $szPreviousStatusCode, $szPreviousMessage);
|
790 |
+
}
|
791 |
+
}
|
792 |
+
}
|
793 |
+
catch(Exception $exc)
|
794 |
+
{
|
795 |
+
$boError = true;
|
796 |
+
$szNotificationMessage = PayVector_Tpg_Model_Common_GlobalErrors::ERROR_183;
|
797 |
+
Mage::logException($exc);
|
798 |
+
}
|
799 |
+
$szPaymentProcessorResponse = $session->getPaymentprocessorresponse();
|
800 |
+
if($boError == true)
|
801 |
+
{
|
802 |
+
if($szPaymentProcessorResponse != null &&
|
803 |
+
$szPaymentProcessorResponse != ''
|
804 |
+
)
|
805 |
+
{
|
806 |
+
$szNotificationMessage = $szNotificationMessage . '<br/>' . $szPaymentProcessorResponse;
|
807 |
+
}
|
808 |
+
$model->setPaymentAdditionalInformation($order->getPayment(), $this->getRequest()->getPost('CrossReference'));
|
809 |
+
//$order->getPayment()->setTransactionId($this->getRequest()->getPost('CrossReference'));
|
810 |
+
if($nVersion >= 1410)
|
811 |
+
{
|
812 |
+
if($order)
|
813 |
+
{
|
814 |
+
$orderState = 'pending_payment';
|
815 |
+
$orderStatus = 'irc_failed_hosted_payment';
|
816 |
+
$order->setCustomerNote(Mage::helper('tpg')->__('Transparent Redirect Payment Failed'));
|
817 |
+
$order->setState($orderState, $orderStatus, $szPaymentProcessorResponse, false);
|
818 |
+
}
|
819 |
+
}
|
820 |
+
$order->save();
|
821 |
+
if($nVersion == 1324 || $nVersion == 1330)
|
822 |
+
{
|
823 |
+
Mage::getSingleton('checkout/session')->addError($szNotificationMessage);
|
824 |
+
}
|
825 |
+
else
|
826 |
+
{
|
827 |
+
Mage::getSingleton('core/session')->addError($szNotificationMessage);
|
828 |
+
}
|
829 |
+
$this->_clearSessionVariables();
|
830 |
+
$this->_redirect('checkout/onepage/failure');
|
831 |
+
}
|
832 |
+
else
|
833 |
+
{
|
834 |
+
// set the quote as inactive after back from paypal
|
835 |
+
Mage::getSingleton('checkout/session')->getQuote()->setIsActive(false)->save();
|
836 |
+
if($boCartIsEmpty == false)
|
837 |
+
{
|
838 |
+
// send confirmation email to customer
|
839 |
+
if($order->getId())
|
840 |
+
{
|
841 |
+
$order->sendNewOrderEmail();
|
842 |
+
}
|
843 |
+
if($nVersion >= 1410)
|
844 |
+
{
|
845 |
+
// TODO : no need to remove stock item as the system will do it in 1.6 version
|
846 |
+
if($nVersion < 1600)
|
847 |
+
{
|
848 |
+
$model->subtractOrderedItemsFromStock($order);
|
849 |
+
}
|
850 |
+
$this->_updateInvoices($order, $szPaymentProcessorResponse);
|
851 |
+
}
|
852 |
+
if($nVersion != 1324 && $nVersion != 1330)
|
853 |
+
{
|
854 |
+
if($szPaymentProcessorResponse != '')
|
855 |
+
{
|
856 |
+
Mage::getSingleton('core/session')->addSuccess($szPaymentProcessorResponse);
|
857 |
+
}
|
858 |
+
}
|
859 |
+
}
|
860 |
+
$this->_redirect('checkout/onepage/success', array('_secure' => true));
|
861 |
+
}
|
862 |
+
}
|
863 |
+
|
864 |
+
private function _clearSessionVariables()
|
865 |
+
{
|
866 |
+
// clear all the custom session variables used in the payment module in case of a failed payment
|
867 |
+
Mage::getSingleton('checkout/session')->setHashdigest(null)
|
868 |
+
->setMerchantid(null)
|
869 |
+
->setCrossreference(null)
|
870 |
+
->setTransactiondatetime(null)
|
871 |
+
->setCallbackurl(null)
|
872 |
+
->setPareq(null)
|
873 |
+
->setPares(null)
|
874 |
+
->setMd(null)
|
875 |
+
->setAcsurl(null)
|
876 |
+
->setTermurl(null)
|
877 |
+
->setThreedsecurerequired(null)
|
878 |
+
->setIshostedpayment(null)
|
879 |
+
->setStatuscode(null)
|
880 |
+
->setMessage(null)
|
881 |
+
->setPreviousstatuscode(null)
|
882 |
+
->setPreviousmessage(null)
|
883 |
+
->setOrderid(null)
|
884 |
+
->setRedirectedPayment(null);
|
885 |
+
// do not clear the order id as after the a failed payment the customer still might want to repeat the payment attempt
|
886 |
+
//->setTpgOrderId(null);
|
887 |
+
}
|
888 |
+
|
889 |
+
/**
|
890 |
+
* Set the invoice status to "Paid" after a successful payment
|
891 |
+
*
|
892 |
+
* @param Mage_Core_Model_Abstract $order
|
893 |
+
* @param string $message
|
894 |
+
*/
|
895 |
+
private function _updateInvoices($order, $message)
|
896 |
+
{
|
897 |
+
$invoices = $order->getInvoiceCollection();
|
898 |
+
$state = Mage_Sales_Model_Order::STATE_PROCESSING;
|
899 |
+
$payment = $order->getPayment();
|
900 |
+
$session = Mage::getSingleton('checkout/session');
|
901 |
+
$transactionId = $payment->getLastTransId();
|
902 |
+
$transaction = $payment->getTransaction($transactionId);
|
903 |
+
$transactionType = $transaction->getTxnType();
|
904 |
+
|
905 |
+
if($session->getNewCrossReference())
|
906 |
+
{
|
907 |
+
$szNewCrossReference = $session->getNewCrossReference();
|
908 |
+
$value = $transaction->setTxnId($szNewCrossReference);
|
909 |
+
$transaction->save();
|
910 |
+
$payment->setLastTransId($szNewCrossReference);
|
911 |
+
$session->setNewCrossReference(null);
|
912 |
+
}
|
913 |
+
foreach($invoices as $invoice)
|
914 |
+
{
|
915 |
+
// set the invoice state to be "Paid"
|
916 |
+
$invoice->pay()->save();
|
917 |
+
}
|
918 |
+
// add a comment to the order comments
|
919 |
+
if($transactionType == 'authorization')
|
920 |
+
{
|
921 |
+
$order->setState($state, 'irc_preauth', $message, true);
|
922 |
+
}
|
923 |
+
else if($transactionType == 'capture')
|
924 |
+
{
|
925 |
+
$order->setState($state, 'irc_paid', $message, true);
|
926 |
+
}
|
927 |
+
else
|
928 |
+
{
|
929 |
+
Mage::throwException('invalid transaction type [' . $transactionType . '] for invoice updating');
|
930 |
+
}
|
931 |
+
$order->save();
|
932 |
+
}
|
933 |
+
|
934 |
+
private function _fixBackButtonBug($szOrderID, $szStatusCode, $szMessage, $szPreviousStatusCode, $szPreviousMessage)
|
935 |
+
{
|
936 |
+
// check the payment type as hitting the BACK button in the browser for Transparent Redirect payment method only redirects back the client side result and
|
937 |
+
// not letting the customer to change the card details or re-submitting the payment
|
938 |
+
$mode = Mage::getModel('tpg/direct')->getConfigData('mode');
|
939 |
+
$boIgnoreDuplicateMessage = false;
|
940 |
+
if($mode == PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_TRANSPARENT_REDIRECT)
|
941 |
+
{
|
942 |
+
$boIgnoreDuplicateMessage = true;
|
943 |
+
}
|
944 |
+
if($boIgnoreDuplicateMessage)
|
945 |
+
{
|
946 |
+
Mage::getSingleton('core/session')->addError(
|
947 |
+
'ERROR - Order ID: ' .
|
948 |
+
$szOrderID .
|
949 |
+
' has already been successfully paid and processed. Payment Processor Response: ' .
|
950 |
+
$szMessage .
|
951 |
+
'. <br/> IMPORTANT: please do not attempt to click the back button in your browser as it could cause duplicate charges to your bank account.'
|
952 |
+
);
|
953 |
+
}
|
954 |
+
else
|
955 |
+
{
|
956 |
+
if($szStatusCode == '0')
|
957 |
+
{
|
958 |
+
Mage::getSingleton('core/session')->addError(
|
959 |
+
'ERROR - Duplicate payment for Order ID: ' .
|
960 |
+
$szOrderID .
|
961 |
+
' with Payment Processor Response: ' .
|
962 |
+
$szMessage .
|
963 |
+
'. This order has already been successfully paid and processed. Please contact us immediately to avoid duplicate charges to your bank account.'
|
964 |
+
);
|
965 |
+
}
|
966 |
+
else if($szStatusCode == '20')
|
967 |
+
{
|
968 |
+
Mage::getSingleton('core/session')->addError(
|
969 |
+
'Duplicate payment attempted for Order ID: ' .
|
970 |
+
$szOrderID .
|
971 |
+
'. Previous Payment Processor Response: ' .
|
972 |
+
$szPreviousMessage .
|
973 |
+
'. This order has already been successfully paid and processed. </br/>IMPORTANT: please do not attempt to click the back button in your browser and re-submit the payment for this order as it could cause duplicate charges to your bank account.'
|
974 |
+
);
|
975 |
+
}
|
976 |
+
else
|
977 |
+
{
|
978 |
+
Mage::getSingleton('core/session')->addError(
|
979 |
+
'ERROR: Order ID: ' .
|
980 |
+
$szOrderID .
|
981 |
+
' has already been successfully paid and processed. Payment Processor Response: ' .
|
982 |
+
$szMessage .
|
983 |
+
'. Please contact us immediately to avoid duplicate charges to your bank account.'
|
984 |
+
);
|
985 |
+
}
|
986 |
+
}
|
987 |
+
}
|
988 |
+
|
989 |
+
/**
|
990 |
+
* Refund actioned when the user clicks the VOID button in the admin backend
|
991 |
+
*
|
992 |
+
* @return Zend_Controller_Response_Abstract
|
993 |
+
*/
|
994 |
+
public function voidAction()
|
995 |
+
{
|
996 |
+
$model = Mage::getSingleton('tpg/direct');
|
997 |
+
$parameters = $this->getRequest()->getParams();
|
998 |
+
$szOrderID = $parameters['OrderID'];
|
999 |
+
$szCrossReference = $parameters['CrossReference'];
|
1000 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId((int) $szOrderID);
|
1001 |
+
$payment = $order->getPayment();
|
1002 |
+
$result = Mage::getModel('tpg/direct')->ircVoid($payment);
|
1003 |
+
if($result == "0")
|
1004 |
+
{
|
1005 |
+
$model->addOrderedItemsToStock($order);
|
1006 |
+
}
|
1007 |
+
|
1008 |
+
return $this->getResponse()->setBody($result);
|
1009 |
+
}
|
1010 |
+
|
1011 |
+
/**
|
1012 |
+
* Refund actioned when the user clicks the COLLECT button in the admin backend
|
1013 |
+
*
|
1014 |
+
* @return Zend_Controller_Response_Abstract
|
1015 |
+
*/
|
1016 |
+
public function collectionAction()
|
1017 |
+
{
|
1018 |
+
$parameters = $this->getRequest()->getParams();
|
1019 |
+
$szOrderID = $parameters['OrderID'];
|
1020 |
+
$szCrossReference = $parameters['CrossReference'];
|
1021 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId((int) $szOrderID);
|
1022 |
+
$payment = $order->getPayment();
|
1023 |
+
$result = Mage::getModel('tpg/direct')->ircCollection($payment, $szOrderID, $szCrossReference);
|
1024 |
+
|
1025 |
+
return $this->getResponse()->setBody($result);
|
1026 |
+
}
|
1027 |
+
}
|
app/code/local/PayVector/Tpg/etc/config.xml
ADDED
@@ -0,0 +1,138 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<PayVector_Tpg>
|
5 |
+
<version>0.1.0</version>
|
6 |
+
</PayVector_Tpg>
|
7 |
+
</modules>
|
8 |
+
|
9 |
+
<global>
|
10 |
+
|
11 |
+
<blocks>
|
12 |
+
<tpg>
|
13 |
+
<class>PayVector_Tpg_Block</class>
|
14 |
+
</tpg>
|
15 |
+
<payment>
|
16 |
+
<rewrite>
|
17 |
+
<info_cc>PayVector_Tpg_Block_Payment_Info_Cc</info_cc>
|
18 |
+
</rewrite>
|
19 |
+
</payment>
|
20 |
+
<adminhtml>
|
21 |
+
<rewrite>
|
22 |
+
<sales_order_payment>PayVector_Tpg_Block_Adminhtml_Sales_Order_Payment</sales_order_payment>
|
23 |
+
</rewrite>
|
24 |
+
</adminhtml>
|
25 |
+
</blocks>
|
26 |
+
|
27 |
+
<models>
|
28 |
+
<tpg>
|
29 |
+
<class>PayVector_Tpg_Model</class>
|
30 |
+
<resourceModel>tpg</resourceModel>
|
31 |
+
</tpg>
|
32 |
+
<tpg>
|
33 |
+
<class>PayVector_Tpg_Model</class>
|
34 |
+
<entities>
|
35 |
+
<gatewayentrypoints>
|
36 |
+
<table>payvector_gatewayentrypoints</table>
|
37 |
+
</gatewayentrypoints>
|
38 |
+
</entities>
|
39 |
+
</tpg>
|
40 |
+
</models>
|
41 |
+
|
42 |
+
<resources>
|
43 |
+
<tpg_setup>
|
44 |
+
<setup>
|
45 |
+
<module>PayVector_Tpg</module>
|
46 |
+
<class>PayVector_Tpg_Model_Resource_Eav_Mysql4_Setup</class>
|
47 |
+
<class>PayVector_Tpg_Model_Resource_Setup</class>
|
48 |
+
</setup>
|
49 |
+
<connection>
|
50 |
+
<use>core_setup</use>
|
51 |
+
</connection>
|
52 |
+
</tpg_setup>
|
53 |
+
<tpg_write>
|
54 |
+
<connection>
|
55 |
+
<use>core_write</use>
|
56 |
+
</connection>
|
57 |
+
</tpg_write>
|
58 |
+
<tpg_read>
|
59 |
+
<connection>
|
60 |
+
<use>core_read</use>
|
61 |
+
</connection>
|
62 |
+
</tpg_read>
|
63 |
+
</resources>
|
64 |
+
|
65 |
+
<!-- Define the helper class type -->
|
66 |
+
<helpers>
|
67 |
+
<Tpg>
|
68 |
+
<class>PayVector_Tpg_Helper</class>
|
69 |
+
</Tpg>
|
70 |
+
<tpg>
|
71 |
+
<rewrite>
|
72 |
+
<data>PayVector_Tpg_Helper_Data</data>
|
73 |
+
</rewrite>
|
74 |
+
</tpg>
|
75 |
+
</helpers>
|
76 |
+
</global>
|
77 |
+
|
78 |
+
<adminhtml>
|
79 |
+
<layout>
|
80 |
+
<updates>
|
81 |
+
<tpg>
|
82 |
+
<file>tpg.xml</file>
|
83 |
+
</tpg>
|
84 |
+
</updates>
|
85 |
+
</layout>
|
86 |
+
</adminhtml>
|
87 |
+
<frontend>
|
88 |
+
<secure_url>
|
89 |
+
<tpg>/tpg/standard</tpg>
|
90 |
+
</secure_url>
|
91 |
+
<routers>
|
92 |
+
<tpg>
|
93 |
+
<use>standard</use>
|
94 |
+
<args>
|
95 |
+
<module>PayVector_Tpg</module>
|
96 |
+
<frontName>tpg</frontName>
|
97 |
+
</args>
|
98 |
+
</tpg>
|
99 |
+
</routers>
|
100 |
+
<translate>
|
101 |
+
<modules>
|
102 |
+
<PayVector_Tpg>
|
103 |
+
<files>
|
104 |
+
<default>PayVector_Tpg.csv</default>
|
105 |
+
</files>
|
106 |
+
</PayVector_Tpg>
|
107 |
+
</modules>
|
108 |
+
</translate>
|
109 |
+
</frontend>
|
110 |
+
|
111 |
+
<!-- declare default configuration values for this module -->
|
112 |
+
<default>
|
113 |
+
<payment>
|
114 |
+
<tpg>
|
115 |
+
<active>1</active>
|
116 |
+
<model>tpg/direct</model>
|
117 |
+
<title>PayVector Corporation</title>
|
118 |
+
<hashmethod>sha1</hashmethod>
|
119 |
+
<paymentprocessordomain>payvector.net</paymentprocessordomain>
|
120 |
+
<paymentprocessorport>443</paymentprocessorport>
|
121 |
+
<hostedpaymentactionurl>https://mms.payvector.net/Pages/PublicPages/PaymentForm.aspx</hostedpaymentactionurl>
|
122 |
+
<transparentredirectactionurl>https://mms.payvector.net/Pages/PublicPages/TransparentRedirect.aspx</transparentredirectactionurl>
|
123 |
+
<serverpullresultactionurl>https://mms.payvector.net/Pages/PublicPages/PaymentFormResultHandler.ashx</serverpullresultactionurl>
|
124 |
+
<payment_action>capture</payment_action>
|
125 |
+
<mode>direct</mode>
|
126 |
+
<cv2mandatory>1</cv2mandatory>
|
127 |
+
<address1mandatory>1</address1mandatory>
|
128 |
+
<citymandatory>1</citymandatory>
|
129 |
+
<statemandatory>1</statemandatory>
|
130 |
+
<postcodemandatory>1</postcodemandatory>
|
131 |
+
<countrymandatory>1</countrymandatory>
|
132 |
+
<resultdeliverymethod>SERVER_PULL</resultdeliverymethod>
|
133 |
+
<allowspecific>0</allowspecific>
|
134 |
+
<customstockmanagementenabled>1</customstockmanagementenabled>
|
135 |
+
</tpg>
|
136 |
+
</payment>
|
137 |
+
</default>
|
138 |
+
</config>
|
app/code/local/PayVector/Tpg/etc/system.xml
ADDED
@@ -0,0 +1,246 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<sections>
|
4 |
+
<payment>
|
5 |
+
<groups>
|
6 |
+
<tpg translate="label">
|
7 |
+
<label>PayVector Corporation</label>
|
8 |
+
<comment>
|
9 |
+
<![CDATA[
|
10 |
+
<div style="color:Blue;font-weight:bold;">
|
11 |
+
Merchant Management System (MMS) <a href="https://mms.payvector.net" target="_blank">login</a>
|
12 |
+
</div>
|
13 |
+
]]>
|
14 |
+
</comment>
|
15 |
+
<sort_order>670</sort_order>
|
16 |
+
<show_in_default>1</show_in_default>
|
17 |
+
<show_in_website>1</show_in_website>
|
18 |
+
<show_in_store>1</show_in_store>
|
19 |
+
<fields>
|
20 |
+
<title translate="label">
|
21 |
+
<label>Title</label>
|
22 |
+
<frontend_type>text</frontend_type>
|
23 |
+
<sort_order>10</sort_order>
|
24 |
+
<show_in_default>1</show_in_default>
|
25 |
+
<show_in_website>1</show_in_website>
|
26 |
+
<show_in_store>0</show_in_store>
|
27 |
+
</title>
|
28 |
+
<active translate="label">
|
29 |
+
<label>Enabled</label>
|
30 |
+
<sort_order>20</sort_order>
|
31 |
+
<frontend_type>select</frontend_type>
|
32 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
33 |
+
<show_in_default>1</show_in_default>
|
34 |
+
<show_in_website>1</show_in_website>
|
35 |
+
<show_in_store>0</show_in_store>
|
36 |
+
</active>
|
37 |
+
<debug translate="label">
|
38 |
+
<label>Debug</label>
|
39 |
+
<frontend_type>select</frontend_type>
|
40 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
41 |
+
<sort_order>30</sort_order>
|
42 |
+
<show_in_default>1</show_in_default>
|
43 |
+
<show_in_website>1</show_in_website>
|
44 |
+
<show_in_store>0</show_in_store>
|
45 |
+
</debug>
|
46 |
+
<order_status translate="label">
|
47 |
+
<label>New order status</label>
|
48 |
+
<sort_order>40</sort_order>
|
49 |
+
<frontend_type>select</frontend_type>
|
50 |
+
<source_model>tpg/source_orderStatus</source_model>
|
51 |
+
<sort_order>50</sort_order>
|
52 |
+
<show_in_default>1</show_in_default>
|
53 |
+
<show_in_website>1</show_in_website>
|
54 |
+
<show_in_store>0</show_in_store>
|
55 |
+
</order_status>
|
56 |
+
<merchantid translate="label">
|
57 |
+
<label>Merchant ID</label>
|
58 |
+
<frontend_type>text</frontend_type>
|
59 |
+
<sort_order>60</sort_order>
|
60 |
+
<show_in_default>1</show_in_default>
|
61 |
+
<show_in_website>1</show_in_website>
|
62 |
+
<show_in_store>0</show_in_store>
|
63 |
+
</merchantid>
|
64 |
+
<password translate="label">
|
65 |
+
<label>Password</label>
|
66 |
+
<frontend_type>password</frontend_type>
|
67 |
+
<sort_order>70</sort_order>
|
68 |
+
<show_in_default>1</show_in_default>
|
69 |
+
<show_in_website>1</show_in_website>
|
70 |
+
<show_in_store>0</show_in_store>
|
71 |
+
</password>
|
72 |
+
<presharedkey translate="label">
|
73 |
+
<label>Pre Shared Key</label>
|
74 |
+
<frontend_type>text</frontend_type>
|
75 |
+
<sort_order>80</sort_order>
|
76 |
+
<show_in_default>1</show_in_default>
|
77 |
+
<show_in_website>1</show_in_website>
|
78 |
+
<show_in_store>0</show_in_store>
|
79 |
+
</presharedkey>
|
80 |
+
<hashmethod translate="label">
|
81 |
+
<label>Hash Method</label>
|
82 |
+
<frontend_type>select</frontend_type>
|
83 |
+
<sort_order>81</sort_order>
|
84 |
+
<source_model>tpg/source_hashMethod</source_model>
|
85 |
+
<show_in_default>1</show_in_default>
|
86 |
+
<show_in_website>1</show_in_website>
|
87 |
+
<show_in_store>0</show_in_store>
|
88 |
+
</hashmethod>
|
89 |
+
<paymentprocessordomain translate="label">
|
90 |
+
<label>Payment Processor Domain</label>
|
91 |
+
<frontend_type>label</frontend_type>
|
92 |
+
<sort_order>100</sort_order>
|
93 |
+
<show_in_default>0</show_in_default>
|
94 |
+
<show_in_website>0</show_in_website>
|
95 |
+
<show_in_store>0</show_in_store>
|
96 |
+
</paymentprocessordomain>
|
97 |
+
<paymentprocessorport translate="label">
|
98 |
+
<label>Payment Processor Port</label>
|
99 |
+
<frontend_type>label</frontend_type>
|
100 |
+
<sort_order>110</sort_order>
|
101 |
+
<show_in_default>0</show_in_default>
|
102 |
+
<show_in_website>0</show_in_website>
|
103 |
+
<show_in_store>0</show_in_store>
|
104 |
+
</paymentprocessorport>
|
105 |
+
<payment_action translate="label">
|
106 |
+
<label>Payment Action</label>
|
107 |
+
<sort_order>120</sort_order>
|
108 |
+
<frontend_type>select</frontend_type>
|
109 |
+
<source_model>tpg/source_paymentAction</source_model>
|
110 |
+
<show_in_default>1</show_in_default>
|
111 |
+
<show_in_website>1</show_in_website>
|
112 |
+
<show_in_store>0</show_in_store>
|
113 |
+
</payment_action>
|
114 |
+
<mode translate="label">
|
115 |
+
<label>Payment Integration Method</label>
|
116 |
+
<sort_order>130</sort_order>
|
117 |
+
<frontend_type>select</frontend_type>
|
118 |
+
<source_model>tpg/source_paymentMode</source_model>
|
119 |
+
<show_in_default>1</show_in_default>
|
120 |
+
<show_in_website>1</show_in_website>
|
121 |
+
<show_in_store>0</show_in_store>
|
122 |
+
</mode>
|
123 |
+
<hostedpaymentactionurl>
|
124 |
+
<label>Hosted Payment Form Action URL</label>
|
125 |
+
<frontend_type>label</frontend_type>
|
126 |
+
<sort_order>131</sort_order>
|
127 |
+
<show_in_default>0</show_in_default>
|
128 |
+
<show_in_website>0</show_in_website>
|
129 |
+
<show_in_store>0</show_in_store>
|
130 |
+
</hostedpaymentactionurl>
|
131 |
+
<resultdeliverymethod>
|
132 |
+
<label>Result Delivery Method</label>
|
133 |
+
<sort_order>200</sort_order>
|
134 |
+
<frontend_type>select</frontend_type>
|
135 |
+
<source_model>tpg/source_resultDeliveryMethod</source_model>
|
136 |
+
<show_in_default>1</show_in_default>
|
137 |
+
<show_in_website>1</show_in_website>
|
138 |
+
<show_in_store>0</show_in_store>
|
139 |
+
<comment>
|
140 |
+
<![CDATA[<strong>Please note</strong>: The above value is only applicable to Hosted Payment Form payment mode]]>
|
141 |
+
</comment>
|
142 |
+
</resultdeliverymethod>
|
143 |
+
<!-- <transparentredirectactionurl>
|
144 |
+
<label>Transparent Redirect Action URL</label>
|
145 |
+
<frontend_type>label</frontend_type>
|
146 |
+
<sort_order>132</sort_order>
|
147 |
+
<show_in_default>1</show_in_default>
|
148 |
+
<show_in_website>1</show_in_website>
|
149 |
+
<show_in_store>0</show_in_store>
|
150 |
+
</transparentredirectactionurl> -->
|
151 |
+
<serverpullresultactionurl>
|
152 |
+
<label>Server Pull Result Action URL</label>
|
153 |
+
<frontend_type>label</frontend_type>
|
154 |
+
<sort_order>133</sort_order>
|
155 |
+
<show_in_default>0</show_in_default>
|
156 |
+
<show_in_website>0</show_in_website>
|
157 |
+
<show_in_store>0</show_in_store>
|
158 |
+
</serverpullresultactionurl>
|
159 |
+
<cv2mandatory>
|
160 |
+
<label>CV2 Mandatory <![CDATA[<span style="color:Red;font-weight:bold;font-size:12px;">(ON FORM ONLY)</span>]]></label>
|
161 |
+
<sort_order>140</sort_order>
|
162 |
+
<frontend_type>select</frontend_type>
|
163 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
164 |
+
<show_in_default>1</show_in_default>
|
165 |
+
<show_in_website>1</show_in_website>
|
166 |
+
<show_in_store>0</show_in_store>
|
167 |
+
<comment><![CDATA[<strong>Please note HERE</strong>: The above value is only applicable to Hosted Payment Form payment mode. If you want to change the CV2 behaviour, please log into the <span style="font-weight:bold;color:Blue;">MMS</span> and update your Account Settings]]></comment>
|
168 |
+
</cv2mandatory>
|
169 |
+
<address1mandatory>
|
170 |
+
<label>Address1 Mandatory</label>
|
171 |
+
<sort_order>150</sort_order>
|
172 |
+
<frontend_type>select</frontend_type>
|
173 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
174 |
+
<show_in_default>1</show_in_default>
|
175 |
+
<show_in_website>1</show_in_website>
|
176 |
+
<show_in_store>0</show_in_store>
|
177 |
+
<comment>
|
178 |
+
<![CDATA[<strong>Please note</strong>: The above value is only applicable to Hosted Payment Form payment mode]]>
|
179 |
+
</comment>
|
180 |
+
</address1mandatory>
|
181 |
+
<citymandatory>
|
182 |
+
<label>City Mandatory</label>
|
183 |
+
<sort_order>160</sort_order>
|
184 |
+
<frontend_type>select</frontend_type>
|
185 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
186 |
+
<show_in_default>1</show_in_default>
|
187 |
+
<show_in_website>1</show_in_website>
|
188 |
+
<show_in_store>0</show_in_store>
|
189 |
+
<comment>
|
190 |
+
<![CDATA[<strong>Please note</strong>: The above value is only applicable to Hosted Payment Form payment mode]]>
|
191 |
+
</comment>
|
192 |
+
</citymandatory>
|
193 |
+
<postcodemandatory>
|
194 |
+
<label>PostCode Mandatory</label>
|
195 |
+
<sort_order>170</sort_order>
|
196 |
+
<frontend_type>select</frontend_type>
|
197 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
198 |
+
<show_in_default>1</show_in_default>
|
199 |
+
<show_in_website>1</show_in_website>
|
200 |
+
<show_in_store>0</show_in_store>
|
201 |
+
<comment>
|
202 |
+
<![CDATA[<strong>Please note</strong>: The above value is only applicable to Hosted Payment Form payment mode]]>
|
203 |
+
</comment>
|
204 |
+
</postcodemandatory>
|
205 |
+
<statemandatory>
|
206 |
+
<label>State Mandatory</label>
|
207 |
+
<sort_order>180</sort_order>
|
208 |
+
<frontend_type>select</frontend_type>
|
209 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
210 |
+
<show_in_default>1</show_in_default>
|
211 |
+
<show_in_website>1</show_in_website>
|
212 |
+
<show_in_store>0</show_in_store>
|
213 |
+
<comment>
|
214 |
+
<![CDATA[<strong>Please note</strong>: The above value is only applicable to Hosted Payment Form payment mode]]>
|
215 |
+
</comment>
|
216 |
+
</statemandatory>
|
217 |
+
<countrymandatory>
|
218 |
+
<label>Country Mandatory</label>
|
219 |
+
<sort_order>190</sort_order>
|
220 |
+
<frontend_type>select</frontend_type>
|
221 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
222 |
+
<show_in_default>1</show_in_default>
|
223 |
+
<show_in_website>1</show_in_website>
|
224 |
+
<show_in_store>0</show_in_store>
|
225 |
+
<comment>
|
226 |
+
<![CDATA[<strong>Please note</strong>: The above value is only applicable to Hosted Payment Form payment mode]]>
|
227 |
+
</comment>
|
228 |
+
</countrymandatory>
|
229 |
+
<customstockmanagementenabled>
|
230 |
+
<label>Custom Stock Management Enabled</label>
|
231 |
+
<sort_order>210</sort_order>
|
232 |
+
<frontend_type>select</frontend_type>
|
233 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
234 |
+
<show_in_default>1</show_in_default>
|
235 |
+
<show_in_website>1</show_in_website>
|
236 |
+
<show_in_store>0</show_in_store>
|
237 |
+
<comment>
|
238 |
+
<![CDATA[<strong>Please note</strong>: The above setting is only applicable to Magento version 1.4.1.0 and above]]>
|
239 |
+
</comment>
|
240 |
+
</customstockmanagementenabled>
|
241 |
+
</fields>
|
242 |
+
</tpg>
|
243 |
+
</groups>
|
244 |
+
</payment>
|
245 |
+
</sections>
|
246 |
+
</config>
|
app/code/local/PayVector/Tpg/sql/tpg_setup/install-0.1.0.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
$installer->startSetup();
|
5 |
+
|
6 |
+
$table = $installer->getConnection()->newTable($installer->getTable('tpg/gatewayentrypoints'))
|
7 |
+
->addColumn('gateway_entry_point_object', Varien_Db_Ddl_Table::TYPE_TEXT, null, array(
|
8 |
+
'nullable' => false,
|
9 |
+
'primary' => true
|
10 |
+
))
|
11 |
+
->addColumn('date_time_processed', Varien_Db_Ddl_Table::TYPE_TIMESTAMP, null, array(
|
12 |
+
'nullable' => false
|
13 |
+
));
|
14 |
+
|
15 |
+
$installer->getConnection()->createTable($table);
|
16 |
+
$installer->endSetup();
|
app/code/local/PayVector/Tpg/sql/tpg_setup/mysql4-install-0.1.0.php
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
/* @var $installer Mage_Core_Model_Resource_Setup */
|
5 |
+
$installer->startSetup();
|
6 |
+
|
7 |
+
Mage::log('PayVector installer script started');
|
8 |
+
|
9 |
+
try
|
10 |
+
{
|
11 |
+
// try to run the installation script
|
12 |
+
$installer->run("
|
13 |
+
DELETE FROM `{$installer->getTable('sales_order_status')}` WHERE (`status`='irc_failed_hosted_payment');
|
14 |
+
DELETE FROM `{$installer->getTable('sales_order_status')}` WHERE (`status`='irc_failed_threed_secure');
|
15 |
+
DELETE FROM `{$installer->getTable('sales_order_status')}` WHERE (`status`='irc_paid');
|
16 |
+
DELETE FROM `{$installer->getTable('sales_order_status')}` WHERE (`status`='irc_pending');
|
17 |
+
DELETE FROM `{$installer->getTable('sales_order_status')}` WHERE (`status`='irc_pending_hosted_payment');
|
18 |
+
DELETE FROM `{$installer->getTable('sales_order_status')}` WHERE (`status`='irc_pending_threed_secure');
|
19 |
+
DELETE FROM `{$installer->getTable('sales_order_status')}` WHERE (`status`='irc_refunded');
|
20 |
+
DELETE FROM `{$installer->getTable('sales_order_status')}` WHERE (`status`='irc_voided');
|
21 |
+
DELETE FROM `{$installer->getTable('sales_order_status')}` WHERE (`status`='irc_preauth');
|
22 |
+
DELETE FROM `{$installer->getTable('sales_order_status')}` WHERE (`status`='irc_collected');
|
23 |
+
|
24 |
+
INSERT INTO `{$installer->getTable('sales_order_status')}` (`status`, `label`) VALUES ('irc_failed_hosted_payment', 'PayVector - Failed Payment');
|
25 |
+
INSERT INTO `{$installer->getTable('sales_order_status')}` (`status`, `label`) VALUES ('irc_failed_threed_secure', 'PayVector - Failed 3D Secure');
|
26 |
+
INSERT INTO `{$installer->getTable('sales_order_status')}` (`status`, `label`) VALUES ('irc_paid', 'PayVector - Successful Payment');
|
27 |
+
INSERT INTO `{$installer->getTable('sales_order_status')}` (`status`, `label`) VALUES ('irc_pending', 'PayVector - Pending Hosted Payment');
|
28 |
+
INSERT INTO `{$installer->getTable('sales_order_status')}` (`status`, `label`) VALUES ('irc_pending_hosted_payment', 'PayVector - Pending Hosted Payment');
|
29 |
+
INSERT INTO `{$installer->getTable('sales_order_status')}` (`status`, `label`) VALUES ('irc_pending_threed_secure', 'PayVector - Pending 3D Secure');
|
30 |
+
INSERT INTO `{$installer->getTable('sales_order_status')}` (`status`, `label`) VALUES ('irc_refunded', 'PayVector - Payment Refunded');
|
31 |
+
INSERT INTO `{$installer->getTable('sales_order_status')}` (`status`, `label`) VALUES ('irc_voided', 'PayVector - Payment Voided');
|
32 |
+
INSERT INTO `{$installer->getTable('sales_order_status')}` (`status`, `label`) VALUES ('irc_preauth', 'PayVector - PreAuthorized');
|
33 |
+
INSERT INTO `{$installer->getTable('sales_order_status')}` (`status`, `label`) VALUES ('irc_collected', 'PayVector - Payment Collected');
|
34 |
+
");
|
35 |
+
|
36 |
+
$installer->run("
|
37 |
+
DROP TABLE IF EXISTS {$installer->getTable('tpg/gatewayentrypoints')};
|
38 |
+
CREATE TABLE {$installer->getTable('tpg/gatewayentrypoints')} (
|
39 |
+
`gateway_entry_point_object` LONGTEXT NOT NULL DEFAULT '',
|
40 |
+
`date_time_processed` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
41 |
+
)
|
42 |
+
");
|
43 |
+
|
44 |
+
$installer->run("
|
45 |
+
INSERT INTO {$installer->getTable('tpg/gatewayentrypoints')} VALUES(
|
46 |
+
'PlaceHolder',
|
47 |
+
0
|
48 |
+
);
|
49 |
+
");
|
50 |
+
}
|
51 |
+
catch(Exception $exc)
|
52 |
+
{
|
53 |
+
Mage::log("Error during script installation: ". $exc->__toString());
|
54 |
+
}
|
55 |
+
|
56 |
+
Mage::log('PayVector installer script ended');
|
57 |
+
|
58 |
+
$installer->endSetup();
|
app/design/adminhtml/base/default/template/tpg/form.phtml
ADDED
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $direct = Mage::getModel('tpg/direct'); ?>
|
2 |
+
<?php $_code = $this->getMethodCode() ?>
|
3 |
+
<?php $route = $this->getRequest()->getRequestedRouteName(); if($route == 'onestepcheckout'){ $fieldCode = '['.$_code.']'; } else { $fieldCode = ''; }?>
|
4 |
+
|
5 |
+
<?php if ($direct->getConfigData('mode') == PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_HOSTED_PAYMENT_FORM) {?>
|
6 |
+
<fieldset class="form-list">
|
7 |
+
<ul id="payment_form_<?php echo $_code ?>" style="display:none">
|
8 |
+
<li>
|
9 |
+
<?php echo $this->__('You will be redirected to a secure page where you can complete your payment.') ?>
|
10 |
+
</li>
|
11 |
+
</ul>
|
12 |
+
</fieldset>
|
13 |
+
<?php } else {?>
|
14 |
+
<fieldset class="form-list">
|
15 |
+
<ul id="payment_form_<?php echo $_code; ?>" style="display:none">
|
16 |
+
<li>
|
17 |
+
<div class="input-box">
|
18 |
+
<label for="<?php echo $_code; ?>_cc_owner"><?php echo $this->__('Name On Card') ?> <span class="required">*</span></label><br/>
|
19 |
+
<input type="text" title="<?php echo $this->__('Name On Card') ?>" class="input-text required-entry validate-length maximum-length-100" id="<?php echo $_code; ?>_cc_owner" name="payment<?php echo $fieldCode; ?>[cc_owner]" value="<?php echo $this->htmlEscape($this->getInfoData('cc_owner')) ?>"/>
|
20 |
+
</div>
|
21 |
+
</li>
|
22 |
+
<li>
|
23 |
+
<div class="input-box">
|
24 |
+
<label for="<?php echo $_code; ?>_cc_number"><?php echo $this->__('Card Number') ?> <span class="required">*</span></label><br/>
|
25 |
+
<input type="text" id="<?php echo $_code; ?>_cc_number" name="payment<?php echo $fieldCode; ?>[cc_number]" title="<?php echo $this->__('Card Number') ?>" class="input-text required-entry validate-digits validate-length maximum-length-20" value=""/>
|
26 |
+
</div>
|
27 |
+
</li>
|
28 |
+
<li>
|
29 |
+
<label for="<?php echo $_code; ?>_expiration"><?php echo $this->__('Expiration Date') ?> <span class="required">*</span></label><br/>
|
30 |
+
<div class="input-box">
|
31 |
+
<div class="v-fix">
|
32 |
+
<select id="<?php echo $_code; ?>_expiration" name="payment<?php echo $fieldCode; ?>[cc_exp_month]" class="month validate-cc-exp required-entry">
|
33 |
+
<?php $_ccExpMonth = $this->getInfoData('cc_exp_month') ?>
|
34 |
+
<?php foreach ($this->getCcMonths() as $k=>$v): ?>
|
35 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccExpMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
36 |
+
<?php endforeach ?>
|
37 |
+
</select>
|
38 |
+
</div>
|
39 |
+
|
40 |
+
<div class="v-fix">
|
41 |
+
<?php $_ccExpYear = $this->getInfoData('cc_exp_year') ?>
|
42 |
+
<select id="<?php echo $_code; ?>_expiration_yr" name="payment<?php echo $fieldCode; ?>[cc_exp_year]" class="year required-entry">
|
43 |
+
<?php foreach ($this->getCcYears() as $k=>$v): ?>
|
44 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccExpYear): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
45 |
+
<?php endforeach ?>
|
46 |
+
</select>
|
47 |
+
</div>
|
48 |
+
</div>
|
49 |
+
</li>
|
50 |
+
<li>
|
51 |
+
<label for="<?php echo $_code; ?>_cc_ss_start_month"><?php echo $this->__('Start Date') ?></label><br />
|
52 |
+
<div class="input-box">
|
53 |
+
<div class="v-fix">
|
54 |
+
<select id="<?php echo $_code; ?>_cc_ss_start_month" name="payment<?php echo $fieldCode; ?>[cc_ss_start_month]" class="month">
|
55 |
+
<?php $_ccStartMonth = $this->getInfoData('cc_ss_start_month') ?>
|
56 |
+
<?php foreach ($this->getCcStartMonths() as $k=>$v): ?>
|
57 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccStartMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
58 |
+
<?php endforeach ?>
|
59 |
+
</select>
|
60 |
+
</div>
|
61 |
+
<div class="v-fix">
|
62 |
+
<?php $_ccStartYear = $this->getInfoData('cc_ss_start_year') ?>
|
63 |
+
<select id="<?php echo $_code ?>_cc_ss_start_year" name="payment<?php echo $fieldCode; ?>[cc_ss_start_year]" class="year">
|
64 |
+
<?php foreach ($this->getCcStartYears() as $k=>$v): ?>
|
65 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccStartYear): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
66 |
+
<?php endforeach ?>
|
67 |
+
</select>
|
68 |
+
</div>
|
69 |
+
</div>
|
70 |
+
</li>
|
71 |
+
<li>
|
72 |
+
<div class="input-box">
|
73 |
+
<label for="<?php echo $_code; ?>_cc_ss_issue"><?php echo $this->__('Issue Number') ?></label><br />
|
74 |
+
<div class="v-fix"><input type="text" title="<?php echo $this->__('Issue Number') ?>" class="input-text validate-digits validate-length maximum-length-2" style="width:50px;" id="<?php echo $_code ?>_cc_ss_issue" name="payment<?php echo $fieldCode; ?>[cc_ss_issue]" value="" /></div>
|
75 |
+
</div>
|
76 |
+
</li>
|
77 |
+
<li>
|
78 |
+
<div class="input-box">
|
79 |
+
<label for="<?php echo $_code; ?>_cc_cid"><?php echo $this->__('CV2') ?> <span class="required">*</span></label><br/>
|
80 |
+
<div class="v-fix"><input type="text" title="<?php echo $this->__('CV2') ?>" class="input-text required-entry validate-digits validate-length minimum-length-3 maximum-length-4" id="<?php echo $_code; ?>_cc_cid" name="payment<?php echo $fieldCode; ?>[cc_cid]" style="width:50px;" value=""/></div>
|
81 |
+
|
82 |
+
<a href="#" class="cvv-what-is-this"><?php echo $this->__('What is this?') ?></a>
|
83 |
+
</div>
|
84 |
+
</li>
|
85 |
+
</ul>
|
86 |
+
</fieldset>
|
87 |
+
<?php }?>
|
app/design/adminhtml/base/default/template/tpg/info.phtml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $direct = Mage::getModel('tpg/direct'); ?>
|
2 |
+
<?php if ($direct->getConfigData('mode') != PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_DIRECT_API) {?>
|
3 |
+
<?php if ($direct->getConfigData('mode') == PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_HOSTED_PAYMENT_FORM) {?>
|
4 |
+
<?php echo $this->__('PayVector Hosted Payment'); ?>
|
5 |
+
<?php } else {?>
|
6 |
+
<?php echo $this->__('PayVector Transparent Redirect'); ?>
|
7 |
+
<?php }?>
|
8 |
+
<?php } else {?>
|
9 |
+
<?php if($_info = $this->getInfo()): ?>
|
10 |
+
<?php echo $this->__('Name on the Card: %s', $this->htmlEscape($this->getInfo()->getCcOwner())) ?>
|
11 |
+
<br/>
|
12 |
+
<?php echo $this->__('Card Number: %s', $this->htmlEscape($this->getCcNumber())) ?>
|
13 |
+
<br/>
|
14 |
+
<?php echo $this->__('Expiration Date: %s/%s', $this->htmlEscape($this->getInfo()->getCcExpMonth()), $this->htmlEscape($this->getInfo()->getCcExpYear())) ?>
|
15 |
+
<br />
|
16 |
+
<?php else: ?>
|
17 |
+
<?php endif; ?>
|
18 |
+
<?php }?>
|
app/design/adminhtml/default/default/layout/tpg.xml
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout>
|
3 |
+
<adminhtml_sales_order_view>
|
4 |
+
<reference name="head">
|
5 |
+
<action method="addItem">
|
6 |
+
<type>skin_js</type>
|
7 |
+
<name>tpg.js</name>
|
8 |
+
</action>
|
9 |
+
</reference>
|
10 |
+
</adminhtml_sales_order_view>
|
11 |
+
</layout>
|
app/design/adminhtml/default/default/template/payment/info/cc_tpg.phtml
ADDED
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$m_boTransactionAuthorised = false;
|
3 |
+
$m_boValidCrossReference = false;
|
4 |
+
$m_boExtensionVersionWithCrossReferenceFeature = true;
|
5 |
+
|
6 |
+
$m_order = $this->getInfo()->getOrder();
|
7 |
+
$m_payment = $m_order->getPayment();
|
8 |
+
$m_szOrderID = $m_order->getRealOrderId();
|
9 |
+
$m_szOrderStatus = $m_order->getStatus();
|
10 |
+
$m_szAmount = $m_order->getBaseGrandTotal();
|
11 |
+
$m_nPaymentVoided = 0;//(int)$m_order->getVoided();
|
12 |
+
$m_nPaymentRefunded = 0;
|
13 |
+
$m_nPaymentCollected = 0;
|
14 |
+
$m_boCanVoid = false;
|
15 |
+
$m_boCanCollect = false;
|
16 |
+
|
17 |
+
// get the additional information column data for a Magento payment
|
18 |
+
$additional_info = $m_payment->getAdditionalInformation();
|
19 |
+
$szToday = date("Ymd");
|
20 |
+
|
21 |
+
// for redirected transactions the TransactionId can't be updated with a new CrossReference (ie: 3DS transaction), need to revert back to additional_info
|
22 |
+
//$szCrossReference = $m_payment->getLastTransId();
|
23 |
+
$additionalInfo = $m_payment->getAdditionalInformation();
|
24 |
+
if(!key_exists("CrossReference", $additionalInfo))
|
25 |
+
{
|
26 |
+
$szCrossReference = false;
|
27 |
+
}
|
28 |
+
else
|
29 |
+
{
|
30 |
+
$szCrossReference = $additional_info["CrossReference"];
|
31 |
+
}
|
32 |
+
|
33 |
+
if(!key_exists("TransactionDateTime", $additionalInfo))
|
34 |
+
{
|
35 |
+
$szTransactionDateTime = false;
|
36 |
+
}
|
37 |
+
else
|
38 |
+
{
|
39 |
+
$szTransactionDateTime = $additional_info["TransactionDateTime"];
|
40 |
+
}
|
41 |
+
|
42 |
+
if(!key_exists("TransactionType", $additionalInfo))
|
43 |
+
{
|
44 |
+
$szTransactionType = false;
|
45 |
+
}
|
46 |
+
else
|
47 |
+
{
|
48 |
+
$szTransactionType = $additional_info["TransactionType"];
|
49 |
+
}
|
50 |
+
|
51 |
+
if(key_exists("Voided", $additionalInfo))
|
52 |
+
{
|
53 |
+
$m_nPaymentVoided = (int)$additional_info["Voided"];
|
54 |
+
}
|
55 |
+
if(key_exists("Refunded", $additionalInfo))
|
56 |
+
{
|
57 |
+
$m_nPaymentRefunded = (int)$additional_info["Refunded"];
|
58 |
+
}
|
59 |
+
if(key_exists("Collected", $additionalInfo))
|
60 |
+
{
|
61 |
+
$m_nPaymentCollected = (int)$additional_info["Collected"];
|
62 |
+
}
|
63 |
+
|
64 |
+
if(!$szCrossReference ||
|
65 |
+
!$szTransactionDateTime ||
|
66 |
+
!$szTransactionType)
|
67 |
+
{
|
68 |
+
$m_boExtensionVersionWithCrossReferenceFeature = false;
|
69 |
+
}
|
70 |
+
else
|
71 |
+
{
|
72 |
+
if($szTransactionType == 'PREAUTH')
|
73 |
+
{
|
74 |
+
$m_szTransactionType = "PREAUTH";
|
75 |
+
|
76 |
+
// check if payment can be voided
|
77 |
+
if (!$m_nPaymentVoided &&
|
78 |
+
!$m_nPaymentRefunded &&
|
79 |
+
// payment must be successful
|
80 |
+
$m_szOrderStatus == "irc_preauth")
|
81 |
+
{
|
82 |
+
if (strtotime($szToday) == strtotime($szTransactionDateTime))
|
83 |
+
{
|
84 |
+
$m_boCanVoid = true;
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
// check if payment can be collected
|
89 |
+
if(!$m_nPaymentVoided &&
|
90 |
+
!$m_nPaymentCollected &&
|
91 |
+
// payment must be successful
|
92 |
+
$m_szOrderStatus == "irc_preauth")
|
93 |
+
{
|
94 |
+
$m_boCanCollect = true;
|
95 |
+
}
|
96 |
+
}
|
97 |
+
else if($szTransactionType == 'SALE')
|
98 |
+
{
|
99 |
+
$m_szTransactionType = "SALE";
|
100 |
+
|
101 |
+
// check if payment can be voided
|
102 |
+
if(!$m_nPaymentVoided &&
|
103 |
+
!$m_nPaymentRefunded &&
|
104 |
+
// payment must be successful
|
105 |
+
$m_szOrderStatus == "irc_paid")
|
106 |
+
{
|
107 |
+
if(strtotime($szToday) == strtotime($szTransactionDateTime) &&
|
108 |
+
// for the time being only allow to execute a root VOID
|
109 |
+
$m_szOrderStatus == "irc_paid")
|
110 |
+
{
|
111 |
+
$m_boCanVoid = true;
|
112 |
+
}
|
113 |
+
}
|
114 |
+
|
115 |
+
// check if it can be collected - only preauth can be collected
|
116 |
+
$m_nPaymentCollected = 0;
|
117 |
+
}
|
118 |
+
else
|
119 |
+
{
|
120 |
+
Mage::log('Order info error: transaction type: '.$szTransactionType.' is not supported by the PayVector/Tpg extension');
|
121 |
+
}
|
122 |
+
}
|
123 |
+
?>
|
124 |
+
|
125 |
+
<div>
|
126 |
+
CrossReference:
|
127 |
+
<?php
|
128 |
+
if(!$m_boExtensionVersionWithCrossReferenceFeature)
|
129 |
+
{
|
130 |
+
echo "<span style=\"font-weight:bold;color:Red;\">Missing data*</span>";
|
131 |
+
}
|
132 |
+
else
|
133 |
+
{
|
134 |
+
echo "<span style=\"font-weight:bold;\">".$szCrossReference."</span>";
|
135 |
+
}
|
136 |
+
?>
|
137 |
+
</div>
|
138 |
+
<div>
|
139 |
+
Transaction Type:
|
140 |
+
<?php
|
141 |
+
if(!$m_boExtensionVersionWithCrossReferenceFeature)
|
142 |
+
{
|
143 |
+
echo "<span style=\"font-weight:bold;color:Red;\">Missing data*</span>";
|
144 |
+
}
|
145 |
+
else
|
146 |
+
{
|
147 |
+
echo "<span style=\"font-weight:bold;\">".$m_szTransactionType."</span>";
|
148 |
+
}
|
149 |
+
?>
|
150 |
+
</div>
|
151 |
+
<div>
|
152 |
+
Amount: <?php echo "<span style=\"font-weight:bold\">".$m_szAmount."</span>"; ?>
|
153 |
+
</div>
|
154 |
+
|
155 |
+
<?php if(!$m_boExtensionVersionWithCrossReferenceFeature): ?>
|
156 |
+
<div>
|
157 |
+
<span style="font-weight:bold;color:Red;">* Incomplete orders and orders processed through an older payment extension will not have all the data necessary for CrossReference payments</span>
|
158 |
+
</div>
|
159 |
+
<?php else: ?>
|
160 |
+
<div>
|
161 |
+
<?php if($m_boCanVoid): ?>
|
162 |
+
<button type="button" id="voidButton" onclick="IRC_runCrossReferenceTransaction('<?php echo $this->getUrl('tpg/payment/void', array('_secure' => true)); ?>', '<?php echo $m_szOrderID; ?>', '<?php echo $szCrossReference; ?>', 'VOID');">
|
163 |
+
<span>VOID</span>
|
164 |
+
</button>
|
165 |
+
<?php endif; ?>
|
166 |
+
<?php if($m_boCanCollect): ?>
|
167 |
+
<button type="button" id="collectionButton" onclick="IRC_runCrossReferenceTransaction('<?php echo $this->getUrl('tpg/payment/collection', array('_secure' => true)); ?>', '<?php echo $m_szOrderID; ?>', '<?php echo $szCrossReference; ?>', 'COLLECTION');">
|
168 |
+
<span>COLLECT</span>
|
169 |
+
</button>
|
170 |
+
<?php endif; ?>
|
171 |
+
</div>
|
172 |
+
<?php endif; ?>
|
app/design/adminhtml/default/default/template/tpg/form.phtml
ADDED
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $direct = Mage::getModel('tpg/direct'); ?>
|
2 |
+
<?php $_code = $this->getMethodCode() ?>
|
3 |
+
<?php $route = $this->getRequest()->getRequestedRouteName(); if($route == 'onestepcheckout'){ $fieldCode = '['.$_code.']'; } else { $fieldCode = ''; }?>
|
4 |
+
|
5 |
+
<?php if ($direct->getConfigData('mode') == PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_HOSTED_PAYMENT_FORM) {?>
|
6 |
+
<fieldset class="form-list">
|
7 |
+
<ul id="payment_form_<?php echo $_code ?>" style="display:none">
|
8 |
+
<li>
|
9 |
+
<?php echo $this->__('You will be redirected to a secure page where you can complete your payment.') ?>
|
10 |
+
</li>
|
11 |
+
</ul>
|
12 |
+
</fieldset>
|
13 |
+
<?php } else {?>
|
14 |
+
<fieldset class="form-list">
|
15 |
+
<ul id="payment_form_<?php echo $_code; ?>" style="display:none">
|
16 |
+
<li>
|
17 |
+
<div class="input-box">
|
18 |
+
<label for="<?php echo $_code; ?>_cc_owner"><?php echo $this->__('Name On Card') ?> <span class="required">*</span></label><br/>
|
19 |
+
<input type="text" title="<?php echo $this->__('Name On Card') ?>" class="input-text required-entry validate-length maximum-length-100" id="<?php echo $_code; ?>_cc_owner" name="payment<?php echo $fieldCode; ?>[cc_owner]" value="<?php echo $this->htmlEscape($this->getInfoData('cc_owner')) ?>"/>
|
20 |
+
</div>
|
21 |
+
</li>
|
22 |
+
<li>
|
23 |
+
<div class="input-box">
|
24 |
+
<label for="<?php echo $_code; ?>_cc_number"><?php echo $this->__('Card Number') ?> <span class="required">*</span></label><br/>
|
25 |
+
<input type="text" id="<?php echo $_code; ?>_cc_number" name="payment<?php echo $fieldCode; ?>[cc_number]" title="<?php echo $this->__('Card Number') ?>" class="input-text required-entry validate-digits validate-length maximum-length-20" value=""/>
|
26 |
+
</div>
|
27 |
+
</li>
|
28 |
+
<li>
|
29 |
+
<label for="<?php echo $_code; ?>_expiration"><?php echo $this->__('Expiration Date') ?> <span class="required">*</span></label><br/>
|
30 |
+
<div class="input-box">
|
31 |
+
<div class="v-fix">
|
32 |
+
<select id="<?php echo $_code; ?>_expiration" name="payment<?php echo $fieldCode; ?>[cc_exp_month]" class="month validate-cc-exp required-entry">
|
33 |
+
<?php $_ccExpMonth = $this->getInfoData('cc_exp_month') ?>
|
34 |
+
<?php foreach ($this->getCcMonths() as $k=>$v): ?>
|
35 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccExpMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
36 |
+
<?php endforeach ?>
|
37 |
+
</select>
|
38 |
+
</div>
|
39 |
+
|
40 |
+
<div class="v-fix">
|
41 |
+
<?php $_ccExpYear = $this->getInfoData('cc_exp_year') ?>
|
42 |
+
<select id="<?php echo $_code; ?>_expiration_yr" name="payment<?php echo $fieldCode; ?>[cc_exp_year]" class="year required-entry">
|
43 |
+
<?php foreach ($this->getCcYears() as $k=>$v): ?>
|
44 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccExpYear): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
45 |
+
<?php endforeach ?>
|
46 |
+
</select>
|
47 |
+
</div>
|
48 |
+
</div>
|
49 |
+
</li>
|
50 |
+
<li>
|
51 |
+
<label for="<?php echo $_code; ?>_cc_ss_start_month"><?php echo $this->__('Start Date') ?></label><br />
|
52 |
+
<div class="input-box">
|
53 |
+
<div class="v-fix">
|
54 |
+
<select id="<?php echo $_code; ?>_cc_ss_start_month" name="payment<?php echo $fieldCode; ?>[cc_ss_start_month]" class="month">
|
55 |
+
<?php $_ccStartMonth = $this->getInfoData('cc_ss_start_month') ?>
|
56 |
+
<?php foreach ($this->getCcStartMonths() as $k=>$v): ?>
|
57 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccStartMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
58 |
+
<?php endforeach ?>
|
59 |
+
</select>
|
60 |
+
</div>
|
61 |
+
<div class="v-fix">
|
62 |
+
<?php $_ccStartYear = $this->getInfoData('cc_ss_start_year') ?>
|
63 |
+
<select id="<?php echo $_code ?>_cc_ss_start_year" name="payment<?php echo $fieldCode; ?>[cc_ss_start_year]" class="year">
|
64 |
+
<?php foreach ($this->getCcStartYears() as $k=>$v): ?>
|
65 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccStartYear): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
66 |
+
<?php endforeach ?>
|
67 |
+
</select>
|
68 |
+
</div>
|
69 |
+
</div>
|
70 |
+
</li>
|
71 |
+
<li>
|
72 |
+
<div class="input-box">
|
73 |
+
<label for="<?php echo $_code; ?>_cc_ss_issue"><?php echo $this->__('Issue Number') ?></label><br />
|
74 |
+
<div class="v-fix"><input type="text" title="<?php echo $this->__('Issue Number') ?>" class="input-text validate-digits validate-length maximum-length-2" id="<?php echo $_code ?>_cc_ss_issue" name="payment<?php echo $fieldCode; ?>[cc_ss_issue]" style="width:50px;" value="" /></div>
|
75 |
+
</div>
|
76 |
+
</li>
|
77 |
+
<li>
|
78 |
+
<div class="input-box">
|
79 |
+
<label for="<?php echo $_code; ?>_cc_cid"><?php echo $this->__('CV2') ?> <span class="required">*</span></label><br/>
|
80 |
+
<div class="v-fix"><input type="text" title="<?php echo $this->__('CV2') ?>" class="input-text required-entry validate-digits validate-length minimum-length-3 maximum-length-4" id="<?php echo $_code; ?>_cc_cid" name="payment<?php echo $fieldCode; ?>[cc_cid]" style="width:50px;" value=""/></div>
|
81 |
+
|
82 |
+
<a href="#" class="cvv-what-is-this"><?php echo $this->__('What is this?') ?></a>
|
83 |
+
</div>
|
84 |
+
</li>
|
85 |
+
</ul>
|
86 |
+
</fieldset>
|
87 |
+
<?php }?>
|
app/design/adminhtml/default/default/template/tpg/info.phtml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $direct = Mage::getModel('tpg/direct'); ?>
|
2 |
+
<?php if ($direct->getConfigData('mode') != PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_DIRECT_API) {?>
|
3 |
+
<?php if ($direct->getConfigData('mode') == PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_HOSTED_PAYMENT_FORM) {?>
|
4 |
+
<?php echo $this->__('PayVector Hosted Payment'); ?>
|
5 |
+
<?php } else {?>
|
6 |
+
<?php echo $this->__('PayVector Transparent Redirect'); ?>
|
7 |
+
<?php }?>
|
8 |
+
<?php } else {?>
|
9 |
+
<?php if($_info = $this->getInfo()): ?>
|
10 |
+
<?php echo $this->__('Name on the Card: %s', $this->htmlEscape($this->getInfo()->getCcOwner())) ?>
|
11 |
+
<br/>
|
12 |
+
<?php echo $this->__('Card Number: %s', $this->htmlEscape($this->getCcNumber())) ?>
|
13 |
+
<br/>
|
14 |
+
<?php echo $this->__('Expiration Date: %s/%s', $this->htmlEscape($this->getInfo()->getCcExpMonth()), $this->htmlEscape($this->getInfo()->getCcExpYear())) ?>
|
15 |
+
<br />
|
16 |
+
<?php else: ?>
|
17 |
+
<?php endif; ?>
|
18 |
+
<?php }?>
|
app/design/frontend/base/default/template/tpg/form.phtml
ADDED
@@ -0,0 +1,198 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $direct = Mage::getModel('tpg/direct'); ?>
|
2 |
+
<?php $_code = $this->getMethodCode() ?>
|
3 |
+
<?php $route = $this->getRequest()->getRequestedRouteName(); if($route == 'onestepcheckout'){ $fieldCode = '['.$_code.']'; } else { $fieldCode = ''; } ?>
|
4 |
+
|
5 |
+
<?php
|
6 |
+
|
7 |
+
if(Mage::getSingleton('customer/session')->isLoggedIn()) {
|
8 |
+
$customer = Mage::getSingleton('customer/session')->getCustomer();
|
9 |
+
$customerID = $customer->getId();
|
10 |
+
|
11 |
+
$orderPaymentTableName = Mage::getSingleton('core/resource')->getTableName('sales/order_payment');
|
12 |
+
|
13 |
+
$orderCollection = Mage::getModel('sales/order')->getCollection()
|
14 |
+
->addFilter('customer_id', $customerID)
|
15 |
+
->setOrder('entity_id', 'DESC');
|
16 |
+
$orderCollection->getSelect()
|
17 |
+
->join(
|
18 |
+
array("order_payment" => $orderPaymentTableName),
|
19 |
+
"main_table.entity_id=order_payment.entity_id"
|
20 |
+
);
|
21 |
+
|
22 |
+
//check if a cross reference was set in any of the previous transactions by this customer
|
23 |
+
foreach($orderCollection as $order)
|
24 |
+
{
|
25 |
+
$crossReference = $order->getLastTransId();
|
26 |
+
if(isset($crossReference))
|
27 |
+
{
|
28 |
+
$cardLastFour = $order->getCcLast4();
|
29 |
+
$cardType = $order->getCcType();
|
30 |
+
break;
|
31 |
+
}
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
?>
|
36 |
+
|
37 |
+
<fieldset class="form-list">
|
38 |
+
<ul id="payment_form_<?php echo $_code ?>" style="display:none">
|
39 |
+
<li>
|
40 |
+
<img alt="<?php echo $this->__('PayVector Corporation Logo'); ?>" src="<?php echo $this->getSkinUrl('images/payvector.png'); ?>">
|
41 |
+
</li>
|
42 |
+
<?php
|
43 |
+
//check if cross reference is set - if so show the choice to use the saved card
|
44 |
+
if(isset($crossReference)):
|
45 |
+
?>
|
46 |
+
<li>
|
47 |
+
<?php if(isset($cardLastFour)): ?>
|
48 |
+
<label for="<?php echo $_code; ?>_payment_type_stored"><?php echo $this->__('Use Saved ' . $cardType . ' Card: xxxx-'.$cardLastFour) ?> <span class="required">*</span></label><br/>
|
49 |
+
<?php else: ?>
|
50 |
+
<label for="<?php echo $_code; ?>_payment_type_stored"><?php echo $this->__('Use Saved ' . $cardType . ' Card') ?> <span class="required">*</span></label><br/>
|
51 |
+
<?php endif; ?>
|
52 |
+
<input type="radio" title="<?php echo $this->__('Use Saved Card') ?>" id="<?php echo $_code; ?>_payment_type_stored" name="payment<?php echo $fieldCode; ?>[payment_type]" value="stored_card" checked/>
|
53 |
+
</li>
|
54 |
+
<li>
|
55 |
+
<label for="<?php echo $_code; ?>_payment_type_new"><?php echo $this->__('Or enter new card details') ?> <span class="required">*</span></label><br/>
|
56 |
+
<input type="radio" title="<?php echo $this->__('Or enter new card details') ?>" id="<?php echo $_code; ?>_payment_type_new" name="payment<?php echo $fieldCode; ?>[payment_type]" value="new_card"/>
|
57 |
+
</li>
|
58 |
+
<?php else: ?>
|
59 |
+
<input type="hidden" id="<?php echo $_code; ?>_payment_type" name="payment<?php echo $fieldCode; ?>[payment_type]" value="new_card"/>
|
60 |
+
<?php endif; ?>
|
61 |
+
|
62 |
+
<?php
|
63 |
+
//check if we're using the hosted payment form - if so then inform the user they will be transferred to input their card details
|
64 |
+
if ($direct->getConfigData('mode') == PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_HOSTED_PAYMENT_FORM):
|
65 |
+
?>
|
66 |
+
<li class="new_card">
|
67 |
+
<?php echo $this->__('You will be redirected to a secure page where you can complete your payment.') ?>
|
68 |
+
</li>
|
69 |
+
<li class='new_card notice-msg'>
|
70 |
+
<?php echo $this->__('Please do not attempt to click the "BACK" button in your browser once you were redirected to the secure payment page to complete your payment. If you need to change your order you can do it before placing your order.') ?>
|
71 |
+
</li>
|
72 |
+
<?php
|
73 |
+
//else if we're using the Direct/API method then take card details here
|
74 |
+
else:
|
75 |
+
?>
|
76 |
+
<li class="new_card">
|
77 |
+
<div class="input-box">
|
78 |
+
<label for="<?php echo $_code; ?>_cc_owner"><?php echo $this->__('Name On Card') ?> <span class="required">*</span></label><br/>
|
79 |
+
<input type="text" title="<?php echo $this->__('Name On Card') ?>" class="input-text required-entry validate-length maximum-length-100" id="<?php echo $_code; ?>_cc_owner" name="payment<?php echo $fieldCode; ?>[cc_owner]" value="<?php echo $this->htmlEscape($this->getInfoData('cc_owner')) ?>"/>
|
80 |
+
</div>
|
81 |
+
</li>
|
82 |
+
<li class="new_card">
|
83 |
+
<div class="input-box">
|
84 |
+
<label for="<?php echo $_code; ?>_cc_number"><?php echo $this->__('Card Number') ?> <span class="required">*</span></label><br/>
|
85 |
+
<input type="text" id="<?php echo $_code; ?>_cc_number" name="payment<?php echo $fieldCode; ?>[cc_number]" title="<?php echo $this->__('Card Number') ?>" class="input-text required-entry validate-digits validate-length maximum-length-20 validate-cc-number" value=""/>
|
86 |
+
</div>
|
87 |
+
</li>
|
88 |
+
<li class="new_card">
|
89 |
+
<label for="<?php echo $_code; ?>_expiration"><?php echo $this->__('Expiry Date') ?> <span class="required">*</span></label><br/>
|
90 |
+
<div class="input-box">
|
91 |
+
<div class="v-fix">
|
92 |
+
<select id="<?php echo $_code; ?>_expiration" name="payment<?php echo $fieldCode; ?>[cc_exp_month]" class="month validate-cc-exp required-entry">
|
93 |
+
<?php $_ccExpMonth = $this->getInfoData('cc_exp_month') ?>
|
94 |
+
<?php foreach ($this->getCcMonths() as $k=>$v): ?>
|
95 |
+
<option value="<?php echo $k?$k:'' ?>" <?php if($k==$_ccExpMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
96 |
+
<?php endforeach ?>
|
97 |
+
</select>
|
98 |
+
</div>
|
99 |
+
|
100 |
+
<div class="v-fix" style="padding-left:5px;">
|
101 |
+
<?php $_ccExpYear = $this->getInfoData('cc_exp_year') ?>
|
102 |
+
<select id="<?php echo $_code; ?>_expiration_yr" name="payment<?php echo $fieldCode; ?>[cc_exp_year]" class="year required-entry">
|
103 |
+
<?php foreach ($this->getCcYears() as $k=>$v): ?>
|
104 |
+
<option value="<?php echo $k?$k:'' ?>" <?php if($k==$_ccExpYear): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
105 |
+
<?php endforeach ?>
|
106 |
+
</select>
|
107 |
+
</div>
|
108 |
+
</div>
|
109 |
+
</li>
|
110 |
+
<li class="new_card">
|
111 |
+
<label for="<?php echo $_code; ?>_cc_ss_start_month"><?php echo $this->__('Start Date') ?></label><br />
|
112 |
+
<div class="input-box">
|
113 |
+
<div class="v-fix">
|
114 |
+
<select id="<?php echo $_code; ?>_cc_ss_start_month" name="payment<?php echo $fieldCode; ?>[cc_ss_start_month]" class="month">
|
115 |
+
<?php $_ccStartMonth = $this->getInfoData('cc_ss_start_month') ?>
|
116 |
+
<?php foreach ($this->getCcStartMonths() as $k=>$v): ?>
|
117 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccStartMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
118 |
+
<?php endforeach ?>
|
119 |
+
</select>
|
120 |
+
</div>
|
121 |
+
<div class="v-fix" style="padding-left:5px;">
|
122 |
+
<?php $_ccStartYear = $this->getInfoData('cc_ss_start_year') ?>
|
123 |
+
<select id="<?php echo $_code ?>_cc_ss_start_year" name="payment<?php echo $fieldCode; ?>[cc_ss_start_year]" class="year">
|
124 |
+
<?php foreach ($this->getCcStartYears() as $k=>$v): ?>
|
125 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccStartYear): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
126 |
+
<?php endforeach ?>
|
127 |
+
</select>
|
128 |
+
</div>
|
129 |
+
</div>
|
130 |
+
</li>
|
131 |
+
<li class="new_card">
|
132 |
+
<div class="input-box">
|
133 |
+
<label for="<?php echo $_code; ?>_cc_ss_issue"><?php echo $this->__('Issue Number') ?></label><br />
|
134 |
+
<div class="v-fix"><input type="text" title="<?php echo $this->__('Issue Number') ?>" class="input-text validate-digits validate-length maximum-length-2" style="width:50px;" id="<?php echo $_code ?>_cc_ss_issue" name="payment<?php echo $fieldCode; ?>[cc_ss_issue]" value="" /></div>
|
135 |
+
</div>
|
136 |
+
</li>
|
137 |
+
<?php endif; ?>
|
138 |
+
<li class="cvv">
|
139 |
+
<div class="input-box">
|
140 |
+
<label for="<?php echo $_code; ?>_cc_cid"><?php echo $this->__('CV2') ?> <span class="required">*</span></label><br/>
|
141 |
+
<div class="v-fix"><input type="text" title="<?php echo $this->__('CV2') ?>" class="input-text required-entry validate-digits validate-length minimum-length-3 maximum-length-4" style="width:50px;" id="<?php echo $_code; ?>_cc_cid" name="payment<?php echo $fieldCode; ?>[cc_cid]" value=""/></div>
|
142 |
+
|
143 |
+
<a href="#" class="cvv-what-is-this"><?php echo $this->__('What is this?') ?></a>
|
144 |
+
</div>
|
145 |
+
</li>
|
146 |
+
</ul>
|
147 |
+
</fieldset>
|
148 |
+
|
149 |
+
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
|
150 |
+
<script>
|
151 |
+
//<![CDATA[
|
152 |
+
//ensure jQuery.noConflict is only run once
|
153 |
+
if(typeof ranNoConflict === 'undefined' || ranNoConflict !== true)
|
154 |
+
{
|
155 |
+
jQuery_1_11 = jQuery.noConflict(true);
|
156 |
+
}
|
157 |
+
ranNoConflict = true;
|
158 |
+
|
159 |
+
jQuery_1_11(document).ready(function()
|
160 |
+
{
|
161 |
+
var paymentType = "HPF";
|
162 |
+
if (jQuery_1_11('#<?php echo $_code; ?>_cc_number').length > 0) {
|
163 |
+
//input for taking cc number exists therefore we're using the direct method
|
164 |
+
paymentType = "DIRECT";
|
165 |
+
}
|
166 |
+
|
167 |
+
var $paymentType = jQuery_1_11('input[name="payment<?php echo $fieldCode; ?>[payment_type]"]');
|
168 |
+
var $newCardRadio = jQuery_1_11('#<?php echo $_code; ?>_payment_type_new');
|
169 |
+
var $newCardInput = jQuery_1_11('.new_card');
|
170 |
+
var $cvvInput = jQuery_1_11('.cvv');
|
171 |
+
|
172 |
+
if(jQuery_1_11('input[name="payment<?php echo $fieldCode; ?>[payment_type]"]:checked').val() === "stored_card")
|
173 |
+
{
|
174 |
+
$newCardInput.hide();
|
175 |
+
}
|
176 |
+
|
177 |
+
$paymentType.click(function()
|
178 |
+
{
|
179 |
+
if($newCardRadio.is(':checked'))
|
180 |
+
{
|
181 |
+
$newCardInput.show();
|
182 |
+
if(paymentType === "HPF")
|
183 |
+
{
|
184 |
+
$cvvInput.hide();
|
185 |
+
}
|
186 |
+
}
|
187 |
+
else
|
188 |
+
{
|
189 |
+
$newCardInput.hide();
|
190 |
+
if(paymentType === "HPF")
|
191 |
+
{
|
192 |
+
$cvvInput.show();
|
193 |
+
}
|
194 |
+
}
|
195 |
+
});
|
196 |
+
});
|
197 |
+
//]]>
|
198 |
+
</script>
|
app/design/frontend/base/default/template/tpg/info.phtml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $direct = Mage::getModel('tpg/direct'); ?>
|
2 |
+
<?php if ($direct->getConfigData('mode') != PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_DIRECT_API) {?>
|
3 |
+
<?php if ($direct->getConfigData('mode') == PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_HOSTED_PAYMENT_FORM) {?>
|
4 |
+
<?php echo $this->__('PayVector Hosted Payment'); ?>
|
5 |
+
<?php } else {?>
|
6 |
+
<?php echo $this->__('PayVector Transparent Redirect'); ?>
|
7 |
+
<?php }?>
|
8 |
+
<?php } else {?>
|
9 |
+
<?php if($_info = $this->getInfo()): ?>
|
10 |
+
<?php echo $this->__('Name on the Card: %s', $this->htmlEscape($this->getInfo()->getCcOwner())) ?>
|
11 |
+
<br/>
|
12 |
+
<?php echo $this->__('Card Number: xxxx-%s', $this->htmlEscape($this->getInfo()->getCcLast4())) ?>
|
13 |
+
<br/>
|
14 |
+
<?php echo $this->__('Expiration Date: %s/%s', $this->htmlEscape($this->getInfo()->getCcExpMonth()), $this->htmlEscape($this->getInfo()->getCcExpYear())) ?>
|
15 |
+
<?php else: ?>
|
16 |
+
<?php endif; ?>
|
17 |
+
<?php }?>
|
18 |
+
$orderCollection
|
app/design/frontend/default/default/template/tpg/form.phtml
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $direct = Mage::getModel('tpg/direct'); ?>
|
2 |
+
<?php $_code=$this->getMethodCode(); ?>
|
3 |
+
<?php $route = $this->getRequest()->getRequestedRouteName(); if($route == 'onestepcheckout'){ $fieldCode = '['.$_code.']'; } else { $fieldCode = ''; }?>
|
4 |
+
|
5 |
+
<?php if ($direct->getConfigData('mode') == PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_HOSTED_PAYMENT_FORM) {?>
|
6 |
+
<fieldset class="form-list">
|
7 |
+
<ul id="payment_form_<?php echo $_code ?>" style="display:none">
|
8 |
+
<li>
|
9 |
+
<img alt="<?php echo $this->__('PayVector Corporation Logo'); ?>" src="<?php echo $this->getSkinUrl('images/payvector.png'); ?>">
|
10 |
+
</li>
|
11 |
+
<li>
|
12 |
+
<?php echo $this->__('You will be redirected to a secure page where you can complete your payment.') ?>
|
13 |
+
</li>
|
14 |
+
<li class='notice-msg'>
|
15 |
+
<?php echo $this->__('Please do not attempt to click the "BACK" button in your browser once you were redirected to the secure payment page to complete your payment. If you need to change your order you can do it before placing your order.') ?>
|
16 |
+
</li>
|
17 |
+
</ul>
|
18 |
+
</fieldset>
|
19 |
+
<?php } else {?>
|
20 |
+
<fieldset class="form-list">
|
21 |
+
<ul id="payment_form_<?php echo $_code; ?>" style="display:none">
|
22 |
+
<li>
|
23 |
+
<div class="input-box">
|
24 |
+
<label for="<?php echo $_code; ?>_cc_owner"><?php echo $this->__('Name On Card') ?> <span class="required">*</span></label><br/>
|
25 |
+
<input type="text" title="<?php echo $this->__('Name On Card') ?>" class="input-text required-entry validate-length maximum-length-100" id="<?php echo $_code; ?>_cc_owner" name="payment<?php echo $fieldCode; ?>[cc_owner]" value="<?php echo $this->htmlEscape($this->getInfoData('cc_owner')) ?>"/>
|
26 |
+
</div>
|
27 |
+
</li>
|
28 |
+
<li>
|
29 |
+
<div class="input-box">
|
30 |
+
<label for="<?php echo $_code; ?>_cc_number"><?php echo $this->__('Card Number') ?> <span class="required">*</span></label><br/>
|
31 |
+
<input type="text" id="<?php echo $_code; ?>_cc_number" name="payment<?php echo $fieldCode; ?>[cc_number]" title="<?php echo $this->__('Card Number') ?>" class="input-text required-entry validate-digits validate-length maximum-length-20 validate-cc-number" value=""/>
|
32 |
+
</div>
|
33 |
+
</li>
|
34 |
+
<li>
|
35 |
+
<label for="<?php echo $_code; ?>_expiration"><?php echo $this->__('Expiry Date') ?> <span class="required">*</span></label><br/>
|
36 |
+
<div class="input-box">
|
37 |
+
<div class="v-fix">
|
38 |
+
<select id="<?php echo $_code; ?>_expiration" name="payment<?php echo $fieldCode; ?>[cc_exp_month]" class="month validate-cc-exp required-entry">
|
39 |
+
<?php $_ccExpMonth = $this->getInfoData('cc_exp_month') ?>
|
40 |
+
<?php foreach ($this->getCcMonths() as $k=>$v): ?>
|
41 |
+
<option value="<?php echo $k?$k:'' ?>" <?php if($k==$_ccExpMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
42 |
+
<?php endforeach ?>
|
43 |
+
</select>
|
44 |
+
</div>
|
45 |
+
|
46 |
+
<div class="v-fix">
|
47 |
+
<?php $_ccExpYear = $this->getInfoData('cc_exp_year') ?>
|
48 |
+
<select id="<?php echo $_code; ?>_expiration_yr" name="payment<?php echo $fieldCode; ?>[cc_exp_year]" class="year required-entry">
|
49 |
+
<?php foreach ($this->getCcYears() as $k=>$v): ?>
|
50 |
+
<option value="<?php echo $k?$k:'' ?>" <?php if($k==$_ccExpYear): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
51 |
+
<?php endforeach ?>
|
52 |
+
</select>
|
53 |
+
</div>
|
54 |
+
</div>
|
55 |
+
</li>
|
56 |
+
<li>
|
57 |
+
<label for="<?php echo $_code; ?>_cc_ss_start_month"><?php echo $this->__('Start Date') ?></label><br />
|
58 |
+
<div class="input-box">
|
59 |
+
<div class="v-fix">
|
60 |
+
<select id="<?php echo $_code; ?>_cc_ss_start_month" name="payment<?php echo $fieldCode; ?>[cc_ss_start_month]" class="month">
|
61 |
+
<?php $_ccStartMonth = $this->getInfoData('cc_ss_start_month') ?>
|
62 |
+
<?php foreach ($this->getCcStartMonths() as $k=>$v): ?>
|
63 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccStartMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
64 |
+
<?php endforeach ?>
|
65 |
+
</select>
|
66 |
+
</div>
|
67 |
+
<div class="v-fix">
|
68 |
+
<?php $_ccStartYear = $this->getInfoData('cc_ss_start_year') ?>
|
69 |
+
<select id="<?php echo $_code ?>_cc_ss_start_year" name="payment<?php echo $fieldCode; ?>[cc_ss_start_year]" class="year">
|
70 |
+
<?php foreach ($this->getCcStartYears() as $k=>$v): ?>
|
71 |
+
<option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccStartYear): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
|
72 |
+
<?php endforeach ?>
|
73 |
+
</select>
|
74 |
+
</div>
|
75 |
+
</div>
|
76 |
+
</li>
|
77 |
+
<li>
|
78 |
+
<div class="input-box">
|
79 |
+
<label for="<?php echo $_code; ?>_cc_ss_issue"><?php echo $this->__('Issue Number') ?></label><br />
|
80 |
+
<div class="v-fix"><input type="text" title="<?php echo $this->__('Issue Number') ?>" class="input-text validate-digits validate-length maximum-length-2" style="width:50px;" id="<?php echo $_code ?>_cc_ss_issue" name="payment<?php echo $fieldCode; ?>[cc_ss_issue]" value="" /></div>
|
81 |
+
</div>
|
82 |
+
</li>
|
83 |
+
<li>
|
84 |
+
<div class="input-box">
|
85 |
+
<label for="<?php echo $_code; ?>_cc_cid"><?php echo $this->__('CV2') ?> <span class="required">*</span></label><br/>
|
86 |
+
<div class="v-fix"><input type="text" title="<?php echo $this->__('CV2') ?>" class="input-text required-entry validate-digits validate-length minimum-length-3 maximum-length-4" style="width:50px;" id="<?php echo $_code; ?>_cc_cid" name="payment<?php echo $fieldCode; ?>[cc_cid]" value=""/></div>
|
87 |
+
|
88 |
+
<a href="#" class="cvv-what-is-this"><?php echo $this->__('What is this?') ?></a>
|
89 |
+
</div>
|
90 |
+
</li>
|
91 |
+
</ul>
|
92 |
+
</fieldset>
|
93 |
+
<?php }?>
|
app/design/frontend/default/default/template/tpg/info.phtml
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $direct = Mage::getModel('tpg/direct'); ?>
|
2 |
+
<?php if ($direct->getConfigData('mode') != PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_DIRECT_API) {?>
|
3 |
+
<?php if ($direct->getConfigData('mode') == PayVector_Tpg_Model_Source_PaymentMode::PAYMENT_MODE_HOSTED_PAYMENT_FORM) {?>
|
4 |
+
<?php echo $this->__('PayVector Hosted Payment'); ?>
|
5 |
+
<?php } else {?>
|
6 |
+
<?php echo $this->__('PayVector Transparent Redirect'); ?>
|
7 |
+
<?php }?>
|
8 |
+
<?php } else {?>
|
9 |
+
<?php if($_info = $this->getInfo()): ?>
|
10 |
+
<?php echo $this->__('Name on the Card: %s', $this->htmlEscape($this->getInfo()->getCcOwner())) ?>
|
11 |
+
<br/>
|
12 |
+
<?php echo $this->__('Card Number: xxxx-%s', $this->htmlEscape($this->getInfo()->getCcLast4())) ?>
|
13 |
+
<br/>
|
14 |
+
<?php echo $this->__('Expiration Date: %s/%s', $this->htmlEscape($this->getInfo()->getCcExpMonth()), $this->htmlEscape($this->getInfo()->getCcExpYear())) ?>
|
15 |
+
<?php else: ?>
|
16 |
+
<?php endif; ?>
|
17 |
+
<?php }?>
|
package.xml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>PayVector_Tpg</name>
|
4 |
+
<version>1.0.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>PayVector payment extension compatible with Magento v 1.3, 1.4, 1.5, 1.6, 1.7, 1.8 and 1.9</summary>
|
10 |
+
<description>Fully supports 3D secure and CrossReference transactions. Also supports all of the integration methods provided by PayVector.</description>
|
11 |
+
<notes>First release based on IridiumCorp module v1.16.2</notes>
|
12 |
+
<authors><author><name>Iridium Corporation</name><user>IridiumCorp</user><email>support@payvector.net</email></author></authors>
|
13 |
+
<date>2014-06-11</date>
|
14 |
+
<time>10:54:49</time>
|
15 |
+
<contents><target name="magelocal"><dir name="PayVector"><dir name="Checkout"><dir name="Block"><dir name="Onepage"><dir name="Payment"><file name="Methods.php" hash="13be37e32795a710327ada3dfc91a22f"/></dir></dir></dir><dir name="Model"><dir name="Type"><file name="Onepage.php" hash="7c7c4a2ec9004b142f7094d93a456ba7"/></dir></dir><dir name="etc"><file name="config.xml" hash="2a388d8d243e5e9ed3954bd268ec084f"/></dir></dir><dir name="Sales"><dir name="Model"><dir name="Order"><file name="Invoice.php" hash="de5bb58bbb153c63cc60169f23461f6b"/><file name="Payment.php" hash="6cee2578e3d43006f8cad756e4ef43ce"/></dir><file name="Order.php" hash="c7d5bc41ac7e9e59d6fdb725acda4f58"/><dir name="Service"><file name="Quote.php" hash="b4a316a007255d8c3a4752daaf38b725"/></dir></dir><dir name="etc"><file name="config.xml" hash="bc7c6ba07a063b64cbc7917d0611b5e0"/></dir></dir><dir name="Tpg"><dir name="Block"><dir name="Adminhtml"><dir name="Sales"><dir name="Order"><file name="Payment.php" hash="eaff6b529038745549a714edb92ea1df"/></dir></dir></dir><file name="Error.php" hash="a1e3040eb95d6fcdf3855d77f42fbde6"/><file name="Form.php" hash="4f537f6a45a1a95f7cf27c45739ee9ba"/><file name="Info.php" hash="0eac4e7b36a800224852f2a445ba7ae6"/><file name="Redirect.php" hash="9e1577b80807592f56e62db6f21cfe3f"/><file name="Threedsecure.php" hash="2b25adce59c4ea485caa7b49499bfc32"/></dir><dir name="Helper"><file name="Data.php" hash="bae2102ea62785f6145ecfd00a5f2fb4"/></dir><dir name="Model"><dir name="Common"><file name="GlobalErrors.php" hash="09dd5e1cc01a6e4265d85cc903b91284"/><file name="ISOCountries.php" hash="2b6447781fb33853dd7447916fd98829"/><file name="ISOCurrencies.php" hash="4450b69c528863b95206bbcbd1360ede"/><file name="PaymentFormHelper.php" hash="24048b009ff8ea6382ea2bb12e622867"/><dir name="ThePaymentGateway"><file name="PaymentSystem.php" hash="246422bf2e2e0d20fb0f35532f8896d3"/><file name="SOAP.php" hash="860646be97216087262b11c5818fcec3"/><file name="TPG_Common.php" hash="4ef394ae6384e015e8c197a58106f2c7"/><file name="cacert.pem" hash="36c2e174ffa1e4739e5ce879d660dd6a"/></dir></dir><file name="Direct.php" hash="190c461d20361992baaa8b0b41c18124"/><file name="Gatewayentrypoints.php" hash="f32d905a9b6c9ba8b742e340fc86049f"/><file name="Request.php" hash="75a23ed2d447674c823cfd3cc3602f68"/><dir name="Resource"><dir name="Eav"><dir name="Mysql4"><file name="Setup.php" hash="410116bc6a8d327a2232512c13561c8a"/></dir></dir><dir name="Gatewayentrypoints"><file name="Collection.php" hash="79bb8b43312451d7577c58bf60428366"/></dir><file name="Gatewayentrypoints.php" hash="a5033400ece4a661f0416c577df827b9"/><file name="Setup.php" hash="9a8cbc132f29cd61b82c36aac9d51407"/></dir><dir name="Source"><file name="HashMethod.php" hash="3077605f52458e6c6d88dc773a228c38"/><file name="OrderStatus.php" hash="95d343f1c2419edbf63847a357ae4076"/><file name="PaymentAction.php" hash="f3444cbbf95ffbcd5bc845110fd8ac0c"/><file name="PaymentMode.php" hash="671768ed91f1ca1178b67b8afd269ca9"/><file name="ResultDeliveryMethod.php" hash="7b6088293650fcf8bcb9aa23b2be1671"/></dir></dir><dir name="controllers"><file name="PaymentController.php" hash="cd40b0031ab96704f1316637045176e0"/></dir><dir name="etc"><file name="config.xml" hash="e563ec1c6df680deb91e4508e8ffe7cb"/><file name="system.xml" hash="0d1f30630d84daba413e4f2c8dd4edc0"/></dir><dir name="sql"><dir name="tpg_setup"><file name="install-0.1.0.php" hash="767431a50e2a891fe7d4adb930df2953"/><file name="mysql4-install-0.1.0.php" hash="9b478c72f89b327866ec12e7054bcc85"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="default"><dir name="default"><dir name="images"><file name="payvector.png" hash="e61e1555ca69863a79afb59382e3d16f"/></dir></dir></dir><dir name="base"><dir name="default"><dir name="images"><file name="payvector.png" hash="e61e1555ca69863a79afb59382e3d16f"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><file name="tpg.js" hash="11194666936eda1fd7cead21dd819780"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="tpg"><file name="form.phtml" hash="46d8d1f3c6532641e9429a64f9e8c55b"/><file name="info.phtml" hash="990a20f78e5085db5fcc792028b75d99"/></dir><dir name="payment"><dir name="info"><file name="cc_tpg.phtml" hash="f0182a45341820f6ce2d1738e67f5399"/></dir></dir></dir><dir name="layout"><file name="tpg.xml" hash="5327d6e72f7bd8aee9bc460cc9550b21"/></dir></dir></dir><dir name="base"><dir name="default"><dir name="template"><dir name="tpg"><file name="form.phtml" hash="5afb18fa16cdf8602ddc21486b3ddaaf"/><file name="info.phtml" hash="990a20f78e5085db5fcc792028b75d99"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="template"><dir name="tpg"><file name="form.phtml" hash="56f482c967ab3568af6b56b17c0b1c9a"/><file name="info.phtml" hash="b64d8592a41455f2c5fd011db6d15a21"/></dir></dir></dir></dir><dir name="base"><dir name="default"><dir name="template"><dir name="tpg"><file name="form.phtml" hash="6f683fb5e9ab2a6a6275df122bbc416a"/><file name="info.phtml" hash="512b9cee213170fb226cd2bf59daa761"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Iridiumcorp_All.xml" hash=""/></dir></target></contents>
|
16 |
+
<compatible/>
|
17 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>SimpleXML</name><min></min><max></max></extension><extension><name>curl</name><min></min><max></max></extension></required></dependencies>
|
18 |
+
</package>
|
skin/adminhtml/default/default/tpg.js
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
function IRC_runCrossReferenceTransaction(szActionURL, szOrderID, szCrossReference, szTransactionType)
|
2 |
+
{
|
3 |
+
var szConfirmMessage;
|
4 |
+
var szText;
|
5 |
+
|
6 |
+
if (szActionURL == "")
|
7 |
+
{
|
8 |
+
alert("Error: Invalid action URL");
|
9 |
+
}
|
10 |
+
|
11 |
+
if (szTransactionType == "VOID")
|
12 |
+
{
|
13 |
+
szConfirmMessage = "Are you sure you would like to void this payment?";
|
14 |
+
szText = "<ul class='messages'><li class='success-msg'><ul><li>Payment successfully voided</li></ul></li></ul>";
|
15 |
+
}
|
16 |
+
else if (szTransactionType == "COLLECTION")
|
17 |
+
{
|
18 |
+
szConfirmMessage = "Are you sure you would like to collect this authorized payment?";
|
19 |
+
szText = "<ul class='messages'><li class='success-msg'><ul><li>Authorized payment successfully collected</li></ul></li></ul>";
|
20 |
+
}
|
21 |
+
else
|
22 |
+
{
|
23 |
+
alert("Error: Unknown transaction type to run for this action: " + szTransactionType);
|
24 |
+
return;
|
25 |
+
}
|
26 |
+
|
27 |
+
if (confirm(szConfirmMessage))
|
28 |
+
{
|
29 |
+
new Ajax.Request(szActionURL,
|
30 |
+
{ method: "post",
|
31 |
+
parameters: { OrderID: szOrderID, CrossReference: szCrossReference },
|
32 |
+
onSuccess: function (result) { var szMessage = result.responseText; if (szMessage == "0") { location.href = location.href; /* cheating with displaying a success message before the page is refreshed */ $('messages').update(szText); } else { alert(szMessage); } }
|
33 |
+
});
|
34 |
+
}
|
35 |
+
}
|
skin/frontend/base/default/images/payvector.png
ADDED
Binary file
|
skin/frontend/default/default/images/payvector.png
ADDED
Binary file
|