Actions
4 years ago
DataTransferObjects
4 years ago
Exceptions
4 years ago
Migrations
4 years ago
Models
4 years ago
Repositories
4 years ago
Webhooks
4 years ago
AccountAdminNotices.php
4 years ago
AdminSettingFields.php
4 years ago
AdvancedCardFields.php
4 years ago
AjaxRequestHandler.php
4 years ago
DonationDetailsPage.php
4 years ago
DonationFormPaymentMethod.php
4 years ago
PayPalClient.php
4 years ago
PayPalCommerce.php
4 years ago
RefreshToken.php
4 years ago
RefundPaymentHandler.php
4 years ago
ScriptLoader.php
4 years ago
Utils.php
4 years ago
onBoardingRedirectHandler.php
4 years ago
PayPalCommerce.php
206 lines
| 1 | <?php |
| 2 | |
| 3 | namespace Give\PaymentGateways\PayPalCommerce; |
| 4 | |
| 5 | use Exception; |
| 6 | use Give\Framework\PaymentGateways\Commands\GatewayCommand; |
| 7 | use Give\Framework\PaymentGateways\Commands\PaymentComplete; |
| 8 | use Give\Framework\PaymentGateways\Exceptions\PaymentGatewayException; |
| 9 | use Give\Framework\PaymentGateways\PaymentGateway; |
| 10 | use Give\Helpers\Call; |
| 11 | use Give\PaymentGateways\DataTransferObjects\GatewayPaymentData; |
| 12 | use Give\PaymentGateways\PayPalCommerce\Actions\GetPayPalOrderFromRequest; |
| 13 | use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail; |
| 14 | |
| 15 | /** |
| 16 | * Class PayPalCommerce |
| 17 | * |
| 18 | * Boots the PayPalCommerce gateway and provides its basic registration properties |
| 19 | * |
| 20 | * @since 2.9.0 |
| 21 | */ |
| 22 | class PayPalCommerce extends PaymentGateway |
| 23 | { |
| 24 | /** |
| 25 | * @deprecated |
| 26 | * |
| 27 | * Use getId or id function to access payment gateway id. |
| 28 | * |
| 29 | */ |
| 30 | const GATEWAY_ID = 'paypal-commerce'; |
| 31 | |
| 32 | /** |
| 33 | * @since 2.19.0 |
| 34 | * |
| 35 | * @param int $formId |
| 36 | * @param array $args |
| 37 | * |
| 38 | * @return string |
| 39 | */ |
| 40 | public function getLegacyFormFieldMarkup($formId, $args) |
| 41 | { |
| 42 | return give(AdvancedCardFields::class)->addCreditCardForm($formId); |
| 43 | } |
| 44 | |
| 45 | /** |
| 46 | * @since 2.19.0 |
| 47 | * |
| 48 | * @return string |
| 49 | */ |
| 50 | public static function id() |
| 51 | { |
| 52 | return 'paypal-commerce'; |
| 53 | } |
| 54 | |
| 55 | /** |
| 56 | * @since 2.19.0 |
| 57 | * |
| 58 | * @return string |
| 59 | */ |
| 60 | public function getId() |
| 61 | { |
| 62 | return self::id(); |
| 63 | } |
| 64 | |
| 65 | /** |
| 66 | * @since 2.19.0 |
| 67 | * |
| 68 | * @return string |
| 69 | */ |
| 70 | public function getName() |
| 71 | { |
| 72 | return esc_html__('PayPal Donations', 'give'); |
| 73 | } |
| 74 | |
| 75 | /** |
| 76 | * @since 2.19.0 |
| 77 | * |
| 78 | * @return string |
| 79 | */ |
| 80 | public function getPaymentMethodLabel() |
| 81 | { |
| 82 | return esc_html__('Credit Card', 'give'); |
| 83 | } |
| 84 | |
| 85 | /** |
| 86 | * @since 2.19.0 |
| 87 | * |
| 88 | * @param GatewayPaymentData $paymentData |
| 89 | * |
| 90 | * @return GatewayCommand |
| 91 | * @throws PaymentGatewayException |
| 92 | */ |
| 93 | public function createPayment(GatewayPaymentData $paymentData) |
| 94 | { |
| 95 | $paypalOrder = Call::invoke(GetPayPalOrderFromRequest::class); |
| 96 | $command = PaymentComplete::make($paypalOrder->payment->id); |
| 97 | $command->paymentNotes = [ |
| 98 | sprintf( |
| 99 | __('Transaction Successful. PayPal Transaction ID: %1$s PayPal Order ID: %2$s', 'give'), |
| 100 | $paypalOrder->payment->id, |
| 101 | $paypalOrder->id |
| 102 | ) |
| 103 | ]; |
| 104 | |
| 105 | give('payment_meta')->update_meta( |
| 106 | $paymentData->donationId, |
| 107 | '_give_order_id', |
| 108 | $paypalOrder->id |
| 109 | ); |
| 110 | |
| 111 | return $command; |
| 112 | } |
| 113 | |
| 114 | /** |
| 115 | * @since 2.16.2 Add setting "Transaction type". |
| 116 | */ |
| 117 | public function getOptions() |
| 118 | { |
| 119 | $settings = [ |
| 120 | [ |
| 121 | 'type' => 'title', |
| 122 | 'id' => 'give_gateway_settings_1', |
| 123 | 'table_html' => false, |
| 124 | ], |
| 125 | [ |
| 126 | 'id' => 'paypal_commerce_introduction', |
| 127 | 'type' => 'paypal_commerce_introduction', |
| 128 | ], |
| 129 | [ |
| 130 | 'type' => 'sectionend', |
| 131 | 'id' => 'give_gateway_settings_1', |
| 132 | 'table_html' => false, |
| 133 | ], |
| 134 | [ |
| 135 | 'type' => 'title', |
| 136 | 'id' => 'give_gateway_settings_2', |
| 137 | ], |
| 138 | [ |
| 139 | 'name' => esc_html__('Account Country', 'give'), |
| 140 | 'id' => 'paypal_commerce_account_country', |
| 141 | 'type' => 'paypal_commerce_account_country', |
| 142 | ], |
| 143 | [ |
| 144 | 'name' => esc_html__('Connect With Paypal', 'give'), |
| 145 | 'id' => 'paypal_commerce_account_manger', |
| 146 | 'type' => 'paypal_commerce_account_manger', |
| 147 | ], |
| 148 | [ |
| 149 | 'name' => esc_html__('Transaction Type', 'give'), |
| 150 | 'desc' => esc_html__( |
| 151 | 'Nonprofits must verify their status to withdraw donations they receive via PayPal. PayPal users that are not verified nonprofits must demonstrate how their donations will be used, once they raise more than $10,000. By default, GiveWP transactions are sent to PayPal as donations. You may change the transaction type using this option if you feel you may not meet PayPal\'s donation requirements.', |
| 152 | 'give' |
| 153 | ), |
| 154 | 'id' => 'paypal_commerce_transaction_type', |
| 155 | 'type' => 'radio_inline', |
| 156 | 'options' => [ |
| 157 | 'donation' => esc_html__('Donation', 'give'), |
| 158 | 'standard' => esc_html__('Standard Transaction', 'give'), |
| 159 | ], |
| 160 | 'default' => 'donation', |
| 161 | ], |
| 162 | [ |
| 163 | 'name' => esc_html__('PayPal Donations Gateway Settings Docs Link', 'give'), |
| 164 | 'id' => 'paypal_commerce_gateway_settings_docs_link', |
| 165 | 'url' => esc_url('http://docs.givewp.com/paypal-donations'), |
| 166 | 'title' => esc_html__('PayPal Donations Gateway Settings', 'give'), |
| 167 | 'type' => 'give_docs_link', |
| 168 | ], |
| 169 | [ |
| 170 | 'type' => 'sectionend', |
| 171 | 'id' => 'give_gateway_settings_2', |
| 172 | ], |
| 173 | ]; |
| 174 | |
| 175 | if (give(MerchantDetail::class)->accountIsReady) { |
| 176 | $settings = give_settings_array_insert( |
| 177 | $settings, |
| 178 | 'paypal_commerce_gateway_settings_docs_link', |
| 179 | [ |
| 180 | [ |
| 181 | 'name' => esc_html__('Collect Billing Details', 'give'), |
| 182 | 'id' => 'paypal_commerce_collect_billing_details', |
| 183 | 'type' => 'radio_inline', |
| 184 | 'desc' => esc_html__( |
| 185 | 'If enabled, required billing address fields are added to PayPal Donations Donation forms. These fields are required to process the transaction when enabled. Billing address details are added to both the donation and donor record in GiveWP.', |
| 186 | 'give' |
| 187 | ), |
| 188 | 'default' => 'disabled', |
| 189 | 'options' => [ |
| 190 | 'enabled' => esc_html__('Enabled', 'give'), |
| 191 | 'disabled' => esc_html__('Disabled', 'give'), |
| 192 | ], |
| 193 | ], |
| 194 | ] |
| 195 | ); |
| 196 | } |
| 197 | |
| 198 | /** |
| 199 | * filter the settings |
| 200 | * |
| 201 | * @since 2.9.6 |
| 202 | */ |
| 203 | return apply_filters('give_get_settings_paypal_commerce', $settings); |
| 204 | } |
| 205 | } |
| 206 |