PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.9.1
GiveWP – Donation Plugin and Fundraising Platform v2.9.1
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / PaymentGateways / PayPalCommerce / RefundPaymentHandler.php
give / src / PaymentGateways / PayPalCommerce Last commit date
DataTransferObjects 5 years ago Models 5 years ago Repositories 5 years ago Webhooks 5 years ago AccountAdminNotices.php 5 years ago AdminSettingFields.php 5 years ago AdvancedCardFields.php 5 years ago AjaxRequestHandler.php 5 years ago DonationDetailsPage.php 5 years ago DonationProcessor.php 5 years ago PayPalClient.php 5 years ago PayPalCommerce.php 5 years ago RefreshToken.php 5 years ago RefundPaymentHandler.php 5 years ago ScriptLoader.php 5 years ago Utils.php 5 years ago onBoardingRedirectHandler.php 5 years ago
RefundPaymentHandler.php
133 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce;
4
5 use Exception;
6 use Give_Payment;
7 use Give\PaymentGateways\PayPalCommerce\Repositories\PayPalOrder;
8
9 /**
10 * Class RefundPaymentHandler
11 *
12 * @since 2.9.0
13 */
14 class RefundPaymentHandler {
15 /**
16 * @since 2.9.0
17 *
18 * @var PayPalOrder
19 */
20 private $ordersRepository;
21
22 /**
23 * RefundPaymentHandler constructor.
24 *
25 * @since 2.9.0
26 *
27 * @param PayPalOrder $ordersRepository
28 */
29 public function __construct( PayPalOrder $ordersRepository ) {
30 $this->ordersRepository = $ordersRepository;
31 }
32
33 /**
34 * Refunds the payment when the donation is marked as refunded
35 *
36 * @since 2.9.0
37 *
38 * @param int $donationId
39 *
40 * @throws Exception
41 */
42 public function refundPayment( $donationId ) {
43 if ( ! $this->isAdminOptInToRefundPaymentOnPayPal() ) {
44 return;
45 }
46
47 $payPalPaymentId = give_get_payment_transaction_id( $donationId );
48 $paymentGateway = give_get_payment_gateway( $donationId );
49 $newDonationStatus = give_clean( $_POST['give-payment-status'] );
50
51 if ( 'refunded' !== $newDonationStatus || PayPalCommerce::GATEWAY_ID !== $paymentGateway ) {
52 return;
53 }
54
55 try {
56 $this->ordersRepository->refundPayment( $payPalPaymentId );
57 } catch ( Exception $ex ) {
58 wp_safe_redirect( admin_url( "edit.php?post_type=give_forms&page=give-payment-history&view=view-payment-details&id={$donationId}&paypal-error=refund-failure" ) );
59 exit();
60 }
61 }
62
63
64 /**
65 * show Paypal Commerce payment refund failure notice.
66 *
67 * @since 2.9.0
68 */
69 public function showPaymentRefundFailureNotice() {
70 if ( ! isset( $_GET['paypal-error'] ) || 'refund-failure' !== $_GET['paypal-error'] ) {
71 return;
72 }
73
74 give( 'notices' )->register_notice(
75 [
76 'id' => 'give-paypal-commerce-refund-failure',
77 'type' => 'warning',
78 'show' => true,
79 'description' => sprintf(
80 '<strong>%1$s</strong>&nbsp;%2$s&nbsp;%3$s<a href="%4$s" target="_blank">%5$s</a>%6$s',
81 esc_html__( 'PayPal Donations:', 'give' ),
82 esc_html__( 'We were unable to process refund.', 'give' ),
83 esc_html__( 'Please ', 'give' ),
84 admin_url( 'edit.php?post_type=give_forms&page=give-tools&tab=logs' ),
85 esc_html__( 'check log', 'give' ),
86 esc_html__( ' for detailed information.', 'give' )
87 ),
88 ]
89 );
90 }
91
92 /**
93 * This function will display field to opt for refund.
94 *
95 * @param int $donationId Donation ID.
96 *
97 * @since 2.5.0
98 *
99 * @return void
100 */
101 public function optInForRefundFormField( $donationId ) {
102 if ( PayPalCommerce::GATEWAY_ID !== give_get_payment_gateway( $donationId ) ) {
103 return;
104 }
105
106 ?>
107 <div id="give-paypal-commerce-opt-refund-wrap" class="give-paypal-commerce-opt-refund give-admin-box-inside give-hidden">
108 <p>
109 <input type="checkbox" id="give-paypal-commerce-opt-refund" name="give_paypal_donations_optin_for_refund" value="1"/>
110 <label for="give-paypal-commerce-opt-refund">
111 <?php esc_html_e( 'Refund Charge in PayPal?', 'give' ); ?>
112 </label>
113 </p>
114 </div>
115
116 <?php
117 }
118
119
120 /**
121 * Return whether or not admin optin for refund payment in PayPal
122 *
123 * @since 2.9.0
124 *
125 * @return bool
126 */
127 private function isAdminOptInToRefundPaymentOnPayPal() {
128 return ! empty( $_POST['give_paypal_donations_optin_for_refund'] ) ?
129 (bool) absint( $_POST['give_paypal_donations_optin_for_refund'] )
130 : false;
131 }
132 }
133