diff --git a/classes/lib/angelleye/paypal-php-library/includes/paypal.class.php b/classes/lib/angelleye/paypal-php-library/includes/paypal.class.php index 7eef5a86b..23fea5570 100644 --- a/classes/lib/angelleye/paypal-php-library/includes/paypal.class.php +++ b/classes/lib/angelleye/paypal-php-library/includes/paypal.class.php @@ -1611,131 +1611,137 @@ function GetExpressCheckoutDetails($Token) * @param array call config data * @return array */ - function DoExpressCheckoutPayment($DataArray) - { - $DECPFieldsNVP = '&METHOD=DoExpressCheckoutPayment'; - $PaymentsNVP = ''; - $UserSelectedOptionsNVP = ''; - - // DoExpressCheckoutPayment Fields - $DECPFields = isset($DataArray['DECPFields']) ? $DataArray['DECPFields'] : array(); - foreach($DECPFields as $DECPFieldsVar => $DECPFieldsVal) - { - $DECPFieldsNVP .= $DECPFieldsVal != '' ? '&' . strtoupper($DECPFieldsVar) . '=' . urlencode($DECPFieldsVal) : ''; - } - - // Payment Details Type Fields - $Payments = isset($DataArray['Payments']) ? $DataArray['Payments'] : array(); - $n = 0; - foreach($Payments as $PaymentsVar => $PaymentsVal) - { - $CurrentPayment = $Payments[$PaymentsVar]; - foreach($CurrentPayment as $CurrentPaymentVar => $CurrentPaymentVal) - { - if(strtoupper($CurrentPaymentVar) != 'ORDER_ITEMS') - { - $PaymentsNVP .= $CurrentPaymentVal != '' ? '&PAYMENTREQUEST_' . $n . '_' . strtoupper($CurrentPaymentVar) . '=' . urlencode($CurrentPaymentVal) : ''; - } - else - { - $PaymentOrderItems = $CurrentPayment['order_items']; - $n_item = 0; - foreach($PaymentOrderItems as $OrderItemsVar => $OrderItemsVal) - { - $CurrentItem = $PaymentOrderItems[$OrderItemsVar]; - foreach($CurrentItem as $CurrentItemVar => $CurrentItemVal) - { - $PaymentsNVP .= $CurrentItemVal != '' ? '&L_PAYMENTREQUEST_' . $n . '_' . strtoupper($CurrentItemVar) . $n_item . '=' . urlencode($CurrentItemVal) : ''; - } - $n_item++; - } - } - } - $n++; - } - - // User Selected Options - $UserSelectedOptions = isset($DataArray['UserSelectedOptions']) ? $DataArray['UserSelectedOptions'] : array(); - foreach($UserSelectedOptions as $UserSelectedOptionVar => $UserSelectedOptionVal) - { - $UserSelectedOptionsNVP .= $UserSelectedOptionVal != '' ? '&' . strtoupper($UserSelectedOptionVar) . '=' . urlencode($UserSelectedOptionVal) : ''; - } - - $NVPRequest = $this->NVPCredentials . $DECPFieldsNVP . $PaymentsNVP . $UserSelectedOptionsNVP; - $NVPResponse = $this->CURLRequest($NVPRequest); - if( isset( $NVPResponse ) && is_array( $NVPResponse ) && !empty( $NVPResponse['CURL_ERROR'] ) ){ - return $NVPResponse; + + + function DoExpressCheckoutPayment($DataArray) { + $DECPFieldsNVP = '&METHOD=DoExpressCheckoutPayment'; + $PaymentsNVP = ''; + $UserSelectedOptionsNVP = ''; + + // DoExpressCheckoutPayment Fields + $DECPFields = isset($DataArray['DECPFields']) ? $DataArray['DECPFields'] : array(); + foreach ($DECPFields as $DECPFieldsVar => $DECPFieldsVal) { + $DECPFieldsNVP .= $DECPFieldsVal != '' ? '&' . strtoupper($DECPFieldsVar) . '=' . urlencode($DECPFieldsVal) : ''; + } + + // Payment Details Type Fields + $Payments = isset($DataArray['Payments']) ? $DataArray['Payments'] : array(); + $n = 0; + foreach ($Payments as $PaymentsVar => $PaymentsVal) { + $CurrentPayment = $Payments[$PaymentsVar]; + foreach ($CurrentPayment as $CurrentPaymentVar => $CurrentPaymentVal) { + if (strtoupper($CurrentPaymentVar) == 'ORDER_ITEMS') { + $PaymentOrderItems = $CurrentPayment['order_items']; + $n_item = 0; + foreach ($PaymentOrderItems as $OrderItemsVar => $OrderItemsVal) { + $CurrentItem = $PaymentOrderItems[$OrderItemsVar]; + foreach ($CurrentItem as $CurrentItemVar => $CurrentItemVal) { + $PaymentsNVP .= $CurrentItemVal != '' ? '&L_PAYMENTREQUEST_' . $n . '_' . strtoupper($CurrentItemVar) . $n_item . '=' . urlencode($CurrentItemVal) : ''; + } + $n_item++; + } + } elseif (strtoupper($CurrentPaymentVar) == 'REDEEMED_OFFERS') { + $RedeemedOffers = $CurrentPayment['redeemed_offers']; + $n_item = 0; + foreach ($RedeemedOffers as $RedeemedOfferVar => $RedeemedOfferVal) { + $CurrentRedeemedOffer = $RedeemedOffers[$RedeemedOfferVar]; + foreach ($CurrentRedeemedOffer as $CurrentRedeemedOfferVar => $CurrentRedeemedOfferVal) { + $PaymentsNVP .= $CurrentRedeemedOfferVal != '' ? '&L_PAYMENTREQUEST_' . $n . '_' . strtoupper($CurrentRedeemedOfferVar) . $n_item . '=' . urlencode($CurrentRedeemedOfferVal) : ''; + } + $n_item++; + } + } elseif (strtoupper($CurrentPaymentVar) == 'MERCHANT_DATA_VARS') { + $MerchantDataVars = $CurrentPayment['merchant_data_vars']; + $n_item = 0; + foreach ($MerchantDataVars as $MerchantDataVarsVar => $MerchantDataVarsVal) { + $CurrentMerchantDataVar = $MerchantDataVars[$MerchantDataVarsVar]; + foreach ($CurrentMerchantDataVar as $CurrentMerchantDataVarVar => $CurrentMerchantDataVarVal) { + $PaymentsNVP .= $CurrentMerchantDataVarVal != '' ? '&L_PAYMENTREQUEST_' . $n . '_' . strtoupper($CurrentMerchantDataVarVar) . $n_item . '=' . urlencode($CurrentMerchantDataVarVal) : ''; + } + $n_item++; + } + } else { + $PaymentsNVP .= $CurrentPaymentVal != '' ? '&PAYMENTREQUEST_' . $n . '_' . strtoupper($CurrentPaymentVar) . '=' . urlencode($CurrentPaymentVal) : ''; + } } - $NVPRequestArray = $this->NVPToArray($NVPRequest); - $NVPResponseArray = $this->NVPToArray($NVPResponse); - - $Errors = $this->GetErrors($NVPResponseArray); - - // Loop through all possible payments and parse out data accordingly. - // This is to handle parallel payments. - $n = 0; - $Payments = array(); - while(isset($NVPResponseArray['PAYMENTINFO_' . $n . '_AMT'])) - { - $Payment = array( - 'TRANSACTIONID' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_TRANSACTIONID']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_TRANSACTIONID'] : '', - 'TRANSACTIONTYPE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_TRANSACTIONTYPE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_TRANSACTIONTYPE'] : '', - 'PAYMENTTYPE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_PAYMENTTYPE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_PAYMENTTYPE'] : '', - 'ORDERTIME' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_ORDERTIME']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_ORDERTIME'] : '', - 'AMT' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_AMT']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_AMT'] : '', - 'FEEAMT' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_FEEAMT']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_FEEAMT'] : '', - 'SETTLEAMT' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_SETTLEAMT']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_SETTLEAMT'] : '', - 'TAXAMT' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_TAXAMT']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_TAXAMT'] : '', - 'EXCHANGERATE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_EXCHANGERATE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_EXCHANGERATE'] : '', - 'CURRENCYCODE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_CURRENCYCODE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_CURRENCYCODE'] : '', - 'PAYMENTSTATUS' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_PAYMENTSTATUS']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_PAYMENTSTATUS'] : '', - 'PENDINGREASON' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_PENDINGREASON']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_PENDINGREASON'] : '', - 'REASONCODE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_REASONCODE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_REASONCODE'] : '', - 'PROTECTIONELIGIBILITY' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_PROTECTIONELIGIBILITY']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_PROTECTIONELIGIBILITY'] : '', - 'ERRORCODE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_ERRORCODE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_ERRORCODE'] : '' - ); - - // Pull out FMF info for current payment. - $FMFilters = array(); - $n_filters = 0; - while(isset($NVPResponseArray['L_PAYMENTINFO_' . $n . '_FMFFILTERID' . $n_filters])) - { - $FMFilter = array( - 'ID' => isset($NVPResponseArray['L_PAYMENTINFO_' . $n . '_FMFFILTERID' . $n_filters]) ? $NVPResponseArray['L_PAYMENTINFO_' . $n . '_FMFFILTERID' . $n_filters] : '', - 'NAME' => isset($NVPResponseArray['L_PAYMENTINFO_' . $n . '_FMFFILTERNAME' . $n_filters]) ? $NVPResponseArray['L_PAYMENTINFO_' . $n . '_FMFFILTERNAME' . $n_filters] : '' - ); - $n_filters++; - } - $Payment['FMFILTERS'] = $FMFilters; - - // Pull error info for current payment. - $PaymentErrors = array(); - while(isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_ERRORCODE'])) - { - $Error = array( - 'ERRORCODE' => isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_ERRORCODE']) ? $NVPResponseArray['PAYMENTREQUEST_' . $n . '_ERRORCODE'] : '', - 'SHORTMESSAGE' => isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_SHORTMESSAGE']) ? $NVPResponseArray['PAYMENTREQUEST_' . $n . '_SHORTMESSAGE'] : '', - 'LONGMESSAGE' => isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_LONGMESSAGE']) ? $NVPResponseArray['PAYMENTREQUEST_' . $n . '_LONGMESSAGE'] : '', - 'SEVERITYCODE' => isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_SEVERITYCODE']) ? $NVPResponseArray['PAYMENTREQUEST_' . $n . '_SEVERITYCODE'] : '', - 'ACK' => isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_ACK']) ? $NVPResponseArray['PAYMENTREQUEST_' . $n . '_ACK'] : '' - ); - array_push($PaymentErrors, $Error); - } - $Payment['ERRORS'] = $PaymentErrors; - - array_push($Payments, $Payment); - $n++; - } - - $NVPResponseArray['ERRORS'] = $Errors; - $NVPResponseArray['PAYMENTS'] = $Payments; - $NVPResponseArray['REQUESTDATA'] = $NVPRequestArray; - $NVPResponseArray['RAWREQUEST'] = $this->MaskAPIResult($NVPRequest); - $NVPResponseArray['RAWRESPONSE'] = $NVPResponse; - - return $NVPResponseArray; - - } + $n++; + } + + // User Selected Options + $UserSelectedOptions = isset($DataArray['UserSelectedOptions']) ? $DataArray['UserSelectedOptions'] : array(); + foreach ($UserSelectedOptions as $UserSelectedOptionVar => $UserSelectedOptionVal) { + $UserSelectedOptionsNVP .= $UserSelectedOptionVal != '' ? '&' . strtoupper($UserSelectedOptionVar) . '=' . urlencode($UserSelectedOptionVal) : ''; + } + + $NVPRequest = $this->NVPCredentials . $DECPFieldsNVP . $PaymentsNVP . $UserSelectedOptionsNVP; + $NVPResponse = $this->CURLRequest($NVPRequest); + $NVPRequestArray = $this->NVPToArray($NVPRequest); + $NVPResponseArray = $this->NVPToArray($NVPResponse); + + $Errors = $this->GetErrors($NVPResponseArray); + + // Loop through all possible payments and parse out data accordingly. + // This is to handle parallel payments. + $n = 0; + $Payments = array(); + while (isset($NVPResponseArray['PAYMENTINFO_' . $n . '_AMT'])) { + $Payment = array( + 'TRANSACTIONID' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_TRANSACTIONID']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_TRANSACTIONID'] : '', + 'TRANSACTIONTYPE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_TRANSACTIONTYPE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_TRANSACTIONTYPE'] : '', + 'PAYMENTTYPE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_PAYMENTTYPE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_PAYMENTTYPE'] : '', + 'ORDERTIME' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_ORDERTIME']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_ORDERTIME'] : '', + 'AMT' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_AMT']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_AMT'] : '', + 'FEEAMT' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_FEEAMT']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_FEEAMT'] : '', + 'SETTLEAMT' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_SETTLEAMT']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_SETTLEAMT'] : '', + 'TAXAMT' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_TAXAMT']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_TAXAMT'] : '', + 'EXCHANGERATE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_EXCHANGERATE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_EXCHANGERATE'] : '', + 'CURRENCYCODE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_CURRENCYCODE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_CURRENCYCODE'] : '', + 'PAYMENTSTATUS' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_PAYMENTSTATUS']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_PAYMENTSTATUS'] : '', + 'PENDINGREASON' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_PENDINGREASON']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_PENDINGREASON'] : '', + 'REASONCODE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_REASONCODE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_REASONCODE'] : '', + 'PROTECTIONELIGIBILITY' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_PROTECTIONELIGIBILITY']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_PROTECTIONELIGIBILITY'] : '', + 'ERRORCODE' => isset($NVPResponseArray['PAYMENTINFO_' . $n . '_ERRORCODE']) ? $NVPResponseArray['PAYMENTINFO_' . $n . '_ERRORCODE'] : '' + ); + + // Pull out FMF info for current payment. + $FMFilters = array(); + $n_filters = 0; + while (isset($NVPResponseArray['L_PAYMENTINFO_' . $n . '_FMFFILTERID' . $n_filters])) { + $FMFilter = array( + 'ID' => isset($NVPResponseArray['L_PAYMENTINFO_' . $n . '_FMFFILTERID' . $n_filters]) ? $NVPResponseArray['L_PAYMENTINFO_' . $n . '_FMFFILTERID' . $n_filters] : '', + 'NAME' => isset($NVPResponseArray['L_PAYMENTINFO_' . $n . '_FMFFILTERNAME' . $n_filters]) ? $NVPResponseArray['L_PAYMENTINFO_' . $n . '_FMFFILTERNAME' . $n_filters] : '' + ); + $n_filters++; + } + $Payment['FMFILTERS'] = $FMFilters; + + // Pull error info for current payment. + $PaymentErrors = array(); + while (isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_ERRORCODE'])) { + $Error = array( + 'ERRORCODE' => isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_ERRORCODE']) ? $NVPResponseArray['PAYMENTREQUEST_' . $n . '_ERRORCODE'] : '', + 'SHORTMESSAGE' => isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_SHORTMESSAGE']) ? $NVPResponseArray['PAYMENTREQUEST_' . $n . '_SHORTMESSAGE'] : '', + 'LONGMESSAGE' => isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_LONGMESSAGE']) ? $NVPResponseArray['PAYMENTREQUEST_' . $n . '_LONGMESSAGE'] : '', + 'SEVERITYCODE' => isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_SEVERITYCODE']) ? $NVPResponseArray['PAYMENTREQUEST_' . $n . '_SEVERITYCODE'] : '', + 'ACK' => isset($NVPResponseArray['PAYMENTREQUEST_' . $n . '_ACK']) ? $NVPResponseArray['PAYMENTREQUEST_' . $n . '_ACK'] : '' + ); + array_push($PaymentErrors, $Error); + } + $Payment['ERRORS'] = $PaymentErrors; + + array_push($Payments, $Payment); + $n++; + } + + $NVPResponseArray['ERRORS'] = $Errors; + $NVPResponseArray['PAYMENTS'] = $Payments; + $NVPResponseArray['REQUESTDATA'] = $NVPRequestArray; + $NVPResponseArray['RAWREQUEST'] = $this->MaskAPIResult($NVPRequest); + $NVPResponseArray['RAWRESPONSE'] = $NVPResponse; + + return $NVPResponseArray; + } + /** * Search PayPal for transactions in your account history. diff --git a/classes/wc-gateway-paypal-express-angelleye.php b/classes/wc-gateway-paypal-express-angelleye.php index d92b61ccb..383b494a0 100644 --- a/classes/wc-gateway-paypal-express-angelleye.php +++ b/classes/wc-gateway-paypal-express-angelleye.php @@ -1681,6 +1681,8 @@ function CallGetShippingDetails($token) { $PayPalRequest = isset($PayPalResult['RAWREQUEST']) ? $PayPalResult['RAWREQUEST'] : ''; $PayPalResponse = isset($PayPalResult['RAWRESPONSE']) ? $PayPalResult['RAWRESPONSE'] : ''; + + $this->add_log('Request: ' . print_r($PayPal->NVPToArray($PayPal->MaskAPIResult($PayPalRequest)), true)); $this->add_log('Response: ' . print_r($PayPal->NVPToArray($PayPal->MaskAPIResult($PayPalResponse)), true)); @@ -1838,7 +1840,7 @@ function ConfirmPayment($FinalPaymentAmt) { $Payment['itemamt'] = $PaymentData['itemamt']; // Total shipping costs for this order. If you specify SHIPPINGAMT you mut also specify a value for ITEMAMT. $Payment['order_items'] = $PaymentOrderItems; - array_push($Payments, $Payment); + $UserSelectedOptions = array( 'shippingcalculationmode' => '', // Describes how the options that were presented to the user were determined. values are: API - Callback or API - Flatrate. @@ -1847,11 +1849,41 @@ function ConfirmPayment($FinalPaymentAmt) { 'shippingoptionamount' => '', // The shipping amount that was chosen by the buyer. 'shippingoptionname' => '', // Is true if the buyer chose the default shipping option...?? Maybe this is supposed to show the name..?? ); - + + $REVIEW_RESULT = unserialize($this->get_session('RESULT')); + + $PaymentRedeemedOffers = array(); + + if( (isset($REVIEW_RESULT) && !empty($REVIEW_RESULT)) && isset($REVIEW_RESULT['WALLETTYPE0'])) { + $i = 0; + while(isset($REVIEW_RESULT['WALLETTYPE' . $i])) { + $RedeemedOffer = array( + 'redeemedoffername' => $REVIEW_RESULT['WALLETDESCRIPTION' . $i], // The name of the buyer's wallet item offer redeemed in this transaction, such as, a merchant coupon or a loyalty program card. + 'redeemedofferdescription' => '', // Description of the offer redeemed in this transaction, such as, a merchant coupon or a loyalty program. + 'redeemedofferamount' => '', // Amount of the offer redeemed in this transaction + 'redeemedoffertype' => $REVIEW_RESULT['WALLETTYPE' . $i], // The type of the offer redeemed in this transaction + 'redeemedofferid' => $REVIEW_RESULT['WALLETID' . $i], // Unique ID of the offer redeemed in this transaction or the buyer's loyalty card account number. + 'redeemedofferpointsaccrued' => '', // The number of loyalty points accrued in this transaction. + 'cummulativepointsname' => '', // The name of the loyalty points program in which the buyer earned points in this transaction. + 'cummulativepointsdescription' => '', // Description of the loyalty points program. + 'cummulativepointstype' => '', // Type of discount or loyalty program. Values: LOYALTY_CARD + 'cummulativepointsid' => '', // Unique ID of the buyer's loyalty points account. + 'cummulativepointsaccrued' => '', // The cummulative number of loyalty points the buyer has accrued. + ); + + $i = $i + 1; + array_push($PaymentRedeemedOffers, $RedeemedOffer); + } + $Payment['redeemed_offers'] = $PaymentRedeemedOffers; + array_push($Payments, $Payment); + } else { + array_push($Payments, $Payment); + } + $PayPalRequestData = array( 'DECPFields' => $DECPFields, 'Payments' => $Payments, - //'UserSelectedOptions' => $UserSelectedOptions + 'UserSelectedOptions' => $UserSelectedOptions ); // Pass data into class for processing with PayPal and load the response array into $PayPalResult @@ -1960,7 +1992,7 @@ function get_state_code($country, $state) { * @param mixed $value * @return void */ - private function set_session($key, $value) { + public function set_session($key, $value) { WC()->session->$key = $value; } @@ -1971,11 +2003,11 @@ private function set_session($key, $value) { * @param mixed $key * @return void */ - private function get_session($key) { + public function get_session($key) { return WC()->session->$key; } - private function remove_session($key) { + public function remove_session($key) { WC()->session->$key = ""; }