Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
woocommerce
/
includes
/
gateways
/
paypal
/
includes
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php if (!defined('ABSPATH')) { exit; } class WC_Gateway_Paypal_API_Handler { public static $api_username; public static $api_password; public static $api_signature; public static $sandbox = false; public static function get_capture_request($order, $amount = null) { $request = array('VERSION' => '84.0', 'SIGNATURE' => self::$api_signature, 'USER' => self::$api_username, 'PWD' => self::$api_password, 'METHOD' => 'DoCapture', 'AUTHORIZATIONID' => $order->get_transaction_id(), 'AMT' => number_format(is_null($amount) ? $order->get_total() : $amount, 2, '.', ''), 'CURRENCYCODE' => $order->get_currency(), 'COMPLETETYPE' => 'Complete'); return apply_filters('woocommerce_paypal_capture_request', $request, $order, $amount); } public static function get_refund_request($order, $amount = null, $reason = '') { $request = array('VERSION' => '84.0', 'SIGNATURE' => self::$api_signature, 'USER' => self::$api_username, 'PWD' => self::$api_password, 'METHOD' => 'RefundTransaction', 'TRANSACTIONID' => $order->get_transaction_id(), 'NOTE' => html_entity_decode(wc_trim_string($reason, 255), ENT_NOQUOTES, 'UTF-8'), 'REFUNDTYPE' => 'Full'); if (!is_null($amount)) { $request['AMT'] = number_format($amount, 2, '.', ''); $request['CURRENCYCODE'] = $order->get_currency(); $request['REFUNDTYPE'] = 'Partial'; } return apply_filters('woocommerce_paypal_refund_request', $request, $order, $amount, $reason); } public static function do_capture($order, $amount = null) { $raw_response = wp_safe_remote_post(self::$sandbox ? 'https://api-3t.sandbox.paypal.com/nvp' : 'https://api-3t.paypal.com/nvp', array('method' => 'POST', 'body' => self::get_capture_request($order, $amount), 'timeout' => 70, 'user-agent' => 'WooCommerce/' . WC()->version, 'httpversion' => '1.1')); WC_Gateway_Paypal::log('DoCapture Response: ' . wc_print_r($raw_response, true)); if (is_wp_error($raw_response)) { return $raw_response; } elseif (empty($raw_response['body'])) { return new WP_Error('paypal-api', 'Empty Response'); } parse_str($raw_response['body'], $response); return (object) $response; } public static function refund_transaction($order, $amount = null, $reason = '') { $raw_response = wp_safe_remote_post(self::$sandbox ? 'https://api-3t.sandbox.paypal.com/nvp' : 'https://api-3t.paypal.com/nvp', array('method' => 'POST', 'body' => self::get_refund_request($order, $amount, $reason), 'timeout' => 70, 'user-agent' => 'WooCommerce/' . WC()->version, 'httpversion' => '1.1')); WC_Gateway_Paypal::log('Refund Response: ' . wc_print_r($raw_response, true)); if (is_wp_error($raw_response)) { return $raw_response; } elseif (empty($raw_response['body'])) { return new WP_Error('paypal-api', 'Empty Response'); } parse_str($raw_response['body'], $response); return (object) $response; } } class WC_Gateway_Paypal_Refund extends WC_Gateway_Paypal_API_Handler { public static function get_request($order, $amount = null, $reason = '') { return self::get_refund_request($order, $amount, $reason); } public static function refund_order($order, $amount = null, $reason = '', $sandbox = false) { if ($sandbox) { self::$sandbox = $sandbox; } $result = self::refund_transaction($order, $amount, $reason); if (is_wp_error($result)) { return $result; } else { return (array) $result; } } }