Version Description
- 2019-09-13 =
- FEATURE: Updated Stripe integration to support Stripe v3, Stripe Elements, and their Secure Customer Authorization process.
- FEATURE: Updated how we store prices to support up to 8 decimals (e.g. for Bitcoin gateway implementations).
- ENHANCEMENT: Improved error messaging on the update billing page when a gateway doesn't support it or the user's current membership doesn't have a subscription.
- ENHANCEMENT: Added a pmpro_is_checkout() function that will return true if on the PMPro checkout page or a page with the PMPro checkout shortcode or block.
- ENHANCEMENT: Showing a warning message when a user about to be deleted has a membership so admins know that existing subscriptions will be deleted at the gateway.
- ENHANCEMENT: Added a pmpro_braintree_plan_id filter in case you need to adjust plan IDs. This is useful if you have several sites running on the same Braintree account.
- ENHANCEMENT: Added a pmpro_num_expiration_years filter to adjust the number of years to include in the dropdown to set the year membership will expire.
- ENHANCEMENT: Tweaked the UI of the orders list and members list in the dashboard.
- ENHANCEMENT: Added pmpro_membership_levels_table_extra_cols_header and pmpro_membership_levels_table_extra_cols_body hooks to add columns to the members list.
- ENHANCEMENT: Showing notices to admins when categories are hidden from them on the frontend of the site.
- ENHANCEMENT: Added a pmpro_url filter to filter URLs returned from that function.
- ENHANCEMENT: Adding a pmpro_checkout_gateway-stripe or pmpro_checkout_gateway-paypal/etc CSS class to the wrapping div for payment fields to aid in styling.
- ENHANCEMENT: Using the site's date format option when printing orders.
- BUG FIX/ENHANCEMENT: If a site has no paying levels, the test gateway will show as the "Default" gateway and we will no longer show a message about requiring gateway setup on the checkout page.
- BUG FIX/ENHANCEMENT: Updated Russian Ruble definition to have 0 decimals and use as the thousands separator. (Thanks, Airat Halitov)
- BUG FIX/ENHANCEMENT: Using add_query_arg when generating IPN URLs to avoid issues on sites that aren't using pretty permalinks or have moved their admin directory.
- BUG FIX/ENHANCEMENT: Fixed issue on advanced settings page where clicking on labels didn't check the corresponding check boxes.
- BUG FIX/ENHANCEMENT: Updated our pmpro_generateUsername() function to be a bit smarter.
- BUG FIX/ENHANCEMENT: Now using wp_generate_password() when choosing a random password for a user (e.g. when using the Sign Up Shortcode add on or the $skip_account_fields global).
- BUG FIX/ENHANCEMENT: Setting autocomplete to false on the "fullname" honeypot field. This will prevent user's with certain autocomplete tools from accidentally filling it out.
- BUG FIX/EHNANCEMENT: Now sending name and email fields to PayPay (using Website Payments Pro) even if no address was captured.
- BUG FIX/ENHANCEMENT: More specific CSS selectors for checkout form elements to make sure errors are highlighted/etc with different themes.
- BUG FIX: Fixed issue where the first 2000 or so orders might be skipped when exporting orders on large sites.
- BUG FIX: Fixed issue with setting custom trials on discount codes.
- BUG FIX: Fixed issue in the SQL query in the pmpro_calculateInitialPaymentRevenue() function. This function is deprecated, but still used by some custom code.
- BUG FIX: Fixed issue where default templates would fail to load if a custom template was specified.
- BUG FIX: Fixed fatal errors that could happen when using the PMPro REST API endpoints.
- BUG FIX: Fixed bug where the invoices page would sometimes show data for the current (admin) users instead of the user the invoice was for.
- BUG FIX: Fixed bug where the membership stats graphs would sometimes show up blank.
- BUG FIX: Now falling back to using readfile() if fpassthru() doesn't existing.
- BUG FIX: Fixed issue where the from name and email were not set properly if the Only Filter PMPro Emails setting was checked. (Thanks, mjulian87 on GitHub)
- BUG FIX: Fixed several error handling issues with the Cybersource gateway integration.
- REFACTOR: Moved JavaScript out of pages/checkout.php and other places into files in the /js/ folder. This will avoid issues where other JS at checkout breaks PMPro checkout and will improve compatibility with tools that optimize JS.
- REFACTOR: Added unit testing and a started on coverage of some functions in includes/functions.php. (Thanks, Mike Auteri)
- REFACTOR: The JS function askfirst is now prefixed as pmpro_askfirst.
Download this release
Release Info
Developer | strangerstudios |
Plugin | Paid Memberships Pro |
Version | 2.1 |
Comparing to | |
See all releases |
Code changes from version 2.0.7 to 2.1
- CHANGELOG.txt +65 -2
- adminpages/admin_header.php +1 -1
- adminpages/discountcodes.php +28 -21
- adminpages/functions.php +66 -0
- adminpages/membershiplevels.php +38 -6
- adminpages/memberslist-csv.php +13 -8
- adminpages/orders-csv.php +14 -9
- adminpages/orders.php +43 -93
- adminpages/paymentsettings.php +17 -0
- adminpages/reports/memberships.php +2 -2
- adminpages/templates/orders-print.php +1 -1
- bin/install-wp-tests.sh +152 -0
- classes/class.pmproemail.php +104 -0
- classes/gateways/class.pmprogateway_authorizenet.php +1 -1
- classes/gateways/class.pmprogateway_braintree.php +50 -37
- classes/gateways/class.pmprogateway_cybersource.php +215 -165
- classes/gateways/class.pmprogateway_payflowpro.php +5 -5
- classes/gateways/class.pmprogateway_paypal.php +105 -55
- classes/gateways/class.pmprogateway_paypalexpress.php +28 -45
- classes/gateways/class.pmprogateway_paypalstandard.php +2 -2
- classes/gateways/class.pmprogateway_stripe.php +1422 -890
- css/admin.css +1 -1
- css/frontend.css +82 -8
- email/payment_action.html +4 -0
- email/payment_action_admin.html +7 -0
- includes/cleanup.php +31 -1
- includes/currencies.php +3 -0
- includes/filters.php +1 -1
- includes/functions.php +299 -36
- includes/init.php +0 -71
- includes/lib/Stripe/LICENSE +1 -1
- includes/lib/Stripe/README.md +103 -10
- includes/lib/Stripe/VERSION +1 -1
- includes/lib/Stripe/data/ca-certificates.crt +421 -694
- includes/lib/Stripe/init.php +54 -3
- includes/lib/Stripe/lib/Account.php +297 -46
- includes/lib/Stripe/lib/AccountLink.php +21 -0
- includes/lib/Stripe/lib/AlipayAccount.php +60 -1
- includes/lib/Stripe/lib/ApiOperations/All.php +34 -0
- includes/lib/Stripe/lib/ApiOperations/Create.php +28 -0
- includes/lib/Stripe/lib/ApiOperations/Delete.php +27 -0
- includes/lib/Stripe/lib/ApiOperations/NestedResource.php +118 -0
- includes/lib/Stripe/lib/ApiOperations/Request.php +61 -0
- includes/lib/Stripe/lib/ApiOperations/Retrieve.php +27 -0
- includes/lib/Stripe/lib/ApiOperations/Update.php +46 -0
- includes/lib/Stripe/lib/ApiRequestor.php +198 -16
- includes/lib/Stripe/lib/ApiResource.php +40 -130
- includes/lib/Stripe/lib/ApplePayDomain.php +8 -46
- includes/lib/Stripe/lib/ApplicationFee.php +51 -23
- includes/lib/Stripe/lib/ApplicationFeeRefund.php +16 -0
- includes/lib/Stripe/lib/Balance.php +7 -3
- includes/lib/Stripe/lib/BalanceTransaction.php +41 -24
- includes/lib/Stripe/lib/BankAccount.php +85 -1
- includes/lib/Stripe/lib/BitcoinReceiver.php +20 -69
- includes/lib/Stripe/lib/BitcoinTransaction.php +1 -0
- includes/lib/Stripe/lib/Capability.php +83 -0
- includes/lib/Stripe/lib/Card.php +118 -1
- includes/lib/Stripe/lib/Charge.php +86 -64
- includes/lib/Stripe/lib/Checkout/Session.php +40 -0
- includes/lib/Stripe/lib/Collection.php +27 -6
- includes/lib/Stripe/lib/CountrySpec.php +12 -32
- includes/lib/Stripe/lib/Coupon.php +22 -64
- includes/lib/Stripe/lib/CreditNote.php +74 -0
- includes/lib/Stripe/lib/Customer.php +204 -75
- includes/lib/Stripe/lib/CustomerBalanceTransaction.php +88 -0
- includes/lib/Stripe/lib/Discount.php +21 -0
- includes/lib/Stripe/lib/Dispute.php +33 -39
- includes/lib/Stripe/lib/EphemeralKey.php +6 -20
- includes/lib/Stripe/lib/Error/Base.php +9 -0
- includes/lib/Stripe/lib/Error/Card.php +6 -7
- includes/lib/Stripe/lib/Error/Idempotency.php +7 -0
- includes/lib/Stripe/lib/Error/OAuth/OAuthBase.php +2 -2
- includes/lib/Stripe/lib/Event.php +148 -24
- includes/lib/Stripe/lib/ExchangeRate.php +17 -0
- includes/lib/Stripe/lib/File.php +62 -0
- includes/lib/Stripe/lib/FileLink.php +29 -0
- includes/lib/Stripe/lib/FileUpload.php +2 -58
- includes/lib/Stripe/lib/HttpClient/ClientInterface.php +5 -2
- includes/lib/Stripe/lib/HttpClient/CurlClient.php +241 -39
- includes/lib/Stripe/lib/Invoice.php +137 -27
- includes/lib/Stripe/lib/InvoiceItem.php +26 -64
- includes/lib/Stripe/lib/InvoiceLineItem.php +32 -0
- includes/lib/Stripe/lib/IssuerFraudRecord.php +25 -0
- includes/lib/Stripe/lib/Issuing/Authorization.php +68 -0
- includes/lib/Stripe/lib/Issuing/Card.php +51 -0
- includes/lib/Stripe/lib/Issuing/CardDetails.php +21 -0
- includes/lib/Stripe/lib/Issuing/Cardholder.php +30 -0
- includes/lib/Stripe/lib/Issuing/Dispute.php +30 -0
- includes/lib/Stripe/lib/Issuing/Transaction.php +35 -0
- includes/lib/Stripe/lib/LoginLink.php +5 -0
- includes/lib/Stripe/lib/OAuth.php +3 -8
- includes/lib/Stripe/lib/Order.php +29 -53
- includes/lib/Stripe/lib/OrderItem.php +22 -0
- includes/lib/Stripe/lib/OrderReturn.php +13 -31
- includes/lib/Stripe/lib/PaymentIntent.php +107 -0
- includes/lib/Stripe/lib/PaymentMethod.php +60 -0
- includes/lib/Stripe/lib/Payout.php +43 -48
- includes/lib/Stripe/lib/Person.php +108 -0
- includes/lib/Stripe/lib/Plan.php +25 -76
- includes/lib/Stripe/lib/Product.php +30 -61
- includes/lib/Stripe/lib/Radar/EarlyFraudWarning.php +36 -0
- includes/lib/Stripe/lib/Radar/ValueList.php +32 -0
- includes/lib/Stripe/lib/Radar/ValueListItem.php +26 -0
- includes/lib/Stripe/lib/Recipient.php +22 -67
- includes/lib/Stripe/lib/RecipientTransfer.php +2 -1
- includes/lib/Stripe/lib/Refund.php +30 -49
- includes/lib/Stripe/lib/Reporting/ReportRun.php +28 -0
- includes/lib/Stripe/lib/Reporting/ReportType.php +24 -0
- includes/lib/Stripe/lib/RequestTelemetry.php +27 -0
- includes/lib/Stripe/lib/Review.php +57 -0
- includes/lib/Stripe/lib/SKU.php +21 -64
- includes/lib/Stripe/lib/SetupIntent.php +75 -0
- includes/lib/Stripe/lib/Sigma/ScheduledQueryRun.php +33 -0
- includes/lib/Stripe/lib/SingletonApiResource.php +3 -1
- includes/lib/Stripe/lib/Source.php +90 -52
- includes/lib/Stripe/lib/SourceTransaction.php +23 -0
- includes/lib/Stripe/lib/Stripe.php +97 -7
- includes/lib/Stripe/lib/StripeObject.php +344 -115
- includes/lib/Stripe/lib/Subscription.php +58 -57
- includes/lib/Stripe/lib/SubscriptionItem.php +23 -67
- includes/lib/Stripe/lib/SubscriptionSchedule.php +111 -0
- includes/lib/Stripe/lib/SubscriptionScheduleRevision.php +77 -0
- includes/lib/Stripe/lib/TaxId.php +81 -0
- includes/lib/Stripe/lib/TaxRate.php +31 -0
- includes/lib/Stripe/lib/Terminal/ConnectionToken.php +17 -0
- includes/lib/Stripe/lib/Terminal/Location.php +25 -0
- includes/lib/Stripe/lib/Terminal/Reader.php +30 -0
- includes/lib/Stripe/lib/ThreeDSecure.php +6 -23
- includes/lib/Stripe/lib/Token.php +14 -22
- includes/lib/Stripe/lib/Topup.php +60 -0
- includes/lib/Stripe/lib/Transfer.php +63 -47
- includes/lib/Stripe/lib/TransferReversal.php +10 -1
- includes/lib/Stripe/lib/UsageRecord.php +44 -0
- includes/lib/Stripe/lib/UsageRecordSummary.php +22 -0
- includes/lib/Stripe/lib/Util/AutoPagingIterator.php +3 -3
- includes/lib/Stripe/lib/Util/CaseInsensitiveArray.php +62 -0
- includes/lib/Stripe/lib/Util/DefaultLogger.php +2 -2
- includes/lib/Stripe/lib/Util/LoggerInterface.php +1 -1
- includes/lib/Stripe/lib/Util/RandomGenerator.php +34 -0
- includes/lib/Stripe/lib/Util/RequestOptions.php +34 -5
- includes/lib/Stripe/lib/Util/Set.php +2 -2
- includes/lib/Stripe/lib/Util/Util.php +216 -72
- includes/lib/Stripe/lib/Webhook.php +4 -4
- includes/lib/Stripe/lib/WebhookEndpoint.php +29 -0
- includes/lib/Stripe/lib/WebhookSignature.php +4 -3
- includes/lib/php-jwt/BeforeValidException.php +7 -0
- includes/lib/php-jwt/ExpiredException.php +7 -0
- includes/lib/php-jwt/JWT.php +379 -0
- includes/lib/php-jwt/SignatureInvalidException.php +7 -0
- includes/profile.php +39 -39
- includes/recaptcha.php +14 -2
- includes/rest-api.php +49 -44
- includes/scripts.php +99 -0
- includes/sessions.php +81 -36
- includes/upgradecheck.php +16 -9
- js/pmpro-admin.js +49 -0
- js/pmpro-braintree.js +25 -0
- js/pmpro-checkout.js +203 -0
- js/pmpro-paypal.js +24 -0
- js/pmpro-stripe.js +159 -0
- languages/paid-memberships-pro.mo +0 -0
- languages/paid-memberships-pro.po +1468 -918
- languages/paid-memberships-pro.pot +183 -138
CHANGELOG.txt
CHANGED
@@ -1,6 +1,70 @@
|
|
1 |
== Changelog ==
|
2 |
|
3 |
-
= 2.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
* BUG FIX: Fixed warning in code added in 2.0.3 that could cause issues at checkout.
|
5 |
* BUG FIX: Setting priority of pmpro_check_admin_capabilities to 5 to ensure it runs before dashboard redirect.
|
6 |
* BUG FIX: Removed duplicate id attribute on the Membership Account page "cancel" action link.
|
@@ -103,7 +167,6 @@
|
|
103 |
* ENHANCEMENT: Showing the Stripe version we use on the Payment Settings page.
|
104 |
* ENHANCEMENT: Updated Copyright date and GPLv2 link in license.txt.
|
105 |
|
106 |
-
|
107 |
= 1.9.5.3 - 2018-06-26 =
|
108 |
* BUG FIX: The pmpro_ipnhandler_extend_memberships function actually needed use $user_id instead of $current_user.
|
109 |
|
1 |
== Changelog ==
|
2 |
|
3 |
+
= 2.1 - 2019-09-13 =
|
4 |
+
* FEATURE: Updated Stripe integration to support Stripe v3, Stripe Elements, and their Secure Customer Authorization process.
|
5 |
+
* FEATURE: Updated how we store prices to support up to 8 decimals (e.g. for Bitcoin gateway implementations).
|
6 |
+
* ENHANCEMENT: Improved error messaging on the update billing page when a gateway doesn't support it or the user's current membership doesn't have a subscription.
|
7 |
+
* ENHANCEMENT: Added a pmpro_is_checkout() function that will return true if on the PMPro checkout page or a page with the PMPro checkout shortcode or block.
|
8 |
+
* ENHANCEMENT: Showing a warning message when a user about to be deleted has a membership so admins know that existing subscriptions will be deleted at the gateway.
|
9 |
+
* ENHANCEMENT: Added a pmpro_braintree_plan_id filter in case you need to adjust plan IDs. This is useful if you have several sites running on the same Braintree account.
|
10 |
+
* ENHANCEMENT: Added a pmpro_num_expiration_years filter to adjust the number of years to include in the dropdown to set the year membership will expire.
|
11 |
+
* ENHANCEMENT: Tweaked the UI of the orders list and members list in the dashboard.
|
12 |
+
* ENHANCEMENT: Added pmpro_membership_levels_table_extra_cols_header and pmpro_membership_levels_table_extra_cols_body hooks to add columns to the members list.
|
13 |
+
* ENHANCEMENT: Showing notices to admins when categories are hidden from them on the frontend of the site.
|
14 |
+
* ENHANCEMENT: Added a pmpro_url filter to filter URLs returned from that function.
|
15 |
+
* ENHANCEMENT: Adding a pmpro_checkout_gateway-stripe or pmpro_checkout_gateway-paypal/etc CSS class to the wrapping div for payment fields to aid in styling.
|
16 |
+
* ENHANCEMENT: Using the site's date format option when printing orders.
|
17 |
+
* BUG FIX/ENHANCEMENT: If a site has no paying levels, the test gateway will show as the "Default" gateway and we will no longer show a message about requiring gateway setup on the checkout page.
|
18 |
+
* BUG FIX/ENHANCEMENT: Updated Russian Ruble definition to have 0 decimals and use as the thousands separator. (Thanks, Airat Halitov)
|
19 |
+
* BUG FIX/ENHANCEMENT: Using add_query_arg when generating IPN URLs to avoid issues on sites that aren't using pretty permalinks or have moved their admin directory.
|
20 |
+
* BUG FIX/ENHANCEMENT: Fixed issue on advanced settings page where clicking on labels didn't check the corresponding check boxes.
|
21 |
+
* BUG FIX/ENHANCEMENT: Updated our pmpro_generateUsername() function to be a bit smarter.
|
22 |
+
* BUG FIX/ENHANCEMENT: Now using wp_generate_password() when choosing a random password for a user (e.g. when using the Sign Up Shortcode add on or the $skip_account_fields global).
|
23 |
+
* BUG FIX/ENHANCEMENT: Setting autocomplete to false on the "fullname" honeypot field. This will prevent user's with certain autocomplete tools from accidentally filling it out.
|
24 |
+
* BUG FIX/EHNANCEMENT: Now sending name and email fields to PayPay (using Website Payments Pro) even if no address was captured.
|
25 |
+
* BUG FIX/ENHANCEMENT: More specific CSS selectors for checkout form elements to make sure errors are highlighted/etc with different themes.
|
26 |
+
* BUG FIX: Fixed issue where the first 2000 or so orders might be skipped when exporting orders on large sites.
|
27 |
+
* BUG FIX: Fixed issue with setting custom trials on discount codes.
|
28 |
+
* BUG FIX: Fixed issue in the SQL query in the pmpro_calculateInitialPaymentRevenue() function. This function is deprecated, but still used by some custom code.
|
29 |
+
* BUG FIX: Fixed issue where default templates would fail to load if a custom template was specified.
|
30 |
+
* BUG FIX: Fixed fatal errors that could happen when using the PMPro REST API endpoints.
|
31 |
+
* BUG FIX: Fixed bug where the invoices page would sometimes show data for the current (admin) users instead of the user the invoice was for.
|
32 |
+
* BUG FIX: Fixed bug where the membership stats graphs would sometimes show up blank.
|
33 |
+
* BUG FIX: Now falling back to using readfile() if fpassthru() doesn't existing.
|
34 |
+
* BUG FIX: Fixed issue where the from name and email were not set properly if the Only Filter PMPro Emails setting was checked. (Thanks, mjulian87 on GitHub)
|
35 |
+
* BUG FIX: Fixed several error handling issues with the Cybersource gateway integration.
|
36 |
+
* REFACTOR: Moved JavaScript out of pages/checkout.php and other places into files in the /js/ folder. This will avoid issues where other JS at checkout breaks PMPro checkout and will improve compatibility with tools that optimize JS.
|
37 |
+
* REFACTOR: Added unit testing and a started on coverage of some functions in includes/functions.php. (Thanks, Mike Auteri)
|
38 |
+
* REFACTOR: The JS function askfirst is now prefixed as pmpro_askfirst.
|
39 |
+
|
40 |
+
= 2.0.7 - 2019-05-30 =
|
41 |
+
* BUG FIX: Fixed issue where the profile start date would sometimes be set incorrectly on the Stripe subscription.
|
42 |
+
* BUG FIX: Fixed issue where the membership shortcode would not work properly if more than one level name was given.
|
43 |
+
* BUG FIX: Fixed issue where an incorrect email address was sometimes set in the confirm email field on the update billing page. (Thanks, Jessica Thomas)
|
44 |
+
* BUG FIX/ENHANCEMENT: Fixed placement of the hr tag above the user fields at checkout for consistency.
|
45 |
+
* ENHANCEMENT: Set the priority on the Require Membership meta box to "high" so it appears higher in the right sidebar.
|
46 |
+
|
47 |
+
= 2.0.6 - 2019-05-30 =
|
48 |
+
* SECURITY: Now using wp_safe_redirect when possible, especially in includes/login.php where the user-provided redirect_to URL parameter is used. (Thanks PluginVulnerabilities.com)
|
49 |
+
|
50 |
+
= 2.0.5 - 2019-04-25 =
|
51 |
+
* BUG FIX: Fixed fatal error on return from 2Checkout.
|
52 |
+
* BUG FIX: Removed error when installing PMPro via WP-CLI.
|
53 |
+
* BUG FIX: Fix database upgrade error on localhost environment. (Thanks, codezz on GitHub)
|
54 |
+
* BUG FIX: Fixed issue where the credit card expiring email didn't include user info because the user ID wasn't passed in properly. (Thanks, David Cervantes Caballero)
|
55 |
+
* BUG FIX: Fixed typo on edit level page. (Thanks, Theuns Coetzee)
|
56 |
+
* BUG FIX: Fixed bug with daily revenue reports not showing up in some cases.
|
57 |
+
* BUG FIX: Now checking before cancelling a Stripe subscription at the gateway to see if it has already been cancelled.
|
58 |
+
* BUG FIX/ENHANCEMENT: Now caching the query results in pmpro_getMembershipLevelsForUser(). This improves performance, especially when there are many posts on one page to check membership for. (Thanks, Seagyn Davis)
|
59 |
+
* BUG FIX/ENHANCEMENT: Now sending display_name to the $data array passed to PMPro email filters. (Thanks, David Cervantes Caballero)
|
60 |
+
* BUG FIX/ENHANCEMENT: Now searching for the last order with "success" or "pending" status on the Billing page.
|
61 |
+
* BUG FIX/ENHANCEMENT: Added pmpro_checkout_preheader_before_get_level_at_checkout and pmpro_checkout_preheader_after_get_level_at_checkout action hooks. Using pmpro_checkout_preheader_before_get_level_at_checkout to start the session earlier now.
|
62 |
+
* BUG FIX/ENHANCEMENT: Removed the "membership_code_id" and "membership_code" as field options for the member shortcode. These weren't working and it's unclear what would be meant to ask for a user's discount code since a user could have several orders with or without discount codes. Added "membership_description" and "membership_confirmation" instead.
|
63 |
+
* BUG FIX/ENHANCEMENT: Filtering the password reset message to make sure the link still works in all cases when we convert emails to HTML.
|
64 |
+
* BUG FIX/ENHANCEMENT: Added reCAPTCHA v3 and invisible reCAPTCHA support. It is recommended sites using Stripe or Braintree update to the reCAPTCHA v3 option. Read more here: https://www.paidmembershipspro.com/pmpro-update-2-0-5/
|
65 |
+
* REFACTOR: Now running the pmpro_billing_preheader hook after the jquery.creditCardValidator script is enqueued in preheader/billing.php to match how we do it in preheader/checkout.php. (Thanks, Rafe Colton)
|
66 |
+
|
67 |
+
= 2.0.4 - 2019-01-14 =
|
68 |
* BUG FIX: Fixed warning in code added in 2.0.3 that could cause issues at checkout.
|
69 |
* BUG FIX: Setting priority of pmpro_check_admin_capabilities to 5 to ensure it runs before dashboard redirect.
|
70 |
* BUG FIX: Removed duplicate id attribute on the Membership Account page "cancel" action link.
|
167 |
* ENHANCEMENT: Showing the Stripe version we use on the Payment Settings page.
|
168 |
* ENHANCEMENT: Updated Copyright date and GPLv2 link in license.txt.
|
169 |
|
|
|
170 |
= 1.9.5.3 - 2018-06-26 =
|
171 |
* BUG FIX: The pmpro_ipnhandler_extend_memberships function actually needed use $user_id instead of $current_user.
|
172 |
|
adminpages/admin_header.php
CHANGED
@@ -25,7 +25,7 @@
|
|
25 |
$msgt .= " <a href=\"" . admin_url('admin.php?page=pmpro-membershiplevels&edit=-1') . "\">" . __("Add a membership level to get started.", 'paid-memberships-pro' ) . "</a>";
|
26 |
elseif($pmpro_level_ready && !$pmpro_pages_ready && $view != "pmpro-pagesettings")
|
27 |
$msgt .= " <strong>" . __( 'Next step:', 'paid-memberships-pro' ) . "</strong> <a href=\"" . admin_url('admin.php?page=pmpro-pagesettings') . "\">" . __("Set up the membership pages", 'paid-memberships-pro' ) . "</a>.";
|
28 |
-
elseif($pmpro_level_ready && $pmpro_pages_ready && !$pmpro_gateway_ready && $view != "pmpro-paymentsettings")
|
29 |
$msgt .= " <strong>" . __( 'Next step:', 'paid-memberships-pro' ) . "</strong> <a href=\"" . admin_url('admin.php?page=pmpro-paymentsettings') . "\">" . __("Set up your SSL certificate and payment gateway", 'paid-memberships-pro' ) . "</a>.";
|
30 |
|
31 |
if(empty($msgt))
|
25 |
$msgt .= " <a href=\"" . admin_url('admin.php?page=pmpro-membershiplevels&edit=-1') . "\">" . __("Add a membership level to get started.", 'paid-memberships-pro' ) . "</a>";
|
26 |
elseif($pmpro_level_ready && !$pmpro_pages_ready && $view != "pmpro-pagesettings")
|
27 |
$msgt .= " <strong>" . __( 'Next step:', 'paid-memberships-pro' ) . "</strong> <a href=\"" . admin_url('admin.php?page=pmpro-pagesettings') . "\">" . __("Set up the membership pages", 'paid-memberships-pro' ) . "</a>.";
|
28 |
+
elseif($pmpro_level_ready && $pmpro_pages_ready && !$pmpro_gateway_ready && $view != "pmpro-paymentsettings" && ! pmpro_onlyFreeLevels())
|
29 |
$msgt .= " <strong>" . __( 'Next step:', 'paid-memberships-pro' ) . "</strong> <a href=\"" . admin_url('admin.php?page=pmpro-paymentsettings') . "\">" . __("Set up your SSL certificate and payment gateway", 'paid-memberships-pro' ) . "</a>.";
|
30 |
|
31 |
if(empty($msgt))
|
adminpages/discountcodes.php
CHANGED
@@ -585,7 +585,7 @@
|
|
585 |
|
586 |
<tr>
|
587 |
<th scope="row" valign="top"><label><?php _e('Recurring Subscription', 'paid-memberships-pro' );?>:</label></th>
|
588 |
-
<td><input class="recurring_checkbox" id="recurring_<?php echo $level->id;?>" name="recurring[]" type="checkbox" value="<?php echo $level->id?>" <?php if(pmpro_isLevelRecurring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).
|
589 |
</tr>
|
590 |
|
591 |
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
@@ -626,7 +626,7 @@
|
|
626 |
|
627 |
<tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
|
628 |
<th scope="row" valign="top"><label><?php _e('Custom Trial', 'paid-memberships-pro' );?>:</label></th>
|
629 |
-
<td><input id="custom_trial_<?php echo $level->id?>" id="custom_trial_<?php echo $level->id;?>" name="custom_trial[]" type="checkbox" value="<?php echo $level->id?>" <?php if ( pmpro_isLevelTrial($level) ) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).
|
630 |
</tr>
|
631 |
|
632 |
<tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
|
@@ -750,7 +750,6 @@
|
|
750 |
<th><?php _e('Uses', 'paid-memberships-pro' );?></th>
|
751 |
<th><?php _e('Levels', 'paid-memberships-pro' );?></th>
|
752 |
<?php do_action("pmpro_discountcodes_extra_cols_header", $codes);?>
|
753 |
-
<th></th>
|
754 |
</tr>
|
755 |
</thead>
|
756 |
<tbody>
|
@@ -759,8 +758,24 @@
|
|
759 |
foreach($codes as $code) { ?>
|
760 |
<tr<?php if($count++ % 2 == 1) { ?> class="alternate"<?php } ?>>
|
761 |
<td><?php echo $code->id?></td>
|
762 |
-
<td>
|
763 |
-
<a href="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
764 |
</td>
|
765 |
<td>
|
766 |
<?php echo date_i18n(get_option('date_format'), $code->starts)?>
|
@@ -790,25 +805,17 @@
|
|
790 |
$levels = $wpdb->get_results($sqlQuery);
|
791 |
|
792 |
$level_names = array();
|
793 |
-
foreach($levels as $level)
|
794 |
-
$level_names[] =
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
|
|
|
|
799 |
?>
|
800 |
</td>
|
801 |
<?php do_action("pmpro_discountcodes_extra_cols_body", $code);?>
|
802 |
-
<td>
|
803 |
-
<a title="<?php _e('edit', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-discountcodes', 'edit' => $code->id ), admin_url('admin.php' ) ); ?>" class="button-primary"><?php _e( 'edit', 'paid-memberships-pro' ); ?></a>
|
804 |
-
<a title="<?php _e('copy', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-discountcodes', 'edit' => -1, 'copy' => $code->id ), admin_url('admin.php' ) ); ?>" class="button-secondary"><?php _e( 'copy', 'paid-memberships-pro' ); ?></a>
|
805 |
-
<a title="<?php _e('delete', 'paid-memberships-pro' ); ?>" href="javascript:askfirst('<?php echo str_replace("'", "\'", sprintf(__('Are you sure you want to delete the %s discount code? The subscriptions for existing users will not change, but new users will not be able to use this code anymore.', 'paid-memberships-pro' ), $code->code));?>', '<?php echo wp_nonce_url(add_query_arg( array( 'page' => 'pmpro-discountcodes', 'delete' => $code->id), admin_url( 'admin.php' ) ), 'delete', 'pmpro_discountcodes_nonce'); ?>'); void(0);" class="button-secondary"><?php _e('delete', 'paid-memberships-pro' ); ?></a>
|
806 |
-
<?php if ( (int)$uses > 0 ) { ?>
|
807 |
-
<a title="<?php _e('view orders', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-orders', 'discount_code' => $code->id, 'filter' => 'with-discount-code' ), admin_url('admin.php' ) ); ?>" class="button-secondary"><?php _e( 'orders', 'paid-memberships-pro' ); ?></a>
|
808 |
-
<?php } else { ?>
|
809 |
-
<a title="<?php _e('no orders', 'paid-memberships-pro' ); ?>" href="#" class="button-secondary button-disabled"><?php _e( 'orders', 'paid-memberships-pro' ); ?></a>
|
810 |
-
<?php } ?>
|
811 |
-
</td>
|
812 |
</tr>
|
813 |
<?php
|
814 |
}
|
585 |
|
586 |
<tr>
|
587 |
<th scope="row" valign="top"><label><?php _e('Recurring Subscription', 'paid-memberships-pro' );?>:</label></th>
|
588 |
+
<td><input class="recurring_checkbox" id="recurring_<?php echo $level->id;?>" name="recurring[]" type="checkbox" value="<?php echo $level->id?>" <?php if(pmpro_isLevelRecurring($level)) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).prop('checked')) { jQuery(this).parent().parent().siblings('.recurring_info').show(); if(!jQuery('#custom_trial_<?php echo $level->id?>').is(':checked')) jQuery(this).parent().parent().siblings('.trial_info').hide();} else jQuery(this).parent().parent().siblings('.recurring_info').hide();" /> <label for="recurring_<?php echo $level->id;?>"><?php _e('Check if this level has a recurring subscription payment.', 'paid-memberships-pro' );?></label></td>
|
589 |
</tr>
|
590 |
|
591 |
<tr class="recurring_info" <?php if(!pmpro_isLevelRecurring($level)) {?>style="display: none;"<?php } ?>>
|
626 |
|
627 |
<tr class="recurring_info" <?php if (!pmpro_isLevelRecurring($level)) echo "style='display:none;'";?>>
|
628 |
<th scope="row" valign="top"><label><?php _e('Custom Trial', 'paid-memberships-pro' );?>:</label></th>
|
629 |
+
<td><input id="custom_trial_<?php echo $level->id?>" id="custom_trial_<?php echo $level->id;?>" name="custom_trial[]" type="checkbox" value="<?php echo $level->id?>" <?php if ( pmpro_isLevelTrial($level) ) { echo "checked='checked'"; } ?> onclick="if(jQuery(this).prop('checked')) jQuery(this).parent().parent().siblings('.trial_info').show(); else jQuery(this).parent().parent().siblings('.trial_info').hide();" /> <label for="custom_trial_<?php echo $level->id;?>"><?php _e('Check to add a custom trial period.', 'paid-memberships-pro' );?></label></td>
|
630 |
</tr>
|
631 |
|
632 |
<tr class="trial_info recurring_info" <?php if (!pmpro_isLevelTrial($level)) echo "style='display:none;'";?>>
|
750 |
<th><?php _e('Uses', 'paid-memberships-pro' );?></th>
|
751 |
<th><?php _e('Levels', 'paid-memberships-pro' );?></th>
|
752 |
<?php do_action("pmpro_discountcodes_extra_cols_header", $codes);?>
|
|
|
753 |
</tr>
|
754 |
</thead>
|
755 |
<tbody>
|
758 |
foreach($codes as $code) { ?>
|
759 |
<tr<?php if($count++ % 2 == 1) { ?> class="alternate"<?php } ?>>
|
760 |
<td><?php echo $code->id?></td>
|
761 |
+
<td class="has-row-actions">
|
762 |
+
<a title="<?php echo sprintf( 'Edit Code: %s', $code->code ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-discountcodes', 'edit' => $code->id ), admin_url('admin.php' ) ); ?>"><?php echo $code->code?></a>
|
763 |
+
<div class="row-actions">
|
764 |
+
<span class="edit">
|
765 |
+
<a title="<?php _e( 'Edit', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-discountcodes', 'edit' => $code->id ), admin_url('admin.php' ) ); ?>"><?php _e( 'Edit', 'paid-memberships-pro' ); ?></a>
|
766 |
+
</span> |
|
767 |
+
<span class="copy">
|
768 |
+
<a title="<?php _e( 'Copy', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-discountcodes', 'edit' => -1, 'copy' => $code->id ), admin_url('admin.php' ) ); ?>"><?php _e( 'Copy', 'paid-memberships-pro' ); ?></a>
|
769 |
+
</span> |
|
770 |
+
<span class="delete">
|
771 |
+
<a title="<?php _e( 'Delete', 'paid-memberships-pro' ); ?>" href="javascript:pmpro_askfirst('<?php echo str_replace("'", "\'", sprintf(__('Are you sure you want to delete the %s discount code? The subscriptions for existing users will not change, but new users will not be able to use this code anymore.', 'paid-memberships-pro' ), $code->code));?>', '<?php echo wp_nonce_url(add_query_arg( array( 'page' => 'pmpro-discountcodes', 'delete' => $code->id), admin_url( 'admin.php' ) ), 'delete', 'pmpro_discountcodes_nonce'); ?>'); void(0);"><?php _e('Delete', 'paid-memberships-pro' ); ?></a>
|
772 |
+
</span>
|
773 |
+
<?php if ( (int)$uses > 0 ) { ?>
|
774 |
+
| <span class="orders">
|
775 |
+
<a title="<?php _e(' View Orders', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-orders', 'discount_code' => $code->id, 'filter' => 'with-discount-code' ), admin_url('admin.php' ) ); ?>"><?php _e( 'Orders', 'paid-memberships-pro' ); ?></a>
|
776 |
+
</span>
|
777 |
+
<?php } ?>
|
778 |
+
</div>
|
779 |
</td>
|
780 |
<td>
|
781 |
<?php echo date_i18n(get_option('date_format'), $code->starts)?>
|
805 |
$levels = $wpdb->get_results($sqlQuery);
|
806 |
|
807 |
$level_names = array();
|
808 |
+
foreach( $levels as $level ) {
|
809 |
+
$level_names[] = '<a title="' . pmpro_url( 'checkout', '?level=' . $level->id . '&discount_code=' . $code->code) . '" target="_blank" href="' . pmpro_url( 'checkout', '?level=' . $level->id . '&discount_code=' . $code->code) . '">' . $level->name . '</a>';
|
810 |
+
}
|
811 |
+
if( $level_names ) {
|
812 |
+
echo implode( ', ', $level_names );
|
813 |
+
} else {
|
814 |
+
echo 'None';
|
815 |
+
}
|
816 |
?>
|
817 |
</td>
|
818 |
<?php do_action("pmpro_discountcodes_extra_cols_body", $code);?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
819 |
</tr>
|
820 |
<?php
|
821 |
}
|
adminpages/functions.php
CHANGED
@@ -242,3 +242,69 @@ function pmpro_getClassesForPaymentSettingsField($field, $force = false)
|
|
242 |
//return space separated string
|
243 |
return implode(" ", $rgateways);
|
244 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
//return space separated string
|
243 |
return implode(" ", $rgateways);
|
244 |
}
|
245 |
+
|
246 |
+
|
247 |
+
/**
|
248 |
+
* Code to handle emailing billable invoices.
|
249 |
+
*
|
250 |
+
* @since 1.8.6
|
251 |
+
*/
|
252 |
+
|
253 |
+
/**
|
254 |
+
* Get the gateway-related classes for fields on the payment settings page.
|
255 |
+
*
|
256 |
+
* @param string $field The name of the field to check.
|
257 |
+
* @param bool $force If true, it will rebuild the cached results.
|
258 |
+
*
|
259 |
+
* @since 1.8
|
260 |
+
*/
|
261 |
+
function pmpro_add_email_order_modal() {
|
262 |
+
|
263 |
+
// emailing?
|
264 |
+
if ( ! empty( $_REQUEST['email'] ) && ! empty( $_REQUEST['order'] ) ) {
|
265 |
+
$email = new PMProEmail();
|
266 |
+
$user = get_user_by( 'email', sanitize_email( $_REQUEST['email'] ) );
|
267 |
+
$order = new MemberOrder( $_REQUEST['order'] );
|
268 |
+
if ( $email->sendBillableInvoiceEmail( $user, $order ) ) { ?>
|
269 |
+
<div class="notice notice-success is-dismissible">
|
270 |
+
<p><?php _e( 'Invoice emailed successfully.', 'paid-memberships-pro' ); ?></p>
|
271 |
+
</div>
|
272 |
+
<?php } else { ?>
|
273 |
+
<div class="notice notice-error is-dismissible">
|
274 |
+
<p><?php _e( 'Error emailing invoice.', 'paid-memberships-pro' ); ?></p>
|
275 |
+
</div>
|
276 |
+
<?php }
|
277 |
+
}
|
278 |
+
|
279 |
+
?>
|
280 |
+
<script>
|
281 |
+
// Update fields in email modal.
|
282 |
+
jQuery(document).ready(function ($) {
|
283 |
+
var order, order_id;
|
284 |
+
$('.email_link').click(function () {
|
285 |
+
order_id = $(this).data('order');
|
286 |
+
$('input[name=order]').val(order_id);
|
287 |
+
// Get email address from order ID
|
288 |
+
data = {
|
289 |
+
action: 'pmpro_get_order_json',
|
290 |
+
order_id: order_id
|
291 |
+
};
|
292 |
+
$.post(ajaxurl, data, function (response) {
|
293 |
+
order = JSON.parse(response);
|
294 |
+
$('input[name=email]').val(order.Email);
|
295 |
+
});
|
296 |
+
});
|
297 |
+
});
|
298 |
+
</script>
|
299 |
+
<?php add_thickbox(); ?>
|
300 |
+
<div id="email_invoice" style="display:none;">
|
301 |
+
<h3><?php _e( 'Email Invoice', 'paid-memberships-pro' ); ?></h3>
|
302 |
+
<form method="post" action="">
|
303 |
+
<input type="hidden" name="order" value=""/>
|
304 |
+
<?php _e( 'Send an invoice for this order to: ', 'paid-memberships-pro' ); ?>
|
305 |
+
<input type="text" value="" name="email"/>
|
306 |
+
<button class="button button-primary alignright"><?php _e( 'Send Email', 'paid-memberships-pro' ); ?></button>
|
307 |
+
</form>
|
308 |
+
</div>
|
309 |
+
<?php
|
310 |
+
}
|
adminpages/membershiplevels.php
CHANGED
@@ -452,7 +452,7 @@
|
|
452 |
$has_bt_plan = PMProGateway_braintree::checkLevelForPlan( $level->id );
|
453 |
?>
|
454 |
<p class="pmpro_message <?php if ( ! $has_bt_plan ) {?>pmpro_error<?php } ?>">
|
455 |
-
<strong><?php _e('Note', 'paid-memberships-pro' );?>:</strong> <?php printf( __('You will need to create a "Plan" in your Braintree dashboard with the same settings and the "Plan ID" set to %s.', 'paid-memberships-pro' ),
|
456 |
<?php } ?>
|
457 |
</td>
|
458 |
</tr>
|
@@ -570,6 +570,32 @@
|
|
570 |
<?php do_action("pmpro_membership_level_after_other_settings"); ?>
|
571 |
|
572 |
<h3 class="topborder"><?php _e('Content Settings', 'paid-memberships-pro' );?></h3>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
573 |
<table class="form-table">
|
574 |
<tbody>
|
575 |
<tr class="membership_categories">
|
@@ -717,7 +743,7 @@
|
|
717 |
<th><?php _e('Billing Details', 'paid-memberships-pro' );?></th>
|
718 |
<th><?php _e('Expiration', 'paid-memberships-pro' );?></th>
|
719 |
<th><?php _e('Allow Signups', 'paid-memberships-pro' );?></th>
|
720 |
-
|
721 |
</tr>
|
722 |
</thead>
|
723 |
<tbody>
|
@@ -728,7 +754,14 @@
|
|
728 |
?>
|
729 |
<tr class="<?php if($count++ % 2 == 1) { ?>alternate<?php } ?> <?php if(!$level->allow_signups) { ?>pmpro_gray<?php } ?> <?php if(!pmpro_checkLevelForStripeCompatibility($level) || !pmpro_checkLevelForBraintreeCompatibility($level) || !pmpro_checkLevelForPayflowCompatibility($level) || !pmpro_checkLevelForTwoCheckoutCompatibility($level)) { ?>pmpro_error<?php } ?>">
|
730 |
<td><?php echo $level->id?></td>
|
731 |
-
<td class="level_name
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
732 |
<td>
|
733 |
<?php if(pmpro_isLevelFree($level)) { ?>
|
734 |
<?php _e('FREE', 'paid-memberships-pro' );?>
|
@@ -743,9 +776,8 @@
|
|
743 |
<?php _e('After', 'paid-memberships-pro' );?> <?php echo $level->expiration_number?> <?php echo sornot($level->expiration_period,$level->expiration_number)?>
|
744 |
<?php } ?>
|
745 |
</td>
|
746 |
-
<td><?php if($level->allow_signups) { ?><a href="<?php echo add_query_arg( 'level', $level->id, pmpro_url("checkout") );?>"><?php _e('Yes', 'paid-memberships-pro' );?></a><?php } else { ?><?php _e('No', 'paid-memberships-pro' );?><?php } ?></td>
|
747 |
-
|
748 |
-
<td><a title="<?php _e('edit', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-membershiplevels', 'edit' => $level->id ), admin_url('admin.php' ) ); ?>" class="button-primary"><?php _e('edit', 'paid-memberships-pro' ); ?></a> <a title="<?php _e('copy', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-membershiplevels', 'edit' => -1, 'copy' => $level->id ), admin_url( 'admin.php' ) ); ?>" class="button-secondary"><?php _e('copy', 'paid-memberships-pro' ); ?></a> <a title="<?php _e('delete', 'paid-memberships-pro' ); ?>" href="javascript:askfirst('<?php echo str_replace("'", "\'", sprintf(__("Are you sure you want to delete membership level %s? All subscriptions will be cancelled.", 'paid-memberships-pro' ), $level->name));?>', '<?php echo wp_nonce_url(add_query_arg( array( 'page' => 'pmpro-membershiplevels', 'action' => 'delete_membership_level', 'deleteid' => $level->id ), admin_url( 'admin.php' ) ), 'delete_membership_level', 'pmpro_membershiplevels_nonce'); ?>'); void(0);" class="button-secondary"><?php _e('delete', 'paid-memberships-pro' ); ?></a></td>
|
749 |
</tr>
|
750 |
<?php
|
751 |
}
|
452 |
$has_bt_plan = PMProGateway_braintree::checkLevelForPlan( $level->id );
|
453 |
?>
|
454 |
<p class="pmpro_message <?php if ( ! $has_bt_plan ) {?>pmpro_error<?php } ?>">
|
455 |
+
<strong><?php _e('Note', 'paid-memberships-pro' );?>:</strong> <?php printf( __('You will need to create a "Plan" in your Braintree dashboard with the same settings and the "Plan ID" set to %s.', 'paid-memberships-pro' ), PMProGateway_braintree::get_plan_id( $level->id ) ); ?></p>
|
456 |
<?php } ?>
|
457 |
</td>
|
458 |
</tr>
|
570 |
<?php do_action("pmpro_membership_level_after_other_settings"); ?>
|
571 |
|
572 |
<h3 class="topborder"><?php _e('Content Settings', 'paid-memberships-pro' );?></h3>
|
573 |
+
<?php
|
574 |
+
// Get the Advanced Settings for filtering queries and showing excerpts.
|
575 |
+
$filterqueries = pmpro_getOption('filterqueries');
|
576 |
+
$showexcerpts = pmpro_getOption("showexcerpts");
|
577 |
+
|
578 |
+
$allowed_html = array (
|
579 |
+
'a' => array (
|
580 |
+
'href' => array(),
|
581 |
+
'target' => array(),
|
582 |
+
'title' => array(),
|
583 |
+
),
|
584 |
+
);
|
585 |
+
|
586 |
+
if ( $filterqueries == 1 ) {
|
587 |
+
// Show a message that posts in these categories are hidden.
|
588 |
+
echo '<p>' . sprintf( wp_kses( __( 'Non-members will not see posts in these categories. You can <a href="%s" title="Advanced Settings" target="_blank">update this setting here</a>.', 'paid-memberships-pro' ), $allowed_html ), admin_url( 'admin.php?page=pmpro-advancedsettings' ) ) . '</p>';
|
589 |
+
} else {
|
590 |
+
if ( $showexcerpts == 1 ) {
|
591 |
+
// Show a message that posts in these categories will show title and excerpt.
|
592 |
+
echo '<p>' . sprintf( wp_kses( __( 'Non-members will see the title and excerpt for posts in these categories. You can <a href="%s" title="Advanced Settings" target="_blank">update this setting here</a>.', 'paid-memberships-pro' ), $allowed_html ), admin_url( 'admin.php?page=pmpro-advancedsettings' ) ) . '</p>';
|
593 |
+
} else {
|
594 |
+
// Show a message that posts in these categories will show only the title.
|
595 |
+
echo '<p>' . sprintf( wp_kses( __( 'Non-members will see the title only for posts in these categories. You can <a href="%s" title="Advanced Settings" target="_blank">update this setting here</a>.', 'paid-memberships-pro' ), $allowed_html ), admin_url( 'admin.php?page=pmpro-advancedsettings' ) ) . '</p>';
|
596 |
+
}
|
597 |
+
}
|
598 |
+
?>
|
599 |
<table class="form-table">
|
600 |
<tbody>
|
601 |
<tr class="membership_categories">
|
743 |
<th><?php _e('Billing Details', 'paid-memberships-pro' );?></th>
|
744 |
<th><?php _e('Expiration', 'paid-memberships-pro' );?></th>
|
745 |
<th><?php _e('Allow Signups', 'paid-memberships-pro' );?></th>
|
746 |
+
<?php do_action( 'pmpro_membership_levels_table_extra_cols_header', $reordered_levels ); ?>
|
747 |
</tr>
|
748 |
</thead>
|
749 |
<tbody>
|
754 |
?>
|
755 |
<tr class="<?php if($count++ % 2 == 1) { ?>alternate<?php } ?> <?php if(!$level->allow_signups) { ?>pmpro_gray<?php } ?> <?php if(!pmpro_checkLevelForStripeCompatibility($level) || !pmpro_checkLevelForBraintreeCompatibility($level) || !pmpro_checkLevelForPayflowCompatibility($level) || !pmpro_checkLevelForTwoCheckoutCompatibility($level)) { ?>pmpro_error<?php } ?>">
|
756 |
<td><?php echo $level->id?></td>
|
757 |
+
<td class="level_name has-row-actions">
|
758 |
+
<span class="level-name"><a href="<?php echo add_query_arg( array( 'page' => 'pmpro-membershiplevels', 'edit' => $level->id ), admin_url( 'admin.php' ) ); ?>"><?php esc_attr_e( $level->name ); ?></a></span>
|
759 |
+
<div class="row-actions">
|
760 |
+
<span class="edit"><a title="<?php _e('Edit', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-membershiplevels', 'edit' => $level->id ), admin_url('admin.php' ) ); ?>"><?php _e('Edit', 'paid-memberships-pro' ); ?></a></span> |
|
761 |
+
<span class="copy"><a title="<?php _e('Copy', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-membershiplevels', 'edit' => -1, 'copy' => $level->id ), admin_url( 'admin.php' ) ); ?>"><?php _e('Copy', 'paid-memberships-pro' ); ?></a></span> |
|
762 |
+
<span class="delete"><a title="<?php _e('Delete', 'paid-memberships-pro' ); ?>" href="javascript:pmpro_askfirst('<?php echo str_replace("'", "\'", sprintf(__("Are you sure you want to delete membership level %s? All subscriptions will be cancelled.", 'paid-memberships-pro' ), $level->name));?>', '<?php echo wp_nonce_url(add_query_arg( array( 'page' => 'pmpro-membershiplevels', 'action' => 'delete_membership_level', 'deleteid' => $level->id ), admin_url( 'admin.php' ) ), 'delete_membership_level', 'pmpro_membershiplevels_nonce'); ?>'); void(0);"><?php _e('Delete', 'paid-memberships-pro' ); ?></a></span>
|
763 |
+
</div>
|
764 |
+
</td>
|
765 |
<td>
|
766 |
<?php if(pmpro_isLevelFree($level)) { ?>
|
767 |
<?php _e('FREE', 'paid-memberships-pro' );?>
|
776 |
<?php _e('After', 'paid-memberships-pro' );?> <?php echo $level->expiration_number?> <?php echo sornot($level->expiration_period,$level->expiration_number)?>
|
777 |
<?php } ?>
|
778 |
</td>
|
779 |
+
<td><?php if($level->allow_signups) { ?><a target="_blank" href="<?php echo add_query_arg( 'level', $level->id, pmpro_url("checkout") );?>"><?php _e('Yes', 'paid-memberships-pro' );?></a><?php } else { ?><?php _e('No', 'paid-memberships-pro' );?><?php } ?></td>
|
780 |
+
<?php do_action( 'pmpro_membership_levels_table_extra_cols_body', $level ); ?>
|
|
|
781 |
</tr>
|
782 |
<?php
|
783 |
}
|
adminpages/memberslist-csv.php
CHANGED
@@ -296,10 +296,7 @@
|
|
296 |
$last_uid = $theusers[($users_found - 1)];
|
297 |
|
298 |
//increment starting position
|
299 |
-
|
300 |
-
{
|
301 |
-
$i_start += $max_users_per_loop;
|
302 |
-
}
|
303 |
|
304 |
//escape the % for LIKE comparison with $wpdb
|
305 |
if(!empty($search))
|
@@ -553,10 +550,18 @@
|
|
553 |
ini_set('zlib.output_compression', 'Off');
|
554 |
}
|
555 |
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
560 |
|
561 |
// remove the temp file
|
562 |
unlink($filename);
|
296 |
$last_uid = $theusers[($users_found - 1)];
|
297 |
|
298 |
//increment starting position
|
299 |
+
$i_start += $max_users_per_loop;
|
|
|
|
|
|
|
300 |
|
301 |
//escape the % for LIKE comparison with $wpdb
|
302 |
if(!empty($search))
|
550 |
ini_set('zlib.output_compression', 'Off');
|
551 |
}
|
552 |
|
553 |
+
if( function_exists('fpassthru') )
|
554 |
+
{
|
555 |
+
// open and send the file contents to the remote location
|
556 |
+
$fh = fopen( $filename, 'rb' );
|
557 |
+
fpassthru($fh);
|
558 |
+
fclose($fh);
|
559 |
+
}
|
560 |
+
else
|
561 |
+
{
|
562 |
+
// use readfile() if fpassthru() is disabled (like on Flywheel Hosted)
|
563 |
+
readfile($fh);
|
564 |
+
}
|
565 |
|
566 |
// remove the temp file
|
567 |
unlink($filename);
|
adminpages/orders-csv.php
CHANGED
@@ -428,11 +428,11 @@ for ( $ic = 1; $ic <= $iterations; $ic ++ ) {
|
|
428 |
}
|
429 |
|
430 |
//increment starting position
|
431 |
-
if ( $
|
432 |
$i_start += $max_orders_per_loop;
|
433 |
}
|
434 |
// get the order list we should process
|
435 |
-
$order_list = array_slice( $order_ids, $i_start,
|
436 |
|
437 |
if (PMPRO_BENCHMARK)
|
438 |
{
|
@@ -441,7 +441,6 @@ for ( $ic = 1; $ic <= $iterations; $ic ++ ) {
|
|
441 |
}
|
442 |
|
443 |
foreach ( $order_list as $order_id ) {
|
444 |
-
|
445 |
$csvoutput = array();
|
446 |
|
447 |
$order = new MemberOrder();
|
@@ -537,11 +536,9 @@ for ( $ic = 1; $ic <= $iterations; $ic ++ ) {
|
|
537 |
error_log("PMPRO_BENCHMARK - Time processing data: {$sec}.{$usec} seconds");
|
538 |
error_log("PMPRO_BENCHMARK - Peak memory usage: " . number_format($memory_processing_data, false, '.', ',') . " bytes");
|
539 |
}
|
540 |
-
|
541 |
$order_list = null;
|
542 |
wp_cache_flush();
|
543 |
}
|
544 |
-
|
545 |
pmpro_transmit_order_content( $csv_fh, $filename, $headers );
|
546 |
|
547 |
function pmpro_enclose( $s ) {
|
@@ -588,10 +585,18 @@ function pmpro_transmit_order_content( $csv_fh, $filename, $headers = array() )
|
|
588 |
ini_set( 'zlib.output_compression', 'Off' );
|
589 |
}
|
590 |
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
595 |
|
596 |
// remove the temp file
|
597 |
unlink( $filename );
|
428 |
}
|
429 |
|
430 |
//increment starting position
|
431 |
+
if ( $ic > 1 ) {
|
432 |
$i_start += $max_orders_per_loop;
|
433 |
}
|
434 |
// get the order list we should process
|
435 |
+
$order_list = array_slice( $order_ids, $i_start, $max_orders_per_loop );
|
436 |
|
437 |
if (PMPRO_BENCHMARK)
|
438 |
{
|
441 |
}
|
442 |
|
443 |
foreach ( $order_list as $order_id ) {
|
|
|
444 |
$csvoutput = array();
|
445 |
|
446 |
$order = new MemberOrder();
|
536 |
error_log("PMPRO_BENCHMARK - Time processing data: {$sec}.{$usec} seconds");
|
537 |
error_log("PMPRO_BENCHMARK - Peak memory usage: " . number_format($memory_processing_data, false, '.', ',') . " bytes");
|
538 |
}
|
|
|
539 |
$order_list = null;
|
540 |
wp_cache_flush();
|
541 |
}
|
|
|
542 |
pmpro_transmit_order_content( $csv_fh, $filename, $headers );
|
543 |
|
544 |
function pmpro_enclose( $s ) {
|
585 |
ini_set( 'zlib.output_compression', 'Off' );
|
586 |
}
|
587 |
|
588 |
+
if( function_exists('fpassthru') )
|
589 |
+
{
|
590 |
+
// open and send the file contents to the remote location
|
591 |
+
$fh = fopen( $filename, 'rb' );
|
592 |
+
fpassthru($fh);
|
593 |
+
fclose($fh);
|
594 |
+
}
|
595 |
+
else
|
596 |
+
{
|
597 |
+
// use readfile() if fpassthru() is disabled (like on Flywheel Hosted)
|
598 |
+
readfile($fh);
|
599 |
+
}
|
600 |
|
601 |
// remove the temp file
|
602 |
unlink( $filename );
|
adminpages/orders.php
CHANGED
@@ -149,24 +149,6 @@ if ( empty( $filter ) || $filter === 'all' ) {
|
|
149 |
$condition = "o.total = 0";
|
150 |
}
|
151 |
|
152 |
-
// emailing?
|
153 |
-
if ( ! empty( $_REQUEST['email'] ) && ! empty( $_REQUEST['order'] ) ) {
|
154 |
-
$email = new PMProEmail();
|
155 |
-
$user = get_user_by( 'email', sanitize_email( $_REQUEST['email'] ) );
|
156 |
-
$order = new MemberOrder( $_REQUEST['order'] );
|
157 |
-
if ( $email->sendBillableInvoiceEmail( $user, $order ) ) {
|
158 |
-
$pmpro_msg = __( 'Invoice emailed successfully.', 'paid-memberships-pro' );
|
159 |
-
$pmpro_msgt = 'success';
|
160 |
-
} else {
|
161 |
-
$pmpro_msg = __( 'Error emailing invoice.', 'paid-memberships-pro' );
|
162 |
-
$pmpro_msgt = 'error';
|
163 |
-
}
|
164 |
-
|
165 |
-
// clean up so we stay on the orders list view
|
166 |
-
unset( $_REQUEST['order'] );
|
167 |
-
$order = null;
|
168 |
-
}
|
169 |
-
|
170 |
// deleting?
|
171 |
if ( ! empty( $_REQUEST['delete'] ) ) {
|
172 |
$dorder = new MemberOrder( intval( $_REQUEST['delete'] ) );
|
@@ -373,6 +355,12 @@ if ( ! empty( $_REQUEST['save'] ) ) {
|
|
373 |
}
|
374 |
|
375 |
require_once( dirname( __FILE__ ) . '/admin_header.php' );
|
|
|
|
|
|
|
|
|
|
|
|
|
376 |
?>
|
377 |
|
378 |
<?php if ( ! empty( $order ) ) { ?>
|
@@ -380,6 +368,8 @@ require_once( dirname( __FILE__ ) . '/admin_header.php' );
|
|
380 |
<h2>
|
381 |
<?php if ( ! empty( $order->id ) ) { ?>
|
382 |
<?php _e( 'Order', 'paid-memberships-pro' ); ?> #<?php echo $order->id; ?>: <?php echo $order->code; ?>
|
|
|
|
|
383 |
<?php } else { ?>
|
384 |
<?php _e( 'New Order', 'paid-memberships-pro' ); ?>
|
385 |
<?php } ?>
|
@@ -953,42 +943,7 @@ selected="selected"<?php } ?>><?php echo date_i18n( 'M', strtotime( $i . '/1/' .
|
|
953 |
</form>
|
954 |
|
955 |
<?php } else { ?>
|
956 |
-
|
957 |
-
/**
|
958 |
-
* Code to handle emailing billable invoices.
|
959 |
-
*
|
960 |
-
* @since 1.8.6
|
961 |
-
*/
|
962 |
-
?>
|
963 |
-
<script>
|
964 |
-
// Update fields in email modal.
|
965 |
-
jQuery(document).ready(function ($) {
|
966 |
-
var order, order_id;
|
967 |
-
$('.email_link').click(function () {
|
968 |
-
order_id = $(this).data('order');
|
969 |
-
$('input[name=order]').val(order_id);
|
970 |
-
// Get email address from order ID
|
971 |
-
data = {
|
972 |
-
action: 'pmpro_get_order_json',
|
973 |
-
order_id: order_id
|
974 |
-
};
|
975 |
-
$.post(ajaxurl, data, function (response) {
|
976 |
-
order = JSON.parse(response);
|
977 |
-
$('input[name=email]').val(order.Email);
|
978 |
-
});
|
979 |
-
});
|
980 |
-
});
|
981 |
-
</script>
|
982 |
-
<?php add_thickbox(); ?>
|
983 |
-
<div id="email_invoice" style="display:none;">
|
984 |
-
<h3><?php _e( 'Email Invoice', 'paid-memberships-pro' ); ?></h3>
|
985 |
-
<form method="post" action="">
|
986 |
-
<input type="hidden" name="order" value=""/>
|
987 |
-
<?php _e( 'Send an invoice for this order to: ', 'paid-memberships-pro' ); ?>
|
988 |
-
<input type="text" value="" name="email"/>
|
989 |
-
<button class="button button-primary alignright"><?php _e( 'Send Email', 'paid-memberships-pro' ); ?></button>
|
990 |
-
</form>
|
991 |
-
</div>
|
992 |
<form id="posts-filter" method="get" action="">
|
993 |
<h2>
|
994 |
<?php _e( 'Orders', 'paid-memberships-pro' ); ?>
|
@@ -1361,11 +1316,6 @@ selected="selected"<?php } ?>><?php echo date_i18n( 'M', strtotime( $i . '/1/' .
|
|
1361 |
<th><?php _e( 'Status', 'paid-memberships-pro' ); ?></th>
|
1362 |
<th><?php _e( 'Date', 'paid-memberships-pro' ); ?></th>
|
1363 |
<th><?php _e( 'Discount Code', 'paid-memberships-pro' );?></th>
|
1364 |
-
<th></th>
|
1365 |
-
<th></th>
|
1366 |
-
<th></th>
|
1367 |
-
<th></th>
|
1368 |
-
<th></th>
|
1369 |
</tr>
|
1370 |
</thead>
|
1371 |
<tbody id="orders" class="list:order orders-list">
|
@@ -1387,7 +1337,7 @@ class="alternate"<?php } ?>>
|
|
1387 |
<td>
|
1388 |
<a href="admin.php?page=pmpro-orders&order=<?php echo $order->id; ?>"><?php echo $order->code; ?></a>
|
1389 |
</td>
|
1390 |
-
<td class="username column-username">
|
1391 |
<?php $order->getUser(); ?>
|
1392 |
<?php if ( ! empty( $order->user ) ) { ?>
|
1393 |
<a href="user-edit.php?user_id=<?php echo $order->user->ID; ?>"><?php echo $order->user->user_login; ?></a>
|
@@ -1396,23 +1346,40 @@ class="alternate"<?php } ?>>
|
|
1396 |
<?php } else { ?>
|
1397 |
[<?php _e( 'none', 'paid-memberships-pro' ); ?>]
|
1398 |
<?php } ?>
|
1399 |
-
<br/>
|
1400 |
-
|
1401 |
-
|
1402 |
-
|
1403 |
-
|
1404 |
-
|
1405 |
-
|
1406 |
-
|
1407 |
-
|
1408 |
-
|
1409 |
-
|
1410 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1411 |
}
|
1412 |
-
|
1413 |
-
|
1414 |
-
}
|
1415 |
-
?>
|
1416 |
</td>
|
1417 |
<?php do_action( 'pmpro_orders_extra_cols_body', $order ); ?>
|
1418 |
<td><?php echo $order->membership_id; ?></td>
|
@@ -1485,23 +1452,6 @@ class="alternate"<?php } ?>>
|
|
1485 |
</a>
|
1486 |
<?php } ?>
|
1487 |
</td>
|
1488 |
-
<td align="center">
|
1489 |
-
<a href="admin.php?page=pmpro-orders&order=<?php echo $order->id; ?>"><?php _e( 'edit', 'paid-memberships-pro' ); ?></a>
|
1490 |
-
</td>
|
1491 |
-
<td align="center">
|
1492 |
-
<a href="admin.php?page=pmpro-orders&order=-1©=<?php echo $order->id; ?>"><?php _e( 'copy', 'paid-memberships-pro' ); ?></a>
|
1493 |
-
</td>
|
1494 |
-
<td align="center">
|
1495 |
-
<a href="javascript:askfirst('<?php echo str_replace( "'", "\'", sprintf( __( 'Deleting orders is permanent and can affect active users. Are you sure you want to delete order %s?', 'paid-memberships-pro' ), str_replace( "'", '', $order->code ) ) ); ?>', 'admin.php?page=pmpro-orders&delete=<?php echo $order->id; ?>'); void(0);"><?php _e( 'delete', 'paid-memberships-pro' ); ?></a>
|
1496 |
-
</td>
|
1497 |
-
<td align="center">
|
1498 |
-
<a href="admin-ajax.php?action=pmpro_orders_print_view&order=<?php echo $order->id; ?>"
|
1499 |
-
target="_blank"><?php _e( 'print', 'paid-memberships-pro' ); ?></a>
|
1500 |
-
</td>
|
1501 |
-
<td align="center">
|
1502 |
-
<a href="#TB_inline?width=600&height=200&inlineId=email_invoice" class="thickbox email_link"
|
1503 |
-
data-order="<?php echo $order->id; ?>"><?php _e( 'email', 'paid-memberships-pro' ); ?></a>
|
1504 |
-
</td>
|
1505 |
</tr>
|
1506 |
<?php
|
1507 |
}
|
149 |
$condition = "o.total = 0";
|
150 |
}
|
151 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
// deleting?
|
153 |
if ( ! empty( $_REQUEST['delete'] ) ) {
|
154 |
$dorder = new MemberOrder( intval( $_REQUEST['delete'] ) );
|
355 |
}
|
356 |
|
357 |
require_once( dirname( __FILE__ ) . '/admin_header.php' );
|
358 |
+
|
359 |
+
if ( function_exists( 'pmpro_add_email_order_modal' ) ) {
|
360 |
+
// Load the email order modal.
|
361 |
+
pmpro_add_email_order_modal();
|
362 |
+
}
|
363 |
+
|
364 |
?>
|
365 |
|
366 |
<?php if ( ! empty( $order ) ) { ?>
|
368 |
<h2>
|
369 |
<?php if ( ! empty( $order->id ) ) { ?>
|
370 |
<?php _e( 'Order', 'paid-memberships-pro' ); ?> #<?php echo $order->id; ?>: <?php echo $order->code; ?>
|
371 |
+
<a title="<?php _e( 'Print', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'action' => 'pmpro_orders_print_view', 'order' => $order->id ), admin_url('admin-ajax.php' ) ); ?>" class="add-new-h2" target="_blank" ><?php _e( 'Print', 'paid-memberships-pro' ); ?></a>
|
372 |
+
<a title="<?php _e( 'Email', 'paid-memberships-pro' ); ?>" href="#TB_inline?width=600&height=200&inlineId=email_invoice" class="thickbox email_link add-new-h2" data-order="<?php echo $order->id; ?>"><?php _e( 'Email', 'paid-memberships-pro' ); ?></a>
|
373 |
<?php } else { ?>
|
374 |
<?php _e( 'New Order', 'paid-memberships-pro' ); ?>
|
375 |
<?php } ?>
|
943 |
</form>
|
944 |
|
945 |
<?php } else { ?>
|
946 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
947 |
<form id="posts-filter" method="get" action="">
|
948 |
<h2>
|
949 |
<?php _e( 'Orders', 'paid-memberships-pro' ); ?>
|
1316 |
<th><?php _e( 'Status', 'paid-memberships-pro' ); ?></th>
|
1317 |
<th><?php _e( 'Date', 'paid-memberships-pro' ); ?></th>
|
1318 |
<th><?php _e( 'Discount Code', 'paid-memberships-pro' );?></th>
|
|
|
|
|
|
|
|
|
|
|
1319 |
</tr>
|
1320 |
</thead>
|
1321 |
<tbody id="orders" class="list:order orders-list">
|
1337 |
<td>
|
1338 |
<a href="admin.php?page=pmpro-orders&order=<?php echo $order->id; ?>"><?php echo $order->code; ?></a>
|
1339 |
</td>
|
1340 |
+
<td class="username column-username has-row-actions">
|
1341 |
<?php $order->getUser(); ?>
|
1342 |
<?php if ( ! empty( $order->user ) ) { ?>
|
1343 |
<a href="user-edit.php?user_id=<?php echo $order->user->ID; ?>"><?php echo $order->user->user_login; ?></a>
|
1346 |
<?php } else { ?>
|
1347 |
[<?php _e( 'none', 'paid-memberships-pro' ); ?>]
|
1348 |
<?php } ?>
|
1349 |
+
<br />
|
1350 |
+
<div class="row-actions">
|
1351 |
+
<span class="edit">
|
1352 |
+
<a title="<?php _e( 'Edit', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-orders', 'order' => $order->id ), admin_url('admin.php' ) ); ?>"><?php _e( 'Edit', 'paid-memberships-pro' ); ?></a>
|
1353 |
+
</span> |
|
1354 |
+
<span class="copy">
|
1355 |
+
<a title="<?php _e( 'Copy', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'page' => 'pmpro-orders', 'order' => '-1', 'copy' => $order->id ), admin_url('admin.php' ) ); ?>"><?php _e( 'Copy', 'paid-memberships-pro' ); ?></a>
|
1356 |
+
</span> |
|
1357 |
+
<span class="delete">
|
1358 |
+
<a href="javascript:pmpro_askfirst('<?php echo str_replace( "'", "\'", sprintf( __( 'Deleting orders is permanent and can affect active users. Are you sure you want to delete order %s?', 'paid-memberships-pro' ), str_replace( "'", '', $order->code ) ) ); ?>', 'admin.php?page=pmpro-orders&delete=<?php echo $order->id; ?>'); void(0);"><?php _e( 'Delete', 'paid-memberships-pro' ); ?></a>
|
1359 |
+
</span> |
|
1360 |
+
<span class="print">
|
1361 |
+
<a target="_blank" title="<?php _e( 'Print', 'paid-memberships-pro' ); ?>" href="<?php echo add_query_arg( array( 'action' => 'pmpro_orders_print_view', 'order' => $order->id ), admin_url('admin-ajax.php' ) ); ?>"><?php _e( 'Print', 'paid-memberships-pro' ); ?></a>
|
1362 |
+
</span> |
|
1363 |
+
<span class="email">
|
1364 |
+
<a href="#TB_inline?width=600&height=200&inlineId=email_invoice" class="thickbox email_link"
|
1365 |
+
data-order="<?php echo $order->id; ?>"><?php _e( 'Email', 'paid-memberships-pro' ); ?></a>
|
1366 |
+
</span>
|
1367 |
+
<?php
|
1368 |
+
// Set up the hover actions for this user
|
1369 |
+
$actions = apply_filters( 'pmpro_orders_user_row_actions', array(), $order->user, $order );
|
1370 |
+
$action_count = count( $actions );
|
1371 |
+
$i = 0;
|
1372 |
+
if ( $action_count ) {
|
1373 |
+
$out = ' | ';
|
1374 |
+
foreach ( $actions as $action => $link ) {
|
1375 |
+
++ $i;
|
1376 |
+
( $i == $action_count ) ? $sep = '' : $sep = ' | ';
|
1377 |
+
$out .= "<span class='$action'>$link$sep</span>";
|
1378 |
+
}
|
1379 |
+
echo $out;
|
1380 |
}
|
1381 |
+
?>
|
1382 |
+
</div>
|
|
|
|
|
1383 |
</td>
|
1384 |
<?php do_action( 'pmpro_orders_extra_cols_body', $order ); ?>
|
1385 |
<td><?php echo $order->membership_id; ?></td>
|
1452 |
</a>
|
1453 |
<?php } ?>
|
1454 |
</td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1455 |
</tr>
|
1456 |
<?php
|
1457 |
}
|
adminpages/paymentsettings.php
CHANGED
@@ -134,6 +134,9 @@
|
|
134 |
}
|
135 |
?>
|
136 |
</select>
|
|
|
|
|
|
|
137 |
</td>
|
138 |
</tr>
|
139 |
<tr>
|
@@ -151,6 +154,20 @@
|
|
151 |
//hide all gateway options
|
152 |
jQuery('tr.gateway').hide();
|
153 |
jQuery('tr.gateway_'+gateway).show();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
}
|
155 |
pmpro_changeGateway(jQuery('#gateway').val());
|
156 |
</script>
|
134 |
}
|
135 |
?>
|
136 |
</select>
|
137 |
+
<?php if( pmpro_onlyFreeLevels() ) { ?>
|
138 |
+
<div id='pmpro-default-gateway-message' style="display:none;"><small><?php echo __( 'This gateway is for membership sites with Free levels or for sites that accept payment offline.', 'paid-memberships-pro' ) . '<br/>' . __( 'It is not connected to a live gateway environment and cannot accept payments.', 'paid-memberships-pro' ); ?></small></div>
|
139 |
+
<?php } ?>
|
140 |
</td>
|
141 |
</tr>
|
142 |
<tr>
|
154 |
//hide all gateway options
|
155 |
jQuery('tr.gateway').hide();
|
156 |
jQuery('tr.gateway_'+gateway).show();
|
157 |
+
|
158 |
+
//hide sub settings and toggle them on based on triggers
|
159 |
+
jQuery('tr.pmpro_toggle_target').hide();
|
160 |
+
jQuery( 'input[pmpro_toggle_trigger_for]' ).each( function() {
|
161 |
+
if ( jQuery( this ).is( ':visible' ) ) {
|
162 |
+
pmpro_toggle_elements_by_selector( jQuery( this ).attr( 'pmpro_toggle_trigger_for' ), jQuery( this ).prop( 'checked' ) );
|
163 |
+
}
|
164 |
+
});
|
165 |
+
|
166 |
+
if ( jQuery('#gateway').val() === '' ) {
|
167 |
+
jQuery('#pmpro-default-gateway-message').show();
|
168 |
+
} else {
|
169 |
+
jQuery('#pmpro-default-gateway-message').hide();
|
170 |
+
}
|
171 |
}
|
172 |
pmpro_changeGateway(jQuery('#gateway').val());
|
173 |
</script>
|
adminpages/reports/memberships.php
CHANGED
@@ -186,7 +186,7 @@ function pmpro_report_memberships_page()
|
|
186 |
if($period == "daily")
|
187 |
{
|
188 |
$startdate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-01';
|
189 |
-
$enddate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-
|
190 |
$date_function = 'DAY';
|
191 |
}
|
192 |
elseif($period == "monthly")
|
@@ -221,7 +221,7 @@ function pmpro_report_memberships_page()
|
|
221 |
$sqlQuery .= "WHERE mu.startdate >= '" . esc_sql( $startdate ) . "' ";
|
222 |
|
223 |
if ( ! empty( $enddate ) ) {
|
224 |
-
$sqlQuery .= "AND mu.startdate
|
225 |
}
|
226 |
}
|
227 |
|
186 |
if($period == "daily")
|
187 |
{
|
188 |
$startdate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-01';
|
189 |
+
$enddate = $year . '-' . substr("0" . $month, strlen($month) - 1, 2) . '-31';
|
190 |
$date_function = 'DAY';
|
191 |
}
|
192 |
elseif($period == "monthly")
|
221 |
$sqlQuery .= "WHERE mu.startdate >= '" . esc_sql( $startdate ) . "' ";
|
222 |
|
223 |
if ( ! empty( $enddate ) ) {
|
224 |
+
$sqlQuery .= "AND mu.startdate <= '" . esc_sql( $enddate ) . "' ";
|
225 |
}
|
226 |
}
|
227 |
|
adminpages/templates/orders-print.php
CHANGED
@@ -51,7 +51,7 @@
|
|
51 |
</tr>
|
52 |
<tr>
|
53 |
<td>
|
54 |
-
<?php echo __( 'Date:', 'paid-memberships-pro' ) . ' ' . date_i18n( '
|
55 |
</td>
|
56 |
</tr>
|
57 |
</table>
|
51 |
</tr>
|
52 |
<tr>
|
53 |
<td>
|
54 |
+
<?php echo __( 'Date:', 'paid-memberships-pro' ) . ' ' . date_i18n( get_option( 'date_format' ), $order->timestamp ); ?>
|
55 |
</td>
|
56 |
</tr>
|
57 |
</table>
|
bin/install-wp-tests.sh
ADDED
@@ -0,0 +1,152 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/usr/bin/env bash
|
2 |
+
|
3 |
+
if [ $# -lt 3 ]; then
|
4 |
+
echo "usage: $0 <db-name> <db-user> <db-pass> [db-host] [wp-version] [skip-database-creation]"
|
5 |
+
exit 1
|
6 |
+
fi
|
7 |
+
|
8 |
+
DB_NAME=$1
|
9 |
+
DB_USER=$2
|
10 |
+
DB_PASS=$3
|
11 |
+
DB_HOST=${4-localhost}
|
12 |
+
WP_VERSION=${5-latest}
|
13 |
+
SKIP_DB_CREATE=${6-false}
|
14 |
+
|
15 |
+
TMPDIR=${TMPDIR-/tmp}
|
16 |
+
TMPDIR=$(echo $TMPDIR | sed -e "s/\/$//")
|
17 |
+
WP_TESTS_DIR=${WP_TESTS_DIR-$TMPDIR/wordpress-tests-lib}
|
18 |
+
WP_CORE_DIR=${WP_CORE_DIR-$TMPDIR/wordpress/}
|
19 |
+
|
20 |
+
download() {
|
21 |
+
if [ `which curl` ]; then
|
22 |
+
curl -s "$1" > "$2";
|
23 |
+
elif [ `which wget` ]; then
|
24 |
+
wget -nv -O "$2" "$1"
|
25 |
+
fi
|
26 |
+
}
|
27 |
+
|
28 |
+
if [[ $WP_VERSION =~ ^[0-9]+\.[0-9]+$ ]]; then
|
29 |
+
WP_TESTS_TAG="branches/$WP_VERSION"
|
30 |
+
elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0-9]+ ]]; then
|
31 |
+
if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then
|
32 |
+
# version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x
|
33 |
+
WP_TESTS_TAG="tags/${WP_VERSION%??}"
|
34 |
+
else
|
35 |
+
WP_TESTS_TAG="tags/$WP_VERSION"
|
36 |
+
fi
|
37 |
+
elif [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then
|
38 |
+
WP_TESTS_TAG="trunk"
|
39 |
+
else
|
40 |
+
# http serves a single offer, whereas https serves multiple. we only want one
|
41 |
+
download http://api.wordpress.org/core/version-check/1.7/ /tmp/wp-latest.json
|
42 |
+
grep '[0-9]+\.[0-9]+(\.[0-9]+)?' /tmp/wp-latest.json
|
43 |
+
LATEST_VERSION=$(grep -o '"version":"[^"]*' /tmp/wp-latest.json | sed 's/"version":"//')
|
44 |
+
if [[ -z "$LATEST_VERSION" ]]; then
|
45 |
+
echo "Latest WordPress version could not be found"
|
46 |
+
exit 1
|
47 |
+
fi
|
48 |
+
WP_TESTS_TAG="tags/$LATEST_VERSION"
|
49 |
+
fi
|
50 |
+
|
51 |
+
set -ex
|
52 |
+
|
53 |
+
install_wp() {
|
54 |
+
|
55 |
+
if [ -d $WP_CORE_DIR ]; then
|
56 |
+
return;
|
57 |
+
fi
|
58 |
+
|
59 |
+
mkdir -p $WP_CORE_DIR
|
60 |
+
|
61 |
+
if [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then
|
62 |
+
mkdir -p $TMPDIR/wordpress-nightly
|
63 |
+
download https://wordpress.org/nightly-builds/wordpress-latest.zip $TMPDIR/wordpress-nightly/wordpress-nightly.zip
|
64 |
+
unzip -q $TMPDIR/wordpress-nightly/wordpress-nightly.zip -d $TMPDIR/wordpress-nightly/
|
65 |
+
mv $TMPDIR/wordpress-nightly/wordpress/* $WP_CORE_DIR
|
66 |
+
else
|
67 |
+
if [ $WP_VERSION == 'latest' ]; then
|
68 |
+
local ARCHIVE_NAME='latest'
|
69 |
+
elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+ ]]; then
|
70 |
+
# https serves multiple offers, whereas http serves single.
|
71 |
+
download https://api.wordpress.org/core/version-check/1.7/ $TMPDIR/wp-latest.json
|
72 |
+
if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then
|
73 |
+
# version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x
|
74 |
+
LATEST_VERSION=${WP_VERSION%??}
|
75 |
+
else
|
76 |
+
# otherwise, scan the releases and get the most up to date minor version of the major release
|
77 |
+
local VERSION_ESCAPED=`echo $WP_VERSION | sed 's/\./\\\\./g'`
|
78 |
+
LATEST_VERSION=$(grep -o '"version":"'$VERSION_ESCAPED'[^"]*' $TMPDIR/wp-latest.json | sed 's/"version":"//' | head -1)
|
79 |
+
fi
|
80 |
+
if [[ -z "$LATEST_VERSION" ]]; then
|
81 |
+
local ARCHIVE_NAME="wordpress-$WP_VERSION"
|
82 |
+
else
|
83 |
+
local ARCHIVE_NAME="wordpress-$LATEST_VERSION"
|
84 |
+
fi
|
85 |
+
else
|
86 |
+
local ARCHIVE_NAME="wordpress-$WP_VERSION"
|
87 |
+
fi
|
88 |
+
download https://wordpress.org/${ARCHIVE_NAME}.tar.gz $TMPDIR/wordpress.tar.gz
|
89 |
+
tar --strip-components=1 -zxmf $TMPDIR/wordpress.tar.gz -C $WP_CORE_DIR
|
90 |
+
fi
|
91 |
+
|
92 |
+
download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php
|
93 |
+
}
|
94 |
+
|
95 |
+
install_test_suite() {
|
96 |
+
# portable in-place argument for both GNU sed and Mac OSX sed
|
97 |
+
if [[ $(uname -s) == 'Darwin' ]]; then
|
98 |
+
local ioption='-i .bak'
|
99 |
+
else
|
100 |
+
local ioption='-i'
|
101 |
+
fi
|
102 |
+
|
103 |
+
# set up testing suite if it doesn't yet exist
|
104 |
+
if [ ! -d $WP_TESTS_DIR ]; then
|
105 |
+
# set up testing suite
|
106 |
+
mkdir -p $WP_TESTS_DIR
|
107 |
+
svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes
|
108 |
+
svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data
|
109 |
+
fi
|
110 |
+
|
111 |
+
if [ ! -f wp-tests-config.php ]; then
|
112 |
+
download https://develop.svn.wordpress.org/${WP_TESTS_TAG}/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php
|
113 |
+
# remove all forward slashes in the end
|
114 |
+
WP_CORE_DIR=$(echo $WP_CORE_DIR | sed "s:/\+$::")
|
115 |
+
sed $ioption "s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR/':" "$WP_TESTS_DIR"/wp-tests-config.php
|
116 |
+
sed $ioption "s/youremptytestdbnamehere/$DB_NAME/" "$WP_TESTS_DIR"/wp-tests-config.php
|
117 |
+
sed $ioption "s/yourusernamehere/$DB_USER/" "$WP_TESTS_DIR"/wp-tests-config.php
|
118 |
+
sed $ioption "s/yourpasswordhere/$DB_PASS/" "$WP_TESTS_DIR"/wp-tests-config.php
|
119 |
+
sed $ioption "s|localhost|${DB_HOST}|" "$WP_TESTS_DIR"/wp-tests-config.php
|
120 |
+
fi
|
121 |
+
|
122 |
+
}
|
123 |
+
|
124 |
+
install_db() {
|
125 |
+
|
126 |
+
if [ ${SKIP_DB_CREATE} = "true" ]; then
|
127 |
+
return 0
|
128 |
+
fi
|
129 |
+
|
130 |
+
# parse DB_HOST for port or socket references
|
131 |
+
local PARTS=(${DB_HOST//\:/ })
|
132 |
+
local DB_HOSTNAME=${PARTS[0]};
|
133 |
+
local DB_SOCK_OR_PORT=${PARTS[1]};
|
134 |
+
local EXTRA=""
|
135 |
+
|
136 |
+
if ! [ -z $DB_HOSTNAME ] ; then
|
137 |
+
if [ $(echo $DB_SOCK_OR_PORT | grep -e '^[0-9]\{1,\}$') ]; then
|
138 |
+
EXTRA=" --host=$DB_HOSTNAME --port=$DB_SOCK_OR_PORT --protocol=tcp"
|
139 |
+
elif ! [ -z $DB_SOCK_OR_PORT ] ; then
|
140 |
+
EXTRA=" --socket=$DB_SOCK_OR_PORT"
|
141 |
+
elif ! [ -z $DB_HOSTNAME ] ; then
|
142 |
+
EXTRA=" --host=$DB_HOSTNAME --protocol=tcp"
|
143 |
+
fi
|
144 |
+
fi
|
145 |
+
|
146 |
+
# create database
|
147 |
+
mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA
|
148 |
+
}
|
149 |
+
|
150 |
+
install_wp
|
151 |
+
install_test_suite
|
152 |
+
install_db
|
classes/class.pmproemail.php
CHANGED
@@ -114,6 +114,7 @@
|
|
114 |
$this->email = apply_filters("pmpro_email_recipient", $temail->email, $this);
|
115 |
$this->from = apply_filters("pmpro_email_sender", $temail->from, $this);
|
116 |
$this->fromname = apply_filters("pmpro_email_sender_name", $temail->fromname, $this);
|
|
|
117 |
$this->subject = apply_filters("pmpro_email_subject", $temail->subject, $this);
|
118 |
$this->template = apply_filters("pmpro_email_template", $temail->template, $this);
|
119 |
$this->body = apply_filters("pmpro_email_body", $temail->body, $this);
|
@@ -130,6 +131,33 @@
|
|
130 |
}
|
131 |
}
|
132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
function sendCancelEmail($user = NULL, $old_level_id = NULL)
|
134 |
{
|
135 |
global $wpdb, $current_user;
|
@@ -953,6 +981,82 @@
|
|
953 |
|
954 |
return $this->sendEmail();
|
955 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
956 |
|
957 |
/**
|
958 |
* Load the text for each default email template.
|
114 |
$this->email = apply_filters("pmpro_email_recipient", $temail->email, $this);
|
115 |
$this->from = apply_filters("pmpro_email_sender", $temail->from, $this);
|
116 |
$this->fromname = apply_filters("pmpro_email_sender_name", $temail->fromname, $this);
|
117 |
+
$this->add_from_to_headers();
|
118 |
$this->subject = apply_filters("pmpro_email_subject", $temail->subject, $this);
|
119 |
$this->template = apply_filters("pmpro_email_template", $temail->template, $this);
|
120 |
$this->body = apply_filters("pmpro_email_body", $temail->body, $this);
|
131 |
}
|
132 |
}
|
133 |
|
134 |
+
/**
|
135 |
+
* Add the From Name and Email to the headers.
|
136 |
+
* @since 2.1
|
137 |
+
*/
|
138 |
+
function add_from_to_headers() {
|
139 |
+
// Make sure we have a headers array
|
140 |
+
if ( empty( $this->headers ) ) {
|
141 |
+
$this->headers = array();
|
142 |
+
} elseif ( ! is_array( $this->headers ) ) {
|
143 |
+
$this->headers = array( $this->headers );
|
144 |
+
}
|
145 |
+
|
146 |
+
// Remove any previous from header
|
147 |
+
foreach( $this->headers as $key => $header ) {
|
148 |
+
if( strtolower( substr( $header, 0, 5 ) ) == 'from:' ) {
|
149 |
+
unset( $this->headers[$key] );
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
// Add From Email and Name or Just Email
|
154 |
+
if( !empty( $this->from ) && !empty( $this->fromname ) ) {
|
155 |
+
$this->headers[] = 'From:' . $this->fromname . ' <' . $this->from . '>';
|
156 |
+
} elseif( !empty( $this->from ) ) {
|
157 |
+
$this->headers[] = 'From:' . $this->from;
|
158 |
+
}
|
159 |
+
}
|
160 |
+
|
161 |
function sendCancelEmail($user = NULL, $old_level_id = NULL)
|
162 |
{
|
163 |
global $wpdb, $current_user;
|
981 |
|
982 |
return $this->sendEmail();
|
983 |
}
|
984 |
+
|
985 |
+
function sendPaymentActionRequiredEmail($user = NULL, $order = NULL, $invoice_url = NULL)
|
986 |
+
{
|
987 |
+
global $wpdb, $current_user;
|
988 |
+
if(!$user)
|
989 |
+
$user = $current_user;
|
990 |
+
|
991 |
+
if(!$user || !$order)
|
992 |
+
return false;
|
993 |
+
|
994 |
+
// if an invoice URL wasn't passed in, grab it from the order
|
995 |
+
if(empty($invoice_url) && isset($order->invoice_url))
|
996 |
+
$invoice_url = $order->invoice_url;
|
997 |
+
|
998 |
+
// still no invoice URL? bail
|
999 |
+
if(empty($invoice_url))
|
1000 |
+
return false;
|
1001 |
+
|
1002 |
+
$this->email = $user->user_email;
|
1003 |
+
$this->subject = sprintf(__("Payment action required for your %s membership", 'paid-memberships-pro' ), get_option("blogname"));
|
1004 |
+
|
1005 |
+
$this->template = "payment_action";
|
1006 |
+
|
1007 |
+
$this->template = apply_filters("pmpro_email_template", $this->template, $this);
|
1008 |
+
|
1009 |
+
$this->data = array(
|
1010 |
+
"subject" => $this->subject,
|
1011 |
+
"name" => $user->display_name,
|
1012 |
+
"display_name" => $user->display_name,
|
1013 |
+
"user_login" => $user->user_login,
|
1014 |
+
"sitename" => get_option("blogname"),
|
1015 |
+
"siteemail" => pmpro_getOption("from_email"),
|
1016 |
+
"invoice_url" => $invoice_url,
|
1017 |
+
);
|
1018 |
+
|
1019 |
+
return $this->sendEmail();
|
1020 |
+
}
|
1021 |
+
|
1022 |
+
function sendPaymentActionRequiredAdminEmail($user = NULL, $order = NULL, $invoice_url = NULL)
|
1023 |
+
{
|
1024 |
+
global $wpdb, $current_user;
|
1025 |
+
if(!$user)
|
1026 |
+
$user = $current_user;
|
1027 |
+
|
1028 |
+
if(!$user || !$order)
|
1029 |
+
return false;
|
1030 |
+
|
1031 |
+
// if an invoice URL wasn't passed in, grab it from the order
|
1032 |
+
if(empty($invoice_url) && isset($order->invoice_url))
|
1033 |
+
$invoice_url = $order->invoice_url;
|
1034 |
+
|
1035 |
+
// still no invoice URL? bail
|
1036 |
+
if(empty($invoice_url))
|
1037 |
+
return false;
|
1038 |
+
|
1039 |
+
$this->email = get_bloginfo("admin_email");
|
1040 |
+
$this->subject = sprintf(__("Payment action required: membership for %s at %s", 'paid-memberships-pro' ), $user->user_login, get_option("blogname"));
|
1041 |
+
|
1042 |
+
$this->template = "payment_action_admin";
|
1043 |
+
|
1044 |
+
$this->template = apply_filters("pmpro_email_template", $this->template, $this);
|
1045 |
+
|
1046 |
+
$this->data = array(
|
1047 |
+
"subject" => $this->subject,
|
1048 |
+
"name" => $user->display_name,
|
1049 |
+
"display_name" => $user->display_name,
|
1050 |
+
"user_login" => $user->user_login,
|
1051 |
+
"sitename" => get_option("blogname"),
|
1052 |
+
"siteemail" => pmpro_getOption("from_email"),
|
1053 |
+
"user_email" => $user->user_email,
|
1054 |
+
"invoice_url" => $invoice_url,
|
1055 |
+
);
|
1056 |
+
|
1057 |
+
return $this->sendEmail();
|
1058 |
+
}
|
1059 |
+
|
1060 |
|
1061 |
/**
|
1062 |
* Load the text for each default email template.
|
classes/gateways/class.pmprogateway_authorizenet.php
CHANGED
@@ -58,7 +58,7 @@
|
|
58 |
'use_ssl',
|
59 |
'tax_state',
|
60 |
'tax_rate',
|
61 |
-
'accepted_credit_cards'
|
62 |
);
|
63 |
|
64 |
return $options;
|
58 |
'use_ssl',
|
59 |
'tax_state',
|
60 |
'tax_rate',
|
61 |
+
'accepted_credit_cards',
|
62 |
);
|
63 |
|
64 |
return $options;
|
classes/gateways/class.pmprogateway_braintree.php
CHANGED
@@ -200,7 +200,9 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
200 |
*/
|
201 |
static function checkLevelForPlan($level_id) {
|
202 |
$Gateway = new PMProGateway_braintree();
|
203 |
-
|
|
|
|
|
204 |
if(!empty($plan))
|
205 |
return true;
|
206 |
else
|
@@ -226,7 +228,8 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
226 |
$current_gateway = pmpro_getGateway();
|
227 |
if( ( $default_gateway == "braintree" || $current_gateway == "braintree" && empty($_REQUEST['review']))) //$_REQUEST['review'] means the PayPal Express review page
|
228 |
{
|
229 |
-
add_action(
|
|
|
230 |
add_action('pmpro_checkout_before_submit_button', array('PMProGateway_braintree', 'pmpro_checkout_before_submit_button'));
|
231 |
add_action('pmpro_billing_before_submit_button', array('PMProGateway_braintree', 'pmpro_checkout_before_submit_button'));
|
232 |
add_filter('pmpro_checkout_order', array('PMProGateway_braintree', 'pmpro_checkout_order'));
|
@@ -268,7 +271,7 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
268 |
'use_ssl',
|
269 |
'tax_state',
|
270 |
'tax_rate',
|
271 |
-
'accepted_credit_cards'
|
272 |
);
|
273 |
|
274 |
return $options;
|
@@ -351,6 +354,29 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
351 |
</tr>
|
352 |
<?php
|
353 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
354 |
|
355 |
/**
|
356 |
* Filtering orders at checkout.
|
@@ -403,39 +429,6 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
403 |
?>
|
404 |
<input type='hidden' data-encrypted-name='expiration_date' id='credit_card_exp' />
|
405 |
<input type='hidden' name='AccountNumber' id='BraintreeAccountNumber' />
|
406 |
-
<script type="text/javascript" src="https://js.braintreegateway.com/v1/braintree.js"></script>
|
407 |
-
<script type="text/javascript">
|
408 |
-
<!--
|
409 |
-
/**
|
410 |
-
* @since 1.9.5 - BUG FIX: substr() on undefined error
|
411 |
-
*/
|
412 |
-
jQuery(document).ready(function() {
|
413 |
-
//set up braintree encryption
|
414 |
-
var braintree = Braintree.create('<?php echo pmpro_getOption("braintree_encryptionkey"); ?>');
|
415 |
-
braintree.onSubmitEncryptForm('pmpro_form');
|
416 |
-
|
417 |
-
//pass expiration dates in original format
|
418 |
-
function pmpro_updateBraintreeCardExp()
|
419 |
-
{
|
420 |
-
jQuery('#credit_card_exp').val(jQuery('#ExpirationMonth').val() + "/" + jQuery('#ExpirationYear').val());
|
421 |
-
}
|
422 |
-
jQuery('#ExpirationMonth, #ExpirationYear').change(function() {
|
423 |
-
pmpro_updateBraintreeCardExp();
|
424 |
-
});
|
425 |
-
pmpro_updateBraintreeCardExp();
|
426 |
-
|
427 |
-
//pass last 4 of credit card
|
428 |
-
function pmpro_updateBraintreeAccountNumber()
|
429 |
-
{
|
430 |
-
jQuery('#BraintreeAccountNumber').val('XXXXXXXXXXXXX' + jQuery('#AccountNumber').val().substr(jQuery('#AccountNumber').val().length - 4));
|
431 |
-
}
|
432 |
-
jQuery('#AccountNumber').change(function() {
|
433 |
-
pmpro_updateBraintreeAccountNumber();
|
434 |
-
});
|
435 |
-
pmpro_updateBraintreeAccountNumber();
|
436 |
-
});
|
437 |
-
-->
|
438 |
-
</script>
|
439 |
<?php
|
440 |
}
|
441 |
|
@@ -917,9 +910,10 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
917 |
//subscribe to the plan
|
918 |
try
|
919 |
{
|
|
|
920 |
$details = array(
|
921 |
'paymentMethodToken' => $this->customer->creditCards[0]->token,
|
922 |
-
'planId' =>
|
923 |
'price' => $amount
|
924 |
);
|
925 |
|
@@ -1058,4 +1052,23 @@ use Braintree\WebhookNotification as Braintree_WebhookNotification;
|
|
1058 |
update_user_meta($user_id, 'pmpro_braintree_customerid', $pmpro_braintree_customerid);
|
1059 |
}
|
1060 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1061 |
}
|
|
200 |
*/
|
201 |
static function checkLevelForPlan($level_id) {
|
202 |
$Gateway = new PMProGateway_braintree();
|
203 |
+
|
204 |
+
$plan = $Gateway->getPlanByID( $Gateway->get_plan_id( $level_id ) );
|
205 |
+
|
206 |
if(!empty($plan))
|
207 |
return true;
|
208 |
else
|
228 |
$current_gateway = pmpro_getGateway();
|
229 |
if( ( $default_gateway == "braintree" || $current_gateway == "braintree" && empty($_REQUEST['review']))) //$_REQUEST['review'] means the PayPal Express review page
|
230 |
{
|
231 |
+
add_action('pmpro_checkout_preheader', array('PMProGateway_braintree', 'pmpro_checkout_preheader'));
|
232 |
+
add_action( 'pmpro_save_membership_level', array( 'PMProGateway_braintree', 'pmpro_save_level_action') );
|
233 |
add_action('pmpro_checkout_before_submit_button', array('PMProGateway_braintree', 'pmpro_checkout_before_submit_button'));
|
234 |
add_action('pmpro_billing_before_submit_button', array('PMProGateway_braintree', 'pmpro_checkout_before_submit_button'));
|
235 |
add_filter('pmpro_checkout_order', array('PMProGateway_braintree', 'pmpro_checkout_order'));
|
271 |
'use_ssl',
|
272 |
'tax_state',
|
273 |
'tax_rate',
|
274 |
+
'accepted_credit_cards',
|
275 |
);
|
276 |
|
277 |
return $options;
|
354 |
</tr>
|
355 |
<?php
|
356 |
}
|
357 |
+
|
358 |
+
/**
|
359 |
+
* Code added to checkout preheader.
|
360 |
+
*
|
361 |
+
* @since 2.1
|
362 |
+
*/
|
363 |
+
static function pmpro_checkout_preheader() {
|
364 |
+
global $gateway, $pmpro_level;
|
365 |
+
|
366 |
+
$default_gateway = pmpro_getOption("gateway");
|
367 |
+
|
368 |
+
if(($gateway == "braintree" || $default_gateway == "braintree") && !pmpro_isLevelFree($pmpro_level)) {
|
369 |
+
wp_enqueue_script("stripe", "https://js.braintreegateway.com/v1/braintree.js", array(), NULL);
|
370 |
+
wp_register_script( 'pmpro_braintree',
|
371 |
+
plugins_url( 'js/pmpro-braintree.js', PMPRO_BASE_FILE ),
|
372 |
+
array( 'jquery' ),
|
373 |
+
PMPRO_VERSION );
|
374 |
+
wp_localize_script( 'pmpro_braintree', 'pmpro_braintree', array(
|
375 |
+
'encryptionkey' => pmpro_getOption( 'braintree_encryptionkey' )
|
376 |
+
));
|
377 |
+
wp_enqueue_script( 'pmpro_braintree' );
|
378 |
+
}
|
379 |
+
}
|
380 |
|
381 |
/**
|
382 |
* Filtering orders at checkout.
|
429 |
?>
|
430 |
<input type='hidden' data-encrypted-name='expiration_date' id='credit_card_exp' />
|
431 |
<input type='hidden' name='AccountNumber' id='BraintreeAccountNumber' />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
432 |
<?php
|
433 |
}
|
434 |
|
910 |
//subscribe to the plan
|
911 |
try
|
912 |
{
|
913 |
+
|
914 |
$details = array(
|
915 |
'paymentMethodToken' => $this->customer->creditCards[0]->token,
|
916 |
+
'planId' => $this->get_plan_id( $order->membership_id ),
|
917 |
'price' => $amount
|
918 |
);
|
919 |
|
1052 |
update_user_meta($user_id, 'pmpro_braintree_customerid', $pmpro_braintree_customerid);
|
1053 |
}
|
1054 |
}
|
1055 |
+
|
1056 |
+
/**
|
1057 |
+
* Gets the Braintree plan ID for a given level ID
|
1058 |
+
* @param int $level_id level to get plan ID for
|
1059 |
+
* @return string Braintree plan ID
|
1060 |
+
*/
|
1061 |
+
static function get_plan_id( $level_id ) {
|
1062 |
+
/**
|
1063 |
+
* Filter pmpro_braintree_plan_id
|
1064 |
+
*
|
1065 |
+
* Used to change the Braintree plan ID for a given level
|
1066 |
+
*
|
1067 |
+
* @since 2.1.0
|
1068 |
+
*
|
1069 |
+
* @param string $plan_id for the given level
|
1070 |
+
* @param int $level_id the level id to make a plan id for
|
1071 |
+
*/
|
1072 |
+
return apply_filters( 'pmpro_braintree_plan_id', 'pmpro_' . $level_id, $level_id );
|
1073 |
}
|
1074 |
+
}
|
classes/gateways/class.pmprogateway_cybersource.php
CHANGED
@@ -1,21 +1,17 @@
|
|
1 |
<?php
|
2 |
//include pmprogateway
|
3 |
require_once(dirname(__FILE__) . "/class.pmprogateway.php");
|
4 |
-
|
5 |
//load classes init method
|
6 |
add_action('init', array('PMProGateway_cybersource', 'init'));
|
7 |
-
|
8 |
class PMProGateway_cybersource extends PMProGateway
|
9 |
{
|
10 |
function __construct($gateway = NULL)
|
11 |
{
|
12 |
if(!class_exists("CyberSourceSoapClient"))
|
13 |
require_once(dirname(__FILE__) . "/../../includes/lib/CyberSource/cyber_source_soap_client.php");
|
14 |
-
|
15 |
$this->gateway = $gateway;
|
16 |
return $this->gateway;
|
17 |
}
|
18 |
-
|
19 |
/**
|
20 |
* Run on WP init
|
21 |
*
|
@@ -25,12 +21,10 @@
|
|
25 |
{
|
26 |
//make sure CyberSource is a gateway option
|
27 |
add_filter('pmpro_gateways', array('PMProGateway_cybersource', 'pmpro_gateways'));
|
28 |
-
|
29 |
//add fields to payment settings
|
30 |
add_filter('pmpro_payment_options', array('PMProGateway_cybersource', 'pmpro_payment_options'));
|
31 |
add_filter('pmpro_payment_option_fields', array('PMProGateway_cybersource', 'pmpro_payment_option_fields'), 10, 2);
|
32 |
}
|
33 |
-
|
34 |
/**
|
35 |
* Make sure this gateway is in the gateways list
|
36 |
*
|
@@ -40,10 +34,8 @@
|
|
40 |
{
|
41 |
if(empty($gateways['cybersource']))
|
42 |
$gateways['cybersource'] = __('CyberSource', 'paid-memberships-pro' );
|
43 |
-
|
44 |
return $gateways;
|
45 |
}
|
46 |
-
|
47 |
/**
|
48 |
* Get a list of payment options that the this gateway needs/supports.
|
49 |
*
|
@@ -61,12 +53,10 @@
|
|
61 |
'use_ssl',
|
62 |
'tax_state',
|
63 |
'tax_rate',
|
64 |
-
'accepted_credit_cards'
|
65 |
);
|
66 |
-
|
67 |
return $options;
|
68 |
}
|
69 |
-
|
70 |
/**
|
71 |
* Set payment options for payment settings page.
|
72 |
*
|
@@ -76,13 +66,10 @@
|
|
76 |
{
|
77 |
//get stripe options
|
78 |
$cybersource_options = PMProGateway_cybersource::getGatewayOptions();
|
79 |
-
|
80 |
//merge with others.
|
81 |
$options = array_merge($cybersource_options, $options);
|
82 |
-
|
83 |
return $options;
|
84 |
}
|
85 |
-
|
86 |
/**
|
87 |
* Display fields for this gateway's options.
|
88 |
*
|
@@ -119,7 +106,6 @@
|
|
119 |
</tr>
|
120 |
<?php
|
121 |
}
|
122 |
-
|
123 |
/**
|
124 |
* Process checkout.
|
125 |
*
|
@@ -141,7 +127,6 @@
|
|
141 |
$order->TrialBillingFrequency = $order->BillingFrequency;
|
142 |
$order->TrialBillingCycles = 1;
|
143 |
$order->TrialAmount = 0;
|
144 |
-
|
145 |
//add a billing cycle to make up for the trial, if applicable
|
146 |
if(!empty($order->TotalBillingCycles))
|
147 |
$order->TotalBillingCycles++;
|
@@ -151,7 +136,6 @@
|
|
151 |
//it has a trial, but the amount is the same as the initial payment, so we can squeeze it in there
|
152 |
$order->ProfileStartDate = date_i18n("Y-m-d") . "T0:0:0";
|
153 |
$order->TrialBillingCycles++;
|
154 |
-
|
155 |
//add a billing cycle to make up for the trial, if applicable
|
156 |
if($order->TotalBillingCycles)
|
157 |
$order->TotalBillingCycles++;
|
@@ -161,7 +145,6 @@
|
|
161 |
//add a period to the start date to account for the initial payment
|
162 |
$order->ProfileStartDate = date_i18n("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod, current_time("timestamp"))) . "T0:0:0";
|
163 |
}
|
164 |
-
|
165 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
166 |
return $this->subscribe($order);
|
167 |
}
|
@@ -188,7 +171,6 @@
|
|
188 |
$order->TrialBillingFrequency = $order->BillingFrequency;
|
189 |
$order->TrialBillingCycles = 1;
|
190 |
$order->TrialAmount = 0;
|
191 |
-
|
192 |
//add a billing cycle to make up for the trial, if applicable
|
193 |
if(!empty($order->TotalBillingCycles))
|
194 |
$order->TotalBillingCycles++;
|
@@ -198,7 +180,6 @@
|
|
198 |
//it has a trial, but the amount is the same as the initial payment, so we can squeeze it in there
|
199 |
$order->ProfileStartDate = date_i18n("Y-m-d") . "T0:0:0";
|
200 |
$order->TrialBillingCycles++;
|
201 |
-
|
202 |
//add a billing cycle to make up for the trial, if applicable
|
203 |
if(!empty($order->TotalBillingCycles))
|
204 |
$order->TotalBillingCycles++;
|
@@ -208,7 +189,6 @@
|
|
208 |
//add a period to the start date to account for the initial payment
|
209 |
$order->ProfileStartDate = date_i18n("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod, current_time("timestamp"))) . "T0:0:0";
|
210 |
}
|
211 |
-
|
212 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
213 |
if($this->subscribe($order))
|
214 |
{
|
@@ -225,10 +205,8 @@
|
|
225 |
{
|
226 |
if(!$order->error)
|
227 |
$order->error = __("Unknown error: Payment failed.", 'paid-memberships-pro' );
|
228 |
-
|
229 |
$order->error .= " " . __("A partial payment was made that we could not void. Please contact the site owner immediately to correct this.", 'paid-memberships-pro' );
|
230 |
}
|
231 |
-
|
232 |
return false;
|
233 |
}
|
234 |
}
|
@@ -243,12 +221,10 @@
|
|
243 |
{
|
244 |
if(empty($order->error))
|
245 |
$order->error = __("Unknown error: Payment failed.", 'paid-memberships-pro' );
|
246 |
-
|
247 |
return false;
|
248 |
}
|
249 |
}
|
250 |
}
|
251 |
-
|
252 |
function getCardType($name)
|
253 |
{
|
254 |
$card_types = array(
|
@@ -263,13 +239,11 @@
|
|
263 |
'Carte Blanche' => '006',
|
264 |
'JCB' => '007'
|
265 |
);
|
266 |
-
|
267 |
if(isset($card_types[$name]))
|
268 |
return $card_types[$name];
|
269 |
else
|
270 |
return false;
|
271 |
}
|
272 |
-
|
273 |
function getWSDL($order)
|
274 |
{
|
275 |
//which gateway environment?
|
@@ -277,61 +251,45 @@
|
|
277 |
$gateway_environment = pmpro_getOption("gateway_environment");
|
278 |
else
|
279 |
$gateway_environment = $order->gateway_environment;
|
280 |
-
|
281 |
//which host?
|
282 |
if($gateway_environment == "live")
|
283 |
$host = "ics2ws.ic3.com";
|
284 |
else
|
285 |
$host = "ics2wstest.ic3.com";
|
286 |
-
|
287 |
//path
|
288 |
-
$path = "/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.
|
289 |
-
|
290 |
//build url
|
291 |
$wsdl_url = "https://" . $host . $path;
|
292 |
-
|
293 |
//filter
|
294 |
$wsdl_url = apply_filters("pmpro_cybersource_wsdl_url", $wsdl_url, $gateway_environment);
|
295 |
-
|
296 |
return $wsdl_url;
|
297 |
}
|
298 |
-
|
299 |
function authorize(&$order)
|
300 |
{
|
301 |
global $pmpro_currency;
|
302 |
-
|
303 |
if(empty($order->code))
|
304 |
$order->code = $order->getRandomCode();
|
305 |
-
|
306 |
$wsdl_url = $this->getWSDL($order);
|
307 |
-
|
308 |
//what amount to authorize? just $1 to test
|
309 |
$amount = "1.00";
|
310 |
-
|
311 |
//combine address
|
312 |
$address = $order->Address1;
|
313 |
if(!empty($order->Address2))
|
314 |
$address .= "\n" . $order->Address2;
|
315 |
-
|
316 |
//customer stuff
|
317 |
$customer_email = $order->Email;
|
318 |
$customer_phone = $order->billing->phone;
|
319 |
-
|
320 |
if(!isset($order->membership_level->name))
|
321 |
$order->membership_level->name = "";
|
322 |
-
|
323 |
//to store our request
|
324 |
$request = new stdClass();
|
325 |
-
|
326 |
//which service?
|
327 |
$ccAuthService = new stdClass();
|
328 |
$ccAuthService->run = "true";
|
329 |
$request->ccAuthService = $ccAuthService;
|
330 |
-
|
331 |
//merchant id and order code
|
332 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
333 |
$request->merchantReferenceCode = $order->code;
|
334 |
-
|
335 |
//bill to
|
336 |
$billTo = new stdClass();
|
337 |
$billTo->firstName = $order->FirstName;
|
@@ -344,7 +302,6 @@
|
|
344 |
$billTo->email = $order->Email;
|
345 |
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
346 |
$request->billTo = $billTo;
|
347 |
-
|
348 |
//card
|
349 |
$card = new stdClass();
|
350 |
$card->cardType = $this->getCardType($order->cardtype);
|
@@ -354,6 +311,13 @@
|
|
354 |
$card->cvNumber = $order->CVV2;
|
355 |
$request->card = $card;
|
356 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
357 |
//currency
|
358 |
$purchaseTotals = new stdClass();
|
359 |
$purchaseTotals->currency = $pmpro_currency;
|
@@ -368,8 +332,24 @@
|
|
368 |
$item0->id = $order->membership_id;
|
369 |
$request->item = array($item0);
|
370 |
|
371 |
-
|
372 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
|
374 |
if($reply->reasonCode == "100")
|
375 |
{
|
@@ -382,36 +362,46 @@
|
|
382 |
{
|
383 |
//error
|
384 |
$order->errorcode = $reply->reasonCode;
|
385 |
-
$order->error = $this->getErrorFromCode($reply
|
386 |
-
$order->shorterror = $this->getErrorFromCode($reply
|
387 |
return false;
|
388 |
}
|
389 |
}
|
390 |
-
|
391 |
function void(&$order)
|
392 |
{
|
393 |
//need a transaction id
|
394 |
if(empty($order->payment_transaction_id))
|
395 |
return false;
|
396 |
-
|
397 |
//get wsdl
|
398 |
$wsdl_url = $this->getWSDL($order);
|
399 |
-
|
400 |
//to store our request
|
401 |
$request = new stdClass();
|
402 |
-
|
403 |
//which service?
|
404 |
$voidService = new stdClass();
|
405 |
$voidService->run = "true";
|
406 |
$voidService->voidRequestID = $order->payment_transaction_id;
|
407 |
$request->voidService = $voidService;
|
408 |
-
|
409 |
//merchant id and order code
|
410 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
411 |
$request->merchantReferenceCode = $order->code;
|
412 |
|
413 |
-
|
414 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
415 |
|
416 |
if($reply->reasonCode == "100")
|
417 |
{
|
@@ -424,59 +414,46 @@
|
|
424 |
{
|
425 |
//error
|
426 |
$order->errorcode = $reply->reasonCode;
|
427 |
-
$order->error = $this->getErrorFromCode($reply
|
428 |
-
$order->shorterror = $this->getErrorFromCode($reply
|
429 |
return false;
|
430 |
}
|
431 |
}
|
432 |
-
|
433 |
function charge(&$order)
|
434 |
{
|
435 |
global $pmpro_currency;
|
436 |
-
|
437 |
//get a code
|
438 |
if(empty($order->code))
|
439 |
$order->code = $order->getRandomCode();
|
440 |
-
|
441 |
//get wsdl
|
442 |
$wsdl_url = $this->getWSDL($order);
|
443 |
-
|
444 |
//what amount to charge?
|
445 |
$amount = $order->InitialPayment;
|
446 |
-
|
447 |
//tax
|
448 |
$order->subtotal = $amount;
|
449 |
$tax = $order->getTax(true);
|
450 |
$amount = pmpro_round_price((float)$order->subtotal + (float)$tax);
|
451 |
-
|
452 |
//combine address
|
453 |
$address = $order->Address1;
|
454 |
if(!empty($order->Address2))
|
455 |
$address .= "\n" . $order->Address2;
|
456 |
-
|
457 |
//customer stuff
|
458 |
$customer_email = $order->Email;
|
459 |
$customer_phone = $order->billing->phone;
|
460 |
-
|
461 |
if(!isset($order->membership_level->name))
|
462 |
$order->membership_level->name = "";
|
463 |
-
|
464 |
//to store our request
|
465 |
$request = new stdClass();
|
466 |
-
|
467 |
//authorize and capture
|
468 |
$ccAuthService = new stdClass();
|
469 |
$ccAuthService->run = "true";
|
470 |
$request->ccAuthService = $ccAuthService;
|
471 |
-
|
472 |
$ccCaptureService = new stdClass();
|
473 |
$ccCaptureService->run = "true";
|
474 |
$request->ccCaptureService = $ccCaptureService;
|
475 |
-
|
476 |
//merchant id and order code
|
477 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
478 |
$request->merchantReferenceCode = $order->code;
|
479 |
-
|
480 |
//bill to
|
481 |
$billTo = new stdClass();
|
482 |
$billTo->firstName = $order->FirstName;
|
@@ -489,7 +466,6 @@
|
|
489 |
$billTo->email = $order->Email;
|
490 |
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
491 |
$request->billTo = $billTo;
|
492 |
-
|
493 |
//card
|
494 |
$card = new stdClass();
|
495 |
$card->cardType = $this->getCardType($order->cardtype);
|
@@ -499,11 +475,17 @@
|
|
499 |
$card->cvNumber = $order->CVV2;
|
500 |
$request->card = $card;
|
501 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
502 |
//currency
|
503 |
$purchaseTotals = new stdClass();
|
504 |
$purchaseTotals->currency = $pmpro_currency;
|
505 |
$request->purchaseTotals = $purchaseTotals;
|
506 |
-
|
507 |
//item/price
|
508 |
$item0 = new stdClass();
|
509 |
$item0->unitPrice = $amount;
|
@@ -513,8 +495,23 @@
|
|
513 |
$item0->id = $order->membership_id;
|
514 |
$request->item = array($item0);
|
515 |
|
516 |
-
|
517 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
518 |
|
519 |
if($reply->reasonCode == "100")
|
520 |
{
|
@@ -527,39 +524,31 @@
|
|
527 |
{
|
528 |
//error
|
529 |
$order->errorcode = $reply->reasonCode;
|
530 |
-
$order->error = $this->getErrorFromCode($reply
|
531 |
-
$order->shorterror = $this->getErrorFromCode($reply
|
532 |
return false;
|
533 |
}
|
534 |
}
|
535 |
-
|
536 |
function subscribe(&$order)
|
537 |
{
|
538 |
global $pmpro_currency;
|
539 |
-
|
540 |
//create a code for the order
|
541 |
if(empty($order->code))
|
542 |
$order->code = $order->getRandomCode();
|
543 |
-
|
544 |
//filter order before subscription. use with care.
|
545 |
$order = apply_filters("pmpro_subscribe_order", $order, $this);
|
546 |
-
|
547 |
//get wsdl
|
548 |
$wsdl_url = $this->getWSDL($order);
|
549 |
-
|
550 |
//to store our request
|
551 |
$request = new stdClass();
|
552 |
-
|
553 |
//set service type
|
554 |
$paySubscriptionCreateService = new stdClass();
|
555 |
$paySubscriptionCreateService->run = 'true';
|
556 |
$paySubscriptionCreateService->disableAutoAuth = 'true'; //we do our own auth check
|
557 |
$request->paySubscriptionCreateService = $paySubscriptionCreateService;
|
558 |
-
|
559 |
//merchant id and order code
|
560 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
561 |
$request->merchantReferenceCode = $order->code;
|
562 |
-
|
563 |
/*
|
564 |
set up billing amount/etc
|
565 |
*/
|
@@ -567,7 +556,6 @@
|
|
567 |
$amount = $order->PaymentAmount;
|
568 |
$amount_tax = $order->getTaxForPrice($amount);
|
569 |
$amount = pmpro_round_price((float)$amount + (float)$amount_tax);
|
570 |
-
|
571 |
/*
|
572 |
There are two parts to the trial. Part 1 is simply the delay until the first payment
|
573 |
since we are doing the first payment as a separate transaction.
|
@@ -582,16 +570,12 @@
|
|
582 |
$trial_period_days = $order->BillingFrequency * 7; //weekly
|
583 |
else
|
584 |
$trial_period_days = $order->BillingFrequency * 30; //assume monthly
|
585 |
-
|
586 |
//convert to a profile start date
|
587 |
$order->ProfileStartDate = date_i18n("Y-m-d", strtotime("+ " . $trial_period_days . " Day", current_time("timestamp"))) . "T0:0:0";
|
588 |
-
|
589 |
//filter the start date
|
590 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
591 |
-
|
592 |
//convert back to days
|
593 |
$trial_period_days = ceil(abs(strtotime(date_i18n("Y-m-d"), current_time('timestamp')) - strtotime($order->ProfileStartDate, current_time("timestamp"))) / 86400);
|
594 |
-
|
595 |
//now add the actual trial set by the site
|
596 |
if(!empty($order->TrialBillingCycles))
|
597 |
{
|
@@ -605,10 +589,8 @@
|
|
605 |
else
|
606 |
$trial_period_days = $trial_period_days + (30 * $order->BillingFrequency * $trialOccurrences); //assume monthly
|
607 |
}
|
608 |
-
|
609 |
//convert back into a date
|
610 |
$profile_start_date = date_i18n("Ymd", strtotime("+ " . $trial_period_days . " Days"));
|
611 |
-
|
612 |
//figure out the frequency
|
613 |
if($order->BillingPeriod == "Year")
|
614 |
{
|
@@ -641,7 +623,7 @@
|
|
641 |
elseif($order->BillingFrequency == 183)
|
642 |
$frequency = "semi annually";
|
643 |
elseif($order->BillingFrequency == 90)
|
644 |
-
$frequency = "
|
645 |
elseif($order->BillingFrequency == 30)
|
646 |
$frequency = "monthly";
|
647 |
elseif($order->BillingFrequency == 15)
|
@@ -653,13 +635,11 @@
|
|
653 |
elseif($order->BillingFrequency == 7)
|
654 |
$frequency = "weekly";
|
655 |
}
|
656 |
-
|
657 |
//set subscription info for API
|
658 |
$subscription = new stdClass();
|
659 |
$subscription->title = $order->membership_level->name;
|
660 |
$subscription->paymentMethod = "credit card";
|
661 |
$request->subscription = $subscription;
|
662 |
-
|
663 |
//recurring info
|
664 |
$recurringSubscriptionInfo = new stdClass();
|
665 |
$recurringSubscriptionInfo->amount = number_format($amount, 2);
|
@@ -668,12 +648,10 @@
|
|
668 |
if(!empty($order->TotalBillingCycles))
|
669 |
$recurringSubscriptionInfo->numberOfPayments = $order->TotalBillingCycles;
|
670 |
$request->recurringSubscriptionInfo = $recurringSubscriptionInfo;
|
671 |
-
|
672 |
//combine address
|
673 |
$address = $order->Address1;
|
674 |
if(!empty($order->Address2))
|
675 |
$address .= "\n" . $order->Address2;
|
676 |
-
|
677 |
//bill to
|
678 |
$billTo = new stdClass();
|
679 |
$billTo->firstName = $order->FirstName;
|
@@ -686,7 +664,6 @@
|
|
686 |
$billTo->email = $order->Email;
|
687 |
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
688 |
$request->billTo = $billTo;
|
689 |
-
|
690 |
//card
|
691 |
$card = new stdClass();
|
692 |
$card->cardType = $this->getCardType($order->cardtype);
|
@@ -696,13 +673,35 @@
|
|
696 |
$card->cvNumber = $order->CVV2;
|
697 |
$request->card = $card;
|
698 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
699 |
//currency
|
700 |
$purchaseTotals = new stdClass();
|
701 |
$purchaseTotals->currency = $pmpro_currency;
|
702 |
$request->purchaseTotals = $purchaseTotals;
|
703 |
|
704 |
-
|
705 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
706 |
|
707 |
if($reply->reasonCode == "100")
|
708 |
{
|
@@ -716,39 +715,32 @@
|
|
716 |
//error
|
717 |
$order->status = "error";
|
718 |
$order->errorcode = $reply->reasonCode;
|
719 |
-
$order->error = $this->getErrorFromCode($reply
|
720 |
-
$order->shorterror = $this->getErrorFromCode($reply
|
721 |
return false;
|
722 |
}
|
723 |
}
|
724 |
-
|
725 |
function update(&$order)
|
726 |
{
|
727 |
//get wsdl
|
728 |
$wsdl_url = $this->getWSDL($order);
|
729 |
-
|
730 |
//to store our request
|
731 |
$request = new stdClass();
|
732 |
-
|
733 |
//set service type
|
734 |
$paySubscriptionUpdateService = new stdClass();
|
735 |
$paySubscriptionUpdateService ->run = "true";
|
736 |
$request->paySubscriptionUpdateService = $paySubscriptionUpdateService ;
|
737 |
-
|
738 |
//merchant id and order code
|
739 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
740 |
$request->merchantReferenceCode = $order->code;
|
741 |
-
|
742 |
//set subscription info for API
|
743 |
$recurringSubscriptionInfo = new stdClass();
|
744 |
$recurringSubscriptionInfo->subscriptionID = $order->subscription_transaction_id;
|
745 |
$request->recurringSubscriptionInfo = $recurringSubscriptionInfo;
|
746 |
-
|
747 |
//combine address
|
748 |
$address = $order->Address1;
|
749 |
if(!empty($order->Address2))
|
750 |
$address .= "\n" . $order->Address2;
|
751 |
-
|
752 |
//bill to
|
753 |
$billTo = new stdClass();
|
754 |
$billTo->firstName = $order->FirstName;
|
@@ -761,7 +753,6 @@
|
|
761 |
$billTo->email = $order->Email;
|
762 |
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
763 |
$request->billTo = $billTo;
|
764 |
-
|
765 |
//card
|
766 |
$card = new stdClass();
|
767 |
$card->cardType = $this->getCardType($order->cardtype);
|
@@ -771,8 +762,30 @@
|
|
771 |
$card->cvNumber = $order->CVV2;
|
772 |
$request->card = $card;
|
773 |
|
774 |
-
|
775 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
776 |
|
777 |
if($reply->reasonCode == "100")
|
778 |
{
|
@@ -783,8 +796,8 @@
|
|
783 |
{
|
784 |
//error
|
785 |
$order->errorcode = $reply->reasonCode;
|
786 |
-
$order->error = $this->getErrorFromCode($reply
|
787 |
-
$order->shorterror = $this->getErrorFromCode($reply
|
788 |
return false;
|
789 |
}
|
790 |
}
|
@@ -794,29 +807,39 @@
|
|
794 |
//require a subscription id
|
795 |
if(empty($order->subscription_transaction_id))
|
796 |
return false;
|
797 |
-
|
798 |
//get wsdl
|
799 |
$wsdl_url = $this->getWSDL($order);
|
800 |
-
|
801 |
//to store our request
|
802 |
$request = new stdClass();
|
803 |
-
|
804 |
//which service?
|
805 |
$paySubscriptionDeleteService = new stdClass();
|
806 |
$paySubscriptionDeleteService ->run = "true";
|
807 |
$request->paySubscriptionDeleteService = $paySubscriptionDeleteService ;
|
808 |
-
|
809 |
//which order
|
810 |
$recurringSubscriptionInfo = new stdClass();
|
811 |
$recurringSubscriptionInfo->subscriptionID = $order->subscription_transaction_id;
|
812 |
$request->recurringSubscriptionInfo = $recurringSubscriptionInfo;
|
813 |
-
|
814 |
//merchant id and order code
|
815 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
816 |
$request->merchantReferenceCode = $order->code;
|
817 |
|
818 |
-
|
819 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
820 |
|
821 |
if($reply->reasonCode == "100")
|
822 |
{
|
@@ -828,58 +851,85 @@
|
|
828 |
{
|
829 |
//error
|
830 |
$order->errorcode = $reply->reasonCode;
|
831 |
-
$order->error = $this->getErrorFromCode($reply
|
832 |
-
$order->shorterror = $this->getErrorFromCode($reply
|
833 |
return false;
|
834 |
}
|
835 |
}
|
836 |
|
837 |
-
function getErrorFromCode($
|
838 |
{
|
839 |
$error_messages = array(
|
840 |
-
"100" => "Successful transaction.",
|
841 |
-
"101" => "The request is missing one or more required fields.",
|
842 |
-
"102" => "One or more fields in the request contains invalid data. Check that your billing address is valid.",
|
843 |
-
"104" => "Duplicate order detected.",
|
844 |
-
"110" => "Only partial amount was approved.",
|
845 |
-
"150" => "Error: General system failure.",
|
846 |
-
"151" => "Error: The request was received but there was a server timeout.",
|
847 |
-
"152" => "Error: The request was received, but a service did not finish running in time. ",
|
848 |
-
"200" => "Address Verification Service (AVS) failure.",
|
849 |
-
"201" => "Authorization failed.",
|
850 |
-
"202" => "Expired card or invalid expiration date.",
|
851 |
-
"203" => "The card was declined.",
|
852 |
-
"204" => "Insufficient funds in the account.",
|
853 |
-
"205" => "Stolen or lost card.",
|
854 |
-
"207" => "Issuing bank unavailable.",
|
855 |
-
"208" => "Inactive card or card not authorized for card-not-present transactions.",
|
856 |
-
"209" => "American Express Card Identification Digits (CID) did not match.",
|
857 |
-
"210" => "The card has reached the credit limit. ",
|
858 |
-
"211" => "Invalid card verification number.",
|
859 |
-
"221" => "The customer matched an entry on the processors negative file. ",
|
860 |
-
"230" => "Card verification (CV) check failed.",
|
861 |
-
"231" => "Invalid account number.",
|
862 |
-
"232" => "The card type is not accepted by the payment processor.",
|
863 |
-
"233" => "General decline by the processor.",
|
864 |
-
"234" => "There is a problem with your CyberSource merchant configuration.",
|
865 |
-
"235" => "The requested amount exceeds the originally authorized amount.",
|
866 |
-
"236" => "Processor failure.",
|
867 |
-
"237" => "The authorization has already been reversed.",
|
868 |
-
"238" => "The authorization has already been captured.",
|
869 |
-
"239" => "The requested transaction amount must match the previous transaction amount.",
|
870 |
-
"240" => "The card type sent is invalid or does not correlate with the credit card number.",
|
871 |
-
"241" => "The referenced request id is invalid for all follow-on transactions.",
|
872 |
-
"242" => "The request ID is invalid.",
|
873 |
-
"243" => "The transaction has already been settled or reversed.",
|
874 |
-
"246" => "The capture or credit is not voidable because the capture or credit information has already been submitted to your processor. Or, you requested a void for a type of transaction that cannot be voided.",
|
875 |
-
"247" => "You requested a credit for a capture that was previously voided.",
|
876 |
-
"250" => "Error: The request was received, but there was a timeout at the payment processor.",
|
877 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
878 |
);
|
879 |
|
880 |
-
if(isset($error_messages[$
|
881 |
-
|
882 |
else
|
883 |
-
return "Unknown error.";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
884 |
}
|
885 |
}
|
1 |
<?php
|
2 |
//include pmprogateway
|
3 |
require_once(dirname(__FILE__) . "/class.pmprogateway.php");
|
|
|
4 |
//load classes init method
|
5 |
add_action('init', array('PMProGateway_cybersource', 'init'));
|
|
|
6 |
class PMProGateway_cybersource extends PMProGateway
|
7 |
{
|
8 |
function __construct($gateway = NULL)
|
9 |
{
|
10 |
if(!class_exists("CyberSourceSoapClient"))
|
11 |
require_once(dirname(__FILE__) . "/../../includes/lib/CyberSource/cyber_source_soap_client.php");
|
|
|
12 |
$this->gateway = $gateway;
|
13 |
return $this->gateway;
|
14 |
}
|
|
|
15 |
/**
|
16 |
* Run on WP init
|
17 |
*
|
21 |
{
|
22 |
//make sure CyberSource is a gateway option
|
23 |
add_filter('pmpro_gateways', array('PMProGateway_cybersource', 'pmpro_gateways'));
|
|
|
24 |
//add fields to payment settings
|
25 |
add_filter('pmpro_payment_options', array('PMProGateway_cybersource', 'pmpro_payment_options'));
|
26 |
add_filter('pmpro_payment_option_fields', array('PMProGateway_cybersource', 'pmpro_payment_option_fields'), 10, 2);
|
27 |
}
|
|
|
28 |
/**
|
29 |
* Make sure this gateway is in the gateways list
|
30 |
*
|
34 |
{
|
35 |
if(empty($gateways['cybersource']))
|
36 |
$gateways['cybersource'] = __('CyberSource', 'paid-memberships-pro' );
|
|
|
37 |
return $gateways;
|
38 |
}
|
|
|
39 |
/**
|
40 |
* Get a list of payment options that the this gateway needs/supports.
|
41 |
*
|
53 |
'use_ssl',
|
54 |
'tax_state',
|
55 |
'tax_rate',
|
56 |
+
'accepted_credit_cards',
|
57 |
);
|
|
|
58 |
return $options;
|
59 |
}
|
|
|
60 |
/**
|
61 |
* Set payment options for payment settings page.
|
62 |
*
|
66 |
{
|
67 |
//get stripe options
|
68 |
$cybersource_options = PMProGateway_cybersource::getGatewayOptions();
|
|
|
69 |
//merge with others.
|
70 |
$options = array_merge($cybersource_options, $options);
|
|
|
71 |
return $options;
|
72 |
}
|
|
|
73 |
/**
|
74 |
* Display fields for this gateway's options.
|
75 |
*
|
106 |
</tr>
|
107 |
<?php
|
108 |
}
|
|
|
109 |
/**
|
110 |
* Process checkout.
|
111 |
*
|
127 |
$order->TrialBillingFrequency = $order->BillingFrequency;
|
128 |
$order->TrialBillingCycles = 1;
|
129 |
$order->TrialAmount = 0;
|
|
|
130 |
//add a billing cycle to make up for the trial, if applicable
|
131 |
if(!empty($order->TotalBillingCycles))
|
132 |
$order->TotalBillingCycles++;
|
136 |
//it has a trial, but the amount is the same as the initial payment, so we can squeeze it in there
|
137 |
$order->ProfileStartDate = date_i18n("Y-m-d") . "T0:0:0";
|
138 |
$order->TrialBillingCycles++;
|
|
|
139 |
//add a billing cycle to make up for the trial, if applicable
|
140 |
if($order->TotalBillingCycles)
|
141 |
$order->TotalBillingCycles++;
|
145 |
//add a period to the start date to account for the initial payment
|
146 |
$order->ProfileStartDate = date_i18n("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod, current_time("timestamp"))) . "T0:0:0";
|
147 |
}
|
|
|
148 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
149 |
return $this->subscribe($order);
|
150 |
}
|
171 |
$order->TrialBillingFrequency = $order->BillingFrequency;
|
172 |
$order->TrialBillingCycles = 1;
|
173 |
$order->TrialAmount = 0;
|
|
|
174 |
//add a billing cycle to make up for the trial, if applicable
|
175 |
if(!empty($order->TotalBillingCycles))
|
176 |
$order->TotalBillingCycles++;
|
180 |
//it has a trial, but the amount is the same as the initial payment, so we can squeeze it in there
|
181 |
$order->ProfileStartDate = date_i18n("Y-m-d") . "T0:0:0";
|
182 |
$order->TrialBillingCycles++;
|
|
|
183 |
//add a billing cycle to make up for the trial, if applicable
|
184 |
if(!empty($order->TotalBillingCycles))
|
185 |
$order->TotalBillingCycles++;
|
189 |
//add a period to the start date to account for the initial payment
|
190 |
$order->ProfileStartDate = date_i18n("Y-m-d", strtotime("+ " . $order->BillingFrequency . " " . $order->BillingPeriod, current_time("timestamp"))) . "T0:0:0";
|
191 |
}
|
|
|
192 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
193 |
if($this->subscribe($order))
|
194 |
{
|
205 |
{
|
206 |
if(!$order->error)
|
207 |
$order->error = __("Unknown error: Payment failed.", 'paid-memberships-pro' );
|
|
|
208 |
$order->error .= " " . __("A partial payment was made that we could not void. Please contact the site owner immediately to correct this.", 'paid-memberships-pro' );
|
209 |
}
|
|
|
210 |
return false;
|
211 |
}
|
212 |
}
|
221 |
{
|
222 |
if(empty($order->error))
|
223 |
$order->error = __("Unknown error: Payment failed.", 'paid-memberships-pro' );
|
|
|
224 |
return false;
|
225 |
}
|
226 |
}
|
227 |
}
|
|
|
228 |
function getCardType($name)
|
229 |
{
|
230 |
$card_types = array(
|
239 |
'Carte Blanche' => '006',
|
240 |
'JCB' => '007'
|
241 |
);
|
|
|
242 |
if(isset($card_types[$name]))
|
243 |
return $card_types[$name];
|
244 |
else
|
245 |
return false;
|
246 |
}
|
|
|
247 |
function getWSDL($order)
|
248 |
{
|
249 |
//which gateway environment?
|
251 |
$gateway_environment = pmpro_getOption("gateway_environment");
|
252 |
else
|
253 |
$gateway_environment = $order->gateway_environment;
|
|
|
254 |
//which host?
|
255 |
if($gateway_environment == "live")
|
256 |
$host = "ics2ws.ic3.com";
|
257 |
else
|
258 |
$host = "ics2wstest.ic3.com";
|
|
|
259 |
//path
|
260 |
+
$path = "/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.159.wsdl";
|
|
|
261 |
//build url
|
262 |
$wsdl_url = "https://" . $host . $path;
|
|
|
263 |
//filter
|
264 |
$wsdl_url = apply_filters("pmpro_cybersource_wsdl_url", $wsdl_url, $gateway_environment);
|
|
|
265 |
return $wsdl_url;
|
266 |
}
|
|
|
267 |
function authorize(&$order)
|
268 |
{
|
269 |
global $pmpro_currency;
|
|
|
270 |
if(empty($order->code))
|
271 |
$order->code = $order->getRandomCode();
|
|
|
272 |
$wsdl_url = $this->getWSDL($order);
|
|
|
273 |
//what amount to authorize? just $1 to test
|
274 |
$amount = "1.00";
|
|
|
275 |
//combine address
|
276 |
$address = $order->Address1;
|
277 |
if(!empty($order->Address2))
|
278 |
$address .= "\n" . $order->Address2;
|
|
|
279 |
//customer stuff
|
280 |
$customer_email = $order->Email;
|
281 |
$customer_phone = $order->billing->phone;
|
|
|
282 |
if(!isset($order->membership_level->name))
|
283 |
$order->membership_level->name = "";
|
|
|
284 |
//to store our request
|
285 |
$request = new stdClass();
|
|
|
286 |
//which service?
|
287 |
$ccAuthService = new stdClass();
|
288 |
$ccAuthService->run = "true";
|
289 |
$request->ccAuthService = $ccAuthService;
|
|
|
290 |
//merchant id and order code
|
291 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
292 |
$request->merchantReferenceCode = $order->code;
|
|
|
293 |
//bill to
|
294 |
$billTo = new stdClass();
|
295 |
$billTo->firstName = $order->FirstName;
|
302 |
$billTo->email = $order->Email;
|
303 |
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
304 |
$request->billTo = $billTo;
|
|
|
305 |
//card
|
306 |
$card = new stdClass();
|
307 |
$card->cardType = $this->getCardType($order->cardtype);
|
311 |
$card->cvNumber = $order->CVV2;
|
312 |
$request->card = $card;
|
313 |
|
314 |
+
if( empty($request->card->cardType) )
|
315 |
+
{
|
316 |
+
$order->error = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro" );
|
317 |
+
$order->shorterror = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro" );
|
318 |
+
return false;
|
319 |
+
}
|
320 |
+
|
321 |
//currency
|
322 |
$purchaseTotals = new stdClass();
|
323 |
$purchaseTotals->currency = $pmpro_currency;
|
332 |
$item0->id = $order->membership_id;
|
333 |
$request->item = array($item0);
|
334 |
|
335 |
+
|
336 |
+
try
|
337 |
+
{
|
338 |
+
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>$request->merchantID, "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
339 |
+
$reply = $soapClient->runTransaction($request);
|
340 |
+
}
|
341 |
+
catch(Throwable $t)
|
342 |
+
{
|
343 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
344 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
345 |
+
return false;
|
346 |
+
}
|
347 |
+
catch(Exception $e)
|
348 |
+
{
|
349 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $e->getMessage() );
|
350 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
351 |
+
return false;
|
352 |
+
}
|
353 |
|
354 |
if($reply->reasonCode == "100")
|
355 |
{
|
362 |
{
|
363 |
//error
|
364 |
$order->errorcode = $reply->reasonCode;
|
365 |
+
$order->error = $this->getErrorFromCode($reply);
|
366 |
+
$order->shorterror = $this->getErrorFromCode($reply);
|
367 |
return false;
|
368 |
}
|
369 |
}
|
|
|
370 |
function void(&$order)
|
371 |
{
|
372 |
//need a transaction id
|
373 |
if(empty($order->payment_transaction_id))
|
374 |
return false;
|
|
|
375 |
//get wsdl
|
376 |
$wsdl_url = $this->getWSDL($order);
|
|
|
377 |
//to store our request
|
378 |
$request = new stdClass();
|
|
|
379 |
//which service?
|
380 |
$voidService = new stdClass();
|
381 |
$voidService->run = "true";
|
382 |
$voidService->voidRequestID = $order->payment_transaction_id;
|
383 |
$request->voidService = $voidService;
|
|
|
384 |
//merchant id and order code
|
385 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
386 |
$request->merchantReferenceCode = $order->code;
|
387 |
|
388 |
+
try
|
389 |
+
{
|
390 |
+
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>$request->merchantID, "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
391 |
+
$reply = $soapClient->runTransaction($request);
|
392 |
+
}
|
393 |
+
catch(Throwable $t)
|
394 |
+
{
|
395 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
396 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
397 |
+
return false;
|
398 |
+
}
|
399 |
+
catch(Exception $e)
|
400 |
+
{
|
401 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $e->getMessage() );
|
402 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
403 |
+
return false;
|
404 |
+
}
|
405 |
|
406 |
if($reply->reasonCode == "100")
|
407 |
{
|
414 |
{
|
415 |
//error
|
416 |
$order->errorcode = $reply->reasonCode;
|
417 |
+
$order->error = $this->getErrorFromCode($reply);
|
418 |
+
$order->shorterror = $this->getErrorFromCode($reply);
|
419 |
return false;
|
420 |
}
|
421 |
}
|
|
|
422 |
function charge(&$order)
|
423 |
{
|
424 |
global $pmpro_currency;
|
|
|
425 |
//get a code
|
426 |
if(empty($order->code))
|
427 |
$order->code = $order->getRandomCode();
|
|
|
428 |
//get wsdl
|
429 |
$wsdl_url = $this->getWSDL($order);
|
|
|
430 |
//what amount to charge?
|
431 |
$amount = $order->InitialPayment;
|
|
|
432 |
//tax
|
433 |
$order->subtotal = $amount;
|
434 |
$tax = $order->getTax(true);
|
435 |
$amount = pmpro_round_price((float)$order->subtotal + (float)$tax);
|
|
|
436 |
//combine address
|
437 |
$address = $order->Address1;
|
438 |
if(!empty($order->Address2))
|
439 |
$address .= "\n" . $order->Address2;
|
|
|
440 |
//customer stuff
|
441 |
$customer_email = $order->Email;
|
442 |
$customer_phone = $order->billing->phone;
|
|
|
443 |
if(!isset($order->membership_level->name))
|
444 |
$order->membership_level->name = "";
|
|
|
445 |
//to store our request
|
446 |
$request = new stdClass();
|
|
|
447 |
//authorize and capture
|
448 |
$ccAuthService = new stdClass();
|
449 |
$ccAuthService->run = "true";
|
450 |
$request->ccAuthService = $ccAuthService;
|
|
|
451 |
$ccCaptureService = new stdClass();
|
452 |
$ccCaptureService->run = "true";
|
453 |
$request->ccCaptureService = $ccCaptureService;
|
|
|
454 |
//merchant id and order code
|
455 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
456 |
$request->merchantReferenceCode = $order->code;
|
|
|
457 |
//bill to
|
458 |
$billTo = new stdClass();
|
459 |
$billTo->firstName = $order->FirstName;
|
466 |
$billTo->email = $order->Email;
|
467 |
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
468 |
$request->billTo = $billTo;
|
|
|
469 |
//card
|
470 |
$card = new stdClass();
|
471 |
$card->cardType = $this->getCardType($order->cardtype);
|
475 |
$card->cvNumber = $order->CVV2;
|
476 |
$request->card = $card;
|
477 |
|
478 |
+
if( empty($request->card->cardType) )
|
479 |
+
{
|
480 |
+
$order->error = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro" );
|
481 |
+
$order->shorterror = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro" );
|
482 |
+
return false;
|
483 |
+
}
|
484 |
+
|
485 |
//currency
|
486 |
$purchaseTotals = new stdClass();
|
487 |
$purchaseTotals->currency = $pmpro_currency;
|
488 |
$request->purchaseTotals = $purchaseTotals;
|
|
|
489 |
//item/price
|
490 |
$item0 = new stdClass();
|
491 |
$item0->unitPrice = $amount;
|
495 |
$item0->id = $order->membership_id;
|
496 |
$request->item = array($item0);
|
497 |
|
498 |
+
try
|
499 |
+
{
|
500 |
+
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>$request->merchantID, "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
501 |
+
$reply = $soapClient->runTransaction($request);
|
502 |
+
}
|
503 |
+
catch(Throwable $t)
|
504 |
+
{
|
505 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
506 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
507 |
+
return false;
|
508 |
+
}
|
509 |
+
catch(Exception $e)
|
510 |
+
{
|
511 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $e->getMessage() );
|
512 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
513 |
+
return false;
|
514 |
+
}
|
515 |
|
516 |
if($reply->reasonCode == "100")
|
517 |
{
|
524 |
{
|
525 |
//error
|
526 |
$order->errorcode = $reply->reasonCode;
|
527 |
+
$order->error = $this->getErrorFromCode($reply);
|
528 |
+
$order->shorterror = $this->getErrorFromCode($reply);
|
529 |
return false;
|
530 |
}
|
531 |
}
|
|
|
532 |
function subscribe(&$order)
|
533 |
{
|
534 |
global $pmpro_currency;
|
|
|
535 |
//create a code for the order
|
536 |
if(empty($order->code))
|
537 |
$order->code = $order->getRandomCode();
|
|
|
538 |
//filter order before subscription. use with care.
|
539 |
$order = apply_filters("pmpro_subscribe_order", $order, $this);
|
|
|
540 |
//get wsdl
|
541 |
$wsdl_url = $this->getWSDL($order);
|
|
|
542 |
//to store our request
|
543 |
$request = new stdClass();
|
|
|
544 |
//set service type
|
545 |
$paySubscriptionCreateService = new stdClass();
|
546 |
$paySubscriptionCreateService->run = 'true';
|
547 |
$paySubscriptionCreateService->disableAutoAuth = 'true'; //we do our own auth check
|
548 |
$request->paySubscriptionCreateService = $paySubscriptionCreateService;
|
|
|
549 |
//merchant id and order code
|
550 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
551 |
$request->merchantReferenceCode = $order->code;
|
|
|
552 |
/*
|
553 |
set up billing amount/etc
|
554 |
*/
|
556 |
$amount = $order->PaymentAmount;
|
557 |
$amount_tax = $order->getTaxForPrice($amount);
|
558 |
$amount = pmpro_round_price((float)$amount + (float)$amount_tax);
|
|
|
559 |
/*
|
560 |
There are two parts to the trial. Part 1 is simply the delay until the first payment
|
561 |
since we are doing the first payment as a separate transaction.
|
570 |
$trial_period_days = $order->BillingFrequency * 7; //weekly
|
571 |
else
|
572 |
$trial_period_days = $order->BillingFrequency * 30; //assume monthly
|
|
|
573 |
//convert to a profile start date
|
574 |
$order->ProfileStartDate = date_i18n("Y-m-d", strtotime("+ " . $trial_period_days . " Day", current_time("timestamp"))) . "T0:0:0";
|
|
|
575 |
//filter the start date
|
576 |
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
|
|
577 |
//convert back to days
|
578 |
$trial_period_days = ceil(abs(strtotime(date_i18n("Y-m-d"), current_time('timestamp')) - strtotime($order->ProfileStartDate, current_time("timestamp"))) / 86400);
|
|
|
579 |
//now add the actual trial set by the site
|
580 |
if(!empty($order->TrialBillingCycles))
|
581 |
{
|
589 |
else
|
590 |
$trial_period_days = $trial_period_days + (30 * $order->BillingFrequency * $trialOccurrences); //assume monthly
|
591 |
}
|
|
|
592 |
//convert back into a date
|
593 |
$profile_start_date = date_i18n("Ymd", strtotime("+ " . $trial_period_days . " Days"));
|
|
|
594 |
//figure out the frequency
|
595 |
if($order->BillingPeriod == "Year")
|
596 |
{
|
623 |
elseif($order->BillingFrequency == 183)
|
624 |
$frequency = "semi annually";
|
625 |
elseif($order->BillingFrequency == 90)
|
626 |
+
$frequency = "quarterly";
|
627 |
elseif($order->BillingFrequency == 30)
|
628 |
$frequency = "monthly";
|
629 |
elseif($order->BillingFrequency == 15)
|
635 |
elseif($order->BillingFrequency == 7)
|
636 |
$frequency = "weekly";
|
637 |
}
|
|
|
638 |
//set subscription info for API
|
639 |
$subscription = new stdClass();
|
640 |
$subscription->title = $order->membership_level->name;
|
641 |
$subscription->paymentMethod = "credit card";
|
642 |
$request->subscription = $subscription;
|
|
|
643 |
//recurring info
|
644 |
$recurringSubscriptionInfo = new stdClass();
|
645 |
$recurringSubscriptionInfo->amount = number_format($amount, 2);
|
648 |
if(!empty($order->TotalBillingCycles))
|
649 |
$recurringSubscriptionInfo->numberOfPayments = $order->TotalBillingCycles;
|
650 |
$request->recurringSubscriptionInfo = $recurringSubscriptionInfo;
|
|
|
651 |
//combine address
|
652 |
$address = $order->Address1;
|
653 |
if(!empty($order->Address2))
|
654 |
$address .= "\n" . $order->Address2;
|
|
|
655 |
//bill to
|
656 |
$billTo = new stdClass();
|
657 |
$billTo->firstName = $order->FirstName;
|
664 |
$billTo->email = $order->Email;
|
665 |
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
666 |
$request->billTo = $billTo;
|
|
|
667 |
//card
|
668 |
$card = new stdClass();
|
669 |
$card->cardType = $this->getCardType($order->cardtype);
|
673 |
$card->cvNumber = $order->CVV2;
|
674 |
$request->card = $card;
|
675 |
|
676 |
+
if( empty($request->card->cardType) )
|
677 |
+
{
|
678 |
+
$order->error = __( "The payment gateway doesn't support this credit/debit card type.", "paid-memberships-pro" );
|
679 |
+
$order->updateStatus("error");
|
680 |
+
return false;
|
681 |
+
}
|
682 |
+
|
683 |
//currency
|
684 |
$purchaseTotals = new stdClass();
|
685 |
$purchaseTotals->currency = $pmpro_currency;
|
686 |
$request->purchaseTotals = $purchaseTotals;
|
687 |
|
688 |
+
try
|
689 |
+
{
|
690 |
+
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>$request->merchantID, "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
691 |
+
$reply = $soapClient->runTransaction($request);
|
692 |
+
}
|
693 |
+
catch(Throwable $t)
|
694 |
+
{
|
695 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
696 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
697 |
+
return false;
|
698 |
+
}
|
699 |
+
catch(Exception $e)
|
700 |
+
{
|
701 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $e->getMessage() );
|
702 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
703 |
+
return false;
|
704 |
+
}
|
705 |
|
706 |
if($reply->reasonCode == "100")
|
707 |
{
|
715 |
//error
|
716 |
$order->status = "error";
|
717 |
$order->errorcode = $reply->reasonCode;
|
718 |
+
$order->error = $this->getErrorFromCode($reply);
|
719 |
+
$order->shorterror = $this->getErrorFromCode($reply);
|
720 |
return false;
|
721 |
}
|
722 |
}
|
|
|
723 |
function update(&$order)
|
724 |
{
|
725 |
//get wsdl
|
726 |
$wsdl_url = $this->getWSDL($order);
|
|
|
727 |
//to store our request
|
728 |
$request = new stdClass();
|
|
|
729 |
//set service type
|
730 |
$paySubscriptionUpdateService = new stdClass();
|
731 |
$paySubscriptionUpdateService ->run = "true";
|
732 |
$request->paySubscriptionUpdateService = $paySubscriptionUpdateService ;
|
|
|
733 |
//merchant id and order code
|
734 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
735 |
$request->merchantReferenceCode = $order->code;
|
|
|
736 |
//set subscription info for API
|
737 |
$recurringSubscriptionInfo = new stdClass();
|
738 |
$recurringSubscriptionInfo->subscriptionID = $order->subscription_transaction_id;
|
739 |
$request->recurringSubscriptionInfo = $recurringSubscriptionInfo;
|
|
|
740 |
//combine address
|
741 |
$address = $order->Address1;
|
742 |
if(!empty($order->Address2))
|
743 |
$address .= "\n" . $order->Address2;
|
|
|
744 |
//bill to
|
745 |
$billTo = new stdClass();
|
746 |
$billTo->firstName = $order->FirstName;
|
753 |
$billTo->email = $order->Email;
|
754 |
$billTo->ipAddress = $_SERVER['REMOTE_ADDR'];
|
755 |
$request->billTo = $billTo;
|
|
|
756 |
//card
|
757 |
$card = new stdClass();
|
758 |
$card->cardType = $this->getCardType($order->cardtype);
|
762 |
$card->cvNumber = $order->CVV2;
|
763 |
$request->card = $card;
|
764 |
|
765 |
+
if( empty($request->card->cardType) )
|
766 |
+
{
|
767 |
+
$order->error = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro", "paid-memberships-pro" );
|
768 |
+
$order->shorterror = __( "Error validating credit card type. Make sure your credit card number is correct and try again.", "paid-memberships-pro", "paid-memberships-pro" );
|
769 |
+
return false;
|
770 |
+
}
|
771 |
+
|
772 |
+
try
|
773 |
+
{
|
774 |
+
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>$request->merchantID, "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
775 |
+
$reply = $soapClient->runTransaction($request);
|
776 |
+
}
|
777 |
+
catch(Throwable $t)
|
778 |
+
{
|
779 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
780 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
781 |
+
return false;
|
782 |
+
}
|
783 |
+
catch(Exception $e)
|
784 |
+
{
|
785 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $e->getMessage() );
|
786 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
787 |
+
return false;
|
788 |
+
}
|
789 |
|
790 |
if($reply->reasonCode == "100")
|
791 |
{
|
796 |
{
|
797 |
//error
|
798 |
$order->errorcode = $reply->reasonCode;
|
799 |
+
$order->error = $this->getErrorFromCode($reply);
|
800 |
+
$order->shorterror = $this->getErrorFromCode($reply);
|
801 |
return false;
|
802 |
}
|
803 |
}
|
807 |
//require a subscription id
|
808 |
if(empty($order->subscription_transaction_id))
|
809 |
return false;
|
|
|
810 |
//get wsdl
|
811 |
$wsdl_url = $this->getWSDL($order);
|
|
|
812 |
//to store our request
|
813 |
$request = new stdClass();
|
|
|
814 |
//which service?
|
815 |
$paySubscriptionDeleteService = new stdClass();
|
816 |
$paySubscriptionDeleteService ->run = "true";
|
817 |
$request->paySubscriptionDeleteService = $paySubscriptionDeleteService ;
|
|
|
818 |
//which order
|
819 |
$recurringSubscriptionInfo = new stdClass();
|
820 |
$recurringSubscriptionInfo->subscriptionID = $order->subscription_transaction_id;
|
821 |
$request->recurringSubscriptionInfo = $recurringSubscriptionInfo;
|
|
|
822 |
//merchant id and order code
|
823 |
$request->merchantID = pmpro_getOption("cybersource_merchantid");
|
824 |
$request->merchantReferenceCode = $order->code;
|
825 |
|
826 |
+
try
|
827 |
+
{
|
828 |
+
$soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID"=>$request->merchantID, "transactionKey"=>pmpro_getOption("cybersource_securitykey")));
|
829 |
+
$reply = $soapClient->runTransaction($request);
|
830 |
+
}
|
831 |
+
catch(Throwable $t)
|
832 |
+
{
|
833 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $t->getMessage() );
|
834 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
835 |
+
return false;
|
836 |
+
}
|
837 |
+
catch(Exception $e)
|
838 |
+
{
|
839 |
+
$order->error = sprintf( __( 'Error communicating with Cybersource: %', 'paid-memberships-pro' ), $e->getMessage() );
|
840 |
+
$order->shorterror = __( 'Error communicating with Cybersource.', 'paid-memberships-pro' );
|
841 |
+
return false;
|
842 |
+
}
|
843 |
|
844 |
if($reply->reasonCode == "100")
|
845 |
{
|
851 |
{
|
852 |
//error
|
853 |
$order->errorcode = $reply->reasonCode;
|
854 |
+
$order->error = $this->getErrorFromCode($reply);
|
855 |
+
$order->shorterror = $this->getErrorFromCode($reply);
|
856 |
return false;
|
857 |
}
|
858 |
}
|
859 |
|
860 |
+
function getErrorFromCode($reply)
|
861 |
{
|
862 |
$error_messages = array(
|
863 |
+
"100" => __( "Successful transaction.", "paid-memberships-pro" ),
|
864 |
+
"101" => __( "The request is missing one or more required fields.", "paid-memberships-pro" ),
|
865 |
+
"102" => __( "One or more fields in the request contains invalid data. Check that your billing address is valid.", "paid-memberships-pro" ),
|
866 |
+
"104" => __( "Duplicate order detected.", "paid-memberships-pro" ),
|
867 |
+
"110" => __( "Only partial amount was approved.", "paid-memberships-pro" ),
|
868 |
+
"150" => __( "Error: General system failure.", "paid-memberships-pro" ),
|
869 |
+
"151" => __( "Error: The request was received but there was a server timeout.", "paid-memberships-pro" ),
|
870 |
+
"152" => __( "Error: The request was received, but a service did not finish running in time. ", "paid-memberships-pro" ),
|
871 |
+
"200" => __( "Address Verification Service (AVS) failure.", "paid-memberships-pro" ),
|
872 |
+
"201" => __( "Authorization failed.", "paid-memberships-pro" ),
|
873 |
+
"202" => __( "Expired card or invalid expiration date.", "paid-memberships-pro" ),
|
874 |
+
"203" => __( "The card was declined.", "paid-memberships-pro" ),
|
875 |
+
"204" => __( "Insufficient funds in the account.", "paid-memberships-pro" ),
|
876 |
+
"205" => __( "Stolen or lost card.", "paid-memberships-pro" ),
|
877 |
+
"207" => __( "Issuing bank unavailable.", "paid-memberships-pro" ),
|
878 |
+
"208" => __( "Inactive card or card not authorized for card-not-present transactions.", "paid-memberships-pro" ),
|
879 |
+
"209" => __( "American Express Card Identification Digits (CID) did not match.", "paid-memberships-pro" ),
|
880 |
+
"210" => __( "The card has reached the credit limit. ", "paid-memberships-pro" ),
|
881 |
+
"211" => __( "Invalid card verification number.", "paid-memberships-pro" ),
|
882 |
+
"221" => __( "The customer matched an entry on the processors negative file. ", "paid-memberships-pro" ),
|
883 |
+
"230" => __( "Card verification (CV) check failed.", "paid-memberships-pro" ),
|
884 |
+
"231" => __( "Invalid account number.", "paid-memberships-pro" ),
|
885 |
+
"232" => __( "The card type is not accepted by the payment processor.", "paid-memberships-pro" ),
|
886 |
+
"233" => __( "General decline by the processor.", "paid-memberships-pro" ),
|
887 |
+
"234" => __( "There is a problem with your CyberSource merchant configuration.", "paid-memberships-pro" ),
|
888 |
+
"235" => __( "The requested amount exceeds the originally authorized amount.", "paid-memberships-pro" ),
|
889 |
+
"236" => __( "Processor failure.", "paid-memberships-pro" ),
|
890 |
+
"237" => __( "The authorization has already been reversed.", "paid-memberships-pro" ),
|
891 |
+
"238" => __( "The authorization has already been captured.", "paid-memberships-pro" ),
|
892 |
+
"239" => __( "The requested transaction amount must match the previous transaction amount.", "paid-memberships-pro" ),
|
893 |
+
"240" => __( "The card type sent is invalid or does not correlate with the credit card number.", "paid-memberships-pro" ),
|
894 |
+
"241" => __( "The referenced request id is invalid for all follow-on transactions.", "paid-memberships-pro" ),
|
895 |
+
"242" => __( "The request ID is invalid.", "paid-memberships-pro" ),
|
896 |
+
"243" => __( "The transaction has already been settled or reversed.", "paid-memberships-pro" ),
|
897 |
+
"246" => __( "The capture or credit is not voidable because the capture or credit information has already been submitted to your processor. Or, you requested a void for a type of transaction that cannot be voided.", "paid-memberships-pro" ),
|
898 |
+
"247" => __( "You requested a credit for a capture that was previously voided.", "paid-memberships-pro" ),
|
899 |
+
"250" => __( "Error: The request was received, but there was a timeout at the payment processor.", "paid-memberships-pro" ),
|
900 |
+
"254" => __( "Stand-alone credits are not allowed with this processor.", "paid-memberships-pro" ),
|
901 |
+
"450" => __( "Apartment number missing or not found. Check that your billing address is valid.", "paid-memberships-pro" ),
|
902 |
+
"451" => __( "Insufficient address information. Check that your billing address is valid.", "paid-memberships-pro" ),
|
903 |
+
"452" => __( "House/Box number not found on street. Check that your billing address is valid.", "paid-memberships-pro" ),
|
904 |
+
"453" => __( "Multiple address matches were found. Check that your billing address is valid.", "paid-memberships-pro" ),
|
905 |
+
"454" => __( "P.O. Box identifier not found or out of range.. Check that your billing address is valid.", "paid-memberships-pro" ),
|
906 |
+
"455" => __( "Route service identifier not found or out of range. Check that your billing address is valid.", "paid-memberships-pro" ),
|
907 |
+
"456" => __( "Street name not found in Postal code. Check that your billing address is valid.", "paid-memberships-pro" ),
|
908 |
+
"457" => __( "Postal code not found in database. Check that your billing address is valid.", "paid-memberships-pro" ),
|
909 |
+
"458" => __( "Unable to verify or correct address. Check that your billing address is valid.", "paid-memberships-pro" ),
|
910 |
+
"459" => __( "Multiple address matches were found (international). Check that your billing address is valid.", "paid-memberships-pro" ),
|
911 |
+
"460" => __( "Address match not found. Check that your billing address is valid.", "paid-memberships-pro" ),
|
912 |
+
"461" => __( "Unsupported character set. Verify the character set that you are using to process transactions.", "paid-memberships-pro" ),
|
913 |
+
"481" => __( "Order has been rejected by Decision Manager.", "paid-memberships-pro" ),
|
914 |
+
"520" => __( "Smart Authorization failed.", "paid-memberships-pro" ),
|
915 |
+
"700" => __( "Your order has been refused.", "paid-memberships-pro" ),
|
916 |
);
|
917 |
|
918 |
+
if(isset($error_messages[$reply->reasonCode]))
|
919 |
+
$error = $error_messages[$reply->reasonCode];
|
920 |
else
|
921 |
+
return __( "Unknown error.", "paid-memberships-pro" );
|
922 |
+
|
923 |
+
// list invalid fields from reply
|
924 |
+
if( isset($reply->invalidField) && !empty($reply->invalidField) )
|
925 |
+
{
|
926 |
+
$error .= __( " Invalid fields:", "paid-memberships-pro" );
|
927 |
+
$invalidFields = $reply->invalidField;
|
928 |
+
$invalidFields = str_replace("/", ",", $invalidFields);
|
929 |
+
$invalidFields = str_replace("c:", " ", $invalidFields);
|
930 |
+
$error .= $invalidFields;
|
931 |
+
}
|
932 |
+
|
933 |
+
return $error;
|
934 |
}
|
935 |
}
|
classes/gateways/class.pmprogateway_payflowpro.php
CHANGED
@@ -60,7 +60,7 @@
|
|
60 |
'use_ssl',
|
61 |
'tax_state',
|
62 |
'tax_rate',
|
63 |
-
'accepted_credit_cards'
|
64 |
);
|
65 |
|
66 |
return $options;
|
@@ -218,7 +218,7 @@
|
|
218 |
|
219 |
$nvpStr .="&AMT=1.00";
|
220 |
/* PayFlow Pro doesn't use IPN so this is a little confusing */
|
221 |
-
// $nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php')
|
222 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
223 |
|
224 |
$nvpStr .= "&CUSTIP=" . $_SERVER['REMOTE_ADDR'] . "&INVNUM=" . $order->code;
|
@@ -313,7 +313,7 @@
|
|
313 |
$nvpStr = "";
|
314 |
$nvpStr .="&AMT=" . $amount . "&TAXAMT=" . $amount_tax . "&CURRENCY=" . $pmpro_currency;
|
315 |
/* PayFlow Pro doesn't use IPN so this is a little confusing */
|
316 |
-
// $nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php')
|
317 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
318 |
|
319 |
$nvpStr .= "&CUSTIP=" . $_SERVER['REMOTE_ADDR'] . "&INVNUM=" . $order->code;
|
@@ -383,7 +383,7 @@
|
|
383 |
$nvpStr = "&ACTION=A";
|
384 |
$nvpStr .="&AMT=" . $amount . "&TAXAMT=" . $amount_tax . "&CURRENCY=" . $pmpro_currency;
|
385 |
/* PayFlow Pro doesn't use IPN so this is a little confusing */
|
386 |
-
// $nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php')
|
387 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
388 |
|
389 |
$nvpStr .= "&PROFILENAME=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
@@ -489,7 +489,7 @@
|
|
489 |
//paypal profile stuff
|
490 |
$nvpStr = "&ORIGPROFILEID=" . $order->subscription_transaction_id . "&ACTION=M";
|
491 |
/* PayFlow Pro doesn't use IPN so this is a little confusing */
|
492 |
-
// $nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php')
|
493 |
|
494 |
$nvpStr .= "&PROFILENAME=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
495 |
|
60 |
'use_ssl',
|
61 |
'tax_state',
|
62 |
'tax_rate',
|
63 |
+
'accepted_credit_cards',
|
64 |
);
|
65 |
|
66 |
return $options;
|
218 |
|
219 |
$nvpStr .="&AMT=1.00";
|
220 |
/* PayFlow Pro doesn't use IPN so this is a little confusing */
|
221 |
+
// $nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
222 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
223 |
|
224 |
$nvpStr .= "&CUSTIP=" . $_SERVER['REMOTE_ADDR'] . "&INVNUM=" . $order->code;
|
313 |
$nvpStr = "";
|
314 |
$nvpStr .="&AMT=" . $amount . "&TAXAMT=" . $amount_tax . "&CURRENCY=" . $pmpro_currency;
|
315 |
/* PayFlow Pro doesn't use IPN so this is a little confusing */
|
316 |
+
// $nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
317 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
318 |
|
319 |
$nvpStr .= "&CUSTIP=" . $_SERVER['REMOTE_ADDR'] . "&INVNUM=" . $order->code;
|
383 |
$nvpStr = "&ACTION=A";
|
384 |
$nvpStr .="&AMT=" . $amount . "&TAXAMT=" . $amount_tax . "&CURRENCY=" . $pmpro_currency;
|
385 |
/* PayFlow Pro doesn't use IPN so this is a little confusing */
|
386 |
+
// $nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
387 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
388 |
|
389 |
$nvpStr .= "&PROFILENAME=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
489 |
//paypal profile stuff
|
490 |
$nvpStr = "&ORIGPROFILEID=" . $order->subscription_transaction_id . "&ACTION=M";
|
491 |
/* PayFlow Pro doesn't use IPN so this is a little confusing */
|
492 |
+
// $nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
493 |
|
494 |
$nvpStr .= "&PROFILENAME=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
495 |
|
classes/gateways/class.pmprogateway_paypal.php
CHANGED
@@ -41,8 +41,8 @@
|
|
41 |
$gateway = pmpro_getGateway();
|
42 |
if($gateway == "paypal")
|
43 |
{
|
|
|
44 |
add_filter('pmpro_checkout_default_submit_button', array('PMProGateway_paypal', 'pmpro_checkout_default_submit_button'));
|
45 |
-
add_action('pmpro_checkout_after_form', array('PMProGateway_paypal', 'pmpro_checkout_after_form'));
|
46 |
add_action('http_api_curl', array('PMProGateway_paypal', 'http_api_curl'), 10, 3);
|
47 |
}
|
48 |
}
|
@@ -90,7 +90,13 @@
|
|
90 |
'tax_state',
|
91 |
'tax_rate',
|
92 |
'accepted_credit_cards',
|
93 |
-
'paypalexpress_skip_confirmation'
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
);
|
95 |
|
96 |
return $options;
|
@@ -103,7 +109,7 @@
|
|
103 |
*/
|
104 |
static function pmpro_payment_options($options)
|
105 |
{
|
106 |
-
//get
|
107 |
$paypal_options = PMProGateway_paypal::getGatewayOptions();
|
108 |
|
109 |
//merge with others.
|
@@ -178,12 +184,73 @@
|
|
178 |
<label><?php _e('IPN Handler URL', 'paid-memberships-pro' );?>:</label>
|
179 |
</th>
|
180 |
<td>
|
181 |
-
<p><?php _e('This URL is passed to PayPal for all new charges and subscriptions. You SHOULD NOT set this in your PayPal account settings.', 'paid-memberships-pro' );?><pre><?php echo admin_url(
|
182 |
</td>
|
183 |
</tr>
|
184 |
<?php
|
185 |
}
|
186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
/**
|
188 |
* Swap in our submit buttons.
|
189 |
*
|
@@ -212,43 +279,6 @@
|
|
212 |
return false;
|
213 |
}
|
214 |
|
215 |
-
/**
|
216 |
-
* Scripts for checkout page.
|
217 |
-
*
|
218 |
-
* @since 1.8
|
219 |
-
*/
|
220 |
-
static function pmpro_checkout_after_form()
|
221 |
-
{
|
222 |
-
?>
|
223 |
-
<script>
|
224 |
-
<!--
|
225 |
-
//choosing payment method
|
226 |
-
jQuery('input[name=gateway]').click(function() {
|
227 |
-
if(jQuery(this).val() == 'paypal')
|
228 |
-
{
|
229 |
-
jQuery('#pmpro_paypalexpress_checkout').hide();
|
230 |
-
jQuery('#pmpro_billing_address_fields').show();
|
231 |
-
jQuery('#pmpro_payment_information_fields').show();
|
232 |
-
jQuery('#pmpro_submit_span').show();
|
233 |
-
}
|
234 |
-
else
|
235 |
-
{
|
236 |
-
jQuery('#pmpro_billing_address_fields').hide();
|
237 |
-
jQuery('#pmpro_payment_information_fields').hide();
|
238 |
-
jQuery('#pmpro_submit_span').hide();
|
239 |
-
jQuery('#pmpro_paypalexpress_checkout').show();
|
240 |
-
}
|
241 |
-
});
|
242 |
-
|
243 |
-
//select the radio button if the label is clicked on
|
244 |
-
jQuery('a.pmpro_radio').click(function() {
|
245 |
-
jQuery(this).prev().click();
|
246 |
-
});
|
247 |
-
-->
|
248 |
-
</script>
|
249 |
-
<?php
|
250 |
-
}
|
251 |
-
|
252 |
/**
|
253 |
* Process checkout.
|
254 |
*
|
@@ -326,7 +356,7 @@
|
|
326 |
if(!empty($order->Token))
|
327 |
$nvpStr .= "&TOKEN=" . $order->Token;
|
328 |
$nvpStr .="&AMT=1.00&CURRENCYCODE=" . pmpro_getOption("currency");
|
329 |
-
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php')
|
330 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
331 |
|
332 |
$nvpStr .= "&PAYMENTACTION=Authorization&IPADDRESS=" . $_SERVER['REMOTE_ADDR'] . "&INVNUM=" . $order->code;
|
@@ -344,10 +374,15 @@
|
|
344 |
if(!empty($order->StartDate))
|
345 |
$nvpStr .= "&STARTDATE=" . $order->StartDate . "&ISSUENUMBER=" . $order->IssueNumber;
|
346 |
|
|
|
|
|
|
|
|
|
|
|
347 |
//billing address, etc
|
348 |
if(!empty($order->Address1))
|
349 |
{
|
350 |
-
$nvpStr .= "&
|
351 |
|
352 |
if($order->Address2)
|
353 |
$nvpStr .= "&STREET2=" . $order->Address2;
|
@@ -433,7 +468,7 @@
|
|
433 |
if(!empty($order->Token))
|
434 |
$nvpStr .= "&TOKEN=" . $order->Token;
|
435 |
$nvpStr .="&AMT=" . $amount . "&ITEMAMT=" . $order->InitialPayment . "&TAXAMT=" . $amount_tax . "&CURRENCYCODE=" . $pmpro_currency;
|
436 |
-
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php')
|
437 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
438 |
|
439 |
$nvpStr .= "&PAYMENTACTION=Sale&IPADDRESS=" . $_SERVER['REMOTE_ADDR'] . "&INVNUM=" . $order->code;
|
@@ -451,10 +486,15 @@
|
|
451 |
if(!empty($order->StartDate))
|
452 |
$nvpStr .= "&STARTDATE=" . $order->StartDate . "&ISSUENUMBER=" . $order->IssueNumber;
|
453 |
|
|
|
|
|
|
|
|
|
|
|
454 |
//billing address, etc
|
455 |
if($order->Address1)
|
456 |
{
|
457 |
-
$nvpStr .= "&
|
458 |
|
459 |
if($order->Address2)
|
460 |
$nvpStr .= "&STREET2=" . $order->Address2;
|
@@ -500,7 +540,7 @@
|
|
500 |
$nvpStr .="&AMT=" . $order->PaymentAmount . "&TAXAMT=" . $amount_tax . "&CURRENCYCODE=" . $pmpro_currency . "&PROFILESTARTDATE=" . $order->ProfileStartDate;
|
501 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling";
|
502 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
503 |
-
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php')
|
504 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
505 |
|
506 |
//if billing cycles are defined
|
@@ -532,10 +572,15 @@
|
|
532 |
if(!empty($order->StartDate))
|
533 |
$nvpStr .= "&STARTDATE=" . $order->StartDate . "&ISSUENUMBER=" . $order->IssueNumber;
|
534 |
|
|
|
|
|
|
|
|
|
|
|
535 |
//billing address, etc
|
536 |
if($order->Address1)
|
537 |
{
|
538 |
-
$nvpStr .= "&
|
539 |
|
540 |
if($order->Address2)
|
541 |
$nvpStr .= "&STREET2=" . $order->Address2;
|
@@ -583,16 +628,21 @@
|
|
583 |
if($order->StartDate)
|
584 |
$nvpStr .= "&STARTDATE=" . $order->StartDate . "&ISSUENUMBER=" . $order->IssueNumber;
|
585 |
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
|
591 |
-
|
592 |
-
|
|
|
|
|
593 |
|
594 |
-
|
595 |
-
|
|
|
|
|
|
|
596 |
|
597 |
$this->httpParsedResponseAr = $this->PPHttpPost('UpdateRecurringPaymentsProfile', $nvpStr);
|
598 |
|
41 |
$gateway = pmpro_getGateway();
|
42 |
if($gateway == "paypal")
|
43 |
{
|
44 |
+
add_action('pmpro_checkout_preheader', array('PMProGateway_paypal', 'pmpro_checkout_preheader'));
|
45 |
add_filter('pmpro_checkout_default_submit_button', array('PMProGateway_paypal', 'pmpro_checkout_default_submit_button'));
|
|
|
46 |
add_action('http_api_curl', array('PMProGateway_paypal', 'http_api_curl'), 10, 3);
|
47 |
}
|
48 |
}
|
90 |
'tax_state',
|
91 |
'tax_rate',
|
92 |
'accepted_credit_cards',
|
93 |
+
'paypalexpress_skip_confirmation',
|
94 |
+
///'paypal_enable_3dsecure',
|
95 |
+
//'paypal_cardinal_apikey',
|
96 |
+
//'paypal_cardinal_apiidentifier',
|
97 |
+
//'paypal_cardinal_orgunitid',
|
98 |
+
//'paypal_cardinal_merchantid',
|
99 |
+
//'paypal_cardinal_processorid'
|
100 |
);
|
101 |
|
102 |
return $options;
|
109 |
*/
|
110 |
static function pmpro_payment_options($options)
|
111 |
{
|
112 |
+
//get options
|
113 |
$paypal_options = PMProGateway_paypal::getGatewayOptions();
|
114 |
|
115 |
//merge with others.
|
184 |
<label><?php _e('IPN Handler URL', 'paid-memberships-pro' );?>:</label>
|
185 |
</th>
|
186 |
<td>
|
187 |
+
<p><?php _e('This URL is passed to PayPal for all new charges and subscriptions. You SHOULD NOT set this in your PayPal account settings.', 'paid-memberships-pro' );?><pre><?php echo add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') );?></pre></p>
|
188 |
</td>
|
189 |
</tr>
|
190 |
<?php
|
191 |
}
|
192 |
|
193 |
+
/**
|
194 |
+
* Code added to checkout preheader.
|
195 |
+
*
|
196 |
+
* @since 2.1
|
197 |
+
*/
|
198 |
+
static function pmpro_checkout_preheader() {
|
199 |
+
global $gateway, $gateway_environment, $pmpro_level;
|
200 |
+
$default_gateway = pmpro_getOption("gateway");
|
201 |
+
|
202 |
+
if(($gateway == "paypal" || $default_gateway == "paypal") && !pmpro_isLevelFree($pmpro_level)) {
|
203 |
+
$dependencies = array( 'jquery' );
|
204 |
+
$paypal_enable_3dsecure = pmpro_getOption( 'paypal_enable_3dsecure' );
|
205 |
+
$data = array();
|
206 |
+
|
207 |
+
// Setup 3DSecure if enabled.
|
208 |
+
if( pmpro_was_checkout_form_submitted() && $paypal_enable_3dsecure ) {
|
209 |
+
if( 'sandbox' === $gateway_environment || 'beta-sandbox' === $gateway_environment ) {
|
210 |
+
$songbird_url = 'https://songbirdstag.cardinalcommerce.com/cardinalcruise/v1/songbird.js';
|
211 |
+
} else {
|
212 |
+
$songbird_url = 'https://songbird.cardinalcommerce.com/edge/v1/songbird.js';
|
213 |
+
}
|
214 |
+
wp_enqueue_script( 'pmpro_songbird', $songbird_url );
|
215 |
+
$dependencies[] = 'pmpro_songbird';
|
216 |
+
$data['enable_3dsecure'] = $paypal_enable_3dsecure;
|
217 |
+
$data['cardinal_jwt'] = PMProGateway_paypal::get_cardinal_jwt();
|
218 |
+
if ( WP_DEBUG ) {
|
219 |
+
$data['cardinal_debug'] = 'verbose';
|
220 |
+
$data['cardinal_logging'] = 'On';
|
221 |
+
} else {
|
222 |
+
$data['cardinal_debug'] = '';
|
223 |
+
$data['cardinal_logging'] = 'Off';
|
224 |
+
}
|
225 |
+
}
|
226 |
+
|
227 |
+
wp_register_script( 'pmpro_paypal',
|
228 |
+
plugins_url( 'js/pmpro-paypal.js', PMPRO_BASE_FILE ),
|
229 |
+
$dependencies,
|
230 |
+
PMPRO_VERSION );
|
231 |
+
wp_localize_script( 'pmpro_paypal', 'pmpro_paypal', $data );
|
232 |
+
wp_enqueue_script( 'pmpro_paypal' );
|
233 |
+
}
|
234 |
+
}
|
235 |
+
|
236 |
+
static function get_cardinal_jwt() {
|
237 |
+
require_once( PMPRO_DIR . '/includes/lib/php-jwt/JWT.php' );
|
238 |
+
|
239 |
+
$key = pmpro_getOption( 'paypal_cardinal_apikey' );
|
240 |
+
$now = current_time( 'timestamp' );
|
241 |
+
$token = array(
|
242 |
+
'jti' => 'JWT' . pmpro_getDiscountCode(),
|
243 |
+
'iat' => $now,
|
244 |
+
'exp' => $now + 7200,
|
245 |
+
'iss' => pmpro_getOption( 'paypal_cardinal_apiidentifier' ),
|
246 |
+
'OrgUnitId' => pmpro_getOption( 'paypal_cardinal_orgunitid' ),
|
247 |
+
|
248 |
+
);
|
249 |
+
$jwt = \PMPro\Firebase\JWT\JWT::encode($token, $key);
|
250 |
+
|
251 |
+
return $jwt;
|
252 |
+
}
|
253 |
+
|
254 |
/**
|
255 |
* Swap in our submit buttons.
|
256 |
*
|
279 |
return false;
|
280 |
}
|
281 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
282 |
/**
|
283 |
* Process checkout.
|
284 |
*
|
356 |
if(!empty($order->Token))
|
357 |
$nvpStr .= "&TOKEN=" . $order->Token;
|
358 |
$nvpStr .="&AMT=1.00&CURRENCYCODE=" . pmpro_getOption("currency");
|
359 |
+
$nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
360 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
361 |
|
362 |
$nvpStr .= "&PAYMENTACTION=Authorization&IPADDRESS=" . $_SERVER['REMOTE_ADDR'] . "&INVNUM=" . $order->code;
|
374 |
if(!empty($order->StartDate))
|
375 |
$nvpStr .= "&STARTDATE=" . $order->StartDate . "&ISSUENUMBER=" . $order->IssueNumber;
|
376 |
|
377 |
+
// Name and email info
|
378 |
+
if ( ! empty( $order->FirstName ) && ! empty( $order->LastName ) && ! empty( $order->Email ) ) {
|
379 |
+
$nvpStr .= "&EMAIL=" . $order->Email . "&FIRSTNAME=" . $order->FirstName . "&LASTNAME=" . $order->LastName;
|
380 |
+
}
|
381 |
+
|
382 |
//billing address, etc
|
383 |
if(!empty($order->Address1))
|
384 |
{
|
385 |
+
$nvpStr .= "&STREET=" . $order->Address1;
|
386 |
|
387 |
if($order->Address2)
|
388 |
$nvpStr .= "&STREET2=" . $order->Address2;
|
468 |
if(!empty($order->Token))
|
469 |
$nvpStr .= "&TOKEN=" . $order->Token;
|
470 |
$nvpStr .="&AMT=" . $amount . "&ITEMAMT=" . $order->InitialPayment . "&TAXAMT=" . $amount_tax . "&CURRENCYCODE=" . $pmpro_currency;
|
471 |
+
$nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
472 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
473 |
|
474 |
$nvpStr .= "&PAYMENTACTION=Sale&IPADDRESS=" . $_SERVER['REMOTE_ADDR'] . "&INVNUM=" . $order->code;
|
486 |
if(!empty($order->StartDate))
|
487 |
$nvpStr .= "&STARTDATE=" . $order->StartDate . "&ISSUENUMBER=" . $order->IssueNumber;
|
488 |
|
489 |
+
// Name and email info
|
490 |
+
if ( $order->FirstName && $order->LastName && $order->Email ) {
|
491 |
+
$nvpStr .= "&EMAIL=" . $order->Email . "&FIRSTNAME=" . $order->FirstName . "&LASTNAME=" . $order->LastName;
|
492 |
+
}
|
493 |
+
|
494 |
//billing address, etc
|
495 |
if($order->Address1)
|
496 |
{
|
497 |
+
$nvpStr .= "&STREET=" . $order->Address1;
|
498 |
|
499 |
if($order->Address2)
|
500 |
$nvpStr .= "&STREET2=" . $order->Address2;
|
540 |
$nvpStr .="&AMT=" . $order->PaymentAmount . "&TAXAMT=" . $amount_tax . "&CURRENCYCODE=" . $pmpro_currency . "&PROFILESTARTDATE=" . $order->ProfileStartDate;
|
541 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling";
|
542 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
543 |
+
$nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
544 |
//$nvpStr .= "&L_BILLINGTYPE0=RecurringPayments&L_BILLINGAGREEMENTDESCRIPTION0=" . $order->PaymentAmount;
|
545 |
|
546 |
//if billing cycles are defined
|
572 |
if(!empty($order->StartDate))
|
573 |
$nvpStr .= "&STARTDATE=" . $order->StartDate . "&ISSUENUMBER=" . $order->IssueNumber;
|
574 |
|
575 |
+
// Name and email info
|
576 |
+
if ( $order->FirstName && $order->LastName && $order->Email ) {
|
577 |
+
$nvpStr .= "&EMAIL=" . $order->Email . "&FIRSTNAME=" . $order->FirstName . "&LASTNAME=" . $order->LastName;
|
578 |
+
}
|
579 |
+
|
580 |
//billing address, etc
|
581 |
if($order->Address1)
|
582 |
{
|
583 |
+
$nvpStr .= "&STREET=" . $order->Address1;
|
584 |
|
585 |
if($order->Address2)
|
586 |
$nvpStr .= "&STREET2=" . $order->Address2;
|
628 |
if($order->StartDate)
|
629 |
$nvpStr .= "&STARTDATE=" . $order->StartDate . "&ISSUENUMBER=" . $order->IssueNumber;
|
630 |
|
631 |
+
// Name and email info
|
632 |
+
if ( $order->FirstName && $order->LastName && $order->Email ) {
|
633 |
+
$nvpStr .= "&EMAIL=" . $order->Email . "&FIRSTNAME=" . $order->FirstName . "&LASTNAME=" . $order->LastName;
|
634 |
+
}
|
635 |
|
636 |
+
//billing address, etc
|
637 |
+
if($order->Address1)
|
638 |
+
{
|
639 |
+
$nvpStr .= "&STREET=" . $order->Address1;
|
640 |
|
641 |
+
if($order->Address2)
|
642 |
+
$nvpStr .= "&STREET2=" . $order->Address2;
|
643 |
+
|
644 |
+
$nvpStr .= "&CITY=" . $order->billing->city . "&STATE=" . $order->billing->state . "&COUNTRYCODE=" . $order->billing->country . "&ZIP=" . $order->billing->zip . "&SHIPTOPHONENUM=" . $order->billing->phone;
|
645 |
+
}
|
646 |
|
647 |
$this->httpParsedResponseAr = $this->PPHttpPost('UpdateRecurringPaymentsProfile', $nvpStr);
|
648 |
|
classes/gateways/class.pmprogateway_paypalexpress.php
CHANGED
@@ -46,11 +46,12 @@
|
|
46 |
add_filter('pmpro_payment_option_fields', array('PMProGateway_paypalexpress', 'pmpro_payment_option_fields'), 10, 2);
|
47 |
$pmpro_payment_option_fields_for_paypal = true;
|
48 |
}
|
49 |
-
|
50 |
//code to add at checkout
|
51 |
$gateway = pmpro_getGateway();
|
52 |
if($gateway == "paypalexpress")
|
53 |
{
|
|
|
54 |
add_filter('pmpro_include_billing_address_fields', '__return_false');
|
55 |
add_filter('pmpro_include_payment_information_fields', '__return_false');
|
56 |
add_filter('pmpro_required_billing_fields', array('PMProGateway_paypalexpress', 'pmpro_required_billing_fields'));
|
@@ -58,7 +59,6 @@
|
|
58 |
add_filter('pmpro_checkout_confirmed', array('PMProGateway_paypalexpress', 'pmpro_checkout_confirmed'));
|
59 |
add_action('pmpro_checkout_before_processing', array('PMProGateway_paypalexpress', 'pmpro_checkout_before_processing'));
|
60 |
add_filter('pmpro_checkout_default_submit_button', array('PMProGateway_paypalexpress', 'pmpro_checkout_default_submit_button'));
|
61 |
-
add_action('pmpro_checkout_after_form', array('PMProGateway_paypalexpress', 'pmpro_checkout_after_form'));
|
62 |
add_action('http_api_curl', array('PMProGateway_paypalexpress', 'http_api_curl'), 10, 3);
|
63 |
}
|
64 |
}
|
@@ -105,7 +105,7 @@
|
|
105 |
'use_ssl',
|
106 |
'tax_state',
|
107 |
'tax_rate',
|
108 |
-
'paypalexpress_skip_confirmation'
|
109 |
);
|
110 |
|
111 |
return $options;
|
@@ -118,7 +118,7 @@
|
|
118 |
*/
|
119 |
static function pmpro_payment_options($options)
|
120 |
{
|
121 |
-
//get
|
122 |
$paypal_options = PMProGateway_paypalexpress::getGatewayOptions();
|
123 |
|
124 |
//merge with others.
|
@@ -193,7 +193,7 @@
|
|
193 |
<label><?php _e('IPN Handler URL', 'paid-memberships-pro' );?>:</label>
|
194 |
</th>
|
195 |
<td>
|
196 |
-
<p><?php _e('To fully integrate with PayPal, be sure to set your IPN Handler URL to ', 'paid-memberships-pro' );?> <pre><?php echo admin_url(
|
197 |
</td>
|
198 |
</tr>
|
199 |
<?php
|
@@ -223,6 +223,26 @@
|
|
223 |
|
224 |
return $fields;
|
225 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
|
227 |
/**
|
228 |
* Save session vars before processing
|
@@ -453,43 +473,6 @@
|
|
453 |
return false;
|
454 |
}
|
455 |
|
456 |
-
/**
|
457 |
-
* Scripts for checkout page.
|
458 |
-
*
|
459 |
-
* @since 1.8
|
460 |
-
*/
|
461 |
-
static function pmpro_checkout_after_form()
|
462 |
-
{
|
463 |
-
?>
|
464 |
-
<script>
|
465 |
-
<!--
|
466 |
-
//choosing payment method
|
467 |
-
jQuery('input[name=gateway]').click(function() {
|
468 |
-
if(jQuery(this).val() == 'paypal')
|
469 |
-
{
|
470 |
-
jQuery('#pmpro_paypalexpress_checkout').hide();
|
471 |
-
jQuery('#pmpro_billing_address_fields').show();
|
472 |
-
jQuery('#pmpro_payment_information_fields').show();
|
473 |
-
jQuery('#pmpro_submit_span').show();
|
474 |
-
}
|
475 |
-
else
|
476 |
-
{
|
477 |
-
jQuery('#pmpro_billing_address_fields').hide();
|
478 |
-
jQuery('#pmpro_payment_information_fields').hide();
|
479 |
-
jQuery('#pmpro_submit_span').hide();
|
480 |
-
jQuery('#pmpro_paypalexpress_checkout').show();
|
481 |
-
}
|
482 |
-
});
|
483 |
-
|
484 |
-
//select the radio button if the label is clicked on
|
485 |
-
jQuery('a.pmpro_radio').click(function() {
|
486 |
-
jQuery(this).prev().click();
|
487 |
-
});
|
488 |
-
-->
|
489 |
-
</script>
|
490 |
-
<?php
|
491 |
-
}
|
492 |
-
|
493 |
//PayPal Express, this is run first to authorize from PayPal
|
494 |
function setExpressCheckout(&$order)
|
495 |
{
|
@@ -521,7 +504,7 @@
|
|
521 |
if(!empty($order->BillingFrequency))
|
522 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling&L_BILLINGTYPE0=RecurringPayments";
|
523 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
524 |
-
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php')
|
525 |
$nvpStr .= "&NOSHIPPING=1&L_BILLINGAGREEMENTDESCRIPTION0=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127)) . "&L_PAYMENTTYPE0=Any";
|
526 |
|
527 |
//if billing cycles are defined
|
@@ -656,7 +639,7 @@
|
|
656 |
if(!empty($order->BillingFrequency))
|
657 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling";
|
658 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
659 |
-
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php')
|
660 |
$nvpStr .= "&NOSHIPPING=1";
|
661 |
|
662 |
$nvpStr .= "&PAYERID=" . $_SESSION['payer_id'] . "&PAYMENTACTION=sale";
|
@@ -713,7 +696,7 @@
|
|
713 |
if(!empty($amount_tax))
|
714 |
$nvpStr .= "&TAXAMT=" . $amount_tax;
|
715 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling";
|
716 |
-
$nvpStr .= "&NOTIFYURL=" . urlencode(admin_url('admin-ajax.php')
|
717 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
718 |
|
719 |
//if billing cycles are defined
|
46 |
add_filter('pmpro_payment_option_fields', array('PMProGateway_paypalexpress', 'pmpro_payment_option_fields'), 10, 2);
|
47 |
$pmpro_payment_option_fields_for_paypal = true;
|
48 |
}
|
49 |
+
|
50 |
//code to add at checkout
|
51 |
$gateway = pmpro_getGateway();
|
52 |
if($gateway == "paypalexpress")
|
53 |
{
|
54 |
+
add_action('pmpro_checkout_preheader', array('PMProGateway_paypalexpress', 'pmpro_checkout_preheader'));
|
55 |
add_filter('pmpro_include_billing_address_fields', '__return_false');
|
56 |
add_filter('pmpro_include_payment_information_fields', '__return_false');
|
57 |
add_filter('pmpro_required_billing_fields', array('PMProGateway_paypalexpress', 'pmpro_required_billing_fields'));
|
59 |
add_filter('pmpro_checkout_confirmed', array('PMProGateway_paypalexpress', 'pmpro_checkout_confirmed'));
|
60 |
add_action('pmpro_checkout_before_processing', array('PMProGateway_paypalexpress', 'pmpro_checkout_before_processing'));
|
61 |
add_filter('pmpro_checkout_default_submit_button', array('PMProGateway_paypalexpress', 'pmpro_checkout_default_submit_button'));
|
|
|
62 |
add_action('http_api_curl', array('PMProGateway_paypalexpress', 'http_api_curl'), 10, 3);
|
63 |
}
|
64 |
}
|
105 |
'use_ssl',
|
106 |
'tax_state',
|
107 |
'tax_rate',
|
108 |
+
'paypalexpress_skip_confirmation',
|
109 |
);
|
110 |
|
111 |
return $options;
|
118 |
*/
|
119 |
static function pmpro_payment_options($options)
|
120 |
{
|
121 |
+
//get options
|
122 |
$paypal_options = PMProGateway_paypalexpress::getGatewayOptions();
|
123 |
|
124 |
//merge with others.
|
193 |
<label><?php _e('IPN Handler URL', 'paid-memberships-pro' );?>:</label>
|
194 |
</th>
|
195 |
<td>
|
196 |
+
<p><?php _e('To fully integrate with PayPal, be sure to set your IPN Handler URL to ', 'paid-memberships-pro' );?> <pre><?php echo add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') );?></pre></p>
|
197 |
</td>
|
198 |
</tr>
|
199 |
<?php
|
223 |
|
224 |
return $fields;
|
225 |
}
|
226 |
+
|
227 |
+
/**
|
228 |
+
* Code added to checkout preheader.
|
229 |
+
*
|
230 |
+
* @since 2.1
|
231 |
+
*/
|
232 |
+
static function pmpro_checkout_preheader() {
|
233 |
+
global $gateway, $pmpro_level;
|
234 |
+
|
235 |
+
$default_gateway = pmpro_getOption("gateway");
|
236 |
+
|
237 |
+
if(($gateway == "paypal" || $default_gateway == "paypal") && !pmpro_isLevelFree($pmpro_level)) {
|
238 |
+
wp_register_script( 'pmpro_paypal',
|
239 |
+
plugins_url( 'js/pmpro-paypal.js', PMPRO_BASE_FILE ),
|
240 |
+
array( 'jquery' ),
|
241 |
+
PMPRO_VERSION );
|
242 |
+
//wp_localize_script( 'pmpro_paypal', 'pmpro_paypal', array());
|
243 |
+
wp_enqueue_script( 'pmpro_paypal' );
|
244 |
+
}
|
245 |
+
}
|
246 |
|
247 |
/**
|
248 |
* Save session vars before processing
|
473 |
return false;
|
474 |
}
|
475 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
476 |
//PayPal Express, this is run first to authorize from PayPal
|
477 |
function setExpressCheckout(&$order)
|
478 |
{
|
504 |
if(!empty($order->BillingFrequency))
|
505 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling&L_BILLINGTYPE0=RecurringPayments";
|
506 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
507 |
+
$nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
508 |
$nvpStr .= "&NOSHIPPING=1&L_BILLINGAGREEMENTDESCRIPTION0=" . urlencode(substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127)) . "&L_PAYMENTTYPE0=Any";
|
509 |
|
510 |
//if billing cycles are defined
|
639 |
if(!empty($order->BillingFrequency))
|
640 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling";
|
641 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
642 |
+
$nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
643 |
$nvpStr .= "&NOSHIPPING=1";
|
644 |
|
645 |
$nvpStr .= "&PAYERID=" . $_SESSION['payer_id'] . "&PAYMENTACTION=sale";
|
696 |
if(!empty($amount_tax))
|
697 |
$nvpStr .= "&TAXAMT=" . $amount_tax;
|
698 |
$nvpStr .= "&BILLINGPERIOD=" . $order->BillingPeriod . "&BILLINGFREQUENCY=" . $order->BillingFrequency . "&AUTOBILLOUTAMT=AddToNextBilling";
|
699 |
+
$nvpStr .= "&NOTIFYURL=" . urlencode( add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') ) );
|
700 |
$nvpStr .= "&DESC=" . urlencode( apply_filters( 'pmpro_paypal_level_description', substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127), $order->membership_level->name, $order, get_bloginfo("name")) );
|
701 |
|
702 |
//if billing cycles are defined
|
classes/gateways/class.pmprogateway_paypalstandard.php
CHANGED
@@ -90,7 +90,7 @@
|
|
90 |
'currency',
|
91 |
'use_ssl',
|
92 |
'tax_state',
|
93 |
-
'tax_rate'
|
94 |
);
|
95 |
|
96 |
return $options;
|
@@ -174,7 +174,7 @@
|
|
174 |
<label><?php _e('IPN Handler URL', 'paid-memberships-pro' );?>:</label>
|
175 |
</th>
|
176 |
<td>
|
177 |
-
<p><?php _e('Here is your IPN URL for reference. You SHOULD NOT set this in your PayPal settings.', 'paid-memberships-pro' );?> <pre><?php echo admin_url(
|
178 |
</td>
|
179 |
</tr>
|
180 |
<?php
|
90 |
'currency',
|
91 |
'use_ssl',
|
92 |
'tax_state',
|
93 |
+
'tax_rate',
|
94 |
);
|
95 |
|
96 |
return $options;
|
174 |
<label><?php _e('IPN Handler URL', 'paid-memberships-pro' );?>:</label>
|
175 |
</th>
|
176 |
<td>
|
177 |
+
<p><?php _e('Here is your IPN URL for reference. You SHOULD NOT set this in your PayPal settings.', 'paid-memberships-pro' );?> <pre><?php echo add_query_arg( 'action', 'ipnhandler', admin_url('admin-ajax.php') );?></pre></p>
|
178 |
</td>
|
179 |
</tr>
|
180 |
<?php
|
classes/gateways/class.pmprogateway_stripe.php
CHANGED
@@ -4,18 +4,23 @@ use Stripe\Customer as Stripe_Customer;
|
|
4 |
use Stripe\Invoice as Stripe_Invoice;
|
5 |
use Stripe\Plan as Stripe_Plan;
|
6 |
use Stripe\Charge as Stripe_Charge;
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
-
define( "PMPRO_STRIPE_API_VERSION", "
|
9 |
|
10 |
//include pmprogateway
|
11 |
-
require_once(dirname(__FILE__) . "/class.pmprogateway.php");
|
12 |
|
13 |
//load classes init method
|
14 |
-
add_action('init', array('PMProGateway_stripe', 'init'));
|
15 |
|
16 |
// loading plugin activation actions
|
17 |
-
add_action('activate_paid-memberships-pro', array('PMProGateway_stripe', 'pmpro_activation'));
|
18 |
-
add_action('deactivate_paid-memberships-pro', array('PMProGateway_stripe', 'pmpro_deactivation'));
|
19 |
|
20 |
/**
|
21 |
* PMProGateway_stripe Class
|
@@ -24,24 +29,24 @@ add_action('deactivate_paid-memberships-pro', array('PMProGateway_stripe', 'pmpr
|
|
24 |
*
|
25 |
* @since 1.4
|
26 |
*/
|
27 |
-
class PMProGateway_stripe extends PMProGateway
|
28 |
-
{
|
29 |
/**
|
30 |
* @var bool Is the Stripe/PHP Library loaded
|
31 |
*/
|
32 |
private static $is_loaded = false;
|
|
|
33 |
/**
|
34 |
* Stripe Class Constructor
|
35 |
*
|
36 |
* @since 1.4
|
37 |
*/
|
38 |
-
function __construct($gateway =
|
39 |
-
$this->gateway
|
40 |
-
$this->gateway_environment = pmpro_getOption("gateway_environment");
|
41 |
|
42 |
-
if( true === $this->dependencies() ) {
|
43 |
$this->loadStripeLibrary();
|
44 |
-
Stripe\Stripe::setApiKey(pmpro_getOption("stripe_secretkey"));
|
45 |
Stripe\Stripe::setAPIVersion( PMPRO_STRIPE_API_VERSION );
|
46 |
self::$is_loaded = true;
|
47 |
}
|
@@ -59,13 +64,13 @@ class PMProGateway_stripe extends PMProGateway
|
|
59 |
public static function dependencies() {
|
60 |
global $msg, $msgt, $pmpro_stripe_error;
|
61 |
|
62 |
-
if ( version_compare( PHP_VERSION, '5.3.29', '<' )) {
|
63 |
|
64 |
$pmpro_stripe_error = true;
|
65 |
-
$msg
|
66 |
-
$msgt
|
67 |
|
68 |
-
if ( !is_admin() ) {
|
69 |
pmpro_setMessage( $msgt, "pmpro_error" );
|
70 |
}
|
71 |
|
@@ -74,21 +79,23 @@ class PMProGateway_stripe extends PMProGateway
|
|
74 |
|
75 |
$modules = array( 'curl', 'mbstring', 'json' );
|
76 |
|
77 |
-
foreach($modules as $module){
|
78 |
-
if(!extension_loaded($module)){
|
79 |
$pmpro_stripe_error = true;
|
80 |
-
$msg
|
81 |
-
$msgt
|
82 |
|
83 |
//throw error on checkout page
|
84 |
-
if(!is_admin())
|
85 |
-
pmpro_setMessage($msgt, 'pmpro_error');
|
|
|
86 |
|
87 |
return false;
|
88 |
}
|
89 |
}
|
90 |
|
91 |
self::$is_loaded = true;
|
|
|
92 |
return true;
|
93 |
}
|
94 |
|
@@ -100,7 +107,7 @@ class PMProGateway_stripe extends PMProGateway
|
|
100 |
*/
|
101 |
function loadStripeLibrary() {
|
102 |
//load Stripe library if it hasn't been loaded already (usually by another plugin using Stripe)
|
103 |
-
if(!class_exists("Stripe\Stripe")) {
|
104 |
require_once( PMPRO_DIR . "/includes/lib/Stripe/init.php" );
|
105 |
}
|
106 |
}
|
@@ -112,50 +119,74 @@ class PMProGateway_stripe extends PMProGateway
|
|
112 |
*/
|
113 |
static function init() {
|
114 |
//make sure Stripe is a gateway option
|
115 |
-
add_filter('pmpro_gateways', array('PMProGateway_stripe', 'pmpro_gateways'));
|
116 |
|
117 |
//add fields to payment settings
|
118 |
-
add_filter('pmpro_payment_options', array('PMProGateway_stripe', 'pmpro_payment_options'));
|
119 |
-
add_filter('pmpro_payment_option_fields', array(
|
|
|
|
|
|
|
120 |
|
121 |
//add some fields to edit user page (Updates)
|
122 |
-
add_action('pmpro_after_membership_level_profile_fields', array(
|
123 |
-
|
|
|
|
|
|
|
124 |
|
125 |
//old global RE showing billing address or not
|
126 |
global $pmpro_stripe_lite;
|
127 |
-
$pmpro_stripe_lite = apply_filters("pmpro_stripe_lite", !pmpro_getOption("stripe_billingaddress"));
|
128 |
-
add_filter('pmpro_required_billing_fields', array('PMProGateway_stripe', 'pmpro_required_billing_fields'));
|
129 |
|
130 |
//updates cron
|
131 |
-
add_action('pmpro_cron_stripe_subscription_updates', array(
|
|
|
|
|
|
|
132 |
|
133 |
/*
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
//add_filter('pmpro_next_payment', array('PMProGateway_stripe', 'pmpro_next_payment'), 10, 3);
|
142 |
|
143 |
//code to add at checkout if Stripe is the current gateway
|
144 |
-
$default_gateway = pmpro_getOption('gateway');
|
145 |
$current_gateway = pmpro_getGateway();
|
146 |
|
147 |
-
if( ($default_gateway == "stripe" || $current_gateway == "stripe") && empty($_REQUEST['review'] ) )
|
148 |
{
|
149 |
-
add_action('
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
add_filter('
|
155 |
-
add_filter('
|
156 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
//make sure we clean up subs we will be cancelling after checkout before processing
|
158 |
-
add_action('pmpro_checkout_before_processing', array(
|
|
|
|
|
|
|
159 |
}
|
160 |
|
161 |
add_action( 'init', array( 'PMProGateway_stripe', 'pmpro_clear_saved_subscriptions' ) );
|
@@ -174,7 +205,7 @@ class PMProGateway_stripe extends PMProGateway
|
|
174 |
$preserve = get_user_meta( $current_user->ID, 'pmpro_stripe_dont_cancel', true );
|
175 |
|
176 |
// Clean up the subscription timeout values (if applicable)
|
177 |
-
if ( !empty( $preserve ) ) {
|
178 |
|
179 |
foreach ( $preserve as $sub_id => $timestamp ) {
|
180 |
|
@@ -193,9 +224,10 @@ class PMProGateway_stripe extends PMProGateway
|
|
193 |
*
|
194 |
* @since 1.8
|
195 |
*/
|
196 |
-
static function pmpro_gateways($gateways) {
|
197 |
-
if(empty($gateways['stripe']))
|
198 |
-
$gateways['stripe'] = __('Stripe', 'paid-memberships-pro' );
|
|
|
199 |
|
200 |
return $gateways;
|
201 |
}
|
@@ -228,12 +260,12 @@ class PMProGateway_stripe extends PMProGateway
|
|
228 |
*
|
229 |
* @since 1.8
|
230 |
*/
|
231 |
-
static function pmpro_payment_options($options) {
|
232 |
//get stripe options
|
233 |
$stripe_options = self::getGatewayOptions();
|
234 |
|
235 |
//merge with others.
|
236 |
-
$options = array_merge($stripe_options, $options);
|
237 |
|
238 |
return $options;
|
239 |
}
|
@@ -243,63 +275,72 @@ class PMProGateway_stripe extends PMProGateway
|
|
243 |
*
|
244 |
* @since 1.8
|
245 |
*/
|
246 |
-
static function pmpro_payment_option_fields($values, $gateway) {
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
if(!empty($values['stripe_publishablekey']) && $public_key_prefix != 'pk_') {
|
262 |
-
?>
|
263 |
-
<br /><small class="pmpro_message pmpro_error"><?php _e('Your Publishable Key appears incorrect.', 'paid-memberships-pro');?></small>
|
264 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
}
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
303 |
}
|
304 |
|
305 |
/**
|
@@ -307,127 +348,42 @@ class PMProGateway_stripe extends PMProGateway
|
|
307 |
*
|
308 |
* @since 1.8
|
309 |
*/
|
310 |
-
static function
|
311 |
-
global $gateway, $pmpro_level;
|
312 |
|
313 |
-
$
|
314 |
|
315 |
-
|
316 |
-
{
|
317 |
-
//stripe js library
|
318 |
-
wp_enqueue_script("stripe", "https://js.stripe.com/v2/", array(), NULL);
|
319 |
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
function pmpro_stripe_javascript()
|
324 |
-
{
|
325 |
-
global $pmpro_gateway, $pmpro_level, $pmpro_stripe_lite;
|
326 |
-
?>
|
327 |
-
<script type="text/javascript">
|
328 |
-
<!--
|
329 |
-
// this identifies your website in the createToken call below
|
330 |
-
Stripe.setPublishableKey('<?php echo pmpro_getOption("stripe_publishablekey"); ?>');
|
331 |
-
|
332 |
-
pmpro_require_billing = true;
|
333 |
-
|
334 |
-
var tokenNum = 0;
|
335 |
-
|
336 |
-
jQuery(document).ready(function() {
|
337 |
-
jQuery(".pmpro_form").submit(function(event) {
|
338 |
-
|
339 |
-
// prevent the form from submitting with the default action
|
340 |
-
event.preventDefault();
|
341 |
-
|
342 |
-
//double check in case a discount code made the level free
|
343 |
-
if(pmpro_require_billing) {
|
344 |
-
//build array for creating token
|
345 |
-
var args = {
|
346 |
-
number: jQuery('#AccountNumber').val(),
|
347 |
-
exp_month: jQuery('#ExpirationMonth').val(),
|
348 |
-
exp_year: jQuery('#ExpirationYear').val()
|
349 |
-
<?php
|
350 |
-
$pmpro_stripe_verify_address = apply_filters("pmpro_stripe_verify_address", pmpro_getOption('stripe_billingaddress'));
|
351 |
-
if(!empty($pmpro_stripe_verify_address))
|
352 |
-
{
|
353 |
-
?>
|
354 |
-
,address_line1: jQuery('#baddress1').val(),
|
355 |
-
address_line2: jQuery('#baddress2').val(),
|
356 |
-
address_city: jQuery('#bcity').val(),
|
357 |
-
address_state: jQuery('#bstate').val(),
|
358 |
-
address_zip: jQuery('#bzipcode').val(),
|
359 |
-
address_country: jQuery('#bcountry').val()
|
360 |
-
<?php
|
361 |
-
}
|
362 |
-
?>
|
363 |
-
};
|
364 |
-
|
365 |
-
//add CVC if not blank
|
366 |
-
if(jQuery('#CVV').val().length)
|
367 |
-
args['cvc'] = jQuery('#CVV').val();
|
368 |
-
|
369 |
-
//add first and last name if not blank
|
370 |
-
if (jQuery('#bfirstname').length && jQuery('#blastname').length)
|
371 |
-
args['name'] = jQuery.trim(jQuery('#bfirstname').val() + ' ' + jQuery('#blastname').val());
|
372 |
-
|
373 |
-
//create token(s)
|
374 |
-
if (jQuery('#level').length) {
|
375 |
-
var levelnums = jQuery("#level").val().split(",");
|
376 |
-
for(var cnt = 0, len = levelnums.length; cnt < len; cnt++) {
|
377 |
-
Stripe.createToken(args, stripeResponseHandler);
|
378 |
-
}
|
379 |
-
} else {
|
380 |
-
Stripe.createToken(args, stripeResponseHandler);
|
381 |
-
}
|
382 |
|
383 |
-
// prevent the form from submitting with the default action
|
384 |
-
return false;
|
385 |
-
} else {
|
386 |
-
this.submit();
|
387 |
-
return true; //not using Stripe anymore
|
388 |
-
}
|
389 |
-
});
|
390 |
-
});
|
391 |
|
392 |
-
|
393 |
-
if (response.error) {
|
394 |
-
// re-enable the submit button
|
395 |
-
jQuery('.pmpro_btn-submit-checkout,.pmpro_btn-submit').removeAttr("disabled");
|
396 |
|
397 |
-
|
398 |
-
|
|
|
|
|
|
|
|
|
399 |
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
// insert the token into the form so it gets submitted to the server
|
408 |
-
form$.append("<input type='hidden' name='stripeToken" + tokenNum + "' value='" + token + "'/>");
|
409 |
-
tokenNum++;
|
410 |
-
|
411 |
-
//console.log(response);
|
412 |
-
|
413 |
-
//insert fields for other card fields
|
414 |
-
if(jQuery('#CardType[name=CardType]').length)
|
415 |
-
jQuery('#CardType').val(response['card']['brand']);
|
416 |
-
else
|
417 |
-
form$.append("<input type='hidden' name='CardType' value='" + response['card']['brand'] + "'/>");
|
418 |
-
form$.append("<input type='hidden' name='AccountNumber' value='XXXXXXXXXXXX" + response['card']['last4'] + "'/>");
|
419 |
-
form$.append("<input type='hidden' name='ExpirationMonth' value='" + ("0" + response['card']['exp_month']).slice(-2) + "'/>");
|
420 |
-
form$.append("<input type='hidden' name='ExpirationYear' value='" + response['card']['exp_year'] + "'/>");
|
421 |
-
|
422 |
-
// and submit
|
423 |
-
form$.get(0).submit();
|
424 |
-
}
|
425 |
}
|
426 |
-
-->
|
427 |
-
</script>
|
428 |
-
<?php
|
429 |
}
|
430 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
431 |
}
|
432 |
}
|
433 |
}
|
@@ -436,25 +392,36 @@ class PMProGateway_stripe extends PMProGateway
|
|
436 |
* Don't require the CVV.
|
437 |
* Don't require address fields if they are set to hide.
|
438 |
*/
|
439 |
-
static function pmpro_required_billing_fields($fields) {
|
440 |
global $pmpro_stripe_lite, $current_user, $bemail, $bconfirmemail;
|
441 |
|
442 |
//CVV is not required if set that way at Stripe. The Stripe JS will require it if it is required.
|
443 |
-
unset($fields['CVV']);
|
444 |
|
445 |
//if using stripe lite, remove some fields from the required array
|
446 |
-
if ($pmpro_stripe_lite) {
|
447 |
//some fields to remove
|
448 |
-
$remove = array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
449 |
//if a user is logged in, don't require bemail either
|
450 |
-
if (!empty($current_user->user_email)) {
|
451 |
-
$remove[]
|
452 |
-
$bemail
|
453 |
$bconfirmemail = $bemail;
|
454 |
}
|
455 |
//remove the fields
|
456 |
-
foreach ($remove as $field)
|
457 |
-
unset($fields[$field]);
|
|
|
458 |
}
|
459 |
|
460 |
return $fields;
|
@@ -465,34 +432,55 @@ class PMProGateway_stripe extends PMProGateway
|
|
465 |
*
|
466 |
* @since 1.8
|
467 |
*/
|
468 |
-
static function pmpro_checkout_order($morder) {
|
469 |
-
|
470 |
-
|
471 |
-
{
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
485 |
}
|
486 |
|
487 |
//stripe lite code to get name from other sources if available
|
488 |
global $pmpro_stripe_lite, $current_user;
|
489 |
-
if(!empty($pmpro_stripe_lite) && empty($morder->FirstName) && empty($morder->LastName)) {
|
490 |
-
if(!empty($current_user->ID)) {
|
491 |
-
$morder->FirstName = get_user_meta($current_user->ID, "first_name", true);
|
492 |
-
$morder->LastName
|
493 |
-
} elseif(!empty($_REQUEST['first_name']) && !empty($_REQUEST['last_name'])) {
|
494 |
-
$morder->FirstName = sanitize_text_field($_REQUEST['first_name']);
|
495 |
-
$morder->LastName
|
496 |
}
|
497 |
}
|
498 |
|
@@ -504,12 +492,12 @@ class PMProGateway_stripe extends PMProGateway
|
|
504 |
*
|
505 |
* @since 1.8
|
506 |
*/
|
507 |
-
static function pmpro_after_checkout($user_id, $morder) {
|
508 |
global $gateway;
|
509 |
|
510 |
-
if($gateway == "stripe") {
|
511 |
-
if(self::$is_loaded && !empty($morder) && !empty($morder->Gateway) && !empty($morder->Gateway->customer) && !empty($morder->Gateway->customer->id)) {
|
512 |
-
update_user_meta($user_id, "pmpro_stripe_customerid", $morder->Gateway->customer->id);
|
513 |
}
|
514 |
}
|
515 |
}
|
@@ -518,10 +506,11 @@ class PMProGateway_stripe extends PMProGateway
|
|
518 |
* Check settings if billing address should be shown.
|
519 |
* @since 1.8
|
520 |
*/
|
521 |
-
static function pmpro_include_billing_address_fields($include) {
|
522 |
//check settings RE showing billing address
|
523 |
-
if(!pmpro_getOption("stripe_billingaddress"))
|
524 |
$include = false;
|
|
|
525 |
|
526 |
return $include;
|
527 |
}
|
@@ -530,114 +519,77 @@ class PMProGateway_stripe extends PMProGateway
|
|
530 |
* Use our own payment fields at checkout. (Remove the name attributes.)
|
531 |
* @since 1.8
|
532 |
*/
|
533 |
-
static function pmpro_include_payment_information_fields($include) {
|
534 |
//global vars
|
535 |
global $pmpro_requirebilling, $pmpro_show_discount_code, $discount_code, $CardType, $AccountNumber, $ExpirationMonth, $ExpirationYear;
|
536 |
|
537 |
//get accepted credit cards
|
538 |
-
$pmpro_accepted_credit_cards
|
539 |
-
$pmpro_accepted_credit_cards
|
540 |
-
$pmpro_accepted_credit_cards_string = pmpro_implodeToEnglish($pmpro_accepted_credit_cards);
|
541 |
|
542 |
//include ours
|
543 |
?>
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
<?php
|
551 |
-
|
552 |
-
|
553 |
-
<div class="pmpro_checkout-fields<?php if(!empty($sslseal)) { ?> pmpro_checkout-fields-leftcol<?php } ?>">
|
554 |
-
<?php
|
555 |
-
$pmpro_include_cardtype_field = apply_filters('pmpro_include_cardtype_field', false);
|
556 |
-
if($pmpro_include_cardtype_field) { ?>
|
557 |
-
<div class="pmpro_checkout-field pmpro_payment-card-type">
|
558 |
-
<label for="CardType"><?php _e('Card Type', 'paid-memberships-pro' );?></label>
|
559 |
-
<select id="CardType" class=" <?php echo pmpro_getClassForField("CardType");?>">
|
560 |
-
<?php foreach($pmpro_accepted_credit_cards as $cc) { ?>
|
561 |
-
<option value="<?php echo $cc?>" <?php if($CardType == $cc) { ?>selected="selected"<?php } ?>><?php echo $cc?></option>
|
562 |
-
<?php } ?>
|
563 |
-
</select>
|
564 |
-
</div>
|
565 |
-
<?php } else { ?>
|
566 |
-
<input type="hidden" id="CardType" name="CardType" value="<?php echo esc_attr($CardType);?>" />
|
567 |
-
<script>
|
568 |
-
<!--
|
569 |
-
jQuery(document).ready(function() {
|
570 |
-
jQuery('#AccountNumber').validateCreditCard(function(result) {
|
571 |
-
var cardtypenames = {
|
572 |
-
"amex":"American Express",
|
573 |
-
"diners_club_carte_blanche":"Diners Club Carte Blanche",
|
574 |
-
"diners_club_international":"Diners Club International",
|
575 |
-
"discover":"Discover",
|
576 |
-
"jcb":"JCB",
|
577 |
-
"laser":"Laser",
|
578 |
-
"maestro":"Maestro",
|
579 |
-
"mastercard":"Mastercard",
|
580 |
-
"visa":"Visa",
|
581 |
-
"visa_electron":"Visa Electron"
|
582 |
-
}
|
583 |
-
|
584 |
-
if(result.card_type)
|
585 |
-
jQuery('#CardType').val(cardtypenames[result.card_type.name]);
|
586 |
-
else
|
587 |
-
jQuery('#CardType').val('Unknown Card Type');
|
588 |
-
});
|
589 |
-
});
|
590 |
-
-->
|
591 |
-
</script>
|
592 |
-
<?php } ?>
|
593 |
-
<div class="pmpro_checkout-field pmpro_payment-account-number">
|
594 |
-
<label for="AccountNumber"><?php _e('Card Number', 'paid-memberships-pro' );?></label>
|
595 |
-
<input id="AccountNumber" class="input <?php echo pmpro_getClassForField("AccountNumber");?>" type="text" size="25" value="<?php echo esc_attr($AccountNumber)?>" autocomplete="off" />
|
596 |
-
</div>
|
597 |
-
<div class="pmpro_checkout-field pmpro_payment-expiration">
|
598 |
-
<label for="ExpirationMonth"><?php _e('Expiration Date', 'paid-memberships-pro' );?></label>
|
599 |
-
<select id="ExpirationMonth" class=" <?php echo pmpro_getClassForField("ExpirationMonth");?>">
|
600 |
-
<option value="01" <?php if($ExpirationMonth == "01") { ?>selected="selected"<?php } ?>>01</option>
|
601 |
-
<option value="02" <?php if($ExpirationMonth == "02") { ?>selected="selected"<?php } ?>>02</option>
|
602 |
-
<option value="03" <?php if($ExpirationMonth == "03") { ?>selected="selected"<?php } ?>>03</option>
|
603 |
-
<option value="04" <?php if($ExpirationMonth == "04") { ?>selected="selected"<?php } ?>>04</option>
|
604 |
-
<option value="05" <?php if($ExpirationMonth == "05") { ?>selected="selected"<?php } ?>>05</option>
|
605 |
-
<option value="06" <?php if($ExpirationMonth == "06") { ?>selected="selected"<?php } ?>>06</option>
|
606 |
-
<option value="07" <?php if($ExpirationMonth == "07") { ?>selected="selected"<?php } ?>>07</option>
|
607 |
-
<option value="08" <?php if($ExpirationMonth == "08") { ?>selected="selected"<?php } ?>>08</option>
|
608 |
-
<option value="09" <?php if($ExpirationMonth == "09") { ?>selected="selected"<?php } ?>>09</option>
|
609 |
-
<option value="10" <?php if($ExpirationMonth == "10") { ?>selected="selected"<?php } ?>>10</option>
|
610 |
-
<option value="11" <?php if($ExpirationMonth == "11") { ?>selected="selected"<?php } ?>>11</option>
|
611 |
-
<option value="12" <?php if($ExpirationMonth == "12") { ?>selected="selected"<?php } ?>>12</option>
|
612 |
-
</select>/<select id="ExpirationYear" class=" <?php echo pmpro_getClassForField("ExpirationYear");?>">
|
613 |
-
<?php
|
614 |
-
for($i = date_i18n("Y"); $i < date_i18n("Y") + 10; $i++) { ?>
|
615 |
-
<option value="<?php echo $i?>" <?php if($ExpirationYear == $i) { ?>selected="selected"<?php } ?>><?php echo $i?></option>
|
616 |
-
<?php } ?>
|
617 |
-
</select>
|
618 |
-
</div>
|
619 |
-
<?php
|
620 |
-
$pmpro_show_cvv = apply_filters("pmpro_show_cvv", true);
|
621 |
-
if($pmpro_show_cvv) { ?>
|
622 |
-
<div class="pmpro_checkout-field pmpro_payment-cvv">
|
623 |
-
<label for="CVV"><?php _e('Security Code (CVC)', 'paid-memberships-pro' );?></label>
|
624 |
-
<input id="CVV" type="text" size="4" value="<?php if(!empty($_REQUEST['CVV'])) { echo esc_attr(sanitize_text_field($_REQUEST['CVV'])); }?>" class="input <?php echo pmpro_getClassForField("CVV");?>" /> <small>(<a href="javascript:void(0);" onclick="javascript:window.open('<?php echo pmpro_https_filter(PMPRO_URL)?>/pages/popup-cvv.html','cvv','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=600, height=475');"><?php _e("what's this?", 'paid-memberships-pro' );?></a>)</small>
|
625 |
-
</div>
|
626 |
<?php } ?>
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
641 |
<?php
|
642 |
|
643 |
//don't include the default
|
@@ -649,184 +601,228 @@ class PMProGateway_stripe extends PMProGateway
|
|
649 |
*
|
650 |
* @since 1.8
|
651 |
*/
|
652 |
-
static function user_profile_fields($user) {
|
653 |
global $wpdb, $current_user, $pmpro_currency_symbol;
|
654 |
|
655 |
-
$cycles
|
656 |
-
|
657 |
-
|
|
|
|
|
|
|
|
|
|
|
658 |
|
659 |
//make sure the current user has privileges
|
660 |
-
$membership_level_capability = apply_filters("pmpro_edit_member_capability", "manage_options");
|
661 |
-
if(!current_user_can($membership_level_capability))
|
662 |
return false;
|
|
|
663 |
|
664 |
//more privelges they should have
|
665 |
-
$show_membership_level = apply_filters("pmpro_profile_show_membership_level", true, $user);
|
666 |
-
if(
|
667 |
return false;
|
|
|
668 |
|
669 |
//check that user has a current subscription at Stripe
|
670 |
$last_order = new MemberOrder();
|
671 |
-
$last_order->getLastMemberOrder($user->ID);
|
672 |
|
673 |
//assume no sub to start
|
674 |
$sub = false;
|
675 |
|
676 |
//check that gateway is Stripe
|
677 |
-
if($last_order->gateway == "stripe" && self::$is_loaded )
|
678 |
-
{
|
679 |
//is there a customer?
|
680 |
-
$sub = $last_order->Gateway->getSubscription($last_order);
|
681 |
}
|
682 |
|
683 |
$customer_id = $user->pmpro_stripe_customerid;
|
684 |
|
685 |
-
if(empty($sub)) {
|
686 |
//make sure we delete stripe updates
|
687 |
-
update_user_meta($user->ID, "pmpro_stripe_updates", array());
|
688 |
|
689 |
//if the last order has a sub id, let the admin know there is no sub at Stripe
|
690 |
-
if(!empty($last_order) && $last_order->gateway == "stripe" && !empty($last_order->subscription_transaction_id) && strpos($last_order->subscription_transaction_id, "sub_") !== false)
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
<?php
|
695 |
}
|
696 |
} elseif ( true === self::$is_loaded ) {
|
697 |
-
?>
|
698 |
-
<h3><?php _e("Subscription Updates", 'paid-memberships-pro' ); ?></h3>
|
699 |
-
<p>
|
700 |
-
<?php
|
701 |
-
if(empty($_REQUEST['user_id']))
|
702 |
-
_e("Subscription updates, allow you to change the member's subscription values at predefined times. Be sure to click Update Profile after making changes.", 'paid-memberships-pro' );
|
703 |
-
else
|
704 |
-
_e("Subscription updates, allow you to change the member's subscription values at predefined times. Be sure to click Update User after making changes.", 'paid-memberships-pro' );
|
705 |
?>
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
712 |
$old_updates = $user->pmpro_stripe_updates;
|
713 |
-
if(is_array($old_updates))
|
714 |
-
{
|
715 |
$updates = array_merge(
|
716 |
-
array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
717 |
$old_updates
|
718 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
719 |
}
|
720 |
-
else
|
721 |
-
$updates = array(array('template'=>true, 'when'=>'now', 'date_month'=>'', 'date_day'=>'', 'date_year'=>'', 'billing_amount'=>'', 'cycle_number'=>'', 'cycle_period'=>'Month'));
|
722 |
|
723 |
-
foreach($updates as $update)
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
|
|
|
|
|
|
|
|
733 |
<select name="updates_date_month[]">
|
734 |
<?php
|
735 |
-
|
736 |
-
{
|
737 |
?>
|
738 |
-
|
739 |
-
|
|
|
740 |
</option>
|
741 |
<?php
|
742 |
-
|
743 |
?>
|
744 |
</select>
|
745 |
-
<input name="updates_date_day[]" type="text" size="2"
|
746 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
747 |
</span>
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
|
|
|
|
|
|
|
|
752 |
<select name="updates_cycle_period[]">
|
753 |
<?php
|
754 |
-
|
755 |
echo "<option value='$value'";
|
756 |
-
if(!empty($update['cycle_period']) && $update['cycle_period'] == $value)
|
|
|
|
|
757 |
echo ">$name</option>";
|
758 |
-
|
759 |
?>
|
760 |
</select>
|
761 |
</span>
|
762 |
-
|
763 |
<a class="updates_remove" href="javascript:void(0);">Remove</a>
|
764 |
</span>
|
765 |
-
|
766 |
-
|
767 |
}
|
768 |
?>
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
|
|
830 |
}
|
831 |
}
|
832 |
|
@@ -835,58 +831,61 @@ class PMProGateway_stripe extends PMProGateway
|
|
835 |
*
|
836 |
* @since 1.8
|
837 |
*/
|
838 |
-
static function user_profile_fields_save($user_id) {
|
839 |
global $wpdb;
|
840 |
|
841 |
//check capabilities
|
842 |
-
$membership_level_capability = apply_filters("pmpro_edit_member_capability", "manage_options");
|
843 |
-
if(!current_user_can($membership_level_capability))
|
844 |
return false;
|
|
|
845 |
|
846 |
//make sure some value was passed
|
847 |
-
if(!isset($_POST['updates_when']) || !is_array($_POST['updates_when']))
|
848 |
return;
|
|
|
849 |
|
850 |
//vars
|
851 |
-
$updates
|
852 |
$next_on_date_update = "";
|
853 |
|
854 |
//build array of updates (we skip the first because it's the template field for the JavaScript
|
855 |
-
for($i = 1; $i < count($_POST['updates_when']); $i++)
|
856 |
-
{
|
857 |
$update = array();
|
858 |
|
859 |
//all updates have these values
|
860 |
-
$update['when']
|
861 |
-
|
862 |
-
|
863 |
-
|
|
|
|
|
|
|
|
|
864 |
|
865 |
//these values only for on date updates
|
866 |
-
if($_POST['updates_when'][$i] == "date")
|
867 |
-
|
868 |
-
$update['
|
869 |
-
$update['
|
870 |
-
$update['date_year'] = intval($_POST['updates_date_year'][$i]);
|
871 |
}
|
872 |
|
873 |
//make sure the update is valid
|
874 |
-
if(empty($update['cycle_number']))
|
875 |
continue;
|
|
|
876 |
|
877 |
//if when is now, update the subscription
|
878 |
-
if($update['when'] == "now")
|
879 |
-
|
880 |
-
PMProGateway_stripe::updateSubscription($update, $user_id);
|
881 |
|
882 |
continue;
|
883 |
-
}
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
$next_on_date_update = min($next_on_date_update, $update['date_year'] . "-" . $update['date_month'] . "-" . $update['date_day']);
|
888 |
-
else
|
889 |
$next_on_date_update = $update['date_year'] . "-" . $update['date_month'] . "-" . $update['date_day'];
|
|
|
890 |
}
|
891 |
|
892 |
//add to array
|
@@ -894,10 +893,10 @@ class PMProGateway_stripe extends PMProGateway
|
|
894 |
}
|
895 |
|
896 |
//save in user meta
|
897 |
-
update_user_meta($user_id, "pmpro_stripe_updates", $updates);
|
898 |
|
899 |
//save date of next on-date update to make it easier to query for these in cron job
|
900 |
-
update_user_meta($user_id, "pmpro_stripe_next_on_date_update", $next_on_date_update);
|
901 |
}
|
902 |
|
903 |
/**
|
@@ -906,7 +905,7 @@ class PMProGateway_stripe extends PMProGateway
|
|
906 |
* @since 1.8
|
907 |
*/
|
908 |
static function pmpro_activation() {
|
909 |
-
pmpro_maybe_schedule_event(time(), 'daily', 'pmpro_cron_stripe_subscription_updates');
|
910 |
}
|
911 |
|
912 |
/**
|
@@ -915,7 +914,7 @@ class PMProGateway_stripe extends PMProGateway
|
|
915 |
* @since 1.8
|
916 |
*/
|
917 |
static function pmpro_deactivation() {
|
918 |
-
wp_clear_scheduled_hook('pmpro_cron_stripe_subscription_updates');
|
919 |
}
|
920 |
|
921 |
/**
|
@@ -932,53 +931,54 @@ class PMProGateway_stripe extends PMProGateway
|
|
932 |
WHERE meta_key = 'pmpro_stripe_next_on_date_update'
|
933 |
AND meta_value IS NOT NULL
|
934 |
AND meta_value <> ''
|
935 |
-
AND meta_value < '" . date_i18n("Y-m-d", strtotime("+1 day", current_time('timestamp'))) . "'";
|
936 |
-
$updates
|
937 |
|
938 |
-
if(!empty($updates)) {
|
939 |
//loop through
|
940 |
-
foreach($updates as $update) {
|
941 |
//pull values from update
|
942 |
$user_id = $update->user_id;
|
943 |
|
944 |
-
$user = get_userdata($user_id);
|
945 |
|
946 |
//if user is missing, delete the update info and continue
|
947 |
-
if(empty($user) || empty($user->ID)) {
|
948 |
-
delete_user_meta($user_id, "pmpro_stripe_updates");
|
949 |
-
delete_user_meta($user_id, "pmpro_stripe_next_on_date_update");
|
950 |
|
951 |
continue;
|
952 |
}
|
953 |
|
954 |
-
$user_updates
|
955 |
$next_on_date_update = "";
|
956 |
|
957 |
//loop through updates looking for updates happening today or earlier
|
958 |
-
if(!empty($user_updates)) {
|
959 |
-
foreach($user_updates as $key => $ud) {
|
960 |
-
if($ud['when'] == 'date' &&
|
961 |
-
|
962 |
) {
|
963 |
-
PMProGateway_stripe::updateSubscription($ud, $user_id);
|
964 |
|
965 |
//remove update from list
|
966 |
-
unset($user_updates[$key]);
|
967 |
-
} elseif($ud['when'] == 'date') {
|
968 |
//this is an on date update for the future, update the next on date update
|
969 |
-
if(!empty($next_on_date_update))
|
970 |
-
$next_on_date_update = min($next_on_date_update, $ud['date_year'] . "-" . $ud['date_month'] . "-" . $ud['date_day']);
|
971 |
-
else
|
972 |
$next_on_date_update = $ud['date_year'] . "-" . $ud['date_month'] . "-" . $ud['date_day'];
|
|
|
973 |
}
|
974 |
}
|
975 |
}
|
976 |
|
977 |
//save updates in case we removed some
|
978 |
-
update_user_meta($user_id, "pmpro_stripe_updates", $user_updates);
|
979 |
|
980 |
//save date of next on-date update to make it easier to query for these in cron job
|
981 |
-
update_user_meta($user_id, "pmpro_stripe_next_on_date_update", $next_on_date_update);
|
982 |
}
|
983 |
}
|
984 |
}
|
@@ -993,7 +993,7 @@ class PMProGateway_stripe extends PMProGateway
|
|
993 |
global $wpdb, $current_user;
|
994 |
|
995 |
// we're only worried about cases where the user is logged in
|
996 |
-
if( ! is_user_logged_in() ) {
|
997 |
return;
|
998 |
}
|
999 |
|
@@ -1006,51 +1006,57 @@ class PMProGateway_stripe extends PMProGateway
|
|
1006 |
//check the $pmpro_cancel_previous_subscriptions filter
|
1007 |
//this is used in add ons like Gift Memberships to stop PMPro from cancelling old memberships
|
1008 |
$pmpro_cancel_previous_subscriptions = true;
|
1009 |
-
$pmpro_cancel_previous_subscriptions = apply_filters( 'pmpro_cancel_previous_subscriptions', $pmpro_cancel_previous_subscriptions );
|
1010 |
-
if( ! $pmpro_cancel_previous_subscriptions ) {
|
1011 |
return;
|
1012 |
}
|
1013 |
|
1014 |
//get user and membership level
|
1015 |
-
$membership_level = pmpro_getMembershipLevelForUser($current_user->ID);
|
1016 |
|
1017 |
//no level, then probably no subscription at Stripe anymore
|
1018 |
-
if(empty($membership_level))
|
1019 |
return;
|
|
|
1020 |
|
1021 |
/**
|
1022 |
* Filter which levels to cancel at the gateway.
|
1023 |
* MMPU will set this to all levels that are going to be cancelled during this checkout.
|
1024 |
* Others may want to display this by add_filter('pmpro_stripe_levels_to_cancel_before_checkout', __return_false);
|
1025 |
*/
|
1026 |
-
$levels_to_cancel = apply_filters('pmpro_stripe_levels_to_cancel_before_checkout', array($membership_level->id), $current_user);
|
1027 |
|
1028 |
-
foreach($levels_to_cancel as $level_to_cancel) {
|
1029 |
//get the last order for this user/level
|
1030 |
$last_order = new MemberOrder();
|
1031 |
-
$last_order->getLastMemberOrder($current_user->ID, 'success', $level_to_cancel, 'stripe');
|
1032 |
|
1033 |
//so let's cancel the user's susbcription
|
1034 |
-
if(!empty($last_order) && !empty($last_order->subscription_transaction_id)) {
|
1035 |
-
$subscription = $last_order->Gateway->getSubscription($last_order);
|
1036 |
-
if(!empty($subscription)) {
|
1037 |
-
$last_order->Gateway->cancelSubscriptionAtGateway($subscription, true);
|
1038 |
|
1039 |
//Stripe was probably going to cancel this subscription 7 days past the payment failure (maybe just one hour, use a filter for sure)
|
1040 |
-
$memberships_users_row = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $current_user->ID . "' AND membership_id = '" . $level_to_cancel . "' AND status = 'active' LIMIT 1");
|
1041 |
|
1042 |
-
if(!empty($memberships_users_row) && (empty($memberships_users_row->enddate) || $memberships_users_row->enddate == '0000-00-00 00:00:00')) {
|
1043 |
/**
|
1044 |
* Filter graced period days when canceling existing subscriptions at checkout.
|
1045 |
*
|
1046 |
-
* @since 1.9.4
|
1047 |
-
*
|
1048 |
* @param int $days Grace period defaults to 3 days
|
1049 |
* @param object $membership Membership row from pmpro_memberships_users including membership_id, user_id, and enddate
|
|
|
|
|
|
|
1050 |
*/
|
1051 |
-
$days_grace
|
1052 |
-
$new_enddate = date('Y-m-d H:i:s', current_time('timestamp')+3600*24
|
1053 |
-
$wpdb->update( $wpdb->pmpro_memberships_users, array('enddate'
|
|
|
|
|
|
|
|
|
1054 |
}
|
1055 |
}
|
1056 |
}
|
@@ -1059,45 +1065,32 @@ class PMProGateway_stripe extends PMProGateway
|
|
1059 |
|
1060 |
/**
|
1061 |
* Process checkout and decide if a charge and or subscribe is needed
|
1062 |
-
*
|
1063 |
* @since 1.4
|
1064 |
*/
|
1065 |
-
function process(&$order) {
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
if(pmpro_isLevelRecurring($order->membership_level)) {
|
1074 |
-
if($this->subscribe($order)) {
|
1075 |
-
//yay!
|
1076 |
-
return true;
|
1077 |
-
} else {
|
1078 |
-
//try to refund initial charge
|
1079 |
-
return false;
|
1080 |
-
}
|
1081 |
-
} else {
|
1082 |
-
//only a one time charge
|
1083 |
-
$order->status = "success"; //saved on checkout page
|
1084 |
-
return true;
|
1085 |
-
}
|
1086 |
-
} else {
|
1087 |
-
if(empty($order->error)) {
|
1088 |
-
if ( ! self::$is_loaded ) {
|
1089 |
-
|
1090 |
-
$order->error = __( "Payment error: Please contact the webmaster (stripe-load-error)", 'paid-memberships-pro' );
|
1091 |
-
|
1092 |
-
} else {
|
1093 |
-
|
1094 |
-
$order->error = __( "Unknown error: Initial payment failed.", 'paid-memberships-pro' );
|
1095 |
-
}
|
1096 |
-
}
|
1097 |
|
|
|
|
|
|
|
|
|
|
|
1098 |
return false;
|
1099 |
}
|
1100 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
1101 |
}
|
1102 |
|
1103 |
/**
|
@@ -1105,64 +1098,70 @@ class PMProGateway_stripe extends PMProGateway
|
|
1105 |
*
|
1106 |
* @since 1.4
|
1107 |
*/
|
1108 |
-
function charge(&$order) {
|
1109 |
global $pmpro_currency, $pmpro_currencies;
|
1110 |
$currency_unit_multiplier = 100; //ie 100 cents per USD
|
1111 |
|
1112 |
//account for zero-decimal currencies like the Japanese Yen
|
1113 |
-
if(is_array($pmpro_currencies[$pmpro_currency]) && isset($pmpro_currencies[$pmpro_currency]['decimals']) && $pmpro_currencies[$pmpro_currency]['decimals'] == 0) {
|
1114 |
$currency_unit_multiplier = 1;
|
1115 |
-
}
|
1116 |
|
1117 |
//create a code for the order
|
1118 |
-
if(empty($order->code)) {
|
1119 |
-
$order->code = $order->getRandomCode();
|
1120 |
-
}
|
|
|
1121 |
|
1122 |
//what amount to charge?
|
1123 |
$amount = $order->InitialPayment;
|
1124 |
|
1125 |
//tax
|
1126 |
$order->subtotal = $amount;
|
1127 |
-
$tax
|
1128 |
-
$amount
|
|
|
1129 |
|
1130 |
//create a customer
|
1131 |
-
$result = $this->getCustomer($order);
|
1132 |
|
1133 |
-
if(empty($result)) {
|
1134 |
//failed to create customer
|
1135 |
return false;
|
1136 |
}
|
1137 |
|
|
|
1138 |
//charge
|
1139 |
try {
|
1140 |
-
$response = Stripe_Charge::create(array(
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
);
|
1147 |
-
} catch (Exception $e) {
|
1148 |
//$order->status = "error";
|
1149 |
-
$order->errorcode
|
1150 |
-
$order->error
|
1151 |
$order->shorterror = $order->error;
|
|
|
1152 |
return false;
|
1153 |
}
|
1154 |
|
1155 |
-
if(empty($response["failure_message"])) {
|
1156 |
//successful charge
|
1157 |
$order->payment_transaction_id = $response["id"];
|
1158 |
-
$order->updateStatus("success");
|
1159 |
$order->saveOrder();
|
|
|
1160 |
return true;
|
1161 |
} else {
|
1162 |
//$order->status = "error";
|
1163 |
-
$order->errorcode
|
1164 |
-
$order->error
|
1165 |
$order->shorterror = $response['failure_message'];
|
|
|
1166 |
return false;
|
1167 |
}
|
1168 |
}
|
@@ -1177,170 +1176,200 @@ class PMProGateway_stripe extends PMProGateway
|
|
1177 |
* If a customer is found and there is a stripeToken on the order passed, it will update the customer.
|
1178 |
* If no customer is found and there is a stripeToken on the order passed, it will create a customer.
|
1179 |
*
|
1180 |
-
* @since 1.4
|
1181 |
* @return Stripe_Customer|false
|
|
|
1182 |
*/
|
1183 |
-
function getCustomer(&$order = false, $force = false) {
|
1184 |
global $current_user;
|
1185 |
|
1186 |
//already have it?
|
1187 |
-
if(!empty($this->customer) &&
|
1188 |
return $this->customer;
|
1189 |
-
}
|
|
|
|
|
|
|
|
|
|
|
1190 |
|
1191 |
//figure out user_id and user
|
1192 |
-
if(!empty($order->user_id)) {
|
1193 |
-
$user_id = $order->user_id;
|
1194 |
-
}
|
1195 |
|
1196 |
//if no id passed, check the current user
|
1197 |
-
if(empty($user_id) && !empty($current_user->ID)) {
|
1198 |
-
$user_id = $current_user->ID;
|
1199 |
-
}
|
1200 |
|
1201 |
-
if(!empty($user_id)) {
|
1202 |
-
$user = get_userdata($user_id);
|
1203 |
} else {
|
1204 |
-
$user =
|
1205 |
-
}
|
1206 |
|
1207 |
//transaction id?
|
1208 |
-
if(!empty($order->subscription_transaction_id) && strpos($order->subscription_transaction_id, "cus_") !== false) {
|
1209 |
$customer_id = $order->subscription_transaction_id;
|
1210 |
} else {
|
1211 |
//try based on user id
|
1212 |
-
if(!empty($user_id)) {
|
1213 |
-
$customer_id = get_user_meta($user_id, "pmpro_stripe_customerid", true);
|
1214 |
}
|
1215 |
|
1216 |
//look up by transaction id
|
1217 |
-
if(empty($customer_id) && !empty($user_id)) {
|
1218 |
-
|
1219 |
-
if(!empty($order->payment_transaction_id)) {
|
1220 |
$payment_transaction_id = $order->payment_transaction_id;
|
1221 |
} else {
|
1222 |
//find the user's last stripe order
|
1223 |
$last_order = new MemberOrder();
|
1224 |
-
$last_order->getLastMemberOrder($user_id, array(
|
1225 |
-
|
|
|
|
|
|
|
1226 |
$payment_transaction_id = $last_order->payment_transaction_id;
|
|
|
1227 |
}
|
1228 |
|
1229 |
//we have a transaction id to look up
|
1230 |
-
if(!empty($payment_transaction_id)) {
|
1231 |
-
if(strpos($payment_transaction_id, "ch_") !== false) {
|
1232 |
//charge, look it up
|
1233 |
try {
|
1234 |
-
$charge = Stripe_Charge::retrieve($payment_transaction_id);
|
1235 |
-
} catch( \Exception $exception ) {
|
1236 |
$order->error = sprintf( __( 'Error: %s', 'paid-memberships-pro' ), $exception->getMessage() );
|
|
|
1237 |
return false;
|
1238 |
}
|
1239 |
|
1240 |
-
if(!empty($charge) && !empty($charge->customer))
|
1241 |
$customer_id = $charge->customer;
|
1242 |
-
|
|
|
1243 |
//invoice look it up
|
1244 |
try {
|
1245 |
-
$invoice = Stripe_Invoice::retrieve($payment_transaction_id);
|
1246 |
-
} catch( \Exception $exception ) {
|
1247 |
$order->error = sprintf( __( 'Error: %s', 'paid-memberships-pro' ), $exception->getMessage() );
|
|
|
1248 |
return false;
|
1249 |
}
|
1250 |
|
1251 |
-
if(!empty($invoice) && !empty($invoice->customer))
|
1252 |
$customer_id = $invoice->customer;
|
|
|
1253 |
}
|
1254 |
}
|
1255 |
|
1256 |
//if we found it, save to user meta for future reference
|
1257 |
-
if(!empty($customer_id)) {
|
1258 |
-
update_user_meta($user_id, "pmpro_stripe_customerid", $customer_id);
|
1259 |
-
}
|
1260 |
}
|
1261 |
}
|
1262 |
|
1263 |
//get name and email values from order in case we update
|
1264 |
-
if(!empty($order->FirstName) && !empty($order->LastName)) {
|
1265 |
-
$name = trim($order->FirstName . " " . $order->LastName);
|
1266 |
-
} elseif(!empty($order->FirstName)) {
|
1267 |
$name = $order->FirstName;
|
1268 |
-
} elseif(!empty($order->LastName)) {
|
1269 |
$name = $order->LastName;
|
1270 |
}
|
1271 |
-
|
1272 |
-
if(empty($name) && !empty($user->ID)) {
|
1273 |
-
$name = trim($user->first_name . " " . $user->last_name);
|
1274 |
|
1275 |
//still empty?
|
1276 |
-
if(empty($name))
|
1277 |
$name = $user->user_login;
|
1278 |
-
|
|
|
1279 |
$name = "No Name";
|
1280 |
}
|
1281 |
-
|
1282 |
-
if(!empty($order->Email)) {
|
1283 |
$email = $order->Email;
|
1284 |
} else {
|
1285 |
$email = "";
|
1286 |
}
|
1287 |
-
|
1288 |
-
if(empty($email) && !empty($user->ID) && !empty($user->user_email)) {
|
1289 |
$email = $user->user_email;
|
1290 |
-
} elseif(empty($email)) {
|
1291 |
$email = "No Email";
|
1292 |
-
}
|
1293 |
|
1294 |
//check for an existing stripe customer
|
1295 |
-
if(!empty($customer_id)) {
|
1296 |
try {
|
1297 |
-
$this->customer = Stripe_Customer::retrieve($customer_id);
|
1298 |
-
|
1299 |
-
|
1300 |
-
if(!empty($order->stripeToken)) {
|
1301 |
$this->customer->description = $name . " (" . $email . ")";
|
1302 |
-
$this->customer->email
|
1303 |
-
$this->customer->card = $order->stripeToken;
|
1304 |
$this->customer->save();
|
1305 |
}
|
1306 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1307 |
return $this->customer;
|
1308 |
-
|
|
|
1309 |
//assume no customer found
|
1310 |
}
|
1311 |
}
|
1312 |
|
1313 |
//no customer id, create one
|
1314 |
-
if(!empty($order->
|
1315 |
try {
|
1316 |
-
$this->customer = Stripe_Customer::create(array(
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
1322 |
-
$order->error = __("Error creating customer record with Stripe:", 'paid-memberships-pro' ) . " " . $e->getMessage();
|
1323 |
$order->shorterror = $order->error;
|
|
|
1324 |
return false;
|
1325 |
}
|
1326 |
|
1327 |
-
if(!empty($user_id)) {
|
1328 |
//user logged in/etc
|
1329 |
-
update_user_meta($user_id, "pmpro_stripe_customerid", $this->customer->id);
|
1330 |
} else {
|
1331 |
//user not registered yet, queue it up
|
1332 |
global $pmpro_stripe_customer_id;
|
1333 |
$pmpro_stripe_customer_id = $this->customer->id;
|
1334 |
-
if(! function_exists('pmpro_user_register_stripe_customerid')) {
|
1335 |
-
function pmpro_user_register_stripe_customerid($user_id) {
|
1336 |
global $pmpro_stripe_customer_id;
|
1337 |
-
update_user_meta($user_id, "pmpro_stripe_customerid", $pmpro_stripe_customer_id);
|
1338 |
}
|
1339 |
-
|
|
|
1340 |
}
|
1341 |
}
|
1342 |
|
1343 |
-
return apply_filters('pmpro_stripe_create_customer', $this->customer);
|
1344 |
}
|
1345 |
|
1346 |
return false;
|
@@ -1351,53 +1380,54 @@ class PMProGateway_stripe extends PMProGateway
|
|
1351 |
*
|
1352 |
* @since 1.8
|
1353 |
*/
|
1354 |
-
function getSubscription(&$order) {
|
1355 |
global $wpdb;
|
1356 |
|
1357 |
//no order?
|
1358 |
-
if(empty($order) || empty($order->code)) {
|
1359 |
return false;
|
1360 |
}
|
1361 |
|
1362 |
-
$result = $this->getCustomer($order, true);
|
1363 |
|
1364 |
//no customer?
|
1365 |
-
if(empty($result)) {
|
|
|
|
|
|
|
|
|
|
|
1366 |
return false;
|
1367 |
-
}
|
1368 |
|
1369 |
//is there a subscription transaction id pointing to a sub?
|
1370 |
-
if(!empty($order->subscription_transaction_id) && strpos($order->subscription_transaction_id, "sub_") !== false) {
|
1371 |
try {
|
1372 |
-
$sub = $this->customer->subscriptions->retrieve($order->subscription_transaction_id);
|
1373 |
-
} catch (Exception $e) {
|
1374 |
-
$order->error
|
1375 |
$order->shorterror = $order->error;
|
|
|
1376 |
return false;
|
1377 |
}
|
1378 |
|
1379 |
return $sub;
|
1380 |
}
|
1381 |
|
1382 |
-
//no subscriptions object in customer
|
1383 |
-
if(empty($this->customer->subscriptions)) {
|
1384 |
-
return false;
|
1385 |
-
}
|
1386 |
-
|
1387 |
//find subscription based on customer id and order/plan id
|
1388 |
$subscriptions = $this->customer->subscriptions->all();
|
1389 |
|
1390 |
//no subscriptions
|
1391 |
-
if(empty($subscriptions) || empty($subscriptions->data)) {
|
1392 |
return false;
|
1393 |
}
|
1394 |
|
1395 |
//we really want to test against the order codes of all orders with the same subscription_transaction_id (customer id)
|
1396 |
-
$codes = $wpdb->get_col("SELECT code FROM $wpdb->pmpro_membership_orders WHERE user_id = '" . $order->user_id . "' AND subscription_transaction_id = '" . $order->subscription_transaction_id . "' AND status NOT IN('refunded', 'review', 'token', 'error')");
|
1397 |
|
1398 |
//find the one for this order
|
1399 |
-
foreach($subscriptions->data as $sub) {
|
1400 |
-
if(in_array($sub->plan->id, $codes)) {
|
1401 |
return $sub;
|
1402 |
}
|
1403 |
}
|
@@ -1411,24 +1441,26 @@ class PMProGateway_stripe extends PMProGateway
|
|
1411 |
*
|
1412 |
* @since 1.4
|
1413 |
*/
|
1414 |
-
function subscribe(&$order, $checkout = true) {
|
1415 |
global $pmpro_currency, $pmpro_currencies;
|
1416 |
|
1417 |
$currency_unit_multiplier = 100; //ie 100 cents per USD
|
1418 |
|
1419 |
//account for zero-decimal currencies like the Japanese Yen
|
1420 |
-
if(is_array($pmpro_currencies[$pmpro_currency]) && isset($pmpro_currencies[$pmpro_currency]['decimals']) && $pmpro_currencies[$pmpro_currency]['decimals'] == 0)
|
1421 |
$currency_unit_multiplier = 1;
|
|
|
1422 |
|
1423 |
//create a code for the order
|
1424 |
-
if(empty($order->code))
|
1425 |
$order->code = $order->getRandomCode();
|
|
|
1426 |
|
1427 |
//filter order before subscription. use with care.
|
1428 |
-
$order = apply_filters("pmpro_subscribe_order", $order, $this);
|
1429 |
|
1430 |
//figure out the user
|
1431 |
-
if(!empty($order->user_id)) {
|
1432 |
$user_id = $order->user_id;
|
1433 |
} else {
|
1434 |
global $current_user;
|
@@ -1436,157 +1468,163 @@ class PMProGateway_stripe extends PMProGateway
|
|
1436 |
}
|
1437 |
|
1438 |
//set up customer
|
1439 |
-
|
1440 |
-
|
1441 |
-
|
|
|
1442 |
}
|
1443 |
|
1444 |
-
//set subscription id to custom id
|
1445 |
-
|
|
|
1446 |
|
1447 |
//figure out the amounts
|
1448 |
-
$amount
|
1449 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
1450 |
-
$amount
|
1451 |
|
1452 |
/*
|
1453 |
-
|
1454 |
-
|
1455 |
-
|
1456 |
|
1457 |
-
|
1458 |
-
|
1459 |
//figure out the trial length (first payment handled by initial charge)
|
1460 |
-
if($order->BillingPeriod == "Year") {
|
1461 |
-
$trial_period_days = $order->BillingFrequency * 365;
|
1462 |
-
} elseif($order->BillingPeriod == "Day") {
|
1463 |
-
$trial_period_days = $order->BillingFrequency * 1;
|
1464 |
-
} elseif($order->BillingPeriod == "Week") {
|
1465 |
-
$trial_period_days = $order->BillingFrequency * 7;
|
1466 |
} else {
|
1467 |
-
$trial_period_days = $order->BillingFrequency * 30;
|
1468 |
-
}
|
1469 |
|
1470 |
//convert to a profile start date
|
1471 |
-
$order->ProfileStartDate = date_i18n("Y-m-d", strtotime("+ " . $trial_period_days . " Day", current_time("timestamp"))) . "T0:0:0";
|
1472 |
|
1473 |
//filter the start date
|
1474 |
-
$order->ProfileStartDate = apply_filters("pmpro_profile_start_date", $order->ProfileStartDate, $order);
|
1475 |
|
1476 |
//convert back to days
|
1477 |
-
$trial_period_days = ceil(abs(strtotime(date_i18n("Y-m-d"), current_time("timestamp")) - strtotime($order->ProfileStartDate, current_time("timestamp"))) / 86400);
|
1478 |
|
1479 |
//for free trials, just push the start date of the subscription back
|
1480 |
-
if(!empty($order->TrialBillingCycles) && $order->TrialAmount == 0) {
|
1481 |
-
$trialOccurrences = (int)$order->TrialBillingCycles;
|
1482 |
-
if($order->BillingPeriod == "Year") {
|
1483 |
-
$trial_period_days = $trial_period_days + (365 * $order->BillingFrequency * $trialOccurrences);
|
1484 |
-
} elseif($order->BillingPeriod == "Day") {
|
1485 |
-
$trial_period_days = $trial_period_days + (1 * $order->BillingFrequency * $trialOccurrences);
|
1486 |
-
} elseif($order->BillingPeriod == "Week") {
|
1487 |
-
$trial_period_days = $trial_period_days + (7 * $order->BillingFrequency * $trialOccurrences);
|
1488 |
} else {
|
1489 |
-
$trial_period_days = $trial_period_days + (30 * $order->BillingFrequency * $trialOccurrences);
|
1490 |
}
|
1491 |
-
} elseif(!empty($order->TrialBillingCycles)) {
|
1492 |
/*
|
1493 |
-
|
1494 |
|
1495 |
-
|
1496 |
-
|
1497 |
-
$new_user_updates
|
1498 |
$new_user_updates[] = array(
|
1499 |
-
'when'
|
1500 |
'billing_amount' => $order->PaymentAmount,
|
1501 |
-
'cycle_period'
|
1502 |
-
'cycle_number'
|
1503 |
);
|
1504 |
|
1505 |
//now amount to equal the trial #s
|
1506 |
-
$amount
|
1507 |
-
$amount_tax = $order->getTaxForPrice($amount);
|
1508 |
-
$amount
|
1509 |
}
|
1510 |
|
1511 |
//create a plan
|
1512 |
try {
|
1513 |
$plan = array(
|
1514 |
-
"amount"
|
1515 |
-
"interval_count"
|
1516 |
-
"interval"
|
1517 |
"trial_period_days" => $trial_period_days,
|
1518 |
-
|
1519 |
-
"currency"
|
1520 |
-
"id"
|
1521 |
);
|
1522 |
|
1523 |
-
$plan = Stripe_Plan::create(apply_filters('pmpro_stripe_create_plan_array', $plan));
|
1524 |
-
} catch (Exception $e) {
|
1525 |
-
$order->error
|
1526 |
$order->shorterror = $order->error;
|
|
|
1527 |
return false;
|
1528 |
}
|
1529 |
|
1530 |
-
//before subscribing, let's clear out the updates so we don't trigger any during sub
|
1531 |
-
if(!empty($user_id)) {
|
1532 |
-
$old_user_updates = get_user_meta($user_id, "pmpro_stripe_updates", true);
|
1533 |
-
update_user_meta($user_id, "pmpro_stripe_updates", array());
|
1534 |
}
|
1535 |
|
1536 |
-
|
|
|
1537 |
$order->subscription_transaction_id = $this->customer['id'];
|
1538 |
}
|
1539 |
|
1540 |
-
//subscribe to the plan
|
1541 |
try {
|
1542 |
-
$subscription = array("plan" => $order->code);
|
1543 |
-
$result
|
1544 |
-
} catch (Exception $e) {
|
1545 |
//try to delete the plan
|
1546 |
$plan->delete();
|
1547 |
|
1548 |
//give the user any old updates back
|
1549 |
-
if(!empty($user_id)) {
|
1550 |
-
update_user_meta($user_id, "pmpro_stripe_updates", $old_user_updates);
|
1551 |
}
|
1552 |
|
1553 |
//return error
|
1554 |
-
$order->error
|
1555 |
$order->shorterror = $order->error;
|
|
|
1556 |
return false;
|
1557 |
}
|
1558 |
|
1559 |
-
//delete the plan
|
1560 |
-
$plan = Stripe_Plan::retrieve($order->code);
|
1561 |
$plan->delete();
|
1562 |
|
1563 |
//if we got this far, we're all good
|
1564 |
-
$order->status
|
1565 |
$order->subscription_transaction_id = $result['id'];
|
1566 |
|
1567 |
//save new updates if this is at checkout
|
1568 |
-
if($checkout) {
|
1569 |
//empty out updates unless set above
|
1570 |
-
if(empty($new_user_updates)) {
|
1571 |
$new_user_updates = array();
|
1572 |
}
|
1573 |
|
1574 |
//update user meta
|
1575 |
-
if(!empty($user_id)) {
|
1576 |
-
update_user_meta($user_id, "pmpro_stripe_updates", $new_user_updates);
|
1577 |
} else {
|
1578 |
//need to remember the user updates to save later
|
1579 |
global $pmpro_stripe_updates;
|
1580 |
$pmpro_stripe_updates = $new_user_updates;
|
1581 |
-
function pmpro_user_register_stripe_updates($user_id) {
|
1582 |
global $pmpro_stripe_updates;
|
1583 |
-
update_user_meta($user_id, "pmpro_stripe_updates", $pmpro_stripe_updates);
|
1584 |
}
|
1585 |
-
|
|
|
1586 |
}
|
1587 |
} else {
|
1588 |
//give them their old updates back
|
1589 |
-
update_user_meta($user_id, "pmpro_stripe_updates", $old_user_updates);
|
1590 |
}
|
1591 |
|
1592 |
return true;
|
@@ -1595,8 +1633,8 @@ class PMProGateway_stripe extends PMProGateway
|
|
1595 |
/**
|
1596 |
* Helper method to save the subscription ID to make sure the membership doesn't get cancelled by the webhook
|
1597 |
*/
|
1598 |
-
static function ignoreCancelWebhookForThisSubscription($subscription_id, $user_id =
|
1599 |
-
if(empty($user_id)) {
|
1600 |
global $current_user;
|
1601 |
$user_id = $current_user->ID;
|
1602 |
}
|
@@ -1609,7 +1647,7 @@ class PMProGateway_stripe extends PMProGateway
|
|
1609 |
}
|
1610 |
|
1611 |
// Store or update the subscription ID timestamp (for cleanup)
|
1612 |
-
$preserve[$subscription_id] = current_time( 'timestamp' );
|
1613 |
|
1614 |
update_user_meta( $user_id, 'pmpro_stripe_dont_cancel', $preserve );
|
1615 |
}
|
@@ -1617,27 +1655,27 @@ class PMProGateway_stripe extends PMProGateway
|
|
1617 |
/**
|
1618 |
* Helper method to process a Stripe subscription update
|
1619 |
*/
|
1620 |
-
static function updateSubscription($update, $user_id) {
|
1621 |
global $wpdb;
|
1622 |
|
1623 |
//get level for user
|
1624 |
-
$user_level = pmpro_getMembershipLevelForUser($user_id);
|
1625 |
|
1626 |
//get current plan at Stripe to get payment date
|
1627 |
$last_order = new MemberOrder();
|
1628 |
-
$last_order->getLastMemberOrder($user_id);
|
1629 |
-
$last_order->setGateway('stripe');
|
1630 |
-
$last_order->Gateway->getCustomer($last_order);
|
1631 |
|
1632 |
-
$subscription = $last_order->Gateway->getSubscription($last_order);
|
1633 |
|
1634 |
-
if(!empty($subscription)) {
|
1635 |
$end_timestamp = $subscription->current_period_end;
|
1636 |
|
1637 |
//cancel the old subscription
|
1638 |
-
if(
|
1639 |
//throw error and halt save
|
1640 |
-
if ( !function_exists( 'pmpro_stripe_user_profile_fields_save_error' )) {
|
1641 |
//throw error and halt save
|
1642 |
function pmpro_stripe_user_profile_fields_save_error( $errors, $update, $user ) {
|
1643 |
$errors->add( 'pmpro_stripe_updates', __( 'Could not cancel the old subscription. Updates have not been processed.', 'paid-memberships-pro' ) );
|
@@ -1652,44 +1690,44 @@ class PMProGateway_stripe extends PMProGateway
|
|
1652 |
}
|
1653 |
|
1654 |
//if we didn't get an end date, let's set one one cycle out
|
1655 |
-
if(empty($end_timestamp)) {
|
1656 |
-
$end_timestamp = strtotime("+" . $update['cycle_number'] . " " . $update['cycle_period'], current_time('timestamp'));
|
1657 |
}
|
1658 |
|
1659 |
//build order object
|
1660 |
$update_order = new MemberOrder();
|
1661 |
-
$update_order->setGateway('stripe');
|
1662 |
-
$update_order->user_id
|
1663 |
-
$update_order->membership_id
|
1664 |
-
$update_order->membership_name
|
1665 |
-
$update_order->InitialPayment
|
1666 |
-
$update_order->PaymentAmount
|
1667 |
-
$update_order->ProfileStartDate = date_i18n("Y-m-d", $end_timestamp);
|
1668 |
-
$update_order->BillingPeriod
|
1669 |
$update_order->BillingFrequency = $update['cycle_number'];
|
1670 |
-
|
1671 |
//need filter to reset ProfileStartDate
|
1672 |
$profile_start_date = $update_order->ProfileStartDate;
|
1673 |
-
add_filter('pmpro_profile_start_date', function( $startdate, $order ) use ( $profile_start_date ) {
|
1674 |
return "{$profile_start_date}T0:0:0";
|
1675 |
-
}, 10, 2);
|
1676 |
|
1677 |
//update subscription
|
1678 |
-
$update_order->Gateway->subscribe($update_order, false);
|
1679 |
|
1680 |
//update membership
|
1681 |
$sqlQuery = "UPDATE $wpdb->pmpro_memberships_users
|
1682 |
-
SET billing_amount = '" . esc_sql($update['billing_amount']) . "',
|
1683 |
-
cycle_number = '" . esc_sql($update['cycle_number']) . "',
|
1684 |
-
cycle_period = '" . esc_sql($update['cycle_period']) . "',
|
1685 |
trial_amount = '',
|
1686 |
trial_limit = ''
|
1687 |
-
WHERE user_id = '" . esc_sql($user_id) . "'
|
1688 |
-
AND membership_id = '" . esc_sql($last_order->membership_id) . "'
|
1689 |
AND status = 'active'
|
1690 |
LIMIT 1";
|
1691 |
|
1692 |
-
$wpdb->query($sqlQuery);
|
1693 |
|
1694 |
//save order so we know which plan to look for at stripe (order code = plan id)
|
1695 |
$update_order->status = "success";
|
@@ -1701,15 +1739,25 @@ class PMProGateway_stripe extends PMProGateway
|
|
1701 |
*
|
1702 |
* @since 1.4
|
1703 |
*/
|
1704 |
-
function update(&$order) {
|
1705 |
-
//we just have to run getCustomer which will look for the customer and update it with the new token
|
1706 |
-
$result = $this->getCustomer($order);
|
1707 |
|
1708 |
-
|
1709 |
-
|
1710 |
-
|
1711 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1712 |
}
|
|
|
|
|
|
|
1713 |
}
|
1714 |
|
1715 |
/**
|
@@ -1717,32 +1765,32 @@ class PMProGateway_stripe extends PMProGateway
|
|
1717 |
*
|
1718 |
* @since 1.4
|
1719 |
*/
|
1720 |
-
function cancel(&$order, $update_status = true) {
|
1721 |
global $pmpro_stripe_event;
|
1722 |
|
1723 |
//no matter what happens below, we're going to cancel the order in our system
|
1724 |
-
if($update_status) {
|
1725 |
-
$order->updateStatus("cancelled");
|
1726 |
}
|
1727 |
|
1728 |
//require a subscription id
|
1729 |
-
if(empty($order->subscription_transaction_id)) {
|
1730 |
return false;
|
1731 |
-
}
|
1732 |
|
1733 |
//find the customer
|
1734 |
-
$result = $this->getCustomer($order);
|
1735 |
|
1736 |
-
if(!empty($result)) {
|
1737 |
//find subscription with this order code
|
1738 |
-
$subscription = $this->getSubscription($order);
|
1739 |
|
1740 |
-
if(!empty($subscription)
|
1741 |
-
|
1742 |
-
if($this->cancelSubscriptionAtGateway($subscription)) {
|
1743 |
//we're okay, going to return true later
|
1744 |
} else {
|
1745 |
-
$order->error
|
1746 |
$order->shorterror = $order->error;
|
1747 |
|
1748 |
return false;
|
@@ -1750,17 +1798,18 @@ class PMProGateway_stripe extends PMProGateway
|
|
1750 |
}
|
1751 |
|
1752 |
/*
|
1753 |
-
|
1754 |
-
|
1755 |
-
if(empty($_REQUEST['submit-checkout'])) {
|
1756 |
-
update_user_meta($order->user_id, "pmpro_stripe_updates", array());
|
1757 |
}
|
1758 |
|
1759 |
return true;
|
1760 |
} else {
|
1761 |
-
$order->error
|
1762 |
$order->shorterror = $order->error;
|
1763 |
-
|
|
|
1764 |
}
|
1765 |
}
|
1766 |
|
@@ -1769,23 +1818,23 @@ class PMProGateway_stripe extends PMProGateway
|
|
1769 |
*
|
1770 |
* @since 1.8
|
1771 |
*/
|
1772 |
-
function cancelSubscriptionAtGateway($subscription, $preserve_local_membership = false) {
|
1773 |
// Check if a valid sub.
|
1774 |
-
if( empty( $subscription) || empty( $subscription->id ) ) {
|
1775 |
return false;
|
1776 |
}
|
1777 |
|
1778 |
// If this is already cancelled, return true.
|
1779 |
-
if( !empty( $subscription->canceled_at ) ) {
|
1780 |
return true;
|
1781 |
}
|
1782 |
|
1783 |
// Make sure we get the customer for this subscription.
|
1784 |
$order = new MemberOrder();
|
1785 |
-
$order->getLastMemberOrderBySubscriptionTransactionID($subscription->id);
|
1786 |
|
1787 |
// No order?
|
1788 |
-
if(empty($order)) {
|
1789 |
//lets cancel anyway, but this is suspicious
|
1790 |
$r = $subscription->cancel();
|
1791 |
|
@@ -1793,7 +1842,7 @@ class PMProGateway_stripe extends PMProGateway
|
|
1793 |
}
|
1794 |
|
1795 |
// Okay have an order, so get customer so we can cancel invoices too
|
1796 |
-
$this->getCustomer($order);
|
1797 |
|
1798 |
// Get open invoices.
|
1799 |
$invoices = $this->customer->invoices();
|
@@ -1802,25 +1851,24 @@ class PMProGateway_stripe extends PMProGateway
|
|
1802 |
// Found it, cancel it.
|
1803 |
try {
|
1804 |
// Find any open invoices for this subscription and forgive them.
|
1805 |
-
if(!empty($invoices)) {
|
1806 |
-
foreach($invoices->data as $invoice) {
|
1807 |
-
if(
|
1808 |
-
$invoice->
|
1809 |
-
$invoice->save();
|
1810 |
}
|
1811 |
}
|
1812 |
}
|
1813 |
|
1814 |
// Sometimes we don't want to cancel the local membership when Stripe sends its webhook.
|
1815 |
-
if($preserve_local_membership) {
|
1816 |
-
PMProGateway_stripe::ignoreCancelWebhookForThisSubscription($subscription->id, $order->user_id);
|
1817 |
}
|
1818 |
|
1819 |
// Cancel
|
1820 |
$r = $subscription->cancel();
|
1821 |
|
1822 |
return true;
|
1823 |
-
} catch(Exception $e) {
|
1824 |
return false;
|
1825 |
}
|
1826 |
}
|
@@ -1829,22 +1877,22 @@ class PMProGateway_stripe extends PMProGateway
|
|
1829 |
* Filter pmpro_next_payment to get date via API if possible
|
1830 |
*
|
1831 |
* @since 1.8.6
|
1832 |
-
|
1833 |
-
static function pmpro_next_payment($timestamp, $user_id, $order_status) {
|
1834 |
//find the last order for this user
|
1835 |
-
if(!empty($user_id)) {
|
1836 |
//get last order
|
1837 |
$order = new MemberOrder();
|
1838 |
-
$order->getLastMemberOrder($user_id, $order_status);
|
1839 |
|
1840 |
//check if this is a Stripe order with a subscription transaction id
|
1841 |
-
if(!empty($order->id) && !empty($order->subscription_transaction_id) && $order->gateway == "stripe") {
|
1842 |
//get the subscription and return the current_period end or false
|
1843 |
-
$subscription = $order->Gateway->getSubscription($order);
|
1844 |
|
1845 |
-
if( !empty( $subscription ) ) {
|
1846 |
$customer = $order->Gateway->getCustomer();
|
1847 |
-
if( ! $customer->delinquent && ! empty ( $subscription->current_period_end ) ) {
|
1848 |
return $subscription->current_period_end;
|
1849 |
} elseif ( $customer->delinquent && ! empty( $subscription->current_period_start ) ) {
|
1850 |
return $subscription->current_period_start;
|
@@ -1860,53 +1908,57 @@ class PMProGateway_stripe extends PMProGateway
|
|
1860 |
|
1861 |
/**
|
1862 |
* Refund a payment or invoice
|
1863 |
-
*
|
1864 |
-
* @param
|
|
|
|
|
1865 |
* @return bool True or false if the void worked
|
1866 |
*/
|
1867 |
-
function void(&$order, $transaction_id = null) {
|
1868 |
//stripe doesn't differentiate between voids and refunds, so let's just pass on to the refund function
|
1869 |
-
return $this->refund($order, $transaction_id);
|
1870 |
}
|
1871 |
|
1872 |
/**
|
1873 |
* Refund a payment or invoice
|
1874 |
-
*
|
1875 |
-
* @param
|
|
|
|
|
1876 |
* @return bool True or false if the refund worked.
|
1877 |
*/
|
1878 |
-
function refund(&$order, $transaction_id =
|
1879 |
//default to using the payment id from the order
|
1880 |
-
if(empty($transaction_id) && !empty($order->payment_transaction_id)) {
|
1881 |
$transaction_id = $order->payment_transaction_id;
|
1882 |
}
|
1883 |
|
1884 |
//need a transaction id
|
1885 |
-
if(empty($transaction_id)) {
|
1886 |
return false;
|
1887 |
}
|
1888 |
|
1889 |
//if an invoice ID is passed, get the charge/payment id
|
1890 |
-
if(strpos($transaction_id, "in_") !== false) {
|
1891 |
-
$invoice = Stripe_Invoice::retrieve($transaction_id);
|
1892 |
|
1893 |
-
if(!empty($invoice) && !empty($invoice->charge)) {
|
1894 |
$transaction_id = $invoice->charge;
|
1895 |
}
|
1896 |
}
|
1897 |
|
1898 |
//get the charge
|
1899 |
try {
|
1900 |
-
$charge = Stripe_Charge::retrieve($transaction_id);
|
1901 |
-
} catch (Exception $e) {
|
1902 |
$charge = false;
|
1903 |
}
|
1904 |
|
1905 |
//can't find the charge?
|
1906 |
-
if(empty($charge)) {
|
1907 |
-
$order->status
|
1908 |
-
$order->errorcode
|
1909 |
-
$order->error
|
1910 |
$order->shorterror = "";
|
1911 |
|
1912 |
return false;
|
@@ -1915,26 +1967,506 @@ class PMProGateway_stripe extends PMProGateway
|
|
1915 |
//attempt refund
|
1916 |
try {
|
1917 |
$refund = $charge->refund();
|
1918 |
-
} catch (Exception $e) {
|
1919 |
//$order->status = "error";
|
1920 |
-
$order->errorcode
|
1921 |
-
$order->error
|
1922 |
$order->shorterror = $order->error;
|
|
|
1923 |
return false;
|
1924 |
}
|
1925 |
|
1926 |
-
if($refund->status == "succeeded") {
|
1927 |
$order->status = "refunded";
|
1928 |
$order->saveOrder();
|
1929 |
|
1930 |
return true;
|
1931 |
-
} else
|
1932 |
-
$order->status
|
1933 |
-
$order->errorcode
|
1934 |
-
$order->error
|
1935 |
$order->shorterror = $order->error;
|
1936 |
|
1937 |
return false;
|
1938 |
}
|
1939 |
}
|
1940 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
use Stripe\Invoice as Stripe_Invoice;
|
5 |
use Stripe\Plan as Stripe_Plan;
|
6 |
use Stripe\Charge as Stripe_Charge;
|
7 |
+
use Stripe\PaymentIntent as Stripe_PaymentIntent;
|
8 |
+
use Stripe\SetupIntent as Stripe_SetupIntent;
|
9 |
+
use Stripe\Source as Stripe_Source;
|
10 |
+
use Stripe\PaymentMethod as Stripe_PaymentMethod;
|
11 |
+
use Stripe\Subscription as Stripe_Subscription;
|
12 |
|
13 |
+
define( "PMPRO_STRIPE_API_VERSION", "2019-05-16" );
|
14 |
|
15 |
//include pmprogateway
|
16 |
+
require_once( dirname( __FILE__ ) . "/class.pmprogateway.php" );
|
17 |
|
18 |
//load classes init method
|
19 |
+
add_action( 'init', array( 'PMProGateway_stripe', 'init' ) );
|
20 |
|
21 |
// loading plugin activation actions
|
22 |
+
add_action( 'activate_paid-memberships-pro', array( 'PMProGateway_stripe', 'pmpro_activation' ) );
|
23 |
+
add_action( 'deactivate_paid-memberships-pro', array( 'PMProGateway_stripe', 'pmpro_deactivation' ) );
|
24 |
|
25 |
/**
|
26 |
* PMProGateway_stripe Class
|
29 |
*
|
30 |
* @since 1.4
|
31 |
*/
|
32 |
+
class PMProGateway_stripe extends PMProGateway {
|
|
|
33 |
/**
|
34 |
* @var bool Is the Stripe/PHP Library loaded
|
35 |
*/
|
36 |
private static $is_loaded = false;
|
37 |
+
|
38 |
/**
|
39 |
* Stripe Class Constructor
|
40 |
*
|
41 |
* @since 1.4
|
42 |
*/
|
43 |
+
function __construct( $gateway = null ) {
|
44 |
+
$this->gateway = $gateway;
|
45 |
+
$this->gateway_environment = pmpro_getOption( "gateway_environment" );
|
46 |
|
47 |
+
if ( true === $this->dependencies() ) {
|
48 |
$this->loadStripeLibrary();
|
49 |
+
Stripe\Stripe::setApiKey( pmpro_getOption( "stripe_secretkey" ) );
|
50 |
Stripe\Stripe::setAPIVersion( PMPRO_STRIPE_API_VERSION );
|
51 |
self::$is_loaded = true;
|
52 |
}
|
64 |
public static function dependencies() {
|
65 |
global $msg, $msgt, $pmpro_stripe_error;
|
66 |
|
67 |
+
if ( version_compare( PHP_VERSION, '5.3.29', '<' ) ) {
|
68 |
|
69 |
$pmpro_stripe_error = true;
|
70 |
+
$msg = - 1;
|
71 |
+
$msgt = sprintf( __( "The Stripe Gateway requires PHP 5.3.29 or greater. We recommend upgrading to PHP %s or greater. Ask your host to upgrade.", "paid-memberships-pro" ), PMPRO_PHP_MIN_VERSION );
|
72 |
|
73 |
+
if ( ! is_admin() ) {
|
74 |
pmpro_setMessage( $msgt, "pmpro_error" );
|
75 |
}
|
76 |
|
79 |
|
80 |
$modules = array( 'curl', 'mbstring', 'json' );
|
81 |
|
82 |
+
foreach ( $modules as $module ) {
|
83 |
+
if ( ! extension_loaded( $module ) ) {
|
84 |
$pmpro_stripe_error = true;
|
85 |
+
$msg = - 1;
|
86 |
+
$msgt = sprintf( __( "The %s gateway depends on the %s PHP extension. Please enable it, or ask your hosting provider to enable it.", 'paid-memberships-pro' ), 'Stripe', $module );
|
87 |
|
88 |
//throw error on checkout page
|
89 |
+
if ( ! is_admin() ) {
|
90 |
+
pmpro_setMessage( $msgt, 'pmpro_error' );
|
91 |
+
}
|
92 |
|
93 |
return false;
|
94 |
}
|
95 |
}
|
96 |
|
97 |
self::$is_loaded = true;
|
98 |
+
|
99 |
return true;
|
100 |
}
|
101 |
|
107 |
*/
|
108 |
function loadStripeLibrary() {
|
109 |
//load Stripe library if it hasn't been loaded already (usually by another plugin using Stripe)
|
110 |
+
if ( ! class_exists( "Stripe\Stripe" ) ) {
|
111 |
require_once( PMPRO_DIR . "/includes/lib/Stripe/init.php" );
|
112 |
}
|
113 |
}
|
119 |
*/
|
120 |
static function init() {
|
121 |
//make sure Stripe is a gateway option
|
122 |
+
add_filter( 'pmpro_gateways', array( 'PMProGateway_stripe', 'pmpro_gateways' ) );
|
123 |
|
124 |
//add fields to payment settings
|
125 |
+
add_filter( 'pmpro_payment_options', array( 'PMProGateway_stripe', 'pmpro_payment_options' ) );
|
126 |
+
add_filter( 'pmpro_payment_option_fields', array(
|
127 |
+
'PMProGateway_stripe',
|
128 |
+
'pmpro_payment_option_fields'
|
129 |
+
), 10, 2 );
|
130 |
|
131 |
//add some fields to edit user page (Updates)
|
132 |
+
add_action( 'pmpro_after_membership_level_profile_fields', array(
|
133 |
+
'PMProGateway_stripe',
|
134 |
+
'user_profile_fields'
|
135 |
+
) );
|
136 |
+
add_action( 'profile_update', array( 'PMProGateway_stripe', 'user_profile_fields_save' ) );
|
137 |
|
138 |
//old global RE showing billing address or not
|
139 |
global $pmpro_stripe_lite;
|
140 |
+
$pmpro_stripe_lite = apply_filters( "pmpro_stripe_lite", ! pmpro_getOption( "stripe_billingaddress" ) ); //default is oposite of the stripe_billingaddress setting
|
141 |
+
add_filter( 'pmpro_required_billing_fields', array( 'PMProGateway_stripe', 'pmpro_required_billing_fields' ) );
|
142 |
|
143 |
//updates cron
|
144 |
+
add_action( 'pmpro_cron_stripe_subscription_updates', array(
|
145 |
+
'PMProGateway_stripe',
|
146 |
+
'pmpro_cron_stripe_subscription_updates'
|
147 |
+
) );
|
148 |
|
149 |
/*
|
150 |
+
Filter pmpro_next_payment to get actual value
|
151 |
+
via the Stripe API. This is disabled by default
|
152 |
+
for performance reasons, but you can enable it
|
153 |
+
by copying this line into a custom plugin or
|
154 |
+
your active theme's functions.php and uncommenting
|
155 |
+
it there.
|
156 |
+
*/
|
157 |
//add_filter('pmpro_next_payment', array('PMProGateway_stripe', 'pmpro_next_payment'), 10, 3);
|
158 |
|
159 |
//code to add at checkout if Stripe is the current gateway
|
160 |
+
$default_gateway = pmpro_getOption( 'gateway' );
|
161 |
$current_gateway = pmpro_getGateway();
|
162 |
|
163 |
+
if ( ( $default_gateway == "stripe" || $current_gateway == "stripe" ) && empty( $_REQUEST['review'] ) ) //$_REQUEST['review'] means the PayPal Express review page
|
164 |
{
|
165 |
+
add_action( 'pmpro_after_checkout_preheader', array(
|
166 |
+
'PMProGateway_stripe',
|
167 |
+
'pmpro_checkout_after_preheader'
|
168 |
+
) );
|
169 |
+
add_action( 'pmpro_billing_preheader', array( 'PMProGateway_stripe', 'pmpro_checkout_after_preheader' ) );
|
170 |
+
add_filter( 'pmpro_checkout_order', array( 'PMProGateway_stripe', 'pmpro_checkout_order' ) );
|
171 |
+
add_filter( 'pmpro_billing_order', array( 'PMProGateway_stripe', 'pmpro_checkout_order' ) );
|
172 |
+
add_filter( 'pmpro_include_billing_address_fields', array(
|
173 |
+
'PMProGateway_stripe',
|
174 |
+
'pmpro_include_billing_address_fields'
|
175 |
+
) );
|
176 |
+
add_filter( 'pmpro_include_cardtype_field', array(
|
177 |
+
'PMProGateway_stripe',
|
178 |
+
'pmpro_include_billing_address_fields'
|
179 |
+
) );
|
180 |
+
add_filter( 'pmpro_include_payment_information_fields', array(
|
181 |
+
'PMProGateway_stripe',
|
182 |
+
'pmpro_include_payment_information_fields'
|
183 |
+
) );
|
184 |
+
|
185 |
//make sure we clean up subs we will be cancelling after checkout before processing
|
186 |
+
add_action( 'pmpro_checkout_before_processing', array(
|
187 |
+
'PMProGateway_stripe',
|
188 |
+
'pmpro_checkout_before_processing'
|
189 |
+
) );
|
190 |
}
|
191 |
|
192 |
add_action( 'init', array( 'PMProGateway_stripe', 'pmpro_clear_saved_subscriptions' ) );
|
205 |
$preserve = get_user_meta( $current_user->ID, 'pmpro_stripe_dont_cancel', true );
|
206 |
|
207 |
// Clean up the subscription timeout values (if applicable)
|
208 |
+
if ( ! empty( $preserve ) ) {
|
209 |
|
210 |
foreach ( $preserve as $sub_id => $timestamp ) {
|
211 |
|
224 |
*
|
225 |
* @since 1.8
|
226 |
*/
|
227 |
+
static function pmpro_gateways( $gateways ) {
|
228 |
+
if ( empty( $gateways['stripe'] ) ) {
|
229 |
+
$gateways['stripe'] = __( 'Stripe', 'paid-memberships-pro' );
|
230 |
+
}
|
231 |
|
232 |
return $gateways;
|
233 |
}
|
260 |
*
|
261 |
* @since 1.8
|
262 |
*/
|
263 |
+
static function pmpro_payment_options( $options ) {
|
264 |
//get stripe options
|
265 |
$stripe_options = self::getGatewayOptions();
|
266 |
|
267 |
//merge with others.
|
268 |
+
$options = array_merge( $stripe_options, $options );
|
269 |
|
270 |
return $options;
|
271 |
}
|
275 |
*
|
276 |
* @since 1.8
|
277 |
*/
|
278 |
+
static function pmpro_payment_option_fields( $values, $gateway ) {
|
279 |
+
?>
|
280 |
+
<tr class="pmpro_settings_divider gateway gateway_stripe"
|
281 |
+
<?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
282 |
+
<td colspan="2">
|
283 |
+
<?php _e( 'Stripe Settings', 'paid-memberships-pro' ); ?>
|
284 |
+
</td>
|
285 |
+
</tr>
|
286 |
+
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
287 |
+
<th scope="row" valign="top">
|
288 |
+
<label for="stripe_publishablekey"><?php _e( 'Publishable Key', 'paid-memberships-pro' ); ?>:</label>
|
289 |
+
</th>
|
290 |
+
<td>
|
291 |
+
<input type="text" id="stripe_publishablekey" name="stripe_publishablekey" size="60"
|
292 |
+
value="<?php echo esc_attr( $values['stripe_publishablekey'] ) ?>"/>
|
|
|
|
|
|
|
293 |
<?php
|
294 |
+
$public_key_prefix = substr( $values['stripe_publishablekey'], 0, 3 );
|
295 |
+
if ( ! empty( $values['stripe_publishablekey'] ) && $public_key_prefix != 'pk_' ) {
|
296 |
+
?>
|
297 |
+
<br/><small
|
298 |
+
class="pmpro_message pmpro_error"><?php _e( 'Your Publishable Key appears incorrect.', 'paid-memberships-pro' ); ?></small>
|
299 |
+
<?php
|
300 |
}
|
301 |
+
?>
|
302 |
+
</td>
|
303 |
+
</tr>
|
304 |
+
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
305 |
+
<th scope="row" valign="top">
|
306 |
+
<label for="stripe_secretkey"><?php _e( 'Secret Key', 'paid-memberships-pro' ); ?>:</label>
|
307 |
+
</th>
|
308 |
+
<td>
|
309 |
+
<input type="text" id="stripe_secretkey" name="stripe_secretkey" size="60"
|
310 |
+
value="<?php echo esc_attr( $values['stripe_secretkey'] ) ?>"/>
|
311 |
+
</td>
|
312 |
+
</tr>
|
313 |
+
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
314 |
+
<th scope="row" valign="top">
|
315 |
+
<label for="stripe_billingaddress"><?php _e( 'Show Billing Address Fields', 'paid-memberships-pro' ); ?>
|
316 |
+
:</label>
|
317 |
+
</th>
|
318 |
+
<td>
|
319 |
+
<select id="stripe_billingaddress" name="stripe_billingaddress">
|
320 |
+
<option value="0"
|
321 |
+
<?php if ( empty( $values['stripe_billingaddress'] ) ) { ?>selected="selected"<?php } ?>><?php _e( 'No', 'paid-memberships-pro' ); ?></option>
|
322 |
+
<option value="1"
|
323 |
+
<?php if ( ! empty( $values['stripe_billingaddress'] ) ) { ?>selected="selected"<?php } ?>><?php _e( 'Yes', 'paid-memberships-pro' ); ?></option>
|
324 |
+
</select>
|
325 |
+
<small><?php _e( "Stripe doesn't require billing address fields. Choose 'No' to hide them on the checkout page.<br /><strong>If No, make sure you disable address verification in the Stripe dashboard settings.</strong>", 'paid-memberships-pro' ); ?></small>
|
326 |
+
</td>
|
327 |
+
</tr>
|
328 |
+
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
329 |
+
<th scope="row" valign="top">
|
330 |
+
<label><?php _e( 'Web Hook URL', 'paid-memberships-pro' ); ?>:</label>
|
331 |
+
</th>
|
332 |
+
<td>
|
333 |
+
<p><?php _e( 'To fully integrate with Stripe, be sure to set your Web Hook URL to', 'paid-memberships-pro' ); ?>
|
334 |
+
<pre><?php echo admin_url( "admin-ajax.php" ) . "?action=stripe_webhook"; ?></pre>
|
335 |
+
</p>
|
336 |
+
</td>
|
337 |
+
</tr>
|
338 |
+
|
339 |
+
<tr class="gateway gateway_stripe" <?php if ( $gateway != "stripe" ) { ?>style="display: none;"<?php } ?>>
|
340 |
+
<th><?php _e( 'Stripe API Version', 'paid-memberships-pro' ); ?>:</th>
|
341 |
+
<td><?php echo PMPRO_STRIPE_API_VERSION; ?></td>
|
342 |
+
</tr>
|
343 |
+
<?php
|
344 |
}
|
345 |
|
346 |
/**
|
348 |
*
|
349 |
* @since 1.8
|
350 |
*/
|
351 |
+
static function pmpro_checkout_after_preheader( $order ) {
|
|
|
352 |
|
353 |
+
global $gateway, $pmpro_level, $current_user;
|
354 |
|
355 |
+
$default_gateway = pmpro_getOption( "gateway" );
|
|
|
|
|
|
|
356 |
|
357 |
+
if ( ( $gateway == "stripe" || $default_gateway == "stripe" ) && ! pmpro_isLevelFree( $pmpro_level ) ) {
|
358 |
+
//stripe js library
|
359 |
+
wp_enqueue_script( "stripe", "https://js.stripe.com/v3/", array(), null );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
361 |
|
362 |
+
if ( ! function_exists( 'pmpro_stripe_javascript' ) ) {
|
|
|
|
|
|
|
363 |
|
364 |
+
$localize_vars = array(
|
365 |
+
'publishableKey' => pmpro_getOption( 'stripe_publishablekey' ),
|
366 |
+
'verifyAddress' => apply_filters( 'pmpro_stripe_verify_address', pmpro_getOption( 'stripe_billingaddress' ) ),
|
367 |
+
'ajaxUrl' => admin_url( "admin-ajax.php" ),
|
368 |
+
'msgAuthenticationValidated' => __( 'Verification steps confirmed. Your payment is processing.', 'paid-memberships-pro' ),
|
369 |
+
);
|
370 |
|
371 |
+
if ( ! empty( $order ) ) {
|
372 |
+
if ( ! empty( $order->Gateway->payment_intent ) ) {
|
373 |
+
$localize_vars['paymentIntent'] = $order->Gateway->payment_intent;
|
374 |
+
}
|
375 |
+
if ( ! empty( $order->Gateway->setup_intent ) ) {
|
376 |
+
$localize_vars['setupIntent'] = $order->Gateway->setup_intent;
|
377 |
+
$localize_vars['subscription'] = $order->Gateway->subscription;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
378 |
}
|
|
|
|
|
|
|
379 |
}
|
380 |
+
|
381 |
+
wp_register_script( 'pmpro_stripe',
|
382 |
+
plugins_url( 'js/pmpro-stripe.js', PMPRO_BASE_FILE ),
|
383 |
+
array( 'jquery' ),
|
384 |
+
PMPRO_VERSION );
|
385 |
+
wp_localize_script( 'pmpro_stripe', 'pmproStripe', $localize_vars );
|
386 |
+
wp_enqueue_script( 'pmpro_stripe' );
|
387 |
}
|
388 |
}
|
389 |
}
|
392 |
* Don't require the CVV.
|
393 |
* Don't require address fields if they are set to hide.
|
394 |
*/
|
395 |
+
static function pmpro_required_billing_fields( $fields ) {
|
396 |
global $pmpro_stripe_lite, $current_user, $bemail, $bconfirmemail;
|
397 |
|
398 |
//CVV is not required if set that way at Stripe. The Stripe JS will require it if it is required.
|
399 |
+
unset( $fields['CVV'] );
|
400 |
|
401 |
//if using stripe lite, remove some fields from the required array
|
402 |
+
if ( $pmpro_stripe_lite ) {
|
403 |
//some fields to remove
|
404 |
+
$remove = array(
|
405 |
+
'bfirstname',
|
406 |
+
'blastname',
|
407 |
+
'baddress1',
|
408 |
+
'bcity',
|
409 |
+
'bstate',
|
410 |
+
'bzipcode',
|
411 |
+
'bphone',
|
412 |
+
'bcountry',
|
413 |
+
'CardType'
|
414 |
+
);
|
415 |
//if a user is logged in, don't require bemail either
|
416 |
+
if ( ! empty( $current_user->user_email ) ) {
|
417 |
+
$remove[] = 'bemail';
|
418 |
+
$bemail = $current_user->user_email;
|
419 |
$bconfirmemail = $bemail;
|
420 |
}
|
421 |
//remove the fields
|
422 |
+
foreach ( $remove as $field ) {
|
423 |
+
unset( $fields[ $field ] );
|
424 |
+
}
|
425 |
}
|
426 |
|
427 |
return $fields;
|
432 |
*
|
433 |
* @since 1.8
|
434 |
*/
|
435 |
+
static function pmpro_checkout_order( $morder ) {
|
436 |
+
|
437 |
+
// Create a code for the order.
|
438 |
+
if ( empty( $morder->code ) ) {
|
439 |
+
$morder->code = $morder->getRandomCode();
|
440 |
+
}
|
441 |
+
|
442 |
+
// Add the PaymentIntent ID to the order.
|
443 |
+
if ( ! empty ( $_REQUEST['payment_intent_id'] ) ) {
|
444 |
+
$morder->payment_intent_id = sanitize_text_field( $_REQUEST['payment_intent_id'] );
|
445 |
+
}
|
446 |
+
|
447 |
+
// Add the SetupIntent ID to the order.
|
448 |
+
if ( ! empty ( $_REQUEST['setup_intent_id'] ) ) {
|
449 |
+
$morder->setup_intent_id = sanitize_text_field( $_REQUEST['setup_intent_id'] );
|
450 |
+
}
|
451 |
+
|
452 |
+
// Add the Subscription ID to the order.
|
453 |
+
if ( ! empty ( $_REQUEST['subscription_id'] ) ) {
|
454 |
+
$morder->subscription_transaction_id = sanitize_text_field( $_REQUEST['subscription_id'] );
|
455 |
+
}
|
456 |
+
|
457 |
+
// Add the Source ID to the order.
|
458 |
+
if ( ! empty ( $_REQUEST['source_id'] ) ) {
|
459 |
+
$morder->source_id = sanitize_text_field( $_REQUEST['source_id'] );
|
460 |
+
}
|
461 |
+
|
462 |
+
// Add the PaymentMethod ID to the order.
|
463 |
+
if ( ! empty ( $_REQUEST['payment_method_id'] ) ) {
|
464 |
+
$morder->payment_method_id = sanitize_text_field( $_REQUEST['payment_method_id'] );
|
465 |
+
}
|
466 |
+
|
467 |
+
// Add the Customer ID to the order.
|
468 |
+
if ( empty( $morder->customer_id ) ) {
|
469 |
+
|
470 |
+
}
|
471 |
+
if ( ! empty ( $_REQUEST['customer_id'] ) ) {
|
472 |
+
$morder->customer_id = sanitize_text_field( $_REQUEST['customer_id'] );
|
473 |
}
|
474 |
|
475 |
//stripe lite code to get name from other sources if available
|
476 |
global $pmpro_stripe_lite, $current_user;
|
477 |
+
if ( ! empty( $pmpro_stripe_lite ) && empty( $morder->FirstName ) && empty( $morder->LastName ) ) {
|
478 |
+
if ( ! empty( $current_user->ID ) ) {
|
479 |
+
$morder->FirstName = get_user_meta( $current_user->ID, "first_name", true );
|
480 |
+
$morder->LastName = get_user_meta( $current_user->ID, "last_name", true );
|
481 |
+
} elseif ( ! empty( $_REQUEST['first_name'] ) && ! empty( $_REQUEST['last_name'] ) ) {
|
482 |
+
$morder->FirstName = sanitize_text_field( $_REQUEST['first_name'] );
|
483 |
+
$morder->LastName = sanitize_text_field( $_REQUEST['last_name'] );
|
484 |
}
|
485 |
}
|
486 |
|
492 |
*
|
493 |
* @since 1.8
|
494 |
*/
|
495 |
+
static function pmpro_after_checkout( $user_id, $morder ) {
|
496 |
global $gateway;
|
497 |
|
498 |
+
if ( $gateway == "stripe" ) {
|
499 |
+
if ( self::$is_loaded && ! empty( $morder ) && ! empty( $morder->Gateway ) && ! empty( $morder->Gateway->customer ) && ! empty( $morder->Gateway->customer->id ) ) {
|
500 |
+
update_user_meta( $user_id, "pmpro_stripe_customerid", $morder->Gateway->customer->id );
|
501 |
}
|
502 |
}
|
503 |
}
|
506 |
* Check settings if billing address should be shown.
|
507 |
* @since 1.8
|
508 |
*/
|
509 |
+
static function pmpro_include_billing_address_fields( $include ) {
|
510 |
//check settings RE showing billing address
|
511 |
+
if ( ! pmpro_getOption( "stripe_billingaddress" ) ) {
|
512 |
$include = false;
|
513 |
+
}
|
514 |
|
515 |
return $include;
|
516 |
}
|
519 |
* Use our own payment fields at checkout. (Remove the name attributes.)
|
520 |
* @since 1.8
|
521 |
*/
|
522 |
+
static function pmpro_include_payment_information_fields( $include ) {
|
523 |
//global vars
|
524 |
global $pmpro_requirebilling, $pmpro_show_discount_code, $discount_code, $CardType, $AccountNumber, $ExpirationMonth, $ExpirationYear;
|
525 |
|
526 |
//get accepted credit cards
|
527 |
+
$pmpro_accepted_credit_cards = pmpro_getOption( "accepted_credit_cards" );
|
528 |
+
$pmpro_accepted_credit_cards = explode( ",", $pmpro_accepted_credit_cards );
|
529 |
+
$pmpro_accepted_credit_cards_string = pmpro_implodeToEnglish( $pmpro_accepted_credit_cards );
|
530 |
|
531 |
//include ours
|
532 |
?>
|
533 |
+
<div id="pmpro_payment_information_fields" class="pmpro_checkout"
|
534 |
+
<?php if ( ! $pmpro_requirebilling || apply_filters( "pmpro_hide_payment_information_fields", false ) ) { ?>style="display: none;"<?php } ?>>
|
535 |
+
<h3>
|
536 |
+
<span class="pmpro_checkout-h3-name"><?php _e( 'Payment Information', 'paid-memberships-pro' ); ?></span>
|
537 |
+
<span class="pmpro_checkout-h3-msg"><?php printf( __( 'We Accept %s', 'paid-memberships-pro' ), $pmpro_accepted_credit_cards_string ); ?></span>
|
538 |
+
</h3>
|
539 |
+
<?php $sslseal = pmpro_getOption( "sslseal" ); ?>
|
540 |
+
<?php if ( ! empty( $sslseal ) ) { ?>
|
541 |
+
<div class="pmpro_checkout-fields-display-seal">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
542 |
<?php } ?>
|
543 |
+
<div class="pmpro_checkout-fields<?php if ( ! empty( $sslseal ) ) { ?> pmpro_checkout-fields-leftcol<?php } ?>">
|
544 |
+
<?php
|
545 |
+
$pmpro_include_cardtype_field = apply_filters( 'pmpro_include_cardtype_field', false );
|
546 |
+
if ( $pmpro_include_cardtype_field ) { ?>
|
547 |
+
<div class="pmpro_checkout-field pmpro_payment-card-type">
|
548 |
+
<label for="CardType"><?php _e( 'Card Type', 'paid-memberships-pro' ); ?></label>
|
549 |
+
<select id="CardType" class=" <?php echo pmpro_getClassForField( "CardType" ); ?>">
|
550 |
+
<?php foreach ( $pmpro_accepted_credit_cards as $cc ) { ?>
|
551 |
+
<option value="<?php echo $cc ?>"
|
552 |
+
<?php if ( $CardType == $cc ) { ?>selected="selected"<?php } ?>><?php echo $cc ?></option>
|
553 |
+
<?php } ?>
|
554 |
+
</select>
|
555 |
+
</div>
|
556 |
+
<?php } else { ?>
|
557 |
+
<input type="hidden" id="CardType" name="CardType"
|
558 |
+
value="<?php echo esc_attr( $CardType ); ?>"/>
|
559 |
+
<?php } ?>
|
560 |
+
<div class="pmpro_checkout-field pmpro_payment-account-number">
|
561 |
+
<label for="AccountNumber"><?php _e( 'Card Number', 'paid-memberships-pro' ); ?></label>
|
562 |
+
<div id="AccountNumber"></div>
|
563 |
+
</div>
|
564 |
+
<div class="pmpro_checkout-field pmpro_payment-expiration">
|
565 |
+
<label for="Expiry"><?php _e( 'Expiration Date', 'paid-memberships-pro' ); ?></label>
|
566 |
+
<div id="Expiry"></div>
|
567 |
+
</div>
|
568 |
+
<?php
|
569 |
+
$pmpro_show_cvv = apply_filters( "pmpro_show_cvv", true );
|
570 |
+
if ( $pmpro_show_cvv ) { ?>
|
571 |
+
<div class="pmpro_checkout-field pmpro_payment-cvv">
|
572 |
+
<label for="CVV"><?php _e( 'CVC', 'paid-memberships-pro' ); ?></label>
|
573 |
+
<div id="CVV"></div>
|
574 |
+
</div>
|
575 |
+
<?php } ?>
|
576 |
+
<?php if ( $pmpro_show_discount_code ) { ?>
|
577 |
+
<div class="pmpro_checkout-field pmpro_payment-discount-code">
|
578 |
+
<label for="discount_code"><?php _e( 'Discount Code', 'paid-memberships-pro' ); ?></label>
|
579 |
+
<input class="input <?php echo pmpro_getClassForField( "discount_code" ); ?>"
|
580 |
+
id="discount_code" name="discount_code" type="text" size="10"
|
581 |
+
value="<?php echo esc_attr( $discount_code ) ?>"/>
|
582 |
+
<input type="button" id="discount_code_button" name="discount_code_button"
|
583 |
+
value="<?php _e( 'Apply', 'paid-memberships-pro' ); ?>"/>
|
584 |
+
<p id="discount_code_message" class="pmpro_message" style="display: none;"></p>
|
585 |
+
</div>
|
586 |
+
<?php } ?>
|
587 |
+
</div> <!-- end pmpro_checkout-fields -->
|
588 |
+
<?php if ( ! empty( $sslseal ) ) { ?>
|
589 |
+
<div class="pmpro_checkout-fields-rightcol pmpro_sslseal"><?php echo stripslashes( $sslseal ); ?></div>
|
590 |
+
</div> <!-- end pmpro_checkout-fields-display-seal -->
|
591 |
+
<?php } ?>
|
592 |
+
</div> <!-- end pmpro_payment_information_fields -->
|
593 |
<?php
|
594 |
|
595 |
//don't include the default
|
601 |
*
|
602 |
* @since 1.8
|
603 |
*/
|
604 |
+
static function user_profile_fields( $user ) {
|
605 |
global $wpdb, $current_user, $pmpro_currency_symbol;
|
606 |
|
607 |
+
$cycles = array(
|
608 |
+
__( 'Day(s)', 'paid-memberships-pro' ) => 'Day',
|
609 |
+
__( 'Week(s)', 'paid-memberships-pro' ) => 'Week',
|
610 |
+
__( 'Month(s)', 'paid-memberships-pro' ) => 'Month',
|
611 |
+
__( 'Year(s)', 'paid-memberships-pro' ) => 'Year'
|
612 |
+
);
|
613 |
+
$current_year = date_i18n( "Y" );
|
614 |
+
$current_month = date_i18n( "m" );
|
615 |
|
616 |
//make sure the current user has privileges
|
617 |
+
$membership_level_capability = apply_filters( "pmpro_edit_member_capability", "manage_options" );
|
618 |
+
if ( ! current_user_can( $membership_level_capability ) ) {
|
619 |
return false;
|
620 |
+
}
|
621 |
|
622 |
//more privelges they should have
|
623 |
+
$show_membership_level = apply_filters( "pmpro_profile_show_membership_level", true, $user );
|
624 |
+
if ( ! $show_membership_level ) {
|
625 |
return false;
|
626 |
+
}
|
627 |
|
628 |
//check that user has a current subscription at Stripe
|
629 |
$last_order = new MemberOrder();
|
630 |
+
$last_order->getLastMemberOrder( $user->ID );
|
631 |
|
632 |
//assume no sub to start
|
633 |
$sub = false;
|
634 |
|
635 |
//check that gateway is Stripe
|
636 |
+
if ( $last_order->gateway == "stripe" && self::$is_loaded ) {
|
|
|
637 |
//is there a customer?
|
638 |
+
$sub = $last_order->Gateway->getSubscription( $last_order );
|
639 |
}
|
640 |
|
641 |
$customer_id = $user->pmpro_stripe_customerid;
|
642 |
|
643 |
+
if ( empty( $sub ) ) {
|
644 |
//make sure we delete stripe updates
|
645 |
+
update_user_meta( $user->ID, "pmpro_stripe_updates", array() );
|
646 |
|
647 |
//if the last order has a sub id, let the admin know there is no sub at Stripe
|
648 |
+
if ( ! empty( $last_order ) && $last_order->gateway == "stripe" && ! empty( $last_order->subscription_transaction_id ) && strpos( $last_order->subscription_transaction_id, "sub_" ) !== false ) {
|
649 |
+
?>
|
650 |
+
<p><?php printf( __( '%1$sNote:%2$s Subscription %3$s%4$s%5$s could not be found at Stripe. It may have been deleted.', 'paid-memberships-pro' ), '<strong>', '</strong>', '<strong>', esc_attr( $last_order->subscription_transaction_id ), '</strong>' ); ?></p>
|
651 |
+
<?php
|
|
|
652 |
}
|
653 |
} elseif ( true === self::$is_loaded ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
654 |
?>
|
655 |
+
<h3><?php _e( "Subscription Updates", 'paid-memberships-pro' ); ?></h3>
|
656 |
+
<p>
|
657 |
+
<?php
|
658 |
+
if ( empty( $_REQUEST['user_id'] ) ) {
|
659 |
+
_e( "Subscription updates, allow you to change the member's subscription values at predefined times. Be sure to click Update Profile after making changes.", 'paid-memberships-pro' );
|
660 |
+
} else {
|
661 |
+
_e( "Subscription updates, allow you to change the member's subscription values at predefined times. Be sure to click Update User after making changes.", 'paid-memberships-pro' );
|
662 |
+
}
|
663 |
+
?>
|
664 |
+
</p>
|
665 |
+
<table class="form-table">
|
666 |
+
<tr>
|
667 |
+
<th><label for="membership_level"><?php _e( "Update", 'paid-memberships-pro' ); ?></label></th>
|
668 |
+
<td id="updates_td">
|
669 |
+
<?php
|
670 |
$old_updates = $user->pmpro_stripe_updates;
|
671 |
+
if ( is_array( $old_updates ) ) {
|
|
|
672 |
$updates = array_merge(
|
673 |
+
array(
|
674 |
+
array(
|
675 |
+
'template' => true,
|
676 |
+
'when' => 'now',
|
677 |
+
'date_month' => '',
|
678 |
+
'date_day' => '',
|
679 |
+
'date_year' => '',
|
680 |
+
'billing_amount' => '',
|
681 |
+
'cycle_number' => '',
|
682 |
+
'cycle_period' => 'Month'
|
683 |
+
)
|
684 |
+
),
|
685 |
$old_updates
|
686 |
);
|
687 |
+
} else {
|
688 |
+
$updates = array(
|
689 |
+
array(
|
690 |
+
'template' => true,
|
691 |
+
'when' => 'now',
|
692 |
+
'date_month' => '',
|
693 |
+
'date_day' => '',
|
694 |
+
'date_year' => '',
|
695 |
+
'billing_amount' => '',
|
696 |
+
'cycle_number' => '',
|
697 |
+
'cycle_period' => 'Month'
|
698 |
+
)
|
699 |
+
);
|
700 |
}
|
|
|
|
|
701 |
|
702 |
+
foreach ( $updates as $update ) {
|
703 |
+
?>
|
704 |
+
<div class="updates_update"
|
705 |
+
<?php if ( ! empty( $update['template'] ) ) { ?>style="display: none;"<?php } ?>>
|
706 |
+
<select class="updates_when" name="updates_when[]">
|
707 |
+
<option value="now" <?php selected( $update['when'], "now" ); ?>>Now</option>
|
708 |
+
<option value="payment" <?php selected( $update['when'], "payment" ); ?>>After
|
709 |
+
Next Payment
|
710 |
+
</option>
|
711 |
+
<option value="date" <?php selected( $update['when'], "date" ); ?>>On Date
|
712 |
+
</option>
|
713 |
+
</select>
|
714 |
+
<span class="updates_date"
|
715 |
+
<?php if ( $update['when'] != "date" ) { ?>style="display: none;"<?php } ?>>
|
716 |
<select name="updates_date_month[]">
|
717 |
<?php
|
718 |
+
for ( $i = 1; $i < 13; $i ++ ) {
|
|
|
719 |
?>
|
720 |
+
<option value="<?php echo str_pad( $i, 2, "0", STR_PAD_LEFT ); ?>"
|
721 |
+
<?php if ( ! empty( $update['date_month'] ) && $update['date_month'] == $i ) { ?>selected="selected"<?php } ?>>
|
722 |
+
<?php echo date_i18n( "M", strtotime( $i . "/1/" . $current_year ) ); ?>
|
723 |
</option>
|
724 |
<?php
|
725 |
+
}
|
726 |
?>
|
727 |
</select>
|
728 |
+
<input name="updates_date_day[]" type="text" size="2"
|
729 |
+
value="<?php if ( ! empty( $update['date_day'] ) ) {
|
730 |
+
echo esc_attr( $update['date_day'] );
|
731 |
+
} ?>"/>
|
732 |
+
<input name="updates_date_year[]" type="text" size="4"
|
733 |
+
value="<?php if ( ! empty( $update['date_year'] ) ) {
|
734 |
+
echo esc_attr( $update['date_year'] );
|
735 |
+
} ?>"/>
|
736 |
</span>
|
737 |
+
<span class="updates_billing"
|
738 |
+
<?php if ( $update['when'] == "now" ) { ?>style="display: none;"<?php } ?>>
|
739 |
+
<?php echo $pmpro_currency_symbol ?><input name="updates_billing_amount[]" type="text"
|
740 |
+
size="10"
|
741 |
+
value="<?php echo esc_attr( $update['billing_amount'] ); ?>"/>
|
742 |
+
<small><?php _e( 'per', 'paid-memberships-pro' ); ?></small>
|
743 |
+
<input name="updates_cycle_number[]" type="text" size="5"
|
744 |
+
value="<?php echo esc_attr( $update['cycle_number'] ); ?>"/>
|
745 |
<select name="updates_cycle_period[]">
|
746 |
<?php
|
747 |
+
foreach ( $cycles as $name => $value ) {
|
748 |
echo "<option value='$value'";
|
749 |
+
if ( ! empty( $update['cycle_period'] ) && $update['cycle_period'] == $value ) {
|
750 |
+
echo " selected='selected'";
|
751 |
+
}
|
752 |
echo ">$name</option>";
|
753 |
+
}
|
754 |
?>
|
755 |
</select>
|
756 |
</span>
|
757 |
+
<span>
|
758 |
<a class="updates_remove" href="javascript:void(0);">Remove</a>
|
759 |
</span>
|
760 |
+
</div>
|
761 |
+
<?php
|
762 |
}
|
763 |
?>
|
764 |
+
<p><a id="updates_new_update" href="javascript:void(0);">+ New Update</a></p>
|
765 |
+
</td>
|
766 |
+
</tr>
|
767 |
+
</table>
|
768 |
+
<script>
|
769 |
+
<!--
|
770 |
+
jQuery(document).ready(function () {
|
771 |
+
//function to update dropdowns/etc based on when field
|
772 |
+
function updateSubscriptionUpdateFields(when) {
|
773 |
+
if (jQuery(when).val() == 'date')
|
774 |
+
jQuery(when).parent().children('.updates_date').show();
|
775 |
+
else
|
776 |
+
jQuery(when).parent().children('.updates_date').hide();
|
777 |
+
|
778 |
+
if (jQuery(when).val() == 'no')
|
779 |
+
jQuery(when).parent().children('.updates_billing').hide();
|
780 |
+
else
|
781 |
+
jQuery(when).parent().children('.updates_billing').show();
|
782 |
+
}
|
783 |
+
|
784 |
+
//and update on page load
|
785 |
+
jQuery('.updates_when').each(function () {
|
786 |
+
if (jQuery(this).parent().css('display') != 'none') updateSubscriptionUpdateFields(this);
|
787 |
+
});
|
788 |
+
|
789 |
+
//add a new update when clicking to
|
790 |
+
var num_updates_divs = <?php echo count( $updates );?>;
|
791 |
+
jQuery('#updates_new_update').click(function () {
|
792 |
+
//get updates
|
793 |
+
updates = jQuery('.updates_update').toArray();
|
794 |
+
|
795 |
+
//clone the first one
|
796 |
+
new_div = jQuery(updates[0]).clone();
|
797 |
+
|
798 |
+
//append
|
799 |
+
new_div.insertBefore('#updates_new_update');
|
800 |
+
|
801 |
+
//update events
|
802 |
+
addUpdateEvents()
|
803 |
+
|
804 |
+
//unhide it
|
805 |
+
new_div.show();
|
806 |
+
updateSubscriptionUpdateFields(new_div.children('.updates_when'));
|
807 |
+
});
|
808 |
+
|
809 |
+
function addUpdateEvents() {
|
810 |
+
//update when when changes
|
811 |
+
jQuery('.updates_when').change(function () {
|
812 |
+
updateSubscriptionUpdateFields(this);
|
813 |
+
});
|
814 |
+
|
815 |
+
//remove updates when clicking
|
816 |
+
jQuery('.updates_remove').click(function () {
|
817 |
+
jQuery(this).parent().parent().remove();
|
818 |
+
});
|
819 |
+
}
|
820 |
+
|
821 |
+
addUpdateEvents();
|
822 |
+
});
|
823 |
+
-->
|
824 |
+
</script>
|
825 |
+
<?php
|
826 |
}
|
827 |
}
|
828 |
|
831 |
*
|
832 |
* @since 1.8
|
833 |
*/
|
834 |
+
static function user_profile_fields_save( $user_id ) {
|
835 |
global $wpdb;
|
836 |
|
837 |
//check capabilities
|
838 |
+
$membership_level_capability = apply_filters( "pmpro_edit_member_capability", "manage_options" );
|
839 |
+
if ( ! current_user_can( $membership_level_capability ) ) {
|
840 |
return false;
|
841 |
+
}
|
842 |
|
843 |
//make sure some value was passed
|
844 |
+
if ( ! isset( $_POST['updates_when'] ) || ! is_array( $_POST['updates_when'] ) ) {
|
845 |
return;
|
846 |
+
}
|
847 |
|
848 |
//vars
|
849 |
+
$updates = array();
|
850 |
$next_on_date_update = "";
|
851 |
|
852 |
//build array of updates (we skip the first because it's the template field for the JavaScript
|
853 |
+
for ( $i = 1; $i < count( $_POST['updates_when'] ); $i ++ ) {
|
|
|
854 |
$update = array();
|
855 |
|
856 |
//all updates have these values
|
857 |
+
$update['when'] = pmpro_sanitize_with_safelist( $_POST['updates_when'][ $i ], array(
|
858 |
+
'now',
|
859 |
+
'payment',
|
860 |
+
'date'
|
861 |
+
) );
|
862 |
+
$update['billing_amount'] = sanitize_text_field( $_POST['updates_billing_amount'][ $i ] );
|
863 |
+
$update['cycle_number'] = intval( $_POST['updates_cycle_number'][ $i ] );
|
864 |
+
$update['cycle_period'] = sanitize_text_field( $_POST['updates_cycle_period'][ $i ] );
|
865 |
|
866 |
//these values only for on date updates
|
867 |
+
if ( $_POST['updates_when'][ $i ] == "date" ) {
|
868 |
+
$update['date_month'] = str_pad( intval( $_POST['updates_date_month'][ $i ] ), 2, "0", STR_PAD_LEFT );
|
869 |
+
$update['date_day'] = str_pad( intval( $_POST['updates_date_day'][ $i ] ), 2, "0", STR_PAD_LEFT );
|
870 |
+
$update['date_year'] = intval( $_POST['updates_date_year'][ $i ] );
|
|
|
871 |
}
|
872 |
|
873 |
//make sure the update is valid
|
874 |
+
if ( empty( $update['cycle_number'] ) ) {
|
875 |
continue;
|
876 |
+
}
|
877 |
|
878 |
//if when is now, update the subscription
|
879 |
+
if ( $update['when'] == "now" ) {
|
880 |
+
PMProGateway_stripe::updateSubscription( $update, $user_id );
|
|
|
881 |
|
882 |
continue;
|
883 |
+
} elseif ( $update['when'] == 'date' ) {
|
884 |
+
if ( ! empty( $next_on_date_update ) ) {
|
885 |
+
$next_on_date_update = min( $next_on_date_update, $update['date_year'] . "-" . $update['date_month'] . "-" . $update['date_day'] );
|
886 |
+
} else {
|
|
|
|
|
887 |
$next_on_date_update = $update['date_year'] . "-" . $update['date_month'] . "-" . $update['date_day'];
|
888 |
+
}
|
889 |
}
|
890 |
|
891 |
//add to array
|
893 |
}
|
894 |
|
895 |
//save in user meta
|
896 |
+
update_user_meta( $user_id, "pmpro_stripe_updates", $updates );
|
897 |
|
898 |
//save date of next on-date update to make it easier to query for these in cron job
|
899 |
+
update_user_meta( $user_id, "pmpro_stripe_next_on_date_update", $next_on_date_update );
|
900 |
}
|
901 |
|
902 |
/**
|
905 |
* @since 1.8
|
906 |
*/
|
907 |
static function pmpro_activation() {
|
908 |
+
pmpro_maybe_schedule_event( time(), 'daily', 'pmpro_cron_stripe_subscription_updates' );
|
909 |
}
|
910 |
|
911 |
/**
|
914 |
* @since 1.8
|
915 |
*/
|
916 |
static function pmpro_deactivation() {
|
917 |
+
wp_clear_scheduled_hook( 'pmpro_cron_stripe_subscription_updates' );
|
918 |
}
|
919 |
|
920 |
/**
|
931 |
WHERE meta_key = 'pmpro_stripe_next_on_date_update'
|
932 |
AND meta_value IS NOT NULL
|
933 |
AND meta_value <> ''
|
934 |
+
AND meta_value < '" . date_i18n( "Y-m-d", strtotime( "+1 day", current_time( 'timestamp' ) ) ) . "'";
|
935 |
+
$updates = $wpdb->get_results( $sqlQuery );
|
936 |
|
937 |
+
if ( ! empty( $updates ) ) {
|
938 |
//loop through
|
939 |
+
foreach ( $updates as $update ) {
|
940 |
//pull values from update
|
941 |
$user_id = $update->user_id;
|
942 |
|
943 |
+
$user = get_userdata( $user_id );
|
944 |
|
945 |
//if user is missing, delete the update info and continue
|
946 |
+
if ( empty( $user ) || empty( $user->ID ) ) {
|
947 |
+
delete_user_meta( $user_id, "pmpro_stripe_updates" );
|
948 |
+
delete_user_meta( $user_id, "pmpro_stripe_next_on_date_update" );
|
949 |
|
950 |
continue;
|
951 |
}
|
952 |
|
953 |
+
$user_updates = $user->pmpro_stripe_updates;
|
954 |
$next_on_date_update = "";
|
955 |
|
956 |
//loop through updates looking for updates happening today or earlier
|
957 |
+
if ( ! empty( $user_updates ) ) {
|
958 |
+
foreach ( $user_updates as $key => $ud ) {
|
959 |
+
if ( $ud['when'] == 'date' &&
|
960 |
+
$ud['date_year'] . "-" . $ud['date_month'] . "-" . $ud['date_day'] <= date_i18n( "Y-m-d", current_time( 'timestamp' ) )
|
961 |
) {
|
962 |
+
PMProGateway_stripe::updateSubscription( $ud, $user_id );
|
963 |
|
964 |
//remove update from list
|
965 |
+
unset( $user_updates[ $key ] );
|
966 |
+
} elseif ( $ud['when'] == 'date' ) {
|
967 |
//this is an on date update for the future, update the next on date update
|
968 |
+
if ( ! empty( $next_on_date_update ) ) {
|
969 |
+
$next_on_date_update = min( $next_on_date_update, $ud['date_year'] . "-" . $ud['date_month'] . "-" . $ud['date_day'] );
|
970 |
+
} else {
|
971 |
$next_on_date_update = $ud['date_year'] . "-" . $ud['date_month'] . "-" . $ud['date_day'];
|
972 |
+
}
|
973 |
}
|
974 |
}
|
975 |
}
|
976 |
|
977 |
//save updates in case we removed some
|
978 |
+
update_user_meta( $user_id, "pmpro_stripe_updates", $user_updates );
|
979 |
|
980 |
//save date of next on-date update to make it easier to query for these in cron job
|
981 |
+
update_user_meta( $user_id, "pmpro_stripe_next_on_date_update", $next_on_date_update );
|
982 |
}
|
983 |
}
|
984 |
}
|
993 |
global $wpdb, $current_user;
|
994 |
|
995 |
// we're only worried about cases where the user is logged in
|
996 |
+
if ( ! is_user_logged_in() ) {
|
997 |
return;
|
998 |
}
|
999 |
|
1006 |
//check the $pmpro_cancel_previous_subscriptions filter
|
1007 |
//this is used in add ons like Gift Memberships to stop PMPro from cancelling old memberships
|
1008 |
$pmpro_cancel_previous_subscriptions = true;
|
1009 |
+
$pmpro_cancel_previous_subscriptions = apply_filters( 'pmpro_cancel_previous_subscriptions', $pmpro_cancel_previous_subscriptions );
|
1010 |
+
if ( ! $pmpro_cancel_previous_subscriptions ) {
|
1011 |
return;
|
1012 |
}
|
1013 |
|
1014 |
//get user and membership level
|
1015 |
+
$membership_level = pmpro_getMembershipLevelForUser( $current_user->ID );
|
1016 |
|
1017 |
//no level, then probably no subscription at Stripe anymore
|
1018 |
+
if ( empty( $membership_level ) ) {
|
1019 |
return;
|
1020 |
+
}
|
1021 |
|
1022 |
/**
|
1023 |
* Filter which levels to cancel at the gateway.
|
1024 |
* MMPU will set this to all levels that are going to be cancelled during this checkout.
|
1025 |
* Others may want to display this by add_filter('pmpro_stripe_levels_to_cancel_before_checkout', __return_false);
|
1026 |
*/
|
1027 |
+
$levels_to_cancel = apply_filters( 'pmpro_stripe_levels_to_cancel_before_checkout', array( $membership_level->id ), $current_user );
|
1028 |
|
1029 |
+
foreach ( $levels_to_cancel as $level_to_cancel ) {
|
1030 |
//get the last order for this user/level
|
1031 |
$last_order = new MemberOrder();
|
1032 |
+
$last_order->getLastMemberOrder( $current_user->ID, 'success', $level_to_cancel, 'stripe' );
|
1033 |
|
1034 |
//so let's cancel the user's susbcription
|
1035 |
+
if ( ! empty( $last_order ) && ! empty( $last_order->subscription_transaction_id ) ) {
|
1036 |
+
$subscription = $last_order->Gateway->getSubscription( $last_order );
|
1037 |
+
if ( ! empty( $subscription ) ) {
|
1038 |
+
$last_order->Gateway->cancelSubscriptionAtGateway( $subscription, true );
|
1039 |
|
1040 |
//Stripe was probably going to cancel this subscription 7 days past the payment failure (maybe just one hour, use a filter for sure)
|
1041 |
+
$memberships_users_row = $wpdb->get_row( "SELECT * FROM $wpdb->pmpro_memberships_users WHERE user_id = '" . $current_user->ID . "' AND membership_id = '" . $level_to_cancel . "' AND status = 'active' LIMIT 1" );
|
1042 |
|
1043 |
+
if ( ! empty( $memberships_users_row ) && ( empty( $memberships_users_row->enddate ) || $memberships_users_row->enddate == '0000-00-00 00:00:00' ) ) {
|
1044 |
/**
|
1045 |
* Filter graced period days when canceling existing subscriptions at checkout.
|
1046 |
*
|
|
|
|
|
1047 |
* @param int $days Grace period defaults to 3 days
|
1048 |
* @param object $membership Membership row from pmpro_memberships_users including membership_id, user_id, and enddate
|
1049 |
+
*
|
1050 |
+
* @since 1.9.4
|
1051 |
+
*
|
1052 |
*/
|
1053 |
+
$days_grace = apply_filters( 'pmpro_stripe_days_grace_when_canceling_existing_subscriptions_at_checkout', 3, $memberships_users_row );
|
1054 |
+
$new_enddate = date( 'Y-m-d H:i:s', current_time( 'timestamp' ) + 3600 * 24 * $days_grace );
|
1055 |
+
$wpdb->update( $wpdb->pmpro_memberships_users, array( 'enddate' => $new_enddate ), array(
|
1056 |
+
'user_id' => $current_user->ID,
|
1057 |
+
'membership_id' => $level_to_cancel,
|
1058 |
+
'status' => 'active'
|
1059 |
+
), array( '%s' ), array( '%d', '%d', '%s' ) );
|
1060 |
}
|
1061 |
}
|
1062 |
}
|
1065 |
|
1066 |
/**
|
1067 |
* Process checkout and decide if a charge and or subscribe is needed
|
1068 |
+
* Updated in v2.1 to work with Stripe v3 payment intents.
|
1069 |
* @since 1.4
|
1070 |
*/
|
1071 |
+
function process( &$order ) {
|
1072 |
+
$steps = array(
|
1073 |
+
'set_customer',
|
1074 |
+
'set_source',
|
1075 |
+
'attach_source_to_customer',
|
1076 |
+
'process_charges',
|
1077 |
+
'process_subscriptions',
|
1078 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1079 |
|
1080 |
+
foreach ( $steps as $key => $step ) {
|
1081 |
+
do_action( "pmpro_process_order_before_{$step}", $order );
|
1082 |
+
$this->$step( $order );
|
1083 |
+
do_action( "pmpro_process_order_after_{$step}", $order );
|
1084 |
+
if ( ! empty( $order->error ) ) {
|
1085 |
return false;
|
1086 |
}
|
1087 |
}
|
1088 |
+
|
1089 |
+
$this->clean_up( $order );
|
1090 |
+
$order->status = 'success';
|
1091 |
+
$order->saveOrder();
|
1092 |
+
|
1093 |
+
return true;
|
1094 |
}
|
1095 |
|
1096 |
/**
|
1098 |
*
|
1099 |
* @since 1.4
|
1100 |
*/
|
1101 |
+
function charge( &$order ) {
|
1102 |
global $pmpro_currency, $pmpro_currencies;
|
1103 |
$currency_unit_multiplier = 100; //ie 100 cents per USD
|
1104 |
|
1105 |
//account for zero-decimal currencies like the Japanese Yen
|
1106 |
+
if ( is_array( $pmpro_currencies[ $pmpro_currency ] ) && isset( $pmpro_currencies[ $pmpro_currency ]['decimals'] ) && $pmpro_currencies[ $pmpro_currency ]['decimals'] == 0 ) {
|
1107 |
$currency_unit_multiplier = 1;
|
1108 |
+
}
|
1109 |
|
1110 |
//create a code for the order
|
1111 |
+
if ( empty( $order->code ) ) {
|
1112 |
+
$order->code = $order->getRandomCode();
|
1113 |
+
}
|
1114 |
+
|
1115 |
|
1116 |
//what amount to charge?
|
1117 |
$amount = $order->InitialPayment;
|
1118 |
|
1119 |
//tax
|
1120 |
$order->subtotal = $amount;
|
1121 |
+
$tax = $order->getTax( true );
|
1122 |
+
$amount = pmpro_round_price( (float) $order->subtotal + (float) $tax );
|
1123 |
+
|
1124 |
|
1125 |
//create a customer
|
1126 |
+
$result = $this->getCustomer( $order );
|
1127 |
|
1128 |
+
if ( empty( $result ) ) {
|
1129 |
//failed to create customer
|
1130 |
return false;
|
1131 |
}
|
1132 |
|
1133 |
+
|
1134 |
//charge
|
1135 |
try {
|
1136 |
+
$response = Stripe_Charge::create( array(
|
1137 |
+
"amount" => $amount * $currency_unit_multiplier, # amount in cents, again
|
1138 |
+
"currency" => strtolower( $pmpro_currency ),
|
1139 |
+
"customer" => $this->customer->id,
|
1140 |
+
"description" => apply_filters( 'pmpro_stripe_order_description', "Order #" . $order->code . ", " . trim( $order->FirstName . " " . $order->LastName ) . " (" . $order->Email . ")", $order )
|
1141 |
+
)
|
1142 |
);
|
1143 |
+
} catch ( Exception $e ) {
|
1144 |
//$order->status = "error";
|
1145 |
+
$order->errorcode = true;
|
1146 |
+
$order->error = "Error: " . $e->getMessage();
|
1147 |
$order->shorterror = $order->error;
|
1148 |
+
|
1149 |
return false;
|
1150 |
}
|
1151 |
|
1152 |
+
if ( empty( $response["failure_message"] ) ) {
|
1153 |
//successful charge
|
1154 |
$order->payment_transaction_id = $response["id"];
|
1155 |
+
$order->updateStatus( "success" );
|
1156 |
$order->saveOrder();
|
1157 |
+
|
1158 |
return true;
|
1159 |
} else {
|
1160 |
//$order->status = "error";
|
1161 |
+
$order->errorcode = true;
|
1162 |
+
$order->error = $response['failure_message'];
|
1163 |
$order->shorterror = $response['failure_message'];
|
1164 |
+
|
1165 |
return false;
|
1166 |
}
|
1167 |
}
|
1176 |
* If a customer is found and there is a stripeToken on the order passed, it will update the customer.
|
1177 |
* If no customer is found and there is a stripeToken on the order passed, it will create a customer.
|
1178 |
*
|
|
|
1179 |
* @return Stripe_Customer|false
|
1180 |
+
* @since 1.4
|
1181 |
*/
|
1182 |
+
function getCustomer( &$order = false, $force = false ) {
|
1183 |
global $current_user;
|
1184 |
|
1185 |
//already have it?
|
1186 |
+
if ( ! empty( $this->customer ) && ! $force ) {
|
1187 |
return $this->customer;
|
1188 |
+
}
|
1189 |
+
|
1190 |
+
// Is it already on the order?
|
1191 |
+
if ( ! empty( $order->customer_id ) ) {
|
1192 |
+
$customer_id = $order->customer_id;
|
1193 |
+
}
|
1194 |
|
1195 |
//figure out user_id and user
|
1196 |
+
if ( ! empty( $order->user_id ) ) {
|
1197 |
+
$user_id = $order->user_id;
|
1198 |
+
}
|
1199 |
|
1200 |
//if no id passed, check the current user
|
1201 |
+
if ( empty( $user_id ) && ! empty( $current_user->ID ) ) {
|
1202 |
+
$user_id = $current_user->ID;
|
1203 |
+
}
|
1204 |
|
1205 |
+
if ( ! empty( $user_id ) ) {
|
1206 |
+
$user = get_userdata( $user_id );
|
1207 |
} else {
|
1208 |
+
$user = null;
|
1209 |
+
}
|
1210 |
|
1211 |
//transaction id?
|
1212 |
+
if ( ! empty( $order->subscription_transaction_id ) && strpos( $order->subscription_transaction_id, "cus_" ) !== false ) {
|
1213 |
$customer_id = $order->subscription_transaction_id;
|
1214 |
} else {
|
1215 |
//try based on user id
|
1216 |
+
if ( ! empty( $user_id ) ) {
|
1217 |
+
$customer_id = get_user_meta( $user_id, "pmpro_stripe_customerid", true );
|
1218 |
}
|
1219 |
|
1220 |
//look up by transaction id
|
1221 |
+
if ( empty( $customer_id ) && ! empty( $user_id ) ) {//user id from this order or the user's last stripe order
|
1222 |
+
if ( ! empty( $order->payment_transaction_id ) ) {
|
|
|
1223 |
$payment_transaction_id = $order->payment_transaction_id;
|
1224 |
} else {
|
1225 |
//find the user's last stripe order
|
1226 |
$last_order = new MemberOrder();
|
1227 |
+
$last_order->getLastMemberOrder( $user_id, array(
|
1228 |
+
'success',
|
1229 |
+
'cancelled'
|
1230 |
+
), null, 'stripe', $order->Gateway->gateway_environment );
|
1231 |
+
if ( ! empty( $last_order->payment_transaction_id ) ) {
|
1232 |
$payment_transaction_id = $last_order->payment_transaction_id;
|
1233 |
+
}
|
1234 |
}
|
1235 |
|
1236 |
//we have a transaction id to look up
|
1237 |
+
if ( ! empty( $payment_transaction_id ) ) {
|
1238 |
+
if ( strpos( $payment_transaction_id, "ch_" ) !== false ) {
|
1239 |
//charge, look it up
|
1240 |
try {
|
1241 |
+
$charge = Stripe_Charge::retrieve( $payment_transaction_id );
|
1242 |
+
} catch ( \Exception $exception ) {
|
1243 |
$order->error = sprintf( __( 'Error: %s', 'paid-memberships-pro' ), $exception->getMessage() );
|
1244 |
+
|
1245 |
return false;
|
1246 |
}
|
1247 |
|
1248 |
+
if ( ! empty( $charge ) && ! empty( $charge->customer ) ) {
|
1249 |
$customer_id = $charge->customer;
|
1250 |
+
}
|
1251 |
+
} else if ( strpos( $payment_transaction_id, "in_" ) !== false ) {
|
1252 |
//invoice look it up
|
1253 |
try {
|
1254 |
+
$invoice = Stripe_Invoice::retrieve( $payment_transaction_id );
|
1255 |
+
} catch ( \Exception $exception ) {
|
1256 |
$order->error = sprintf( __( 'Error: %s', 'paid-memberships-pro' ), $exception->getMessage() );
|
1257 |
+
|
1258 |
return false;
|
1259 |
}
|
1260 |
|
1261 |
+
if ( ! empty( $invoice ) && ! empty( $invoice->customer ) ) {
|
1262 |
$customer_id = $invoice->customer;
|
1263 |
+
}
|
1264 |
}
|
1265 |
}
|
1266 |
|
1267 |
//if we found it, save to user meta for future reference
|
1268 |
+
if ( ! empty( $customer_id ) ) {
|
1269 |
+
update_user_meta( $user_id, "pmpro_stripe_customerid", $customer_id );
|
1270 |
+
}
|
1271 |
}
|
1272 |
}
|
1273 |
|
1274 |
//get name and email values from order in case we update
|
1275 |
+
if ( ! empty( $order->FirstName ) && ! empty( $order->LastName ) ) {
|
1276 |
+
$name = trim( $order->FirstName . " " . $order->LastName );
|
1277 |
+
} elseif ( ! empty( $order->FirstName ) ) {
|
1278 |
$name = $order->FirstName;
|
1279 |
+
} elseif ( ! empty( $order->LastName ) ) {
|
1280 |
$name = $order->LastName;
|
1281 |
}
|
1282 |
+
|
1283 |
+
if ( empty( $name ) && ! empty( $user->ID ) ) {
|
1284 |
+
$name = trim( $user->first_name . " " . $user->last_name );
|
1285 |
|
1286 |
//still empty?
|
1287 |
+
if ( empty( $name ) ) {
|
1288 |
$name = $user->user_login;
|
1289 |
+
}
|
1290 |
+
} elseif ( empty( $name ) ) {
|
1291 |
$name = "No Name";
|
1292 |
}
|
1293 |
+
|
1294 |
+
if ( ! empty( $order->Email ) ) {
|
1295 |
$email = $order->Email;
|
1296 |
} else {
|
1297 |
$email = "";
|
1298 |
}
|
1299 |
+
|
1300 |
+
if ( empty( $email ) && ! empty( $user->ID ) && ! empty( $user->user_email ) ) {
|
1301 |
$email = $user->user_email;
|
1302 |
+
} elseif ( empty( $email ) ) {
|
1303 |
$email = "No Email";
|
1304 |
+
}
|
1305 |
|
1306 |
//check for an existing stripe customer
|
1307 |
+
if ( ! empty( $customer_id ) ) {
|
1308 |
try {
|
1309 |
+
$this->customer = Stripe_Customer::retrieve( $customer_id );
|
1310 |
+
// Update description.
|
1311 |
+
if ( ! empty( $order->source_id ) ) {
|
|
|
1312 |
$this->customer->description = $name . " (" . $email . ")";
|
1313 |
+
$this->customer->email = $email;
|
|
|
1314 |
$this->customer->save();
|
1315 |
}
|
1316 |
|
1317 |
+
if ( ! empty( $user_id ) ) {
|
1318 |
+
//user logged in/etc
|
1319 |
+
update_user_meta( $user_id, "pmpro_stripe_customerid", $this->customer->id );
|
1320 |
+
} else {
|
1321 |
+
//user not registered yet, queue it up
|
1322 |
+
global $pmpro_stripe_customer_id;
|
1323 |
+
$pmpro_stripe_customer_id = $this->customer->id;
|
1324 |
+
if ( ! function_exists( 'pmpro_user_register_stripe_customerid' ) ) {
|
1325 |
+
function pmpro_user_register_stripe_customerid( $user_id ) {
|
1326 |
+
global $pmpro_stripe_customer_id;
|
1327 |
+
update_user_meta( $user_id, "pmpro_stripe_customerid", $pmpro_stripe_customer_id );
|
1328 |
+
}
|
1329 |
+
|
1330 |
+
add_action( "user_register", "pmpro_user_register_stripe_customerid" );
|
1331 |
+
}
|
1332 |
+
}
|
1333 |
+
|
1334 |
return $this->customer;
|
1335 |
+
|
1336 |
+
} catch ( Exception $e ) {
|
1337 |
//assume no customer found
|
1338 |
}
|
1339 |
}
|
1340 |
|
1341 |
//no customer id, create one
|
1342 |
+
if ( ! empty( $order->payment_method_id ) ) {
|
1343 |
try {
|
1344 |
+
$this->customer = Stripe_Customer::create( array(
|
1345 |
+
"description" => $name . " (" . $email . ")",
|
1346 |
+
"email" => $order->Email,
|
1347 |
+
) );
|
1348 |
+
} catch ( \Stripe\Error $e ) {
|
1349 |
+
$order->error = __( "Error creating customer record with Stripe:", 'paid-memberships-pro' ) . " " . $e->getMessage();
|
|
|
1350 |
$order->shorterror = $order->error;
|
1351 |
+
|
1352 |
return false;
|
1353 |
}
|
1354 |
|
1355 |
+
if ( ! empty( $user_id ) ) {
|
1356 |
//user logged in/etc
|
1357 |
+
update_user_meta( $user_id, "pmpro_stripe_customerid", $this->customer->id );
|
1358 |
} else {
|
1359 |
//user not registered yet, queue it up
|
1360 |
global $pmpro_stripe_customer_id;
|
1361 |
$pmpro_stripe_customer_id = $this->customer->id;
|
1362 |
+
if ( ! function_exists( 'pmpro_user_register_stripe_customerid' ) ) {
|
1363 |
+
function pmpro_user_register_stripe_customerid( $user_id ) {
|
1364 |
global $pmpro_stripe_customer_id;
|
1365 |
+
update_user_meta( $user_id, "pmpro_stripe_customerid", $pmpro_stripe_customer_id );
|
1366 |
}
|
1367 |
+
|
1368 |
+
add_action( "user_register", "pmpro_user_register_stripe_customerid" );
|
1369 |
}
|
1370 |
}
|
1371 |
|
1372 |
+
return apply_filters( 'pmpro_stripe_create_customer', $this->customer );
|
1373 |
}
|
1374 |
|
1375 |
return false;
|
1380 |
*
|
1381 |
* @since 1.8
|
1382 |
*/
|
1383 |
+
function getSubscription( &$order ) {
|
1384 |
global $wpdb;
|
1385 |
|
1386 |
//no order?
|
1387 |
+
if ( empty( $order ) || empty( $order->code ) ) {
|
1388 |
return false;
|
1389 |
}
|
1390 |
|
1391 |
+
$result = $this->getCustomer( $order, true ); //force so we don't get a cached sub for someone else
|
1392 |
|
1393 |
//no customer?
|
1394 |
+
if ( empty( $result ) ) {
|
1395 |
+
return false;
|
1396 |
+
}
|
1397 |
+
|
1398 |
+
//no subscriptions?
|
1399 |
+
if ( empty( $this->customer->subscriptions ) ) {
|
1400 |
return false;
|
1401 |
+
}
|
1402 |
|
1403 |
//is there a subscription transaction id pointing to a sub?
|
1404 |
+
if ( ! empty( $order->subscription_transaction_id ) && strpos( $order->subscription_transaction_id, "sub_" ) !== false ) {
|
1405 |
try {
|
1406 |
+
$sub = $this->customer->subscriptions->retrieve( $order->subscription_transaction_id );
|
1407 |
+
} catch ( Exception $e ) {
|
1408 |
+
$order->error = __( "Error getting subscription with Stripe:", 'paid-memberships-pro' ) . $e->getMessage();
|
1409 |
$order->shorterror = $order->error;
|
1410 |
+
|
1411 |
return false;
|
1412 |
}
|
1413 |
|
1414 |
return $sub;
|
1415 |
}
|
1416 |
|
|
|
|
|
|
|
|
|
|
|
1417 |
//find subscription based on customer id and order/plan id
|
1418 |
$subscriptions = $this->customer->subscriptions->all();
|
1419 |
|
1420 |
//no subscriptions
|
1421 |
+
if ( empty( $subscriptions ) || empty( $subscriptions->data ) ) {
|
1422 |
return false;
|
1423 |
}
|
1424 |
|
1425 |
//we really want to test against the order codes of all orders with the same subscription_transaction_id (customer id)
|
1426 |
+
$codes = $wpdb->get_col( "SELECT code FROM $wpdb->pmpro_membership_orders WHERE user_id = '" . $order->user_id . "' AND subscription_transaction_id = '" . $order->subscription_transaction_id . "' AND status NOT IN('refunded', 'review', 'token', 'error')" );
|
1427 |
|
1428 |
//find the one for this order
|
1429 |
+
foreach ( $subscriptions->data as $sub ) {
|
1430 |
+
if ( in_array( $sub->plan->id, $codes ) ) {
|
1431 |
return $sub;
|
1432 |
}
|
1433 |
}
|
1441 |
*
|
1442 |
* @since 1.4
|
1443 |
*/
|
1444 |
+
function subscribe( &$order, $checkout = true ) {
|
1445 |
global $pmpro_currency, $pmpro_currencies;
|
1446 |
|
1447 |
$currency_unit_multiplier = 100; //ie 100 cents per USD
|
1448 |
|
1449 |
//account for zero-decimal currencies like the Japanese Yen
|
1450 |
+
if ( is_array( $pmpro_currencies[ $pmpro_currency ] ) && isset( $pmpro_currencies[ $pmpro_currency ]['decimals'] ) && $pmpro_currencies[ $pmpro_currency ]['decimals'] == 0 ) {
|
1451 |
$currency_unit_multiplier = 1;
|
1452 |
+
}
|
1453 |
|
1454 |
//create a code for the order
|
1455 |
+
if ( empty( $order->code ) ) {
|
1456 |
$order->code = $order->getRandomCode();
|
1457 |
+
}
|
1458 |
|
1459 |
//filter order before subscription. use with care.
|
1460 |
+
$order = apply_filters( "pmpro_subscribe_order", $order, $this );
|
1461 |
|
1462 |
//figure out the user
|
1463 |
+
if ( ! empty( $order->user_id ) ) {
|
1464 |
$user_id = $order->user_id;
|
1465 |
} else {
|
1466 |
global $current_user;
|
1468 |
}
|
1469 |
|
1470 |
//set up customer
|
1471 |
+
|
1472 |
+
$result = $this->getCustomer( $order );
|
1473 |
+
if ( empty( $result ) ) {
|
1474 |
+
return false; //error retrieving customer
|
1475 |
}
|
1476 |
|
1477 |
+
// set subscription id to custom id
|
1478 |
+
|
1479 |
+
$order->subscription_transaction_id = $this->customer['id']; //transaction id is the customer id, we save it in user meta later too
|
1480 |
|
1481 |
//figure out the amounts
|
1482 |
+
$amount = $order->PaymentAmount;
|
1483 |
+
$amount_tax = $order->getTaxForPrice( $amount );
|
1484 |
+
$amount = pmpro_round_price( (float) $amount + (float) $amount_tax );
|
1485 |
|
1486 |
/*
|
1487 |
+
There are two parts to the trial. Part 1 is simply the delay until the first payment
|
1488 |
+
since we are doing the first payment as a separate transaction.
|
1489 |
+
The second part is the actual "trial" set by the admin.
|
1490 |
|
1491 |
+
Stripe only supports Year or Month for billing periods, but we account for Days and Weeks just in case.
|
1492 |
+
*/
|
1493 |
//figure out the trial length (first payment handled by initial charge)
|
1494 |
+
if ( $order->BillingPeriod == "Year" ) {
|
1495 |
+
$trial_period_days = $order->BillingFrequency * 365; //annual
|
1496 |
+
} elseif ( $order->BillingPeriod == "Day" ) {
|
1497 |
+
$trial_period_days = $order->BillingFrequency * 1; //daily
|
1498 |
+
} elseif ( $order->BillingPeriod == "Week" ) {
|
1499 |
+
$trial_period_days = $order->BillingFrequency * 7; //weekly
|
1500 |
} else {
|
1501 |
+
$trial_period_days = $order->BillingFrequency * 30; //assume monthly
|
1502 |
+
}
|
1503 |
|
1504 |
//convert to a profile start date
|
1505 |
+
$order->ProfileStartDate = date_i18n( "Y-m-d", strtotime( "+ " . $trial_period_days . " Day", current_time( "timestamp" ) ) ) . "T0:0:0";
|
1506 |
|
1507 |
//filter the start date
|
1508 |
+
$order->ProfileStartDate = apply_filters( "pmpro_profile_start_date", $order->ProfileStartDate, $order );
|
1509 |
|
1510 |
//convert back to days
|
1511 |
+
$trial_period_days = ceil( abs( strtotime( date_i18n( "Y-m-d" ), current_time( "timestamp" ) ) - strtotime( $order->ProfileStartDate, current_time( "timestamp" ) ) ) / 86400 );
|
1512 |
|
1513 |
//for free trials, just push the start date of the subscription back
|
1514 |
+
if ( ! empty( $order->TrialBillingCycles ) && $order->TrialAmount == 0 ) {
|
1515 |
+
$trialOccurrences = (int) $order->TrialBillingCycles;
|
1516 |
+
if ( $order->BillingPeriod == "Year" ) {
|
1517 |
+
$trial_period_days = $trial_period_days + ( 365 * $order->BillingFrequency * $trialOccurrences ); //annual
|
1518 |
+
} elseif ( $order->BillingPeriod == "Day" ) {
|
1519 |
+
$trial_period_days = $trial_period_days + ( 1 * $order->BillingFrequency * $trialOccurrences ); //daily
|
1520 |
+
} elseif ( $order->BillingPeriod == "Week" ) {
|
1521 |
+
$trial_period_days = $trial_period_days + ( 7 * $order->BillingFrequency * $trialOccurrences ); //weekly
|
1522 |
} else {
|
1523 |
+
$trial_period_days = $trial_period_days + ( 30 * $order->BillingFrequency * $trialOccurrences ); //assume monthly
|
1524 |
}
|
1525 |
+
} elseif ( ! empty( $order->TrialBillingCycles ) ) {
|
1526 |
/*
|
1527 |
+
Let's set the subscription to the trial and give the user an "update" to change the sub later to full price (since v2.0)
|
1528 |
|
1529 |
+
This will force TrialBillingCycles > 1 to act as if they were 1
|
1530 |
+
*/
|
1531 |
+
$new_user_updates = array();
|
1532 |
$new_user_updates[] = array(
|
1533 |
+
'when' => 'payment',
|
1534 |
'billing_amount' => $order->PaymentAmount,
|
1535 |
+
'cycle_period' => $order->BillingPeriod,
|
1536 |
+
'cycle_number' => $order->BillingFrequency
|
1537 |
);
|
1538 |
|
1539 |
//now amount to equal the trial #s
|
1540 |
+
$amount = $order->TrialAmount;
|
1541 |
+
$amount_tax = $order->getTaxForPrice( $amount );
|
1542 |
+
$amount = pmpro_round_price( (float) $amount + (float) $amount_tax );
|
1543 |
}
|
1544 |
|
1545 |
//create a plan
|
1546 |
try {
|
1547 |
$plan = array(
|
1548 |
+
"amount" => $amount * $currency_unit_multiplier,
|
1549 |
+
"interval_count" => $order->BillingFrequency,
|
1550 |
+
"interval" => strtolower( $order->BillingPeriod ),
|
1551 |
"trial_period_days" => $trial_period_days,
|
1552 |
+
'product' => array( 'name' => $order->membership_name . " for order " . $order->code ),
|
1553 |
+
"currency" => strtolower( $pmpro_currency ),
|
1554 |
+
"id" => $order->code
|
1555 |
);
|
1556 |
|
1557 |
+
$plan = Stripe_Plan::create( apply_filters( 'pmpro_stripe_create_plan_array', $plan ) );
|
1558 |
+
} catch ( Exception $e ) {
|
1559 |
+
$order->error = __( "Error creating plan with Stripe:", 'paid-memberships-pro' ) . $e->getMessage();
|
1560 |
$order->shorterror = $order->error;
|
1561 |
+
|
1562 |
return false;
|
1563 |
}
|
1564 |
|
1565 |
+
// before subscribing, let's clear out the updates so we don't trigger any during sub
|
1566 |
+
if ( ! empty( $user_id ) ) {
|
1567 |
+
$old_user_updates = get_user_meta( $user_id, "pmpro_stripe_updates", true );
|
1568 |
+
update_user_meta( $user_id, "pmpro_stripe_updates", array() );
|
1569 |
}
|
1570 |
|
1571 |
+
|
1572 |
+
if ( empty( $order->subscription_transaction_id ) && ! empty( $this->customer['id'] ) ) {
|
1573 |
$order->subscription_transaction_id = $this->customer['id'];
|
1574 |
}
|
1575 |
|
1576 |
+
// subscribe to the plan
|
1577 |
try {
|
1578 |
+
$subscription = array( "plan" => $order->code );
|
1579 |
+
$result = $this->customer->subscriptions->create( apply_filters( 'pmpro_stripe_create_subscription_array', $subscription ) );
|
1580 |
+
} catch ( Exception $e ) {
|
1581 |
//try to delete the plan
|
1582 |
$plan->delete();
|
1583 |
|
1584 |
//give the user any old updates back
|
1585 |
+
if ( ! empty( $user_id ) ) {
|
1586 |
+
update_user_meta( $user_id, "pmpro_stripe_updates", $old_user_updates );
|
1587 |
}
|
1588 |
|
1589 |
//return error
|
1590 |
+
$order->error = __( "Error subscribing customer to plan with Stripe:", 'paid-memberships-pro' ) . $e->getMessage();
|
1591 |
$order->shorterror = $order->error;
|
1592 |
+
|
1593 |
return false;
|
1594 |
}
|
1595 |
|
1596 |
+
// delete the plan
|
1597 |
+
$plan = Stripe_Plan::retrieve( $order->code );
|
1598 |
$plan->delete();
|
1599 |
|
1600 |
//if we got this far, we're all good
|
1601 |
+
$order->status = "success";
|
1602 |
$order->subscription_transaction_id = $result['id'];
|
1603 |
|
1604 |
//save new updates if this is at checkout
|
1605 |
+
if ( $checkout ) {
|
1606 |
//empty out updates unless set above
|
1607 |
+
if ( empty( $new_user_updates ) ) {
|
1608 |
$new_user_updates = array();
|
1609 |
}
|
1610 |
|
1611 |
//update user meta
|
1612 |
+
if ( ! empty( $user_id ) ) {
|
1613 |
+
update_user_meta( $user_id, "pmpro_stripe_updates", $new_user_updates );
|
1614 |
} else {
|
1615 |
//need to remember the user updates to save later
|
1616 |
global $pmpro_stripe_updates;
|
1617 |
$pmpro_stripe_updates = $new_user_updates;
|
1618 |
+
function pmpro_user_register_stripe_updates( $user_id ) {
|
1619 |
global $pmpro_stripe_updates;
|
1620 |
+
update_user_meta( $user_id, "pmpro_stripe_updates", $pmpro_stripe_updates );
|
1621 |
}
|
1622 |
+
|
1623 |
+
add_action( "user_register", "pmpro_user_register_stripe_updates" );
|
1624 |
}
|
1625 |
} else {
|
1626 |
//give them their old updates back
|
1627 |
+
update_user_meta( $user_id, "pmpro_stripe_updates", $old_user_updates );
|
1628 |
}
|
1629 |
|
1630 |
return true;
|
1633 |
/**
|
1634 |
* Helper method to save the subscription ID to make sure the membership doesn't get cancelled by the webhook
|
1635 |
*/
|
1636 |
+
static function ignoreCancelWebhookForThisSubscription( $subscription_id, $user_id = null ) {
|
1637 |
+
if ( empty( $user_id ) ) {
|
1638 |
global $current_user;
|
1639 |
$user_id = $current_user->ID;
|
1640 |
}
|
1647 |
}
|
1648 |
|
1649 |
// Store or update the subscription ID timestamp (for cleanup)
|
1650 |
+
$preserve[ $subscription_id ] = current_time( 'timestamp' );
|
1651 |
|
1652 |
update_user_meta( $user_id, 'pmpro_stripe_dont_cancel', $preserve );
|
1653 |
}
|
1655 |
/**
|
1656 |
* Helper method to process a Stripe subscription update
|
1657 |
*/
|
1658 |
+
static function updateSubscription( $update, $user_id ) {
|
1659 |
global $wpdb;
|
1660 |
|
1661 |
//get level for user
|
1662 |
+
$user_level = pmpro_getMembershipLevelForUser( $user_id );
|
1663 |
|
1664 |
//get current plan at Stripe to get payment date
|
1665 |
$last_order = new MemberOrder();
|
1666 |
+
$last_order->getLastMemberOrder( $user_id );
|
1667 |
+
$last_order->setGateway( 'stripe' );
|
1668 |
+
$last_order->Gateway->getCustomer( $last_order );
|
1669 |
|
1670 |
+
$subscription = $last_order->Gateway->getSubscription( $last_order );
|
1671 |
|
1672 |
+
if ( ! empty( $subscription ) ) {
|
1673 |
$end_timestamp = $subscription->current_period_end;
|
1674 |
|
1675 |
//cancel the old subscription
|
1676 |
+
if ( ! $last_order->Gateway->cancelSubscriptionAtGateway( $subscription, true ) ) {
|
1677 |
//throw error and halt save
|
1678 |
+
if ( ! function_exists( 'pmpro_stripe_user_profile_fields_save_error' ) ) {
|
1679 |
//throw error and halt save
|
1680 |
function pmpro_stripe_user_profile_fields_save_error( $errors, $update, $user ) {
|
1681 |
$errors->add( 'pmpro_stripe_updates', __( 'Could not cancel the old subscription. Updates have not been processed.', 'paid-memberships-pro' ) );
|
1690 |
}
|
1691 |
|
1692 |
//if we didn't get an end date, let's set one one cycle out
|
1693 |
+
if ( empty( $end_timestamp ) ) {
|
1694 |
+
$end_timestamp = strtotime( "+" . $update['cycle_number'] . " " . $update['cycle_period'], current_time( 'timestamp' ) );
|
1695 |
}
|
1696 |
|
1697 |
//build order object
|
1698 |
$update_order = new MemberOrder();
|
1699 |
+
$update_order->setGateway( 'stripe' );
|
1700 |
+
$update_order->user_id = $user_id;
|
1701 |
+
$update_order->membership_id = $user_level->id;
|
1702 |
+
$update_order->membership_name = $user_level->name;
|
1703 |
+
$update_order->InitialPayment = 0;
|
1704 |
+
$update_order->PaymentAmount = $update['billing_amount'];
|
1705 |
+
$update_order->ProfileStartDate = date_i18n( "Y-m-d", $end_timestamp );
|
1706 |
+
$update_order->BillingPeriod = $update['cycle_period'];
|
1707 |
$update_order->BillingFrequency = $update['cycle_number'];
|
1708 |
+
|
1709 |
//need filter to reset ProfileStartDate
|
1710 |
$profile_start_date = $update_order->ProfileStartDate;
|
1711 |
+
add_filter( 'pmpro_profile_start_date', function ( $startdate, $order ) use ( $profile_start_date ) {
|
1712 |
return "{$profile_start_date}T0:0:0";
|
1713 |
+
}, 10, 2 );
|
1714 |
|
1715 |
//update subscription
|
1716 |
+
$update_order->Gateway->subscribe( $update_order, false );
|
1717 |
|
1718 |
//update membership
|
1719 |
$sqlQuery = "UPDATE $wpdb->pmpro_memberships_users
|
1720 |
+
SET billing_amount = '" . esc_sql( $update['billing_amount'] ) . "',
|
1721 |
+
cycle_number = '" . esc_sql( $update['cycle_number'] ) . "',
|
1722 |
+
cycle_period = '" . esc_sql( $update['cycle_period'] ) . "',
|
1723 |
trial_amount = '',
|
1724 |
trial_limit = ''
|
1725 |
+
WHERE user_id = '" . esc_sql( $user_id ) . "'
|
1726 |
+
AND membership_id = '" . esc_sql( $last_order->membership_id ) . "'
|
1727 |
AND status = 'active'
|
1728 |
LIMIT 1";
|
1729 |
|
1730 |
+
$wpdb->query( $sqlQuery );
|
1731 |
|
1732 |
//save order so we know which plan to look for at stripe (order code = plan id)
|
1733 |
$update_order->status = "success";
|
1739 |
*
|
1740 |
* @since 1.4
|
1741 |
*/
|
1742 |
+
function update( &$order ) {
|
|
|
|
|
1743 |
|
1744 |
+
$steps = array(
|
1745 |
+
'set_customer',
|
1746 |
+
'set_source',
|
1747 |
+
'attach_source_to_customer',
|
1748 |
+
);
|
1749 |
+
|
1750 |
+
foreach ( $steps as $key => $step ) {
|
1751 |
+
do_action( "pmpro_update_billing_before_{$step}", $order );
|
1752 |
+
$this->$step( $order );
|
1753 |
+
do_action( "pmpro_update_billing_after_{$step}", $order );
|
1754 |
+
if ( ! empty( $order->error ) ) {
|
1755 |
+
return false;
|
1756 |
+
}
|
1757 |
}
|
1758 |
+
|
1759 |
+
return true;
|
1760 |
+
|
1761 |
}
|
1762 |
|
1763 |
/**
|
1765 |
*
|
1766 |
* @since 1.4
|
1767 |
*/
|
1768 |
+
function cancel( &$order, $update_status = true ) {
|
1769 |
global $pmpro_stripe_event;
|
1770 |
|
1771 |
//no matter what happens below, we're going to cancel the order in our system
|
1772 |
+
if ( $update_status ) {
|
1773 |
+
$order->updateStatus( "cancelled" );
|
1774 |
}
|
1775 |
|
1776 |
//require a subscription id
|
1777 |
+
if ( empty( $order->subscription_transaction_id ) ) {
|
1778 |
return false;
|
1779 |
+
}
|
1780 |
|
1781 |
//find the customer
|
1782 |
+
$result = $this->getCustomer( $order );
|
1783 |
|
1784 |
+
if ( ! empty( $result ) ) {
|
1785 |
//find subscription with this order code
|
1786 |
+
$subscription = $this->getSubscription( $order );
|
1787 |
|
1788 |
+
if ( ! empty( $subscription )
|
1789 |
+
&& ( empty( $pmpro_stripe_event ) || empty( $pmpro_stripe_event->type ) || $pmpro_stripe_event->type != 'customer.subscription.deleted' ) ) {
|
1790 |
+
if ( $this->cancelSubscriptionAtGateway( $subscription ) ) {
|
1791 |
//we're okay, going to return true later
|
1792 |
} else {
|
1793 |
+
$order->error = __( "Could not cancel old subscription.", 'paid-memberships-pro' );
|
1794 |
$order->shorterror = $order->error;
|
1795 |
|
1796 |
return false;
|
1798 |
}
|
1799 |
|
1800 |
/*
|
1801 |
+
Clear updates for this user. (But not if checking out, we would have already done that.)
|
1802 |
+
*/
|
1803 |
+
if ( empty( $_REQUEST['submit-checkout'] ) ) {
|
1804 |
+
update_user_meta( $order->user_id, "pmpro_stripe_updates", array() );
|
1805 |
}
|
1806 |
|
1807 |
return true;
|
1808 |
} else {
|
1809 |
+
$order->error = __( "Could not find the customer.", 'paid-memberships-pro' );
|
1810 |
$order->shorterror = $order->error;
|
1811 |
+
|
1812 |
+
return false; //no customer found
|
1813 |
}
|
1814 |
}
|
1815 |
|
1818 |
*
|
1819 |
* @since 1.8
|
1820 |
*/
|
1821 |
+
function cancelSubscriptionAtGateway( $subscription, $preserve_local_membership = false ) {
|
1822 |
// Check if a valid sub.
|
1823 |
+
if ( empty( $subscription ) || empty( $subscription->id ) ) {
|
1824 |
return false;
|
1825 |
}
|
1826 |
|
1827 |
// If this is already cancelled, return true.
|
1828 |
+
if ( ! empty( $subscription->canceled_at ) ) {
|
1829 |
return true;
|
1830 |
}
|
1831 |
|
1832 |
// Make sure we get the customer for this subscription.
|
1833 |
$order = new MemberOrder();
|
1834 |
+
$order->getLastMemberOrderBySubscriptionTransactionID( $subscription->id );
|
1835 |
|
1836 |
// No order?
|
1837 |
+
if ( empty( $order ) ) {
|
1838 |
//lets cancel anyway, but this is suspicious
|
1839 |
$r = $subscription->cancel();
|
1840 |
|
1842 |
}
|
1843 |
|
1844 |
// Okay have an order, so get customer so we can cancel invoices too
|
1845 |
+
$this->getCustomer( $order );
|
1846 |
|
1847 |
// Get open invoices.
|
1848 |
$invoices = $this->customer->invoices();
|
1851 |
// Found it, cancel it.
|
1852 |
try {
|
1853 |
// Find any open invoices for this subscription and forgive them.
|
1854 |
+
if ( ! empty( $invoices ) ) {
|
1855 |
+
foreach ( $invoices->data as $invoice ) {
|
1856 |
+
if ( 'open' == $invoice->status && $invoice->subscription == $subscription->id ) {
|
1857 |
+
$invoice->voidInvoice();
|
|
|
1858 |
}
|
1859 |
}
|
1860 |
}
|
1861 |
|
1862 |
// Sometimes we don't want to cancel the local membership when Stripe sends its webhook.
|
1863 |
+
if ( $preserve_local_membership ) {
|
1864 |
+
PMProGateway_stripe::ignoreCancelWebhookForThisSubscription( $subscription->id, $order->user_id );
|
1865 |
}
|
1866 |
|
1867 |
// Cancel
|
1868 |
$r = $subscription->cancel();
|
1869 |
|
1870 |
return true;
|
1871 |
+
} catch ( Exception $e ) {
|
1872 |
return false;
|
1873 |
}
|
1874 |
}
|
1877 |
* Filter pmpro_next_payment to get date via API if possible
|
1878 |
*
|
1879 |
* @since 1.8.6
|
1880 |
+
*/
|
1881 |
+
static function pmpro_next_payment( $timestamp, $user_id, $order_status ) {
|
1882 |
//find the last order for this user
|
1883 |
+
if ( ! empty( $user_id ) ) {
|
1884 |
//get last order
|
1885 |
$order = new MemberOrder();
|
1886 |
+
$order->getLastMemberOrder( $user_id, $order_status );
|
1887 |
|
1888 |
//check if this is a Stripe order with a subscription transaction id
|
1889 |
+
if ( ! empty( $order->id ) && ! empty( $order->subscription_transaction_id ) && $order->gateway == "stripe" ) {
|
1890 |
//get the subscription and return the current_period end or false
|
1891 |
+
$subscription = $order->Gateway->getSubscription( $order );
|
1892 |
|
1893 |
+
if ( ! empty( $subscription ) ) {
|
1894 |
$customer = $order->Gateway->getCustomer();
|
1895 |
+
if ( ! $customer->delinquent && ! empty ( $subscription->current_period_end ) ) {
|
1896 |
return $subscription->current_period_end;
|
1897 |
} elseif ( $customer->delinquent && ! empty( $subscription->current_period_start ) ) {
|
1898 |
return $subscription->current_period_start;
|
1908 |
|
1909 |
/**
|
1910 |
* Refund a payment or invoice
|
1911 |
+
*
|
1912 |
+
* @param object &$order Related PMPro order object.
|
1913 |
+
* @param string $transaction_id Payment or Invoice id to void.
|
1914 |
+
*
|
1915 |
* @return bool True or false if the void worked
|
1916 |
*/
|
1917 |
+
function void( &$order, $transaction_id = null ) {
|
1918 |
//stripe doesn't differentiate between voids and refunds, so let's just pass on to the refund function
|
1919 |
+
return $this->refund( $order, $transaction_id );
|
1920 |
}
|
1921 |
|
1922 |
/**
|
1923 |
* Refund a payment or invoice
|
1924 |
+
*
|
1925 |
+
* @param object &$order Related PMPro order object.
|
1926 |
+
* @param string $transaction_id Payment or invoice id to void.
|
1927 |
+
*
|
1928 |
* @return bool True or false if the refund worked.
|
1929 |
*/
|
1930 |
+
function refund( &$order, $transaction_id = null ) {
|
1931 |
//default to using the payment id from the order
|
1932 |
+
if ( empty( $transaction_id ) && ! empty( $order->payment_transaction_id ) ) {
|
1933 |
$transaction_id = $order->payment_transaction_id;
|
1934 |
}
|
1935 |
|
1936 |
//need a transaction id
|
1937 |
+
if ( empty( $transaction_id ) ) {
|
1938 |
return false;
|
1939 |
}
|
1940 |
|
1941 |
//if an invoice ID is passed, get the charge/payment id
|
1942 |
+
if ( strpos( $transaction_id, "in_" ) !== false ) {
|
1943 |
+
$invoice = Stripe_Invoice::retrieve( $transaction_id );
|
1944 |
|
1945 |
+
if ( ! empty( $invoice ) && ! empty( $invoice->charge ) ) {
|
1946 |
$transaction_id = $invoice->charge;
|
1947 |
}
|
1948 |
}
|
1949 |
|
1950 |
//get the charge
|
1951 |
try {
|
1952 |
+
$charge = Stripe_Charge::retrieve( $transaction_id );
|
1953 |
+
} catch ( Exception $e ) {
|
1954 |
$charge = false;
|
1955 |
}
|
1956 |
|
1957 |
//can't find the charge?
|
1958 |
+
if ( empty( $charge ) ) {
|
1959 |
+
$order->status = "error";
|
1960 |
+
$order->errorcode = "";
|
1961 |
+
$order->error = "";
|
1962 |
$order->shorterror = "";
|
1963 |
|
1964 |
return false;
|
1967 |
//attempt refund
|
1968 |
try {
|
1969 |
$refund = $charge->refund();
|
1970 |
+
} catch ( Exception $e ) {
|
1971 |
//$order->status = "error";
|
1972 |
+
$order->errorcode = true;
|
1973 |
+
$order->error = __( "Error: ", 'paid-memberships-pro' ) . $e->getMessage();
|
1974 |
$order->shorterror = $order->error;
|
1975 |
+
|
1976 |
return false;
|
1977 |
}
|
1978 |
|
1979 |
+
if ( $refund->status == "succeeded" ) {
|
1980 |
$order->status = "refunded";
|
1981 |
$order->saveOrder();
|
1982 |
|
1983 |
return true;
|
1984 |
+
} else {
|
1985 |
+
$order->status = "error";
|
1986 |
+
$order->errorcode = true;
|
1987 |
+
$order->error = sprintf( __( "Error: Unkown error while refunding charge #%s", 'paid-memberships-pro' ), $transaction_id );
|
1988 |
$order->shorterror = $order->error;
|
1989 |
|
1990 |
return false;
|
1991 |
}
|
1992 |
}
|
1993 |
+
|
1994 |
+
function set_source( &$order, $force = false ) {
|
1995 |
+
if ( ! empty( $this->source ) && ! $force ) {
|
1996 |
+
return true;
|
1997 |
+
}
|
1998 |
+
|
1999 |
+
$source = $this->get_source( $order );
|
2000 |
+
|
2001 |
+
if ( empty( $source ) ) {
|
2002 |
+
return false;
|
2003 |
+
}
|
2004 |
+
|
2005 |
+
$this->source = $source;
|
2006 |
+
|
2007 |
+
return true;
|
2008 |
+
}
|
2009 |
+
|
2010 |
+
function get_source( &$order ) {
|
2011 |
+
|
2012 |
+
if ( ! empty( $order->payment_method_id ) ) {
|
2013 |
+
try {
|
2014 |
+
$source = Stripe_PaymentMethod::retrieve( $order->payment_method_id );
|
2015 |
+
} catch ( Stripe\Error\Base $e ) {
|
2016 |
+
$order->error = $e->getMessage();
|
2017 |
+
return false;
|
2018 |
+
} catch ( Throwable $e ) {
|
2019 |
+
$order->error = $e->getMessage();
|
2020 |
+
return false;
|
2021 |
+
} catch ( Exception $e ) {
|
2022 |
+
$order->error = $e->getMessage();
|
2023 |
+
return false;
|
2024 |
+
}
|
2025 |
+
}
|
2026 |
+
|
2027 |
+
if ( empty( $source ) ) {
|
2028 |
+
return false;
|
2029 |
+
}
|
2030 |
+
|
2031 |
+
return $source;
|
2032 |
+
}
|
2033 |
+
|
2034 |
+
function set_customer( &$order, $force = false ) {
|
2035 |
+
if ( ! empty( $this->customer ) && ! $force ) {
|
2036 |
+
return true;
|
2037 |
+
}
|
2038 |
+
$this->getCustomer( $order );
|
2039 |
+
}
|
2040 |
+
|
2041 |
+
function attach_source_to_customer( &$order ) {
|
2042 |
+
|
2043 |
+
if ( ! empty( $this->customer->invoice_settings->default_payment_method ) &&
|
2044 |
+
$this->customer->invoice_settings->default_payment_method === $this->source->id ) {
|
2045 |
+
return true;
|
2046 |
+
}
|
2047 |
+
|
2048 |
+
try {
|
2049 |
+
$this->source->attach( [ 'customer' => $this->customer->id ] );
|
2050 |
+
$this->customer->invoice_settings->default_payment_method = $this->source->id;
|
2051 |
+
$this->customer->save();
|
2052 |
+
} catch ( Stripe\Error\Base $e ) {
|
2053 |
+
$order->error = $e->getMessage();
|
2054 |
+
return false;
|
2055 |
+
} catch ( Throwable $e ) {
|
2056 |
+
$order->error = $e->getMessage();
|
2057 |
+
return false;
|
2058 |
+
} catch ( Exception $e ) {
|
2059 |
+
$order->error = $e->getMessage();
|
2060 |
+
return false;
|
2061 |
+
}
|
2062 |
+
|
2063 |
+
return true;
|
2064 |
+
}
|
2065 |
+
|
2066 |
+
function process_charges( &$order ) {
|
2067 |
+
|
2068 |
+
if ( 0 == floatval( $order->InitialPayment ) ) {
|
2069 |
+
return true;
|
2070 |
+
}
|
2071 |
+
|
2072 |
+
$this->set_payment_intent( $order );
|
2073 |
+
$this->confirm_payment_intent( $order );
|
2074 |
+
|
2075 |
+
if ( ! empty( $order->error ) ) {
|
2076 |
+
$order->error = $order->error;
|
2077 |
+
|
2078 |
+
return false;
|
2079 |
+
}
|
2080 |
+
|
2081 |
+
return true;
|
2082 |
+
}
|
2083 |
+
|
2084 |
+
function set_payment_intent( &$order, $force = false ) {
|
2085 |
+
|
2086 |
+
if ( ! empty( $this->payment_intent ) && ! $force ) {
|
2087 |
+
return true;
|
2088 |
+
}
|
2089 |
+
|
2090 |
+
$payment_intent = $this->get_payment_intent( $order );
|
2091 |
+
|
2092 |
+
if ( empty( $payment_intent ) ) {
|
2093 |
+
return false;
|
2094 |
+
}
|
2095 |
+
|
2096 |
+
$this->payment_intent = $payment_intent;
|
2097 |
+
|
2098 |
+
return true;
|
2099 |
+
}
|
2100 |
+
|
2101 |
+
function get_payment_intent( &$order ) {
|
2102 |
+
|
2103 |
+
if ( ! empty( $order->payment_intent_id ) ) {
|
2104 |
+
try {
|
2105 |
+
$payment_intent = Stripe_PaymentIntent::retrieve( $order->payment_intent_id );
|
2106 |
+
} catch ( Stripe\Error\Base $e ) {
|
2107 |
+
$order->error = $e->getMessage();
|
2108 |
+
return false;
|
2109 |
+
} catch ( Throwable $e ) {
|
2110 |
+
$order->error = $e->getMessage();
|
2111 |
+
return false;
|
2112 |
+
} catch ( Exception $e ) {
|
2113 |
+
$order->error = $e->getMessage();
|
2114 |
+
return false;
|
2115 |
+
}
|
2116 |
+
}
|
2117 |
+
|
2118 |
+
if ( empty( $payment_intent ) ) {
|
2119 |
+
$payment_intent = $this->create_payment_intent( $order );
|
2120 |
+
}
|
2121 |
+
|
2122 |
+
if ( empty( $payment_intent ) ) {
|
2123 |
+
return false;
|
2124 |
+
}
|
2125 |
+
|
2126 |
+
return $payment_intent;
|
2127 |
+
}
|
2128 |
+
|
2129 |
+
function create_payment_intent( &$order ) {
|
2130 |
+
|
2131 |
+
global $pmpro_currencies, $pmpro_currency;
|
2132 |
+
|
2133 |
+
// Account for zero-decimal currencies like the Japanese Yen
|
2134 |
+
$currency_unit_multiplier = 100; //ie 100 cents per USD
|
2135 |
+
if ( is_array( $pmpro_currencies[ $pmpro_currency ] ) && isset( $pmpro_currencies[ $pmpro_currency ]['decimals'] ) && $pmpro_currencies[ $pmpro_currency ]['decimals'] == 0 ) {
|
2136 |
+
$currency_unit_multiplier = 1;
|
2137 |
+
}
|
2138 |
+
|
2139 |
+
$amount = $order->InitialPayment;
|
2140 |
+
$order->subtotal = $amount;
|
2141 |
+
$tax = $order->getTax( true );
|
2142 |
+
|
2143 |
+
$amount = pmpro_round_price( (float) $order->subtotal + (float) $tax );
|
2144 |
+
|
2145 |
+
$params = array(
|
2146 |
+
'customer' => $this->customer->id,
|
2147 |
+
'payment_method' => $this->source->id,
|
2148 |
+
'amount' => $amount * $currency_unit_multiplier,
|
2149 |
+
'currency' => $pmpro_currency,
|
2150 |
+
'confirmation_method' => 'manual',
|
2151 |
+
'description' => apply_filters( 'pmpro_stripe_order_description', "Order #" . $order->code . ", " . trim( $order->FirstName . " " . $order->LastName ) . " (" . $order->Email . ")", $order ),
|
2152 |
+
'setup_future_usage' => 'off_session',
|
2153 |
+
);
|
2154 |
+
|
2155 |
+
|
2156 |
+
try {
|
2157 |
+
$payment_intent = Stripe_PaymentIntent::create( $params );
|
2158 |
+
} catch ( Stripe\Error\Base $e ) {
|
2159 |
+
$order->error = $e->getMessage();
|
2160 |
+
return false;
|
2161 |
+
} catch ( Throwable $e ) {
|
2162 |
+
$order->error = $e->getMessage();
|
2163 |
+
return false;
|
2164 |
+
} catch ( Exception $e ) {
|
2165 |
+
$order->error = $e->getMessage();
|
2166 |
+
return false;
|
2167 |
+
}
|
2168 |
+
|
2169 |
+
return $payment_intent;
|
2170 |
+
}
|
2171 |
+
|
2172 |
+
function process_subscriptions( &$order ) {
|
2173 |
+
|
2174 |
+
if ( ! pmpro_isLevelRecurring( $order->membership_level ) ) {
|
2175 |
+
return true;
|
2176 |
+
}
|
2177 |
+
|
2178 |
+
//before subscribing, let's clear out the updates so we don't trigger any during sub
|
2179 |
+
if ( ! empty( $user_id ) ) {
|
2180 |
+
$old_user_updates = get_user_meta( $user_id, "pmpro_stripe_updates", true );
|
2181 |
+
update_user_meta( $user_id, "pmpro_stripe_updates", array() );
|
2182 |
+
}
|
2183 |
+
|
2184 |
+
$this->set_setup_intent( $order );
|
2185 |
+
$this->confirm_setup_intent( $order );
|
2186 |
+
|
2187 |
+
if ( ! empty( $order->error ) ) {
|
2188 |
+
$order->error = $order->error;
|
2189 |
+
|
2190 |
+
//give the user any old updates back
|
2191 |
+
if ( ! empty( $user_id ) ) {
|
2192 |
+
update_user_meta( $user_id, "pmpro_stripe_updates", $old_user_updates );
|
2193 |
+
}
|
2194 |
+
|
2195 |
+
return false;
|
2196 |
+
}
|
2197 |
+
|
2198 |
+
//save new updates if this is at checkout
|
2199 |
+
//empty out updates unless set above
|
2200 |
+
if ( empty( $new_user_updates ) ) {
|
2201 |
+
$new_user_updates = array();
|
2202 |
+
}
|
2203 |
+
|
2204 |
+
//update user meta
|
2205 |
+
if ( ! empty( $user_id ) ) {
|
2206 |
+
update_user_meta( $user_id, "pmpro_stripe_updates", $new_user_updates );
|
2207 |
+
} else {
|
2208 |
+
//need to remember the user updates to save later
|
2209 |
+
global $pmpro_stripe_updates;
|
2210 |
+
$pmpro_stripe_updates = $new_user_updates;
|
2211 |
+
|
2212 |
+
if( ! function_exists( 'pmpro_user_register_stripe_updates' ) ) {
|
2213 |
+
function pmpro_user_register_stripe_updates( $user_id ) {
|
2214 |
+
global $pmpro_stripe_updates;
|
2215 |
+
update_user_meta( $user_id, 'pmpro_stripe_updates', $pmpro_stripe_updates );
|
2216 |
+
}
|
2217 |
+
add_action( 'user_register', 'pmpro_user_register_stripe_updates' );
|
2218 |
+
}
|
2219 |
+
}
|
2220 |
+
|
2221 |
+
return true;
|
2222 |
+
}
|
2223 |
+
|
2224 |
+
function create_plan( &$order ) {
|
2225 |
+
|
2226 |
+
global $pmpro_currencies, $pmpro_currency;
|
2227 |
+
|
2228 |
+
//figure out the amounts
|
2229 |
+
$amount = $order->PaymentAmount;
|
2230 |
+
$amount_tax = $order->getTaxForPrice( $amount );
|
2231 |
+
$amount = pmpro_round_price( (float) $amount + (float) $amount_tax );
|
2232 |
+
|
2233 |
+
// Account for zero-decimal currencies like the Japanese Yen
|
2234 |
+
$currency_unit_multiplier = 100; //ie 100 cents per USD
|
2235 |
+
if ( is_array( $pmpro_currencies[ $pmpro_currency ] ) && isset( $pmpro_currencies[ $pmpro_currency ]['decimals'] ) && $pmpro_currencies[ $pmpro_currency ]['decimals'] == 0 ) {
|
2236 |
+
$currency_unit_multiplier = 1;
|
2237 |
+
}
|
2238 |
+
|
2239 |
+
/*
|
2240 |
+
Figure out the trial length (first payment handled by initial charge)
|
2241 |
+
|
2242 |
+
There are two parts to the trial. Part 1 is simply the delay until the first payment
|
2243 |
+
since we are doing the first payment as a separate transaction.
|
2244 |
+
The second part is the actual "trial" set by the admin.
|
2245 |
+
|
2246 |
+
Stripe only supports Year or Month for billing periods, but we account for Days and Weeks just in case.
|
2247 |
+
*/
|
2248 |
+
if ( $order->BillingPeriod == "Year" ) {
|
2249 |
+
$trial_period_days = $order->BillingFrequency * 365; //annual
|
2250 |
+
} elseif ( $order->BillingPeriod == "Day" ) {
|
2251 |
+
$trial_period_days = $order->BillingFrequency * 1; //daily
|
2252 |
+
} elseif ( $order->BillingPeriod == "Week" ) {
|
2253 |
+
$trial_period_days = $order->BillingFrequency * 7; //weekly
|
2254 |
+
} else {
|
2255 |
+
$trial_period_days = $order->BillingFrequency * 30; //assume monthly
|
2256 |
+
}
|
2257 |
+
|
2258 |
+
//convert to a profile start date
|
2259 |
+
$order->ProfileStartDate = date_i18n( "Y-m-d", strtotime( "+ " . $trial_period_days . " Day", current_time( "timestamp" ) ) ) . "T0:0:0";
|
2260 |
+
|
2261 |
+
//filter the start date
|
2262 |
+
$order->ProfileStartDate = apply_filters( "pmpro_profile_start_date", $order->ProfileStartDate, $order );
|
2263 |
+
|
2264 |
+
//convert back to days
|
2265 |
+
$trial_period_days = ceil( abs( strtotime( date_i18n( "Y-m-d" ), current_time( "timestamp" ) ) - strtotime( $order->ProfileStartDate, current_time( "timestamp" ) ) ) / 86400 );
|
2266 |
+
|
2267 |
+
//for free trials, just push the start date of the subscription back
|
2268 |
+
if ( ! empty( $order->TrialBillingCycles ) && $order->TrialAmount == 0 ) {
|
2269 |
+
$trialOccurrences = (int) $order->TrialBillingCycles;
|
2270 |
+
if ( $order->BillingPeriod == "Year" ) {
|
2271 |
+
$trial_period_days = $trial_period_days + ( 365 * $order->BillingFrequency * $trialOccurrences ); //annual
|
2272 |
+
} elseif ( $order->BillingPeriod == "Day" ) {
|
2273 |
+
$trial_period_days = $trial_period_days + ( 1 * $order->BillingFrequency * $trialOccurrences ); //daily
|
2274 |
+
} elseif ( $order->BillingPeriod == "Week" ) {
|
2275 |
+
$trial_period_days = $trial_period_days + ( 7 * $order->BillingFrequency * $trialOccurrences ); //weekly
|
2276 |
+
} else {
|
2277 |
+
$trial_period_days = $trial_period_days + ( 30 * $order->BillingFrequency * $trialOccurrences ); //assume monthly
|
2278 |
+
}
|
2279 |
+
} elseif ( ! empty( $order->TrialBillingCycles ) ) {
|
2280 |
+
|
2281 |
+
}
|
2282 |
+
|
2283 |
+
// Save $trial_period_days to order for now too.
|
2284 |
+
$order->TrialPeriodDays = $trial_period_days;
|
2285 |
+
|
2286 |
+
//create a plan
|
2287 |
+
try {
|
2288 |
+
$plan = array(
|
2289 |
+
"amount" => $amount * $currency_unit_multiplier,
|
2290 |
+
"interval_count" => $order->BillingFrequency,
|
2291 |
+
"interval" => strtolower( $order->BillingPeriod ),
|
2292 |
+
"trial_period_days" => $trial_period_days,
|
2293 |
+
'product' => array( 'name' => $order->membership_name . " for order " . $order->code ),
|
2294 |
+
"currency" => strtolower( $pmpro_currency ),
|
2295 |
+
"id" => $order->code
|
2296 |
+
);
|
2297 |
+
$order->plan = Stripe_Plan::create( apply_filters( 'pmpro_stripe_create_plan_array', $plan ) );
|
2298 |
+
} catch ( Stripe\Error\Base $e ) {
|
2299 |
+
$order->error = $e->getMessage();
|
2300 |
+
|
2301 |
+
return false;
|
2302 |
+
} catch ( Exception $e ) {
|
2303 |
+
$order->error = $e->getMessage();
|
2304 |
+
|
2305 |
+
return false;
|
2306 |
+
}
|
2307 |
+
|
2308 |
+
return $order->plan;
|
2309 |
+
}
|
2310 |
+
|
2311 |
+
function create_subscription( &$order ) {
|
2312 |
+
|
2313 |
+
//subscribe to the plan
|
2314 |
+
try {
|
2315 |
+
$params = array(
|
2316 |
+
'customer' => $this->customer->id,
|
2317 |
+
'default_payment_method' => $this->source,
|
2318 |
+
'items' => array(
|
2319 |
+
array( 'plan' => $order->code ),
|
2320 |
+
),
|
2321 |
+
'trial_period_days' => $order->TrialPeriodDays,
|
2322 |
+
'expand' => array(
|
2323 |
+
'pending_setup_intent.payment_method',
|
2324 |
+
),
|
2325 |
+
);
|
2326 |
+
$order->subscription = Stripe_Subscription::create( $params );
|
2327 |
+
} catch ( Stripe\Error\Base $e ) {
|
2328 |
+
$order->error = $e->getMessage();
|
2329 |
+
return false;
|
2330 |
+
} catch ( Throwable $e ) {
|
2331 |
+
$order->error = $e->getMessage();
|
2332 |
+
return false;
|
2333 |
+
} catch ( Exception $e ) {
|
2334 |
+
$order->error = $e->getMessage();
|
2335 |
+
return false;
|
2336 |
+
}
|
2337 |
+
|
2338 |
+
return $order->subscription;
|
2339 |
+
|
2340 |
+
}
|
2341 |
+
|
2342 |
+
function delete_plan( &$order ) {
|
2343 |
+
try {
|
2344 |
+
$order->plan->delete();
|
2345 |
+
} catch ( Stripe\Error\Base $e ) {
|
2346 |
+
$order->error = $e->getMessage();
|
2347 |
+
|
2348 |
+
return false;
|
2349 |
+
} catch ( Exception $e ) {
|
2350 |
+
$order->error = $e->getMessage();
|
2351 |
+
|
2352 |
+
return false;
|
2353 |
+
}
|
2354 |
+
|
2355 |
+
return true;
|
2356 |
+
}
|
2357 |
+
|
2358 |
+
function get_setup_intent( &$order ) {
|
2359 |
+
|
2360 |
+
if ( ! empty( $order->setup_intent_id ) ) {
|
2361 |
+
try {
|
2362 |
+
$setup_intent = Stripe_SetupIntent::retrieve( $order->setup_intent_id );
|
2363 |
+
} catch ( Stripe\Error\Base $e ) {
|
2364 |
+
$order->error = $e->getMessage();
|
2365 |
+
return false;
|
2366 |
+
} catch ( Throwable $e ) {
|
2367 |
+
$order->error = $e->getMessage();
|
2368 |
+
return false;
|
2369 |
+
} catch ( Exception $e ) {
|
2370 |
+
$order->error = $e->getMessage();
|
2371 |
+
return false;
|
2372 |
+
}
|
2373 |
+
}
|
2374 |
+
|
2375 |
+
if ( empty( $setup_intent ) ) {
|
2376 |
+
$setup_intent = $this->create_setup_intent( $order );
|
2377 |
+
}
|
2378 |
+
|
2379 |
+
if ( empty( $setup_intent ) ) {
|
2380 |
+
return false;
|
2381 |
+
}
|
2382 |
+
|
2383 |
+
return $setup_intent;
|
2384 |
+
}
|
2385 |
+
|
2386 |
+
function set_setup_intent( &$order, $force = false ) {
|
2387 |
+
|
2388 |
+
if ( ! empty( $this->setup_intent ) && ! $force ) {
|
2389 |
+
return true;
|
2390 |
+
}
|
2391 |
+
|
2392 |
+
$setup_intent = $this->get_setup_intent( $order );
|
2393 |
+
|
2394 |
+
if ( empty( $setup_intent ) ) {
|
2395 |
+
return false;
|
2396 |
+
}
|
2397 |
+
|
2398 |
+
$this->setup_intent = $setup_intent;
|
2399 |
+
|
2400 |
+
return true;
|
2401 |
+
}
|
2402 |
+
|
2403 |
+
function create_setup_intent( &$order ) {
|
2404 |
+
|
2405 |
+
$this->create_plan( $order );
|
2406 |
+
$this->subscription = $this->create_subscription( $order );
|
2407 |
+
$this->delete_plan( $order );
|
2408 |
+
|
2409 |
+
if ( ! empty( $order->error ) || empty( $this->subscription->pending_setup_intent ) ) {
|
2410 |
+
return false;
|
2411 |
+
}
|
2412 |
+
|
2413 |
+
return $this->subscription->pending_setup_intent;
|
2414 |
+
}
|
2415 |
+
|
2416 |
+
function confirm_payment_intent( &$order ) {
|
2417 |
+
|
2418 |
+
try {
|
2419 |
+
$params = array(
|
2420 |
+
'expand' => array(
|
2421 |
+
'payment_method',
|
2422 |
+
),
|
2423 |
+
);
|
2424 |
+
$this->payment_intent->confirm( $params );
|
2425 |
+
} catch ( Stripe\Error\Base $e ) {
|
2426 |
+
$order->error = $e->getMessage();
|
2427 |
+
return false;
|
2428 |
+
} catch ( Throwable $e ) {
|
2429 |
+
$order->error = $e->getMessage();
|
2430 |
+
return false;
|
2431 |
+
} catch ( Exception $e ) {
|
2432 |
+
$order->error = $e->getMessage();
|
2433 |
+
return false;
|
2434 |
+
}
|
2435 |
+
|
2436 |
+
if ( 'requires_action' == $this->payment_intent->status ) {
|
2437 |
+
$order->errorcode = true;
|
2438 |
+
$order->error = __( 'Customer authentication is required to complete this transaction. Please complete the verification steps issued by your payment provider.', 'paid-memberships-pro' );
|
2439 |
+
$order->error_type = 'pmpro_alert';
|
2440 |
+
|
2441 |
+
return false;
|
2442 |
+
}
|
2443 |
+
|
2444 |
+
return true;
|
2445 |
+
}
|
2446 |
+
|
2447 |
+
function confirm_setup_intent( &$order ) {
|
2448 |
+
|
2449 |
+
if ( empty( $this->setup_intent ) ) {
|
2450 |
+
return true;
|
2451 |
+
}
|
2452 |
+
|
2453 |
+
if ( 'requires_action' === $this->setup_intent->status ) {
|
2454 |
+
$order->errorcode = true;
|
2455 |
+
$order->error = __( 'Customer authentication is required to finish setting up your subscription. Please complete the verification steps issued by your payment provider.', 'paid-memberships-pro' );
|
2456 |
+
|
2457 |
+
return false;
|
2458 |
+
}
|
2459 |
+
|
2460 |
+
}
|
2461 |
+
|
2462 |
+
function clean_up( &$order ) {
|
2463 |
+
if ( ! empty( $this->payment_intent ) && 'succeeded' == $this->payment_intent->status ) {
|
2464 |
+
$order->payment_transaction_id = $this->payment_intent->charges->data[0]->id;
|
2465 |
+
}
|
2466 |
+
|
2467 |
+
if ( empty( $order->subscription_transaction_id ) && ! empty( $this->subscription ) ) {
|
2468 |
+
$order->subscription_transaction_id = $this->subscription->id;
|
2469 |
+
}
|
2470 |
+
}
|
2471 |
+
|
2472 |
+
}
|
css/admin.css
CHANGED
@@ -48,7 +48,7 @@
|
|
48 |
/* levels */
|
49 |
.memberships_page_pmpro-membershiplevels .pmpro_admin #posts-filter p.search-box { margin: 2em 0 1em 0; }
|
50 |
.memberships_page_pmpro-membershiplevels .pmpro_admin tr.pmpro_gray td {color: #AAA;}
|
51 |
-
.memberships_page_pmpro-membershiplevels .pmpro_admin tr td.level_name a {font-size: 115%; font-weight: bold; }
|
52 |
.memberships_page_pmpro-membershiplevels .pmpro_admin .membership-levels tr {background: #fff;}
|
53 |
.memberships_page_pmpro-membershiplevels .pmpro_admin .membership-levels tr.alternate {background: #f1f1f1;}
|
54 |
.memberships_page_pmpro-membershiplevels .pmpro_admin .membership-levels tr.ui-sortable-handle {
|
48 |
/* levels */
|
49 |
.memberships_page_pmpro-membershiplevels .pmpro_admin #posts-filter p.search-box { margin: 2em 0 1em 0; }
|
50 |
.memberships_page_pmpro-membershiplevels .pmpro_admin tr.pmpro_gray td {color: #AAA;}
|
51 |
+
.memberships_page_pmpro-membershiplevels .pmpro_admin tr td.level_name span.level-name a {font-size: 115%; font-weight: bold; }
|
52 |
.memberships_page_pmpro-membershiplevels .pmpro_admin .membership-levels tr {background: #fff;}
|
53 |
.memberships_page_pmpro-membershiplevels .pmpro_admin .membership-levels tr.alternate {background: #f1f1f1;}
|
54 |
.memberships_page_pmpro-membershiplevels .pmpro_admin .membership-levels tr.ui-sortable-handle {
|
css/frontend.css
CHANGED
@@ -113,6 +113,14 @@ form.pmpro_form label {
|
|
113 |
margin: 0;
|
114 |
text-align: left;
|
115 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
form.pmpro_form .pmpro_checkout-field-checkbox label {
|
117 |
cursor: pointer;
|
118 |
display: inline-block;
|
@@ -160,6 +168,47 @@ form.pmpro_form #pmpro_processing_message {
|
|
160 |
margin: 1em 0 0 0;
|
161 |
text-align: right;
|
162 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
/*--------------------------------------------------
|
164 |
Messages - Success, Error, Alert
|
165 |
----------------------------------------------------*/
|
@@ -175,13 +224,29 @@ form.pmpro_form #pmpro_processing_message {
|
|
175 |
line-height: 1.5em;
|
176 |
margin: .5em 0;
|
177 |
padding: 10px 15px;
|
|
|
178 |
}
|
179 |
.pmpro_success {
|
180 |
background-color: #dff0d8;
|
181 |
border-color: #d6e9c6;
|
182 |
color: #3c763d;
|
183 |
}
|
184 |
-
.pmpro_error
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
background-color: #f2dede;
|
186 |
border-color: #ebccd1;
|
187 |
color: #a94442;
|
@@ -213,6 +278,10 @@ input.pmpro_error {
|
|
213 |
select.pmpro_error {
|
214 |
background-image: none;
|
215 |
}
|
|
|
|
|
|
|
|
|
216 |
/*---------------------------------------
|
217 |
Membership Checkout
|
218 |
---------------------------------------*/
|
@@ -233,7 +302,10 @@ select.pmpro_error {
|
|
233 |
margin-left: 2em;
|
234 |
}
|
235 |
#pmpro_payment_information_fields .pmpro_checkout-fields-display-seal {
|
|
|
|
|
236 |
display: grid;
|
|
|
237 |
grid-template-columns: 3fr 1fr;
|
238 |
grid-gap: 1em;
|
239 |
}
|
@@ -259,7 +331,9 @@ body.pmpro-invoice .entry-content ul {
|
|
259 |
margin-left: 1.5em;
|
260 |
}
|
261 |
.pmpro_invoice_details {
|
|
|
262 |
display: grid;
|
|
|
263 |
grid-template-columns: 1fr 1fr 1fr;
|
264 |
grid-gap: 1em;
|
265 |
}
|
@@ -363,19 +437,19 @@ li.pmpro_more {
|
|
363 |
font-size: .8em;
|
364 |
}
|
365 |
@media (max-width:768px) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
366 |
form.pmpro_form input[type=text].input, form.pmpro_form input[type=password].input {
|
367 |
width: 90%;
|
368 |
}
|
369 |
form.pmpro_form input[type=text]#other_discount_code, form.pmpro_form input[type=text]#CVV, form.pmpro_form input[type=text]#discount_code {
|
370 |
width: 40%;
|
371 |
}
|
372 |
-
form.pmpro_form #pmpro_payment_information_fields .pmpro_thead-msg {
|
373 |
-
float: none;
|
374 |
-
margin-bottom: 10px;
|
375 |
-
text-align: left;
|
376 |
-
text-wrap: normal;
|
377 |
-
white-space: normal;
|
378 |
-
}
|
379 |
#pmpro_payment_information_fields .pmpro_checkout-fields-display-seal {
|
380 |
display: block;
|
381 |
}
|
113 |
margin: 0;
|
114 |
text-align: left;
|
115 |
}
|
116 |
+
form.pmpro_form #pmpro_payment_information_fields .pmpro_checkout-fields label {
|
117 |
+
display: block;
|
118 |
+
float: none;
|
119 |
+
max-width: initial;
|
120 |
+
min-width: initial;
|
121 |
+
text-align: left;
|
122 |
+
width: auto;
|
123 |
+
}
|
124 |
form.pmpro_form .pmpro_checkout-field-checkbox label {
|
125 |
cursor: pointer;
|
126 |
display: inline-block;
|
168 |
margin: 1em 0 0 0;
|
169 |
text-align: right;
|
170 |
}
|
171 |
+
|
172 |
+
.pmpro_checkout_gateway-stripe form.pmpro_form #pmpro_payment_information_fields .pmpro_checkout-fields,
|
173 |
+
.pmpro_billing_gateway-stripe form.pmpro_form #pmpro_payment_information_fields .pmpro_checkout-fields {
|
174 |
+
display: -ms-grid;
|
175 |
+
display: grid;
|
176 |
+
-ms-grid-rows: auto 1em auto;
|
177 |
+
grid-template-areas:
|
178 |
+
"AccountNumber AccountNumber"
|
179 |
+
"Expiry CVV";
|
180 |
+
grid-gap: 1em;
|
181 |
+
-ms-grid-columns: 1fr 1em 1fr;
|
182 |
+
grid-template-columns: 1fr 1fr;
|
183 |
+
}
|
184 |
+
.pmpro_checkout_gateway-stripe form.pmpro_form #pmpro_payment_information_fields div#AccountNumber,
|
185 |
+
.pmpro_checkout_gateway-stripe form.pmpro_form #pmpro_payment_information_fields div#Expiry,
|
186 |
+
.pmpro_checkout_gateway-stripe form.pmpro_form #pmpro_payment_information_fields div#CVV,
|
187 |
+
.pmpro_billing_gateway-stripe form.pmpro_form #pmpro_payment_information_fields div#AccountNumber,
|
188 |
+
.pmpro_billing_gateway-stripe form.pmpro_form #pmpro_payment_information_fields div#Expiry,
|
189 |
+
.pmpro_billing_gateway-stripe form.pmpro_form #pmpro_payment_information_fields div#CVV {
|
190 |
+
color: #666;
|
191 |
+
border: 1px solid #ccc;
|
192 |
+
border-radius: 3px;
|
193 |
+
margin: 0;
|
194 |
+
padding: 0.625em 0.4375em;
|
195 |
+
}
|
196 |
+
.pmpro_checkout_gateway-stripe form.pmpro_form #pmpro_payment_information_fields .pmpro_checkout-fields div {
|
197 |
+
|
198 |
+
}
|
199 |
+
.pmpro_checkout_gateway-stripe form.pmpro_form #pmpro_payment_information_fields .pmpro_payment-account-number,
|
200 |
+
.pmpro_billing_gateway-stripe form.pmpro_form #pmpro_payment_information_fields .pmpro_payment-account-number {
|
201 |
+
grid-area: AccountNumber;
|
202 |
+
}
|
203 |
+
.pmpro_checkout_gateway-stripe form.pmpro_form #pmpro_payment_information_fields .pmpro_payment-expiration,
|
204 |
+
.pmpro_billing_gateway-stripe form.pmpro_form #pmpro_payment_information_fields .pmpro_payment-expiration {
|
205 |
+
grid-area: Expiry;
|
206 |
+
}
|
207 |
+
.pmpro_checkout_gateway-stripe form.pmpro_form #pmpro_payment_information_fields .pmpro_payment-cvv,
|
208 |
+
.pmpro_billing_gateway-stripe form.pmpro_form #pmpro_payment_information_fields .pmpro_payment-cvv {
|
209 |
+
grid-area: CVV;
|
210 |
+
}
|
211 |
+
|
212 |
/*--------------------------------------------------
|
213 |
Messages - Success, Error, Alert
|
214 |
----------------------------------------------------*/
|
224 |
line-height: 1.5em;
|
225 |
margin: .5em 0;
|
226 |
padding: 10px 15px;
|
227 |
+
text-align: left;
|
228 |
}
|
229 |
.pmpro_success {
|
230 |
background-color: #dff0d8;
|
231 |
border-color: #d6e9c6;
|
232 |
color: #3c763d;
|
233 |
}
|
234 |
+
.pmpro_error,
|
235 |
+
input[type="text"].pmpro_error,
|
236 |
+
input[type="email"].pmpro_error,
|
237 |
+
input[type="url"].pmpro_error,
|
238 |
+
input[type="password"].pmpro_error,
|
239 |
+
input[type="number"].pmpro_error,
|
240 |
+
input[type="tel"].pmpro_error,
|
241 |
+
input[type="range"].pmpro_error,
|
242 |
+
input[type="date"].pmpro_error,
|
243 |
+
input[type="month"].pmpro_error,
|
244 |
+
input[type="week"].pmpro_error,
|
245 |
+
input[type="time"].pmpro_error,
|
246 |
+
input[type="datetime"].pmpro_error,
|
247 |
+
input[type="datetime-local"].pmpro_error,
|
248 |
+
input[type="color"].pmpro_error,
|
249 |
+
textarea.pmpro_error {
|
250 |
background-color: #f2dede;
|
251 |
border-color: #ebccd1;
|
252 |
color: #a94442;
|
278 |
select.pmpro_error {
|
279 |
background-image: none;
|
280 |
}
|
281 |
+
|
282 |
+
#pmpro_message_bottom {
|
283 |
+
margin-bottom: 1em;
|
284 |
+
}
|
285 |
/*---------------------------------------
|
286 |
Membership Checkout
|
287 |
---------------------------------------*/
|
302 |
margin-left: 2em;
|
303 |
}
|
304 |
#pmpro_payment_information_fields .pmpro_checkout-fields-display-seal {
|
305 |
+
clear: both;
|
306 |
+
display: -ms-grid;
|
307 |
display: grid;
|
308 |
+
-ms-grid-columns: 3fr 1em 1fr;
|
309 |
grid-template-columns: 3fr 1fr;
|
310 |
grid-gap: 1em;
|
311 |
}
|
331 |
margin-left: 1.5em;
|
332 |
}
|
333 |
.pmpro_invoice_details {
|
334 |
+
display: -ms-grid;
|
335 |
display: grid;
|
336 |
+
-ms-grid-columns: 1fr 1em 1fr 1em 1fr;
|
337 |
grid-template-columns: 1fr 1fr 1fr;
|
338 |
grid-gap: 1em;
|
339 |
}
|
437 |
font-size: .8em;
|
438 |
}
|
439 |
@media (max-width:768px) {
|
440 |
+
.pmpro_checkout h3 span.pmpro_checkout-h3-name {
|
441 |
+
display: block;
|
442 |
+
}
|
443 |
+
.pmpro_checkout h3 span.pmpro_checkout-h3-msg {
|
444 |
+
display: block;
|
445 |
+
margin-bottom: 1em;
|
446 |
+
}
|
447 |
form.pmpro_form input[type=text].input, form.pmpro_form input[type=password].input {
|
448 |
width: 90%;
|
449 |
}
|
450 |
form.pmpro_form input[type=text]#other_discount_code, form.pmpro_form input[type=text]#CVV, form.pmpro_form input[type=text]#discount_code {
|
451 |
width: 40%;
|
452 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
453 |
#pmpro_payment_information_fields .pmpro_checkout-fields-display-seal {
|
454 |
display: block;
|
455 |
}
|
email/payment_action.html
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<p>Customer authentication is required to finish setting up your subscription at !!sitename!!.</p>
|
2 |
+
|
3 |
+
<p>Please complete the verification steps issued by your payment provider at the following link:</p>
|
4 |
+
<p>!!invoice_url!!</p>
|
email/payment_action_admin.html
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<p>A payment at !!sitename!! for !!user_login!! requires additional authentication customer authentication to complete.</p>
|
2 |
+
<p>Below is a copy of the email we sent to !!user_email!! to notify them that they need to complete their payment:</p>
|
3 |
+
|
4 |
+
<p>Customer authentication is required to finish setting up your subscription at !!sitename!!.</p>
|
5 |
+
|
6 |
+
<p>Please complete the verification steps issued by your payment provider at the following link:</p>
|
7 |
+
<p>!!invoice_url!!</p>
|
includes/cleanup.php
CHANGED
@@ -21,6 +21,36 @@ function pmpro_delete_user($user_id = NULL)
|
|
21 |
add_action('delete_user', 'pmpro_delete_user');
|
22 |
add_action('wpmu_delete_user', 'pmpro_delete_user');
|
23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
//deleting a category? remove any level associations
|
25 |
function pmpro_delete_category($cat_id = NULL)
|
26 |
{
|
@@ -33,7 +63,7 @@ add_action('delete_category', 'pmpro_delete_category');
|
|
33 |
//deleting a post? remove any level associations
|
34 |
function pmpro_delete_post($post_id = NULL)
|
35 |
{
|
36 |
-
global $wpdb;
|
37 |
$sqlQuery = "DELETE FROM $wpdb->pmpro_memberships_pages WHERE page_id = '" . $post_id . "'";
|
38 |
$wpdb->query($sqlQuery);
|
39 |
}
|
21 |
add_action('delete_user', 'pmpro_delete_user');
|
22 |
add_action('wpmu_delete_user', 'pmpro_delete_user');
|
23 |
|
24 |
+
/**
|
25 |
+
* Show a notice on the Delete User form so admin knows that membership and subscriptions will be cancelled.
|
26 |
+
*
|
27 |
+
* @param WP_User $current_user WP_User object for the current user.
|
28 |
+
* @param int[] $userids Array of IDs for users being deleted.
|
29 |
+
*/
|
30 |
+
function pmpro_delete_user_form_notice( $current_user, $userids ) {
|
31 |
+
// Check if any users for deletion have an an active membership level.
|
32 |
+
foreach ( $userids as $user_id ) {
|
33 |
+
$userids_have_levels = pmpro_hasMembershipLevel( null, $user_id );
|
34 |
+
if ( ! empty( $userids_have_levels ) ) {
|
35 |
+
break;
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
// Show a notice if users for deletion have an an active membership level.
|
40 |
+
if ( ! empty( $userids_have_levels ) ) { ?>
|
41 |
+
<div class="notice notice-error inline">
|
42 |
+
<?php if ( count( $userids ) > 1 ) {
|
43 |
+
_e( '<p><strong>Warning:</strong> One or more users for deletion have an active membership level. Deleting a user will also cancel their membership and recurring subscription.</p>', 'paid-memberships-pro' );
|
44 |
+
} else {
|
45 |
+
_e( '<p><strong>Warning:</strong> This user has an active membership level. Deleting a user will also cancel their membership and recurring subscription.</p>', 'paid-memberships-pro' );
|
46 |
+
}
|
47 |
+
?>
|
48 |
+
</div>
|
49 |
+
<?php
|
50 |
+
}
|
51 |
+
}
|
52 |
+
add_action( 'delete_user_form', 'pmpro_delete_user_form_notice', 10, 2 );
|
53 |
+
|
54 |
//deleting a category? remove any level associations
|
55 |
function pmpro_delete_category($cat_id = NULL)
|
56 |
{
|
63 |
//deleting a post? remove any level associations
|
64 |
function pmpro_delete_post($post_id = NULL)
|
65 |
{
|
66 |
+
global $wpdb;
|
67 |
$sqlQuery = "DELETE FROM $wpdb->pmpro_memberships_pages WHERE page_id = '" . $post_id . "'";
|
68 |
$wpdb->query($sqlQuery);
|
69 |
}
|
includes/currencies.php
CHANGED
@@ -61,6 +61,9 @@
|
|
61 |
'PLN' => __('Polish Zloty', 'paid-memberships-pro' ),
|
62 |
'RUB' => array(
|
63 |
'name' => __('Russian Ruble (₽)', 'paid-memberships-pro'),
|
|
|
|
|
|
|
64 |
'symbol' => '₽',
|
65 |
'position' => 'right'
|
66 |
),
|
61 |
'PLN' => __('Polish Zloty', 'paid-memberships-pro' ),
|
62 |
'RUB' => array(
|
63 |
'name' => __('Russian Ruble (₽)', 'paid-memberships-pro'),
|
64 |
+
'decimals' => '0',
|
65 |
+
'thousands_separator' => ' ',
|
66 |
+
'decimal_separator' => ',',
|
67 |
'symbol' => '₽',
|
68 |
'position' => 'right'
|
69 |
),
|
includes/filters.php
CHANGED
@@ -139,7 +139,7 @@ function pmpro_required_billing_fields_stripe_lite( $fields ) {
|
|
139 |
}
|
140 |
|
141 |
// some fields to remove
|
142 |
-
$remove = array( 'bfirstname', 'blastname', 'baddress1', 'bcity', 'bstate', 'bzipcode', 'bphone', 'bcountry'
|
143 |
|
144 |
// if a user is logged in, don't require bemail either
|
145 |
global $current_user;
|
139 |
}
|
140 |
|
141 |
// some fields to remove
|
142 |
+
$remove = array( 'bfirstname', 'blastname', 'baddress1', 'bcity', 'bstate', 'bzipcode', 'bphone', 'bcountry' );
|
143 |
|
144 |
// if a user is logged in, don't require bemail either
|
145 |
global $current_user;
|
includes/functions.php
CHANGED
@@ -160,6 +160,11 @@ function pmpro_url( $page = null, $querystring = '', $scheme = null ) {
|
|
160 |
$url = str_replace( 'http:', 'https:', $url );
|
161 |
}
|
162 |
}
|
|
|
|
|
|
|
|
|
|
|
163 |
|
164 |
return $url;
|
165 |
}
|
@@ -184,6 +189,19 @@ function pmpro_areLevelsFree( $levelarr ) {
|
|
184 |
return true;
|
185 |
}
|
186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
function pmpro_isLevelRecurring( &$level ) {
|
188 |
if ( ! empty( $level ) && ( $level->billing_amount > 0 || $level->trial_amount > 0 ) ) {
|
189 |
return true;
|
@@ -291,10 +309,11 @@ function pmpro_loadTemplate( $page_name = null, $where = 'local', $type = 'pages
|
|
291 |
// Valid types: 'email', 'pages'
|
292 |
$templates = apply_filters( "pmpro_{$type}_custom_template_path", $default_templates, $page_name, $type, $where, $ext );
|
293 |
$user_templates = array_diff( $templates, $default_templates );
|
|
|
294 |
|
295 |
// user specified a custom template path, so it has priority.
|
296 |
if ( ! empty( $user_templates ) ) {
|
297 |
-
$
|
298 |
}
|
299 |
|
300 |
// last element included in the array is the most first one we try to load
|
@@ -1412,7 +1431,7 @@ function pmpro_calculateInitialPaymentRevenue( $s = null, $l = null ) {
|
|
1412 |
if ( $s || $l ) {
|
1413 |
$user_ids_query = "SELECT u.ID FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id WHERE mu.status = 'active' ";
|
1414 |
if ( $s ) {
|
1415 |
-
$user_ids_query .= "AND (u.user_login LIKE '%" . esc_sql( $s ) . "%' OR u.user_email LIKE '%" . esc_sql( $s ) . "%' OR um.meta_value LIKE '%$" . esc_sql( s ) . "%') ";
|
1416 |
}
|
1417 |
if ( $l ) {
|
1418 |
$user_ids_query .= "AND mu.membership_id = '" . esc_sql( $l ) . "' ";
|
@@ -1468,54 +1487,74 @@ function pmpro_calculateRecurringRevenue( $s, $l ) {
|
|
1468 |
return $total;
|
1469 |
}
|
1470 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1471 |
function pmpro_generateUsername( $firstname = '', $lastname = '', $email = '' ) {
|
1472 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1473 |
|
1474 |
-
//
|
1475 |
-
$firstname
|
1476 |
-
|
1477 |
-
if ( $firstname && $lastname ) {
|
1478 |
$username = substr( $firstname, 0, 1 ) . $lastname;
|
1479 |
-
} elseif ( $firstname ) {
|
|
|
1480 |
$username = $firstname;
|
1481 |
-
} elseif ( $lastname ) {
|
|
|
1482 |
$username = $lastname;
|
1483 |
}
|
1484 |
|
1485 |
-
//
|
1486 |
-
|
1487 |
-
|
1488 |
-
|
1489 |
-
|
1490 |
-
|
1491 |
-
|
1492 |
-
|
1493 |
-
|
1494 |
-
|
1495 |
-
|
1496 |
}
|
1497 |
|
1498 |
-
|
1499 |
-
|
|
|
1500 |
}
|
1501 |
|
1502 |
-
// is
|
1503 |
$taken = true;
|
1504 |
$count = 0;
|
1505 |
while ( $taken ) {
|
1506 |
-
//
|
1507 |
if ( $count ) {
|
1508 |
$username = preg_replace( '/[0-9]/', '', $username ) . $count;
|
1509 |
}
|
1510 |
|
1511 |
-
// taken
|
1512 |
-
$taken =
|
1513 |
|
1514 |
-
//
|
1515 |
$count++;
|
1516 |
}
|
1517 |
|
1518 |
-
//
|
|
|
|
|
|
|
1519 |
return $username;
|
1520 |
}
|
1521 |
|
@@ -2438,31 +2477,92 @@ function pmpro_formatPrice( $price ) {
|
|
2438 |
// start with the rounded price
|
2439 |
$formatted = pmpro_round_price( $price );
|
2440 |
|
|
|
|
|
|
|
|
|
|
|
2441 |
// settings stored in array?
|
2442 |
if ( ! empty( $pmpro_currencies[ $pmpro_currency ] ) && is_array( $pmpro_currencies[ $pmpro_currency ] ) ) {
|
2443 |
// format number do decimals, with decimal_separator and thousands_separator
|
2444 |
$formatted = number_format(
|
2445 |
$formatted,
|
2446 |
-
|
2447 |
-
|
2448 |
-
|
2449 |
);
|
2450 |
|
2451 |
// which side is the symbol on?
|
2452 |
-
if ( ! empty( $
|
2453 |
$formatted = $pmpro_currency_symbol . $formatted;
|
2454 |
} else {
|
2455 |
$formatted = $formatted . $pmpro_currency_symbol;
|
2456 |
}
|
2457 |
} else {
|
2458 |
// default to symbol on the left, 2 decimals using . and ,
|
2459 |
-
$formatted = $pmpro_currency_symbol . number_format( $formatted,
|
2460 |
}
|
2461 |
|
|
|
|
|
|
|
2462 |
// filter
|
2463 |
return apply_filters( 'pmpro_format_price', $formatted, $price, $pmpro_currency, $pmpro_currency_symbol );
|
2464 |
}
|
2465 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2466 |
/**
|
2467 |
* Which side does the currency symbol go on?
|
2468 |
*
|
@@ -2487,7 +2587,7 @@ function pmpro_getCurrencyPosition() {
|
|
2487 |
*/
|
2488 |
function pmpro_round_price( $price, $currency = '' ) {
|
2489 |
global $pmpro_currency, $pmpro_currencies;
|
2490 |
-
$decimals =
|
2491 |
|
2492 |
if ( '' === $currency && ! empty( $pmpro_currencies[ $pmpro_currency ] ) ) {
|
2493 |
$currency = $pmpro_currency;
|
@@ -2510,7 +2610,7 @@ function pmpro_round_price( $price, $currency = '' ) {
|
|
2510 |
}
|
2511 |
|
2512 |
/**
|
2513 |
-
* Cast to
|
2514 |
* when editing the price on the edit level page.
|
2515 |
* Only do this for currency with decimals = 2
|
2516 |
* Only do this if using . as the decimal separator.
|
@@ -2761,7 +2861,7 @@ function pmpro_sanitize_with_safelist( $needle, $safelist ) {
|
|
2761 |
}
|
2762 |
}
|
2763 |
|
2764 |
-
|
2765 |
* Return an array of allowed order statuses
|
2766 |
*
|
2767 |
* @since 1.9.3
|
@@ -2817,3 +2917,166 @@ function pmpro_cleanup_memberships_users_table() {
|
|
2817 |
SET status = 'inactive'";
|
2818 |
$wpdb->query( $sqlQuery );
|
2819 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
$url = str_replace( 'http:', 'https:', $url );
|
161 |
}
|
162 |
}
|
163 |
+
|
164 |
+
/**
|
165 |
+
* Filter the URL before returning.
|
166 |
+
*/
|
167 |
+
$url = apply_filters( 'pmpro_url', $url, $page, $querystring, $scheme );
|
168 |
|
169 |
return $url;
|
170 |
}
|
189 |
return true;
|
190 |
}
|
191 |
|
192 |
+
/**
|
193 |
+
* Check to see if only free levels are available.
|
194 |
+
* @return boolean This will return true if only free levels are available for signup.
|
195 |
+
* @internal Creates a filter 'pmpro_only_free_levels'.
|
196 |
+
* @since 2.1
|
197 |
+
*/
|
198 |
+
function pmpro_onlyFreeLevels() {
|
199 |
+
// Get levels that are available for checkout only.
|
200 |
+
$levels = pmpro_getAllLevels( false, true );
|
201 |
+
|
202 |
+
return apply_filters( 'pmpro_only_free_levels', pmpro_areLevelsFree( $levels ) );
|
203 |
+
}
|
204 |
+
|
205 |
function pmpro_isLevelRecurring( &$level ) {
|
206 |
if ( ! empty( $level ) && ( $level->billing_amount > 0 || $level->trial_amount > 0 ) ) {
|
207 |
return true;
|
309 |
// Valid types: 'email', 'pages'
|
310 |
$templates = apply_filters( "pmpro_{$type}_custom_template_path", $default_templates, $page_name, $type, $where, $ext );
|
311 |
$user_templates = array_diff( $templates, $default_templates );
|
312 |
+
$allowed_default_templates = array_intersect( $templates, $default_templates );
|
313 |
|
314 |
// user specified a custom template path, so it has priority.
|
315 |
if ( ! empty( $user_templates ) ) {
|
316 |
+
array_merge($allowed_default_templates, $user_templates);
|
317 |
}
|
318 |
|
319 |
// last element included in the array is the most first one we try to load
|
1431 |
if ( $s || $l ) {
|
1432 |
$user_ids_query = "SELECT u.ID FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON u.ID = um.user_id LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id WHERE mu.status = 'active' ";
|
1433 |
if ( $s ) {
|
1434 |
+
$user_ids_query .= "AND (u.user_login LIKE '%" . esc_sql( $s ) . "%' OR u.user_email LIKE '%" . esc_sql( $s ) . "%' OR um.meta_value LIKE '%$" . esc_sql( $s ) . "%') ";
|
1435 |
}
|
1436 |
if ( $l ) {
|
1437 |
$user_ids_query .= "AND mu.membership_id = '" . esc_sql( $l ) . "' ";
|
1487 |
return $total;
|
1488 |
}
|
1489 |
|
1490 |
+
/**
|
1491 |
+
* Generate a Username from the provided first name, last name or email address.
|
1492 |
+
*
|
1493 |
+
* @param string $firstname User-submitted First Name.
|
1494 |
+
* @param string $lastname User-submitted Last Name.
|
1495 |
+
* @param string $email User-submitted Email Address.
|
1496 |
+
*
|
1497 |
+
* @return string $username.
|
1498 |
+
*/
|
1499 |
function pmpro_generateUsername( $firstname = '', $lastname = '', $email = '' ) {
|
1500 |
+
// Strip all non-alpha characters from first and last name.
|
1501 |
+
if ( ! empty( $firstname) ) {
|
1502 |
+
$firstname = preg_replace( '/[^A-Za-z]/', '', $firstname );
|
1503 |
+
}
|
1504 |
+
if ( ! empty( $lastname ) ) {
|
1505 |
+
$lastname = preg_replace( '/[^A-Za-z]/', '', $lastname );
|
1506 |
+
}
|
1507 |
|
1508 |
+
// Try to create username using first and last name.
|
1509 |
+
if ( ! empty( $firstname ) && ! empty( $lastname ) ) {
|
1510 |
+
// Create username using first initial + last name.
|
|
|
1511 |
$username = substr( $firstname, 0, 1 ) . $lastname;
|
1512 |
+
} elseif ( ! empty( $firstname ) ) {
|
1513 |
+
// Create username using only first name.
|
1514 |
$username = $firstname;
|
1515 |
+
} elseif ( ! empty( $lastname ) ) {
|
1516 |
+
// Create username using only last name.
|
1517 |
$username = $lastname;
|
1518 |
}
|
1519 |
|
1520 |
+
// If no username yet or one based on name exisdts,
|
1521 |
+
// try to create username using email address.
|
1522 |
+
if ( ( empty( $username ) || username_exists( $username ) )
|
1523 |
+
&& ! empty( $email ) && is_email( $email ) ) {
|
1524 |
+
// Break email into two parts, before and after the @ symbol.
|
1525 |
+
$emailparts = explode( '@', $email );
|
1526 |
+
if ( ! empty( $emailparts ) ) {
|
1527 |
+
// Set username to the string before the email's @ symbol.
|
1528 |
+
$email = preg_replace( '/[^A-Za-z0-9]/', '', $emailparts[0] );
|
1529 |
+
$username = $email;
|
1530 |
+
}
|
1531 |
}
|
1532 |
|
1533 |
+
// No Username yet. Generate a random one.
|
1534 |
+
if ( empty( $username ) ) {
|
1535 |
+
$username = wp_generate_password( 10, false );
|
1536 |
}
|
1537 |
|
1538 |
+
// Check if username is taken and continue to append an incremented number until it is unique.
|
1539 |
$taken = true;
|
1540 |
$count = 0;
|
1541 |
while ( $taken ) {
|
1542 |
+
// Append a number to the end of the username.
|
1543 |
if ( $count ) {
|
1544 |
$username = preg_replace( '/[0-9]/', '', $username ) . $count;
|
1545 |
}
|
1546 |
|
1547 |
+
// Check if the username is taken.
|
1548 |
+
$taken = username_exists( $username );
|
1549 |
|
1550 |
+
// Increment the number.
|
1551 |
$count++;
|
1552 |
}
|
1553 |
|
1554 |
+
// Sanitize the username.
|
1555 |
+
$username = sanitize_user( $username );
|
1556 |
+
|
1557 |
+
// We must have a good username now.
|
1558 |
return $username;
|
1559 |
}
|
1560 |
|
2477 |
// start with the rounded price
|
2478 |
$formatted = pmpro_round_price( $price );
|
2479 |
|
2480 |
+
$decimals = isset( $pmpro_currencies[ $pmpro_currency ]['decimals'] ) ? (int) $pmpro_currencies[ $pmpro_currency ]['decimals'] : pmpro_get_decimal_place();
|
2481 |
+
$decimal_separator = isset( $pmpro_currencies[ $pmpro_currency ]['decimal_separator'] ) ? $pmpro_currencies[ $pmpro_currency ]['decimal_separator'] : '.';
|
2482 |
+
$thousands_separator = isset( $pmpro_currencies[ $pmpro_currency ]['thousands_separator'] ) ? $pmpro_currencies[ $pmpro_currency ]['thousands_separator'] : ',';
|
2483 |
+
$symbol_position = isset( $pmpro_currencies[ $pmpro_currency ]['position'] ) ? $pmpro_currencies[ $pmpro_currency ]['position'] : 'left';
|
2484 |
+
|
2485 |
// settings stored in array?
|
2486 |
if ( ! empty( $pmpro_currencies[ $pmpro_currency ] ) && is_array( $pmpro_currencies[ $pmpro_currency ] ) ) {
|
2487 |
// format number do decimals, with decimal_separator and thousands_separator
|
2488 |
$formatted = number_format(
|
2489 |
$formatted,
|
2490 |
+
$decimals,
|
2491 |
+
$decimal_separator,
|
2492 |
+
$thousands_separator
|
2493 |
);
|
2494 |
|
2495 |
// which side is the symbol on?
|
2496 |
+
if ( ! empty( $symbol_position ) && $symbol_position == 'left' ) {
|
2497 |
$formatted = $pmpro_currency_symbol . $formatted;
|
2498 |
} else {
|
2499 |
$formatted = $formatted . $pmpro_currency_symbol;
|
2500 |
}
|
2501 |
} else {
|
2502 |
// default to symbol on the left, 2 decimals using . and ,
|
2503 |
+
$formatted = $pmpro_currency_symbol . number_format( $formatted, pmpro_get_decimal_place() );
|
2504 |
}
|
2505 |
|
2506 |
+
// Trim the trailing zero values.
|
2507 |
+
$formatted = pmpro_trim_trailing_zeroes( $formatted, $decimals, $decimal_separator, $pmpro_currency_symbol, $symbol_position );
|
2508 |
+
|
2509 |
// filter
|
2510 |
return apply_filters( 'pmpro_format_price', $formatted, $price, $pmpro_currency, $pmpro_currency_symbol );
|
2511 |
}
|
2512 |
|
2513 |
+
|
2514 |
+
/**
|
2515 |
+
* Function to trim trailing zeros from an amount.
|
2516 |
+
* @since 2.1
|
2517 |
+
* @return float $amount The trimmed amount (removed trailing zeroes).
|
2518 |
+
*/
|
2519 |
+
function pmpro_trim_trailing_zeroes( $amount, $decimals, $decimal_separator, $symbol, $symbol_position = "left" ) {
|
2520 |
+
|
2521 |
+
if ( $decimals <= 2 ) {
|
2522 |
+
return $amount;
|
2523 |
+
}
|
2524 |
+
//Check to see if decimal places are only 0. if so, then don't trim it.
|
2525 |
+
$decimal_value = explode( $decimal_separator, $amount );
|
2526 |
+
|
2527 |
+
if ( empty( $decimal_value[1] ) ) {
|
2528 |
+
return $amount;
|
2529 |
+
}
|
2530 |
+
|
2531 |
+
$is_zero = round( intval( $decimal_value[1] ) );
|
2532 |
+
// Store this in a variable for another time.
|
2533 |
+
$original_amount = $amount;
|
2534 |
+
|
2535 |
+
if ( $is_zero > 0 ) {
|
2536 |
+
if ( $symbol_position == 'right' ) {
|
2537 |
+
$amount = rtrim( $amount, $symbol ); // remove currency symbol.
|
2538 |
+
$amount = rtrim( $amount, 0 ); // remove trailing 0's.
|
2539 |
+
|
2540 |
+
// put the symbol back.
|
2541 |
+
$amount .= $symbol;
|
2542 |
+
} else {
|
2543 |
+
$amount = rtrim( $amount, 0 ); // remove trailing 0's.
|
2544 |
+
}
|
2545 |
+
}
|
2546 |
+
|
2547 |
+
$amount = apply_filters( 'pmpro_trim_cost_amount', $amount, $original_amount, $decimal_separator, $symbol, $symbol_position );
|
2548 |
+
|
2549 |
+
return $amount;
|
2550 |
+
}
|
2551 |
+
|
2552 |
+
/**
|
2553 |
+
* Allow users to adjust the allowed decimal places.
|
2554 |
+
* @since 2.1
|
2555 |
+
*/
|
2556 |
+
function pmpro_get_decimal_place() {
|
2557 |
+
// filter this to support different decimal places.
|
2558 |
+
$decimal_place = apply_filters( 'pmpro_decimal_places', 2 );
|
2559 |
+
|
2560 |
+
if ( intval( $decimal_place ) > 8 ) {
|
2561 |
+
$decimal_place = 8;
|
2562 |
+
}
|
2563 |
+
|
2564 |
+
return $decimal_place;
|
2565 |
+
}
|
2566 |
/**
|
2567 |
* Which side does the currency symbol go on?
|
2568 |
*
|
2587 |
*/
|
2588 |
function pmpro_round_price( $price, $currency = '' ) {
|
2589 |
global $pmpro_currency, $pmpro_currencies;
|
2590 |
+
$decimals = pmpro_get_decimal_place();
|
2591 |
|
2592 |
if ( '' === $currency && ! empty( $pmpro_currencies[ $pmpro_currency ] ) ) {
|
2593 |
$currency = $pmpro_currency;
|
2610 |
}
|
2611 |
|
2612 |
/**
|
2613 |
+
* Cast to floats and pad zeroes after the decimal
|
2614 |
* when editing the price on the edit level page.
|
2615 |
* Only do this for currency with decimals = 2
|
2616 |
* Only do this if using . as the decimal separator.
|
2861 |
}
|
2862 |
}
|
2863 |
|
2864 |
+
/**
|
2865 |
* Return an array of allowed order statuses
|
2866 |
*
|
2867 |
* @since 1.9.3
|
2917 |
SET status = 'inactive'";
|
2918 |
$wpdb->query( $sqlQuery );
|
2919 |
}
|
2920 |
+
|
2921 |
+
/**
|
2922 |
+
* Are we on the PMPro checkout page?
|
2923 |
+
* @since 2.1
|
2924 |
+
* @return bool True if we are on the checkout page, false otherwise
|
2925 |
+
*/
|
2926 |
+
function pmpro_is_checkout() {
|
2927 |
+
global $pmpro_pages;
|
2928 |
+
|
2929 |
+
// Try is_page first.
|
2930 |
+
if ( isset( $pmpro_pages['checkout'] ) ) {
|
2931 |
+
$is_checkout = is_page( $pmpro_pages['checkout'] );
|
2932 |
+
} else {
|
2933 |
+
$is_checkout = false;
|
2934 |
+
}
|
2935 |
+
|
2936 |
+
// Page might not be setup yet or a custom page.
|
2937 |
+
$queried_object = get_queried_object();
|
2938 |
+
|
2939 |
+
if ( ! $is_checkout &&
|
2940 |
+
! empty( $queried_object ) &&
|
2941 |
+
! empty( $queried_object->post_content ) &&
|
2942 |
+
( has_shortcode( $queried_object->post_content, 'pmpro_checkout' ) ||
|
2943 |
+
( function_exists( 'has_block' ) &&
|
2944 |
+
has_block( 'pmpro/checkout-page', $queried_object->post_content )
|
2945 |
+
)
|
2946 |
+
)
|
2947 |
+
) {
|
2948 |
+
$is_checkout = true;
|
2949 |
+
}
|
2950 |
+
|
2951 |
+
/**
|
2952 |
+
* Filter for pmpro_is_checkout return value.
|
2953 |
+
* @since 2.1
|
2954 |
+
* @param bool $is_checkout true if we are on the checkout page, false otherwise
|
2955 |
+
*/
|
2956 |
+
$is_checkout = apply_filters( 'pmpro_is_checkout', $is_checkout );
|
2957 |
+
|
2958 |
+
return $is_checkout;
|
2959 |
+
}
|
2960 |
+
|
2961 |
+
/**
|
2962 |
+
* Are we showing discount codes at checkout?
|
2963 |
+
*/
|
2964 |
+
function pmpro_show_discount_code() {
|
2965 |
+
global $wpdb;
|
2966 |
+
static $show;
|
2967 |
+
|
2968 |
+
// check DB if we haven't yet
|
2969 |
+
if ( !isset( $show ) ) {
|
2970 |
+
if ( $wpdb->get_var( "SELECT id FROM $wpdb->pmpro_discount_codes LIMIT 1" ) ) {
|
2971 |
+
$show = true;
|
2972 |
+
} else {
|
2973 |
+
$show = false;
|
2974 |
+
}
|
2975 |
+
}
|
2976 |
+
|
2977 |
+
$show = apply_filters( "pmpro_show_discount_code", $show );
|
2978 |
+
|
2979 |
+
return $show;
|
2980 |
+
}
|
2981 |
+
|
2982 |
+
/**
|
2983 |
+
* Check if the checkout form was submitted.
|
2984 |
+
* Accounts for image buttons/etc.
|
2985 |
+
* @since 2.1
|
2986 |
+
* @return bool True if the form was submitted, else false.
|
2987 |
+
*/
|
2988 |
+
function pmpro_was_checkout_form_submitted() {
|
2989 |
+
// Default to false.
|
2990 |
+
$submit = false;
|
2991 |
+
|
2992 |
+
// Basic check for a field called submit-checkout.
|
2993 |
+
if ( isset( $_REQUEST['submit-checkout'] ) ) {
|
2994 |
+
$submit = true;
|
2995 |
+
}
|
2996 |
+
|
2997 |
+
// _x stuff in case they clicked on the image button with their mouse
|
2998 |
+
if ( empty( $submit ) && isset( $_REQUEST['submit-checkout_x'] ) ) {
|
2999 |
+
$submit = true;
|
3000 |
+
}
|
3001 |
+
|
3002 |
+
return $submit;
|
3003 |
+
}
|
3004 |
+
|
3005 |
+
/**
|
3006 |
+
* Build the order object used at checkout.
|
3007 |
+
* @since 2.1
|
3008 |
+
* @return mixed $order Order object.
|
3009 |
+
*/
|
3010 |
+
function pmpro_build_order_for_checkout() {
|
3011 |
+
global $post, $gateway, $wpdb, $besecure, $discount_code, $discount_code_id, $pmpro_level, $pmpro_levels, $pmpro_msg, $pmpro_msgt, $pmpro_review, $skip_account_fields, $pmpro_paypal_token, $pmpro_show_discount_code, $pmpro_error_fields, $pmpro_required_billing_fields, $pmpro_required_user_fields, $wp_version, $current_user, $pmpro_requirebilling, $tospage, $username, $password, $password2, $bfirstname, $blastname, $baddress1, $baddress2, $bcity, $bstate, $bzipcode, $bcountry, $bphone, $bemail, $bconfirmemail, $CardType, $AccountNumber, $ExpirationMonth, $ExpirationYear, $pmpro_states, $recaptcha, $recaptcha_privatekey, $CVV;
|
3012 |
+
|
3013 |
+
$morder = new MemberOrder();
|
3014 |
+
$morder->membership_id = $pmpro_level->id;
|
3015 |
+
$morder->membership_name = $pmpro_level->name;
|
3016 |
+
$morder->discount_code = $discount_code;
|
3017 |
+
$morder->InitialPayment = pmpro_round_price( $pmpro_level->initial_payment );
|
3018 |
+
$morder->PaymentAmount = pmpro_round_price( $pmpro_level->billing_amount );
|
3019 |
+
$morder->ProfileStartDate = date_i18n( "Y-m-d", current_time( "timestamp" ) ) . "T0:0:0";
|
3020 |
+
$morder->BillingPeriod = $pmpro_level->cycle_period;
|
3021 |
+
$morder->BillingFrequency = $pmpro_level->cycle_number;
|
3022 |
+
if ( $pmpro_level->billing_limit ) {
|
3023 |
+
$morder->TotalBillingCycles = $pmpro_level->billing_limit;
|
3024 |
+
}
|
3025 |
+
if ( pmpro_isLevelTrial( $pmpro_level ) ) {
|
3026 |
+
$morder->TrialBillingPeriod = $pmpro_level->cycle_period;
|
3027 |
+
$morder->TrialBillingFrequency = $pmpro_level->cycle_number;
|
3028 |
+
$morder->TrialBillingCycles = $pmpro_level->trial_limit;
|
3029 |
+
$morder->TrialAmount = pmpro_round_price( $pmpro_level->trial_amount );
|
3030 |
+
}
|
3031 |
+
|
3032 |
+
// Credit card values.
|
3033 |
+
$morder->cardtype = $CardType;
|
3034 |
+
$morder->accountnumber = $AccountNumber;
|
3035 |
+
$morder->expirationmonth = $ExpirationMonth;
|
3036 |
+
$morder->expirationyear = $ExpirationYear;
|
3037 |
+
$morder->ExpirationDate = $ExpirationMonth . $ExpirationYear;
|
3038 |
+
$morder->ExpirationDate_YdashM = $ExpirationYear . "-" . $ExpirationMonth;
|
3039 |
+
$morder->CVV2 = $CVV;
|
3040 |
+
|
3041 |
+
// Not saving email in order table, but the sites need it.
|
3042 |
+
$morder->Email = $bemail;
|
3043 |
+
|
3044 |
+
// Save the user ID if logged in.
|
3045 |
+
if ( $current_user->ID ) {
|
3046 |
+
$morder->user_id = $current_user->ID;
|
3047 |
+
}
|
3048 |
+
|
3049 |
+
// Sometimes we need these split up.
|
3050 |
+
$morder->FirstName = $bfirstname;
|
3051 |
+
$morder->LastName = $blastname;
|
3052 |
+
$morder->Address1 = $baddress1;
|
3053 |
+
$morder->Address2 = $baddress2;
|
3054 |
+
|
3055 |
+
// Set other values.
|
3056 |
+
$morder->billing = new stdClass();
|
3057 |
+
$morder->billing->name = $bfirstname . " " . $blastname;
|
3058 |
+
$morder->billing->street = trim( $baddress1 . " " . $baddress2 );
|
3059 |
+
$morder->billing->city = $bcity;
|
3060 |
+
$morder->billing->state = $bstate;
|
3061 |
+
$morder->billing->country = $bcountry;
|
3062 |
+
$morder->billing->zip = $bzipcode;
|
3063 |
+
$morder->billing->phone = $bphone;
|
3064 |
+
$morder->gateway = $gateway;
|
3065 |
+
$morder->setGateway();
|
3066 |
+
|
3067 |
+
// Set up level var.
|
3068 |
+
$morder->getMembershipLevelAtCheckout();
|
3069 |
+
|
3070 |
+
// Set tax.
|
3071 |
+
$initial_tax = $morder->getTaxForPrice( $morder->InitialPayment );
|
3072 |
+
$recurring_tax = $morder->getTaxForPrice( $morder->PaymentAmount );
|
3073 |
+
|
3074 |
+
// Set amounts.
|
3075 |
+
$morder->initial_amount = pmpro_round_price((float)$morder->InitialPayment + (float)$initial_tax);
|
3076 |
+
$morder->subscription_amount = pmpro_round_price((float)$morder->PaymentAmount + (float)$recurring_tax);
|
3077 |
+
|
3078 |
+
// Filter for order, since v1.8
|
3079 |
+
$morder = apply_filters( 'pmpro_checkout_order', $morder );
|
3080 |
+
|
3081 |
+
return $morder;
|
3082 |
+
}
|
includes/init.php
CHANGED
@@ -8,77 +8,6 @@ function pmpro_init() {
|
|
8 |
require_once(PMPRO_DIR . '/includes/states.php');
|
9 |
require_once(PMPRO_DIR . '/includes/currencies.php');
|
10 |
|
11 |
-
if( is_admin() ) {
|
12 |
-
// Admin scripts and styles. We could use the admin_enqueue_scripts, but this works too.
|
13 |
-
|
14 |
-
wp_register_script( 'pmpro_admin', plugins_url( 'js/paid-memberships-pro.js', dirname(__FILE__) ), array( 'jquery' ) );
|
15 |
-
$all_levels = pmpro_getAllLevels( true, true );
|
16 |
-
$all_level_values_and_labels = array();
|
17 |
-
foreach( $all_levels as $level ) {
|
18 |
-
$all_level_values_and_labels[] = array( 'value' => $level->id, 'label' => $level->name );
|
19 |
-
}
|
20 |
-
wp_localize_script( 'pmpro_admin', 'pmpro', array(
|
21 |
-
'all_levels' => $all_levels,
|
22 |
-
'all_level_values_and_labels' => $all_level_values_and_labels
|
23 |
-
));
|
24 |
-
wp_enqueue_script( 'pmpro_admin' );
|
25 |
-
|
26 |
-
$admin_css_rtl = false;
|
27 |
-
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/admin.css")) {
|
28 |
-
$admin_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/admin.css";
|
29 |
-
if( is_rtl() && file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/admin-rtl.css") ) {
|
30 |
-
$admin_css_rtl = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/admin-rtl.css";
|
31 |
-
}
|
32 |
-
} elseif(file_exists(get_template_directory() . "/paid-memberships-pro/admin.css")) {
|
33 |
-
$admin_css = get_template_directory_uri() . "/paid-memberships-pro/admin.css";
|
34 |
-
if( is_rtl() && file_exists(get_template_directory() . "/paid-memberships-pro/css/admin-rtl.css") ) {
|
35 |
-
$admin_css_rtl = get_template_directory_uri() . "/paid-memberships-pro/css/admin-rtl.css";
|
36 |
-
}
|
37 |
-
} else {
|
38 |
-
$admin_css = plugins_url('css/admin.css',dirname(__FILE__) );
|
39 |
-
if( is_rtl() ) {
|
40 |
-
$admin_css_rtl = plugins_url('css/admin-rtl.css',dirname(__FILE__) );
|
41 |
-
}
|
42 |
-
}
|
43 |
-
wp_enqueue_style('pmpro_admin', $admin_css, array(), PMPRO_VERSION, "screen");
|
44 |
-
if( $admin_css_rtl ) {
|
45 |
-
wp_enqueue_style('pmpro_admin_rtl', $admin_css_rtl, array(), PMPRO_VERSION, "screen");
|
46 |
-
}
|
47 |
-
|
48 |
-
wp_enqueue_script('jquery-ui-sortable');
|
49 |
-
} else {
|
50 |
-
// Frontend styles.
|
51 |
-
$frontend_css_rtl = false;
|
52 |
-
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/frontend.css")) {
|
53 |
-
$frontend_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/frontend.css";
|
54 |
-
if( is_rtl() && file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/frontend-rtl.css") ) {
|
55 |
-
$frontend_css_rtl = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/frontend-rtl.css";
|
56 |
-
}
|
57 |
-
} elseif(file_exists(get_template_directory() . "/paid-memberships-pro/frontend.css")) {
|
58 |
-
$frontend_css = get_template_directory_uri() . "/paid-memberships-pro/frontend.css";
|
59 |
-
if( is_rtl() && file_exists(get_template_directory() . "/paid-memberships-pro/css/frontend-rtl.css") ) {
|
60 |
-
$frontend_css_rtl = get_template_directory_uri() . "/paid-memberships-pro/css/frontend-rtl.css";
|
61 |
-
}
|
62 |
-
} else {
|
63 |
-
$frontend_css = plugins_url('css/frontend.css',dirname(__FILE__) );
|
64 |
-
if( is_rtl() ) {
|
65 |
-
$frontend_css_rtl = plugins_url('css/frontend-rtl.css',dirname(__FILE__) );
|
66 |
-
}
|
67 |
-
}
|
68 |
-
wp_enqueue_style('pmpro_frontend', $frontend_css, array(), PMPRO_VERSION, "screen");
|
69 |
-
if( $frontend_css_rtl ) {
|
70 |
-
wp_enqueue_style('pmpro_frontend_rtl', $frontend_css_rtl, array(), PMPRO_VERSION, "screen");
|
71 |
-
}
|
72 |
-
|
73 |
-
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/print.css"))
|
74 |
-
$print_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/print.css";
|
75 |
-
elseif(file_exists(get_template_directory() . "/paid-memberships-pro/print.css"))
|
76 |
-
$print_css = get_template_directory_uri() . "/paid-memberships-pro/print.css";
|
77 |
-
else
|
78 |
-
$print_css = plugins_url('css/print.css',dirname(__FILE__) );
|
79 |
-
wp_enqueue_style('pmpro_print', $print_css, array(), PMPRO_VERSION, "print");
|
80 |
-
}
|
81 |
-
|
82 |
global $pmpro_pages, $pmpro_core_pages, $pmpro_ready, $pmpro_currencies, $pmpro_currency, $pmpro_currency_symbol;
|
83 |
$pmpro_pages = array();
|
84 |
$pmpro_pages["account"] = pmpro_getOption("account_page_id");
|
8 |
require_once(PMPRO_DIR . '/includes/states.php');
|
9 |
require_once(PMPRO_DIR . '/includes/currencies.php');
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
global $pmpro_pages, $pmpro_core_pages, $pmpro_ready, $pmpro_currencies, $pmpro_currency, $pmpro_currency_symbol;
|
12 |
$pmpro_pages = array();
|
13 |
$pmpro_pages["account"] = pmpro_getOption("account_page_id");
|
includes/lib/Stripe/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
The MIT License
|
2 |
|
3 |
-
Copyright (c) 2010-
|
4 |
|
5 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
of this software and associated documentation files (the "Software"), to deal
|
1 |
The MIT License
|
2 |
|
3 |
+
Copyright (c) 2010-2019 Stripe, Inc. (https://stripe.com)
|
4 |
|
5 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
of this software and associated documentation files (the "Software"), to deal
|
includes/lib/Stripe/README.md
CHANGED
@@ -6,11 +6,15 @@
|
|
6 |
[![License](https://poser.pugx.org/stripe/stripe-php/license.svg)](https://packagist.org/packages/stripe/stripe-php)
|
7 |
[![Code Coverage](https://coveralls.io/repos/stripe/stripe-php/badge.svg?branch=master)](https://coveralls.io/r/stripe/stripe-php?branch=master)
|
8 |
|
9 |
-
|
|
|
|
|
|
|
|
|
10 |
|
11 |
## Requirements
|
12 |
|
13 |
-
PHP 5.
|
14 |
|
15 |
## Composer
|
16 |
|
@@ -20,7 +24,7 @@ You can install the bindings via [Composer](http://getcomposer.org/). Run the fo
|
|
20 |
composer require stripe/stripe-php
|
21 |
```
|
22 |
|
23 |
-
To use the bindings, use Composer's [autoload](https://getcomposer.org/doc/
|
24 |
|
25 |
```php
|
26 |
require_once('vendor/autoload.php');
|
@@ -36,7 +40,7 @@ require_once('/path/to/stripe-php/init.php');
|
|
36 |
|
37 |
## Dependencies
|
38 |
|
39 |
-
The bindings require the following
|
40 |
|
41 |
- [`curl`](https://secure.php.net/manual/en/book.curl.php), although you can use your own non-cURL client if you prefer
|
42 |
- [`json`](https://secure.php.net/manual/en/book.json.php)
|
@@ -50,16 +54,22 @@ Simple usage looks like:
|
|
50 |
|
51 |
```php
|
52 |
\Stripe\Stripe::setApiKey('sk_test_BQokikJOvBiI2HlWgH4olfQ2');
|
53 |
-
$charge = \Stripe\Charge::create(
|
54 |
echo $charge;
|
55 |
```
|
56 |
|
57 |
## Documentation
|
58 |
|
59 |
-
|
60 |
|
61 |
## Legacy Version Support
|
62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
If you are using PHP 5.2, you can download v1.18.0 ([zip](https://github.com/stripe/stripe-php/archive/v1.18.0.zip), [tar.gz](https://github.com/stripe/stripe-php/archive/v1.18.0.tar.gz)) from our [releases page](https://github.com/stripe/stripe-php/releases). This version will continue to work with new versions of the Stripe API for all common uses.
|
64 |
|
65 |
This legacy version may be included via `require_once("/path/to/stripe-php/lib/Stripe.php");`, and used like:
|
@@ -97,7 +107,7 @@ Need to set a proxy for your requests? Pass in the requisite `CURLOPT_*` array t
|
|
97 |
|
98 |
```php
|
99 |
// set up your tweaked Curl client
|
100 |
-
$curl = new \Stripe\HttpClient\CurlClient(
|
101 |
// tell Stripe to use the tweaked client
|
102 |
\Stripe\ApiRequestor::setHttpClient($curl);
|
103 |
```
|
@@ -114,6 +124,15 @@ end up there instead of `error_log`:
|
|
114 |
\Stripe\Stripe::setLogger($logger);
|
115 |
```
|
116 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
### SSL / TLS compatibility issues
|
118 |
|
119 |
Stripe's API now requires that [all connections use TLS 1.2](https://stripe.com/blog/upgrading-tls). Some systems (most notably some older CentOS and RHEL versions) are capable of using TLS 1.2 but will use TLS 1.0 or 1.1 by default. In this case, you'd get an `invalid_request_error` with the following error message: "Stripe no longer supports API requests made with TLS 1.0. Please initiate HTTPS connections with TLS 1.2 or later. You can learn more about this at [https://stripe.com/blog/upgrading-tls](https://stripe.com/blog/upgrading-tls).".
|
@@ -121,19 +140,82 @@ Stripe's API now requires that [all connections use TLS 1.2](https://stripe.com/
|
|
121 |
The recommended course of action is to [upgrade your cURL and OpenSSL packages](https://support.stripe.com/questions/how-do-i-upgrade-my-stripe-integration-from-tls-1-0-to-tls-1-2#php) so that TLS 1.2 is used by default, but if that is not possible, you might be able to solve the issue by setting the `CURLOPT_SSLVERSION` option to either `CURL_SSLVERSION_TLSv1` or `CURL_SSLVERSION_TLSv1_2`:
|
122 |
|
123 |
```php
|
124 |
-
$curl = new \Stripe\HttpClient\CurlClient(
|
125 |
\Stripe\ApiRequestor::setHttpClient($curl);
|
126 |
```
|
127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
## Development
|
129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
Install dependencies:
|
131 |
|
132 |
-
```
|
133 |
composer install
|
134 |
```
|
135 |
|
136 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
|
138 |
Install dependencies as mentioned above (which will resolve [PHPUnit](http://packagist.org/packages/phpunit/phpunit)), then you can run the test suite:
|
139 |
|
@@ -147,6 +229,12 @@ Or to run an individual test file:
|
|
147 |
./vendor/bin/phpunit tests/UtilTest.php
|
148 |
```
|
149 |
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
## Attention plugin developers
|
151 |
|
152 |
Are you writing a plugin that integrates Stripe and embeds our library? Then please use the `setAppInfo` function to identify your plugin. For example:
|
@@ -161,4 +249,9 @@ The method should be called once, before any request is sent to the API. The sec
|
|
161 |
|
162 |
See the "SSL / TLS compatibility issues" paragraph above for full context. If you want to ensure that your plugin can be used on all systems, you should add a configuration option to let your users choose between different values for `CURLOPT_SSLVERSION`: none (default), `CURL_SSLVERSION_TLSv1` and `CURL_SSLVERSION_TLSv1_2`.
|
163 |
|
|
|
|
|
|
|
164 |
[psr3]: http://www.php-fig.org/psr/psr-3/
|
|
|
|
6 |
[![License](https://poser.pugx.org/stripe/stripe-php/license.svg)](https://packagist.org/packages/stripe/stripe-php)
|
7 |
[![Code Coverage](https://coveralls.io/repos/stripe/stripe-php/badge.svg?branch=master)](https://coveralls.io/r/stripe/stripe-php?branch=master)
|
8 |
|
9 |
+
The Stripe PHP library provides convenient access to the Stripe API from
|
10 |
+
applications written in the PHP language. It includes a pre-defined set of
|
11 |
+
classes for API resources that initialize themselves dynamically from API
|
12 |
+
responses which makes it compatible with a wide range of versions of the Stripe
|
13 |
+
API.
|
14 |
|
15 |
## Requirements
|
16 |
|
17 |
+
PHP 5.4.0 and later.
|
18 |
|
19 |
## Composer
|
20 |
|
24 |
composer require stripe/stripe-php
|
25 |
```
|
26 |
|
27 |
+
To use the bindings, use Composer's [autoload](https://getcomposer.org/doc/01-basic-usage.md#autoloading):
|
28 |
|
29 |
```php
|
30 |
require_once('vendor/autoload.php');
|
40 |
|
41 |
## Dependencies
|
42 |
|
43 |
+
The bindings require the following extensions in order to work properly:
|
44 |
|
45 |
- [`curl`](https://secure.php.net/manual/en/book.curl.php), although you can use your own non-cURL client if you prefer
|
46 |
- [`json`](https://secure.php.net/manual/en/book.json.php)
|
54 |
|
55 |
```php
|
56 |
\Stripe\Stripe::setApiKey('sk_test_BQokikJOvBiI2HlWgH4olfQ2');
|
57 |
+
$charge = \Stripe\Charge::create(['amount' => 2000, 'currency' => 'usd', 'source' => 'tok_189fqt2eZvKYlo2CTGBeg6Uq']);
|
58 |
echo $charge;
|
59 |
```
|
60 |
|
61 |
## Documentation
|
62 |
|
63 |
+
See the [PHP API docs](https://stripe.com/docs/api/php#intro).
|
64 |
|
65 |
## Legacy Version Support
|
66 |
|
67 |
+
### PHP 5.3
|
68 |
+
|
69 |
+
If you are using PHP 5.3, you can download v5.9.2 ([zip](https://github.com/stripe/stripe-php/archive/v5.9.2.zip), [tar.gz](https://github.com/stripe/stripe-php/archive/v5.9.2.tar.gz)) from our [releases page](https://github.com/stripe/stripe-php/releases). This version will continue to work with new versions of the Stripe API for all common uses.
|
70 |
+
|
71 |
+
### PHP 5.2
|
72 |
+
|
73 |
If you are using PHP 5.2, you can download v1.18.0 ([zip](https://github.com/stripe/stripe-php/archive/v1.18.0.zip), [tar.gz](https://github.com/stripe/stripe-php/archive/v1.18.0.tar.gz)) from our [releases page](https://github.com/stripe/stripe-php/releases). This version will continue to work with new versions of the Stripe API for all common uses.
|
74 |
|
75 |
This legacy version may be included via `require_once("/path/to/stripe-php/lib/Stripe.php");`, and used like:
|
107 |
|
108 |
```php
|
109 |
// set up your tweaked Curl client
|
110 |
+
$curl = new \Stripe\HttpClient\CurlClient([CURLOPT_PROXY => 'proxy.local:80']);
|
111 |
// tell Stripe to use the tweaked client
|
112 |
\Stripe\ApiRequestor::setHttpClient($curl);
|
113 |
```
|
124 |
\Stripe\Stripe::setLogger($logger);
|
125 |
```
|
126 |
|
127 |
+
### Accessing response data
|
128 |
+
|
129 |
+
You can access the data from the last API response on any object via `getLastResponse()`.
|
130 |
+
|
131 |
+
```php
|
132 |
+
$charge = \Stripe\Charge::create(['amount' => 2000, 'currency' => 'usd', 'source' => 'tok_visa']);
|
133 |
+
echo $charge->getLastResponse()->headers['Request-Id'];
|
134 |
+
```
|
135 |
+
|
136 |
### SSL / TLS compatibility issues
|
137 |
|
138 |
Stripe's API now requires that [all connections use TLS 1.2](https://stripe.com/blog/upgrading-tls). Some systems (most notably some older CentOS and RHEL versions) are capable of using TLS 1.2 but will use TLS 1.0 or 1.1 by default. In this case, you'd get an `invalid_request_error` with the following error message: "Stripe no longer supports API requests made with TLS 1.0. Please initiate HTTPS connections with TLS 1.2 or later. You can learn more about this at [https://stripe.com/blog/upgrading-tls](https://stripe.com/blog/upgrading-tls).".
|
140 |
The recommended course of action is to [upgrade your cURL and OpenSSL packages](https://support.stripe.com/questions/how-do-i-upgrade-my-stripe-integration-from-tls-1-0-to-tls-1-2#php) so that TLS 1.2 is used by default, but if that is not possible, you might be able to solve the issue by setting the `CURLOPT_SSLVERSION` option to either `CURL_SSLVERSION_TLSv1` or `CURL_SSLVERSION_TLSv1_2`:
|
141 |
|
142 |
```php
|
143 |
+
$curl = new \Stripe\HttpClient\CurlClient([CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1]);
|
144 |
\Stripe\ApiRequestor::setHttpClient($curl);
|
145 |
```
|
146 |
|
147 |
+
### Per-request Configuration
|
148 |
+
|
149 |
+
For apps that need to use multiple keys during the lifetime of a process, like
|
150 |
+
one that uses [Stripe Connect][connect], it's also possible to set a
|
151 |
+
per-request key and/or account:
|
152 |
+
|
153 |
+
```php
|
154 |
+
\Stripe\Charge::all([], [
|
155 |
+
'api_key' => 'sk_test_...',
|
156 |
+
'stripe_account' => 'acct_...'
|
157 |
+
]);
|
158 |
+
|
159 |
+
\Stripe\Charge::retrieve("ch_18atAXCdGbJFKhCuBAa4532Z", [
|
160 |
+
'api_key' => 'sk_test_...',
|
161 |
+
'stripe_account' => 'acct_...'
|
162 |
+
]);
|
163 |
+
```
|
164 |
+
|
165 |
+
### Configuring CA Bundles
|
166 |
+
|
167 |
+
By default, the library will use its own internal bundle of known CA
|
168 |
+
certificates, but it's possible to configure your own:
|
169 |
+
|
170 |
+
```php
|
171 |
+
\Stripe\Stripe::setCABundlePath("path/to/ca/bundle");
|
172 |
+
```
|
173 |
+
|
174 |
+
### Configuring Automatic Retries
|
175 |
+
|
176 |
+
The library can be configured to automatically retry requests that fail due to
|
177 |
+
an intermittent network problem:
|
178 |
+
|
179 |
+
```php
|
180 |
+
\Stripe\Stripe::setMaxNetworkRetries(2);
|
181 |
+
```
|
182 |
+
|
183 |
+
[Idempotency keys][idempotency-keys] are added to requests to guarantee that
|
184 |
+
retries are safe.
|
185 |
+
|
186 |
+
### Request latency telemetry
|
187 |
+
|
188 |
+
By default, the library sends request latency telemetry to Stripe. These
|
189 |
+
numbers help Stripe improve the overall latency of its API for all users.
|
190 |
+
|
191 |
+
You can disable this behavior if you prefer:
|
192 |
+
|
193 |
+
```php
|
194 |
+
\Stripe\Stripe::setEnableTelemetry(false);
|
195 |
+
```
|
196 |
+
|
197 |
## Development
|
198 |
|
199 |
+
Get [Composer][composer]. For example, on Mac OS:
|
200 |
+
|
201 |
+
```bash
|
202 |
+
brew install composer
|
203 |
+
```
|
204 |
+
|
205 |
Install dependencies:
|
206 |
|
207 |
+
```bash
|
208 |
composer install
|
209 |
```
|
210 |
|
211 |
+
The test suite depends on [stripe-mock], so make sure to fetch and run it from a
|
212 |
+
background terminal ([stripe-mock's README][stripe-mock] also contains
|
213 |
+
instructions for installing via Homebrew and other methods):
|
214 |
+
|
215 |
+
```bash
|
216 |
+
go get -u github.com/stripe/stripe-mock
|
217 |
+
stripe-mock
|
218 |
+
```
|
219 |
|
220 |
Install dependencies as mentioned above (which will resolve [PHPUnit](http://packagist.org/packages/phpunit/phpunit)), then you can run the test suite:
|
221 |
|
229 |
./vendor/bin/phpunit tests/UtilTest.php
|
230 |
```
|
231 |
|
232 |
+
Update bundled CA certificates from the [Mozilla cURL release][curl]:
|
233 |
+
|
234 |
+
```bash
|
235 |
+
./update_certs.php
|
236 |
+
```
|
237 |
+
|
238 |
## Attention plugin developers
|
239 |
|
240 |
Are you writing a plugin that integrates Stripe and embeds our library? Then please use the `setAppInfo` function to identify your plugin. For example:
|
249 |
|
250 |
See the "SSL / TLS compatibility issues" paragraph above for full context. If you want to ensure that your plugin can be used on all systems, you should add a configuration option to let your users choose between different values for `CURLOPT_SSLVERSION`: none (default), `CURL_SSLVERSION_TLSv1` and `CURL_SSLVERSION_TLSv1_2`.
|
251 |
|
252 |
+
[composer]: https://getcomposer.org/
|
253 |
+
[connect]: https://stripe.com/connect
|
254 |
+
[curl]: http://curl.haxx.se/docs/caextract.html
|
255 |
[psr3]: http://www.php-fig.org/psr/psr-3/
|
256 |
+
[idempotency-keys]: https://stripe.com/docs/api/php#idempotent_requests
|
257 |
+
[stripe-mock]: https://github.com/stripe/stripe-mock
|
includes/lib/Stripe/VERSION
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
6.40.0
|
includes/lib/Stripe/data/ca-certificates.crt
CHANGED
@@ -1,20 +1,20 @@
|
|
1 |
##
|
2 |
## Bundle of CA Root Certificates
|
3 |
##
|
4 |
-
## Certificate data from Mozilla as of:
|
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 |
-
##
|
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 |
-
## Conversion done with mk-ca-bundle.pl version 1.
|
17 |
-
##
|
18 |
##
|
19 |
|
20 |
|
@@ -130,30 +130,6 @@ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
|
|
130 |
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
131 |
-----END CERTIFICATE-----
|
132 |
|
133 |
-
AddTrust Low-Value Services Root
|
134 |
-
================================
|
135 |
-
-----BEGIN CERTIFICATE-----
|
136 |
-
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
137 |
-
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
|
138 |
-
cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
|
139 |
-
CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
|
140 |
-
ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
|
141 |
-
AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
|
142 |
-
54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
|
143 |
-
oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
|
144 |
-
Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
|
145 |
-
GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
|
146 |
-
HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
|
147 |
-
AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
|
148 |
-
RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
|
149 |
-
HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
|
150 |
-
ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
|
151 |
-
iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
|
152 |
-
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
|
153 |
-
mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
|
154 |
-
ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
|
155 |
-
-----END CERTIFICATE-----
|
156 |
-
|
157 |
AddTrust External Root
|
158 |
======================
|
159 |
-----BEGIN CERTIFICATE-----
|
@@ -178,54 +154,6 @@ e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
|
|
178 |
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
179 |
-----END CERTIFICATE-----
|
180 |
|
181 |
-
AddTrust Public Services Root
|
182 |
-
=============================
|
183 |
-
-----BEGIN CERTIFICATE-----
|
184 |
-
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
185 |
-
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
|
186 |
-
cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
|
187 |
-
BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
|
188 |
-
dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
|
189 |
-
AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
|
190 |
-
nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
|
191 |
-
d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
|
192 |
-
Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
|
193 |
-
HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
|
194 |
-
A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
195 |
-
/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
|
196 |
-
FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
|
197 |
-
A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
|
198 |
-
JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
|
199 |
-
+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
|
200 |
-
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
|
201 |
-
Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
|
202 |
-
EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
|
203 |
-
-----END CERTIFICATE-----
|
204 |
-
|
205 |
-
AddTrust Qualified Certificates Root
|
206 |
-
====================================
|
207 |
-
-----BEGIN CERTIFICATE-----
|
208 |
-
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
209 |
-
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
|
210 |
-
cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
|
211 |
-
CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
|
212 |
-
IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
|
213 |
-
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
|
214 |
-
64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
|
215 |
-
KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
|
216 |
-
L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
|
217 |
-
wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
|
218 |
-
MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
|
219 |
-
BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
|
220 |
-
BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
|
221 |
-
azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
|
222 |
-
ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
|
223 |
-
GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
|
224 |
-
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
|
225 |
-
RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
|
226 |
-
iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
|
227 |
-
-----END CERTIFICATE-----
|
228 |
-
|
229 |
Entrust Root Certification Authority
|
230 |
====================================
|
231 |
-----BEGIN CERTIFICATE-----
|
@@ -252,27 +180,6 @@ W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
|
|
252 |
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
253 |
-----END CERTIFICATE-----
|
254 |
|
255 |
-
RSA Security 2048 v3
|
256 |
-
====================
|
257 |
-
-----BEGIN CERTIFICATE-----
|
258 |
-
MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
|
259 |
-
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
|
260 |
-
MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
|
261 |
-
BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
262 |
-
AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
|
263 |
-
Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
|
264 |
-
WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
|
265 |
-
KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
|
266 |
-
+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
|
267 |
-
MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
|
268 |
-
FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
|
269 |
-
v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
|
270 |
-
0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
|
271 |
-
VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
|
272 |
-
nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
|
273 |
-
pKnXwiJPZ9d37CAFYd4=
|
274 |
-
-----END CERTIFICATE-----
|
275 |
-
|
276 |
GeoTrust Global CA
|
277 |
==================
|
278 |
-----BEGIN CERTIFICATE-----
|
@@ -294,27 +201,6 @@ XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
|
|
294 |
Mw==
|
295 |
-----END CERTIFICATE-----
|
296 |
|
297 |
-
GeoTrust Global CA 2
|
298 |
-
====================
|
299 |
-
-----BEGIN CERTIFICATE-----
|
300 |
-
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
301 |
-
R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
|
302 |
-
MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
303 |
-
LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
304 |
-
ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
|
305 |
-
NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
|
306 |
-
LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
|
307 |
-
Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
|
308 |
-
HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
|
309 |
-
MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
|
310 |
-
K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
|
311 |
-
srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
|
312 |
-
ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
|
313 |
-
OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
|
314 |
-
x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
|
315 |
-
H4z1Ir+rzoPz4iIprn2DQKi6bA==
|
316 |
-
-----END CERTIFICATE-----
|
317 |
-
|
318 |
GeoTrust Universal CA
|
319 |
=====================
|
320 |
-----BEGIN CERTIFICATE-----
|
@@ -440,56 +326,6 @@ Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
|
440 |
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
441 |
-----END CERTIFICATE-----
|
442 |
|
443 |
-
Comodo Secure Services root
|
444 |
-
===========================
|
445 |
-
-----BEGIN CERTIFICATE-----
|
446 |
-
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
447 |
-
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
448 |
-
TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
|
449 |
-
MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
|
450 |
-
Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
|
451 |
-
BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
452 |
-
ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
|
453 |
-
9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
|
454 |
-
rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
|
455 |
-
oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
|
456 |
-
p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
|
457 |
-
FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
|
458 |
-
gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
|
459 |
-
YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
|
460 |
-
aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
|
461 |
-
4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
|
462 |
-
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
|
463 |
-
DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
|
464 |
-
pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
|
465 |
-
RR3B7Hzs/Sk=
|
466 |
-
-----END CERTIFICATE-----
|
467 |
-
|
468 |
-
Comodo Trusted Services root
|
469 |
-
============================
|
470 |
-
-----BEGIN CERTIFICATE-----
|
471 |
-
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
472 |
-
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
473 |
-
TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
|
474 |
-
MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
|
475 |
-
bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
|
476 |
-
IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
477 |
-
AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
|
478 |
-
3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
|
479 |
-
/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
|
480 |
-
juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
|
481 |
-
ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
|
482 |
-
DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
483 |
-
/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
|
484 |
-
ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
|
485 |
-
cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
|
486 |
-
uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
|
487 |
-
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
|
488 |
-
BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
|
489 |
-
R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
|
490 |
-
9y5Xt5hwXsjEeLBi
|
491 |
-
-----END CERTIFICATE-----
|
492 |
-
|
493 |
QuoVadis Root CA
|
494 |
================
|
495 |
-----BEGIN CERTIFICATE-----
|
@@ -629,54 +465,6 @@ EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
|
|
629 |
llpwrN9M
|
630 |
-----END CERTIFICATE-----
|
631 |
|
632 |
-
Staat der Nederlanden Root CA
|
633 |
-
=============================
|
634 |
-
-----BEGIN CERTIFICATE-----
|
635 |
-
MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
|
636 |
-
ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
|
637 |
-
Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
|
638 |
-
HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
|
639 |
-
bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
|
640 |
-
vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
|
641 |
-
jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
|
642 |
-
C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
|
643 |
-
vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
|
644 |
-
22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
|
645 |
-
HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
|
646 |
-
dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
|
647 |
-
BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
|
648 |
-
EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
|
649 |
-
MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
|
650 |
-
nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
|
651 |
-
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
|
652 |
-
-----END CERTIFICATE-----
|
653 |
-
|
654 |
-
UTN USERFirst Hardware Root CA
|
655 |
-
==============================
|
656 |
-
-----BEGIN CERTIFICATE-----
|
657 |
-
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
|
658 |
-
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
659 |
-
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
|
660 |
-
BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
|
661 |
-
OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
|
662 |
-
eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
|
663 |
-
ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
|
664 |
-
DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
|
665 |
-
wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
|
666 |
-
tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
|
667 |
-
i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
|
668 |
-
Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
|
669 |
-
gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
|
670 |
-
lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
|
671 |
-
UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
|
672 |
-
BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
673 |
-
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
|
674 |
-
XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
|
675 |
-
lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
|
676 |
-
iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
|
677 |
-
nfhmqA==
|
678 |
-
-----END CERTIFICATE-----
|
679 |
-
|
680 |
Camerfirma Chambers of Commerce Root
|
681 |
====================================
|
682 |
-----BEGIN CERTIFICATE-----
|
@@ -731,41 +519,6 @@ IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
|
|
731 |
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
|
732 |
-----END CERTIFICATE-----
|
733 |
|
734 |
-
NetLock Notary (Class A) Root
|
735 |
-
=============================
|
736 |
-
-----BEGIN CERTIFICATE-----
|
737 |
-
MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
|
738 |
-
EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
739 |
-
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
|
740 |
-
ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
|
741 |
-
DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
|
742 |
-
EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
|
743 |
-
VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
|
744 |
-
cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
|
745 |
-
D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
|
746 |
-
z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
|
747 |
-
/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
|
748 |
-
tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
|
749 |
-
4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
|
750 |
-
A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
|
751 |
-
Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
|
752 |
-
bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
|
753 |
-
IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
|
754 |
-
LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
|
755 |
-
ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
|
756 |
-
IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
|
757 |
-
IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
|
758 |
-
b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
|
759 |
-
bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
|
760 |
-
Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
|
761 |
-
bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
|
762 |
-
ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
|
763 |
-
ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
|
764 |
-
CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
|
765 |
-
KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
|
766 |
-
8CgHrTwXZoi1/baI
|
767 |
-
-----END CERTIFICATE-----
|
768 |
-
|
769 |
XRamp Global CA Root
|
770 |
====================
|
771 |
-----BEGIN CERTIFICATE-----
|
@@ -909,38 +662,6 @@ CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
|
|
909 |
+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
|
910 |
-----END CERTIFICATE-----
|
911 |
|
912 |
-
Swisscom Root CA 1
|
913 |
-
==================
|
914 |
-
-----BEGIN CERTIFICATE-----
|
915 |
-
MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
|
916 |
-
EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
|
917 |
-
dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
|
918 |
-
MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
|
919 |
-
aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
|
920 |
-
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
|
921 |
-
MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
|
922 |
-
NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
|
923 |
-
AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
|
924 |
-
b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
|
925 |
-
7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
|
926 |
-
cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
|
927 |
-
WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
|
928 |
-
haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
|
929 |
-
MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
|
930 |
-
HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
|
931 |
-
BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
|
932 |
-
MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
|
933 |
-
jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
|
934 |
-
MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
|
935 |
-
VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
|
936 |
-
vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
|
937 |
-
OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
|
938 |
-
1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
|
939 |
-
nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
|
940 |
-
x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
|
941 |
-
NY6E0F/6MBr1mmz0DlP5OlvRHA==
|
942 |
-
-----END CERTIFICATE-----
|
943 |
-
|
944 |
DigiCert Assured ID Root CA
|
945 |
===========================
|
946 |
-----BEGIN CERTIFICATE-----
|
@@ -1298,33 +1019,6 @@ wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
|
|
1298 |
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
1299 |
-----END CERTIFICATE-----
|
1300 |
|
1301 |
-
WellsSecure Public Root Certificate Authority
|
1302 |
-
=============================================
|
1303 |
-
-----BEGIN CERTIFICATE-----
|
1304 |
-
MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
|
1305 |
-
F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
|
1306 |
-
NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
1307 |
-
MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
|
1308 |
-
bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
|
1309 |
-
VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
1310 |
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
|
1311 |
-
iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
|
1312 |
-
i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
|
1313 |
-
bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
|
1314 |
-
K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
|
1315 |
-
AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
|
1316 |
-
cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
|
1317 |
-
lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
|
1318 |
-
i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
|
1319 |
-
GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
|
1320 |
-
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
|
1321 |
-
K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
|
1322 |
-
bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
|
1323 |
-
qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
|
1324 |
-
E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
|
1325 |
-
tylv2G0xffX8oRAHh84vWdw+WNs=
|
1326 |
-
-----END CERTIFICATE-----
|
1327 |
-
|
1328 |
COMODO ECC Certification Authority
|
1329 |
==================================
|
1330 |
-----BEGIN CERTIFICATE-----
|
@@ -1342,30 +1036,6 @@ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
|
|
1342 |
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
|
1343 |
-----END CERTIFICATE-----
|
1344 |
|
1345 |
-
IGC/A
|
1346 |
-
=====
|
1347 |
-
-----BEGIN CERTIFICATE-----
|
1348 |
-
MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
|
1349 |
-
VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
|
1350 |
-
Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
|
1351 |
-
MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
|
1352 |
-
EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
|
1353 |
-
STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
|
1354 |
-
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
|
1355 |
-
TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
|
1356 |
-
So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
|
1357 |
-
HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
|
1358 |
-
frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
|
1359 |
-
tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
|
1360 |
-
egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
|
1361 |
-
iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
|
1362 |
-
q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
|
1363 |
-
MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
|
1364 |
-
Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
|
1365 |
-
lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
|
1366 |
-
0mBWWg==
|
1367 |
-
-----END CERTIFICATE-----
|
1368 |
-
|
1369 |
Security Communication EV RootCA1
|
1370 |
=================================
|
1371 |
-----BEGIN CERTIFICATE-----
|
@@ -1410,46 +1080,6 @@ hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
|
|
1410 |
okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
|
1411 |
-----END CERTIFICATE-----
|
1412 |
|
1413 |
-
Microsec e-Szigno Root CA
|
1414 |
-
=========================
|
1415 |
-
-----BEGIN CERTIFICATE-----
|
1416 |
-
MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
|
1417 |
-
BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
|
1418 |
-
EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
|
1419 |
-
MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
|
1420 |
-
dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
|
1421 |
-
GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
1422 |
-
AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
|
1423 |
-
d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
|
1424 |
-
oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
|
1425 |
-
QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
|
1426 |
-
PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
|
1427 |
-
MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
|
1428 |
-
IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
|
1429 |
-
VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
|
1430 |
-
LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
|
1431 |
-
dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
|
1432 |
-
AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
|
1433 |
-
4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
|
1434 |
-
AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
|
1435 |
-
egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
|
1436 |
-
Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
|
1437 |
-
PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
|
1438 |
-
c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
|
1439 |
-
cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
|
1440 |
-
IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
|
1441 |
-
WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
|
1442 |
-
MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
|
1443 |
-
MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
|
1444 |
-
Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
|
1445 |
-
HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
|
1446 |
-
nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
|
1447 |
-
aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
|
1448 |
-
86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
|
1449 |
-
yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
|
1450 |
-
S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
|
1451 |
-
-----END CERTIFICATE-----
|
1452 |
-
|
1453 |
Certigna
|
1454 |
========
|
1455 |
-----BEGIN CERTIFICATE-----
|
@@ -1575,58 +1205,6 @@ LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
|
|
1575 |
dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
|
1576 |
-----END CERTIFICATE-----
|
1577 |
|
1578 |
-
Buypass Class 2 CA 1
|
1579 |
-
====================
|
1580 |
-
-----BEGIN CERTIFICATE-----
|
1581 |
-
MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
1582 |
-
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
|
1583 |
-
MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
1584 |
-
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
|
1585 |
-
hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
|
1586 |
-
cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
|
1587 |
-
0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
|
1588 |
-
0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
|
1589 |
-
uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
|
1590 |
-
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
|
1591 |
-
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
|
1592 |
-
1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
|
1593 |
-
7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
|
1594 |
-
fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
|
1595 |
-
wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
|
1596 |
-
-----END CERTIFICATE-----
|
1597 |
-
|
1598 |
-
EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
|
1599 |
-
==========================================================================
|
1600 |
-
-----BEGIN CERTIFICATE-----
|
1601 |
-
MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF
|
1602 |
-
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg
|
1603 |
-
QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe
|
1604 |
-
Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p
|
1605 |
-
ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt
|
1606 |
-
IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG
|
1607 |
-
SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by
|
1608 |
-
X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b
|
1609 |
-
gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr
|
1610 |
-
eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ
|
1611 |
-
TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy
|
1612 |
-
Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn
|
1613 |
-
uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI
|
1614 |
-
qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm
|
1615 |
-
ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0
|
1616 |
-
Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
|
1617 |
-
/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW
|
1618 |
-
Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t
|
1619 |
-
FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm
|
1620 |
-
zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k
|
1621 |
-
XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT
|
1622 |
-
bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU
|
1623 |
-
RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK
|
1624 |
-
1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt
|
1625 |
-
2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ
|
1626 |
-
Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9
|
1627 |
-
AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT
|
1628 |
-
-----END CERTIFICATE-----
|
1629 |
-
|
1630 |
certSIGN ROOT CA
|
1631 |
================
|
1632 |
-----BEGIN CERTIFICATE-----
|
@@ -1647,49 +1225,6 @@ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
|
|
1647 |
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
|
1648 |
-----END CERTIFICATE-----
|
1649 |
|
1650 |
-
CNNIC ROOT
|
1651 |
-
==========
|
1652 |
-
-----BEGIN CERTIFICATE-----
|
1653 |
-
MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
|
1654 |
-
ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
|
1655 |
-
OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
|
1656 |
-
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
|
1657 |
-
o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
|
1658 |
-
VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
|
1659 |
-
VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
|
1660 |
-
czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
|
1661 |
-
y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
|
1662 |
-
wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
|
1663 |
-
lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
|
1664 |
-
Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
|
1665 |
-
O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
|
1666 |
-
BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
|
1667 |
-
G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
|
1668 |
-
mxE=
|
1669 |
-
-----END CERTIFICATE-----
|
1670 |
-
|
1671 |
-
ApplicationCA - Japanese Government
|
1672 |
-
===================================
|
1673 |
-
-----BEGIN CERTIFICATE-----
|
1674 |
-
MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
|
1675 |
-
SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
|
1676 |
-
MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
|
1677 |
-
cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
1678 |
-
CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
|
1679 |
-
fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
|
1680 |
-
wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
|
1681 |
-
jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
|
1682 |
-
nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
|
1683 |
-
WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
|
1684 |
-
BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
|
1685 |
-
vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
|
1686 |
-
o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
|
1687 |
-
/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
|
1688 |
-
io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
|
1689 |
-
dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
|
1690 |
-
rosot4LKGAfmt1t06SAZf7IbiVQ=
|
1691 |
-
-----END CERTIFICATE-----
|
1692 |
-
|
1693 |
GeoTrust Primary Certification Authority - G3
|
1694 |
=============================================
|
1695 |
-----BEGIN CERTIFICATE-----
|
@@ -1821,7 +1356,7 @@ AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
|
|
1821 |
-----END CERTIFICATE-----
|
1822 |
|
1823 |
NetLock Arany (Class Gold) Főtanúsítvány
|
1824 |
-
|
1825 |
-----BEGIN CERTIFICATE-----
|
1826 |
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
|
1827 |
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
|
@@ -1876,58 +1411,6 @@ IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm
|
|
1876 |
66+KAQ==
|
1877 |
-----END CERTIFICATE-----
|
1878 |
|
1879 |
-
CA Disig
|
1880 |
-
========
|
1881 |
-
-----BEGIN CERTIFICATE-----
|
1882 |
-
MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
|
1883 |
-
QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
|
1884 |
-
MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
|
1885 |
-
bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
|
1886 |
-
DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
|
1887 |
-
GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
|
1888 |
-
Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
|
1889 |
-
hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
|
1890 |
-
ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
|
1891 |
-
gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
|
1892 |
-
AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
|
1893 |
-
aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
|
1894 |
-
ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
|
1895 |
-
BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
|
1896 |
-
WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
|
1897 |
-
mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
|
1898 |
-
CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
|
1899 |
-
ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
|
1900 |
-
4Z7CRneC9VkGjCFMhwnN5ag=
|
1901 |
-
-----END CERTIFICATE-----
|
1902 |
-
|
1903 |
-
Juur-SK
|
1904 |
-
=======
|
1905 |
-
-----BEGIN CERTIFICATE-----
|
1906 |
-
MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
|
1907 |
-
c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
|
1908 |
-
DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
|
1909 |
-
SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
|
1910 |
-
aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
1911 |
-
ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
|
1912 |
-
TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
|
1913 |
-
+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
|
1914 |
-
UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
|
1915 |
-
Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
|
1916 |
-
MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
|
1917 |
-
HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
|
1918 |
-
AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
|
1919 |
-
cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
|
1920 |
-
AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
|
1921 |
-
cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
|
1922 |
-
FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
|
1923 |
-
A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
|
1924 |
-
ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
|
1925 |
-
abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
|
1926 |
-
IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
|
1927 |
-
Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
|
1928 |
-
yyqcjg==
|
1929 |
-
-----END CERTIFICATE-----
|
1930 |
-
|
1931 |
Hongkong Post Root CA 1
|
1932 |
=======================
|
1933 |
-----BEGIN CERTIFICATE-----
|
@@ -2361,7 +1844,7 @@ Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
|
|
2361 |
-----END CERTIFICATE-----
|
2362 |
|
2363 |
Certinomis - Autorité Racine
|
2364 |
-
|
2365 |
-----BEGIN CERTIFICATE-----
|
2366 |
MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
|
2367 |
Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg
|
@@ -2391,41 +1874,6 @@ wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/
|
|
2391 |
vgt2Fl43N+bYdJeimUV5
|
2392 |
-----END CERTIFICATE-----
|
2393 |
|
2394 |
-
Root CA Generalitat Valenciana
|
2395 |
-
==============================
|
2396 |
-
-----BEGIN CERTIFICATE-----
|
2397 |
-
MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
|
2398 |
-
ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
|
2399 |
-
IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
|
2400 |
-
WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
|
2401 |
-
CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
|
2402 |
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
|
2403 |
-
F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
|
2404 |
-
ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
|
2405 |
-
D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
|
2406 |
-
JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
|
2407 |
-
AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
|
2408 |
-
dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
|
2409 |
-
ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
|
2410 |
-
AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
|
2411 |
-
YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
|
2412 |
-
AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
|
2413 |
-
aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
|
2414 |
-
AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
|
2415 |
-
YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
|
2416 |
-
AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
|
2417 |
-
OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
|
2418 |
-
dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
|
2419 |
-
BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
|
2420 |
-
A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
|
2421 |
-
b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
|
2422 |
-
TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
|
2423 |
-
Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
|
2424 |
-
NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
|
2425 |
-
iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
|
2426 |
-
+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
|
2427 |
-
-----END CERTIFICATE-----
|
2428 |
-
|
2429 |
TWCA Root Certification Authority
|
2430 |
=================================
|
2431 |
-----BEGIN CERTIFICATE-----
|
@@ -2871,93 +2319,6 @@ poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y
|
|
2871 |
eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
|
2872 |
-----END CERTIFICATE-----
|
2873 |
|
2874 |
-
China Internet Network Information Center EV Certificates Root
|
2875 |
-
==============================================================
|
2876 |
-
-----BEGIN CERTIFICATE-----
|
2877 |
-
MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV
|
2878 |
-
BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D
|
2879 |
-
aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg
|
2880 |
-
Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG
|
2881 |
-
A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM
|
2882 |
-
PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl
|
2883 |
-
cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y
|
2884 |
-
jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV
|
2885 |
-
98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H
|
2886 |
-
klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23
|
2887 |
-
KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC
|
2888 |
-
7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV
|
2889 |
-
HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD
|
2890 |
-
glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5
|
2891 |
-
0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM
|
2892 |
-
7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws
|
2893 |
-
ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0
|
2894 |
-
5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8=
|
2895 |
-
-----END CERTIFICATE-----
|
2896 |
-
|
2897 |
-
Swisscom Root CA 2
|
2898 |
-
==================
|
2899 |
-
-----BEGIN CERTIFICATE-----
|
2900 |
-
MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQG
|
2901 |
-
EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
|
2902 |
-
dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2
|
2903 |
-
MjUwNzM4MTRaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
|
2904 |
-
aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIIC
|
2905 |
-
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvErjw0DzpPM
|
2906 |
-
LgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r0rk0X2s682Q2zsKwzxNo
|
2907 |
-
ysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJ
|
2908 |
-
wDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVPACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpH
|
2909 |
-
Wrumnf2U5NGKpV+GY3aFy6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1a
|
2910 |
-
SgJA/MTAtukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL6yxS
|
2911 |
-
NLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0uPoTXGiTOmekl9Ab
|
2912 |
-
mbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrALacywlKinh/LTSlDcX3KwFnUey7QY
|
2913 |
-
Ypqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velhk6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3
|
2914 |
-
qPyZ7iVNTA6z00yPhOgpD/0QVAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
|
2915 |
-
HQYDVR0hBBYwFDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O
|
2916 |
-
BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqhb97iEoHF8Twu
|
2917 |
-
MA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4RfbgZPnm3qKhyN2abGu2sEzsO
|
2918 |
-
v2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ
|
2919 |
-
82YqZh6NM4OKb3xuqFp1mrjX2lhIREeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLz
|
2920 |
-
o9v/tdhZsnPdTSpxsrpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcs
|
2921 |
-
a0vvaGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciATwoCqISxx
|
2922 |
-
OQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99nBjx8Oto0QuFmtEYE3saW
|
2923 |
-
mA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5Wt6NlUe07qxS/TFED6F+KBZvuim6c779o
|
2924 |
-
+sjaC+NCydAXFJy3SuCvkychVSa1ZC+N8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TC
|
2925 |
-
rvJcwhbtkj6EPnNgiLx29CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX
|
2926 |
-
5OfNeOI5wSsSnqaeG8XmDtkx2Q==
|
2927 |
-
-----END CERTIFICATE-----
|
2928 |
-
|
2929 |
-
Swisscom Root EV CA 2
|
2930 |
-
=====================
|
2931 |
-
-----BEGIN CERTIFICATE-----
|
2932 |
-
MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UE
|
2933 |
-
BhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdpdGFsIENlcnRpZmljYXRlIFNl
|
2934 |
-
cnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcN
|
2935 |
-
MzEwNjI1MDg0NTA4WjBnMQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsT
|
2936 |
-
HERpZ2l0YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYg
|
2937 |
-
Q0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7BxUglgRCgz
|
2938 |
-
o3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD1ycfMQ4jFrclyxy0uYAy
|
2939 |
-
Xhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPHoCE2G3pXKSinLr9xJZDzRINpUKTk4Rti
|
2940 |
-
GZQJo/PDvO/0vezbE53PnUgJUmfANykRHvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8Li
|
2941 |
-
qG12W0OfvrSdsyaGOx9/5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaH
|
2942 |
-
Za0zKcQvidm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHLOdAG
|
2943 |
-
alNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaCNYGu+HuB5ur+rPQa
|
2944 |
-
m3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f46Fq9mDU5zXNysRojddxyNMkM3Ox
|
2945 |
-
bPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCBUWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDi
|
2946 |
-
xzgHcgplwLa7JSnaFp6LNYth7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/
|
2947 |
-
BAQDAgGGMB0GA1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED
|
2948 |
-
MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWBbj2ITY1x0kbB
|
2949 |
-
bkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6xXCX5145v9Ydkn+0UjrgEjihL
|
2950 |
-
j6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98TPLr+flaYC/NUn81ETm484T4VvwYmneTwkLbU
|
2951 |
-
wp4wLh/vx3rEUMfqe9pQy3omywC0Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7
|
2952 |
-
XwgiG/W9mR4U9s70WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH
|
2953 |
-
59yLGn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm7JFe3VE/
|
2954 |
-
23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4Snr8PyQUQ3nqjsTzyP6Wq
|
2955 |
-
J3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VNvBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyA
|
2956 |
-
HmBR3NdUIR7KYndP+tiPsys6DXhyyWhBWkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/gi
|
2957 |
-
uMod89a2GQ+fYWVq6nTIfI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuW
|
2958 |
-
l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc=
|
2959 |
-
-----END CERTIFICATE-----
|
2960 |
-
|
2961 |
CA Disig Root R1
|
2962 |
================
|
2963 |
-----BEGIN CERTIFICATE-----
|
@@ -3756,7 +3117,7 @@ ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
|
|
3756 |
-----END CERTIFICATE-----
|
3757 |
|
3758 |
TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5
|
3759 |
-
|
3760 |
-----BEGIN CERTIFICATE-----
|
3761 |
MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN
|
3762 |
BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
|
@@ -3779,30 +3140,6 @@ lpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CFYv4HAqGEVka+lgqaE9chTLd8
|
|
3779 |
B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU=
|
3780 |
-----END CERTIFICATE-----
|
3781 |
|
3782 |
-
TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6
|
3783 |
-
=========================================================
|
3784 |
-
-----BEGIN CERTIFICATE-----
|
3785 |
-
MIIEJjCCAw6gAwIBAgIGfaHyZeyKMA0GCSqGSIb3DQEBCwUAMIGxMQswCQYDVQQGEwJUUjEPMA0G
|
3786 |
-
A1UEBwwGQW5rYXJhMU0wSwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
|
3787 |
-
acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF
|
3788 |
-
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2MB4XDTEzMTIxODA5
|
3789 |
-
MDQxMFoXDTIzMTIxNjA5MDQxMFowgbExCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExTTBL
|
3790 |
-
BgNVBAoMRFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSf
|
3791 |
-
aSBIaXptZXRsZXJpIEEuxZ4uMUIwQAYDVQQDDDlUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2VydGlm
|
3792 |
-
aWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgSDYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
3793 |
-
AoIBAQCdsGjW6L0UlqMACprx9MfMkU1xeHe59yEmFXNRFpQJRwXiM/VomjX/3EsvMsew7eKC5W/a
|
3794 |
-
2uqsxgbPJQ1BgfbBOCK9+bGlprMBvD9QFyv26WZV1DOzXPhDIHiTVRZwGTLmiddk671IUP320EED
|
3795 |
-
wnS3/faAz1vFq6TWlRKb55cTMgPp1KtDWxbtMyJkKbbSk60vbNg9tvYdDjTu0n2pVQ8g9P0pu5Fb
|
3796 |
-
HH3GQjhtQiht1AH7zYiXSX6484P4tZgvsycLSF5W506jM7NE1qXyGJTtHB6plVxiSvgNZ1GpryHV
|
3797 |
-
+DKdeboaX+UEVU0TRv/yz3THGmNtwx8XEsMeED5gCLMxAgMBAAGjQjBAMB0GA1UdDgQWBBTdVRcT
|
3798 |
-
9qzoSCHK77Wv0QAy7Z6MtTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
|
3799 |
-
9w0BAQsFAAOCAQEAb1gNl0OqFlQ+v6nfkkU/hQu7VtMMUszIv3ZnXuaqs6fvuay0EBQNdH49ba3R
|
3800 |
-
fdCaqaXKGDsCQC4qnFAUi/5XfldcEQlLNkVS9z2sFP1E34uXI9TDwe7UU5X+LEr+DXCqu4svLcsy
|
3801 |
-
o4LyVN/Y8t3XSHLuSqMplsNEzm61kod2pLv0kmzOLBQJZo6NrRa1xxsJYTvjIKIDgI6tflEATseW
|
3802 |
-
hvtDmHd9KMeP2Cpu54Rvl0EpABZeTeIT6lnAY2c6RPuY/ATTMHKm9ocJV612ph1jmv3XZch4gyt1
|
3803 |
-
O6VbuA1df74jrlZVlFjvH4GMKrLN5ptjnhi85WsGtAuYSyher4hYyw==
|
3804 |
-
-----END CERTIFICATE-----
|
3805 |
-
|
3806 |
Certinomis - Root CA
|
3807 |
====================
|
3808 |
-----BEGIN CERTIFICATE-----
|
@@ -3892,28 +3229,418 @@ Daupn75OcsqF1NnstTJFGG+rrQIwfcf3aWMvoeGY7xMQ0Xk/0f7qO3/eVvSQsRUR2LIiFdAvwyYu
|
|
3892 |
a/GRspBl9JrmkO5K
|
3893 |
-----END CERTIFICATE-----
|
3894 |
|
3895 |
-
|
3896 |
-
|
3897 |
-
|
3898 |
-
|
3899 |
-
|
3900 |
-
|
3901 |
-
|
3902 |
-
|
3903 |
-
|
3904 |
-
|
3905 |
-
|
3906 |
-
|
3907 |
-
|
3908 |
-
|
3909 |
-
|
3910 |
-
|
3911 |
-
|
3912 |
-
|
3913 |
-
|
3914 |
-
|
3915 |
-
|
3916 |
-
|
3917 |
-
|
3918 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3919 |
-----END CERTIFICATE-----
|
1 |
##
|
2 |
## Bundle of CA Root Certificates
|
3 |
##
|
4 |
+
## Certificate data from Mozilla as of: Wed Sep 20 03:12:05 2017 GMT
|
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 |
+
## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
|
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 |
+
## Conversion done with mk-ca-bundle.pl version 1.27.
|
17 |
+
## SHA256: 2b2dbe5244e0047e088c597998883a913f6c5fffd1cb5c0fe5a368c8466cb2ec
|
18 |
##
|
19 |
|
20 |
|
130 |
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
131 |
-----END CERTIFICATE-----
|
132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
AddTrust External Root
|
134 |
======================
|
135 |
-----BEGIN CERTIFICATE-----
|
154 |
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
155 |
-----END CERTIFICATE-----
|
156 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
Entrust Root Certification Authority
|
158 |
====================================
|
159 |
-----BEGIN CERTIFICATE-----
|
180 |
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
181 |
-----END CERTIFICATE-----
|
182 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
GeoTrust Global CA
|
184 |
==================
|
185 |
-----BEGIN CERTIFICATE-----
|
201 |
Mw==
|
202 |
-----END CERTIFICATE-----
|
203 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
GeoTrust Universal CA
|
205 |
=====================
|
206 |
-----BEGIN CERTIFICATE-----
|
326 |
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
327 |
-----END CERTIFICATE-----
|
328 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
329 |
QuoVadis Root CA
|
330 |
================
|
331 |
-----BEGIN CERTIFICATE-----
|
465 |
llpwrN9M
|
466 |
-----END CERTIFICATE-----
|
467 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
468 |
Camerfirma Chambers of Commerce Root
|
469 |
====================================
|
470 |
-----BEGIN CERTIFICATE-----
|
519 |
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
|
520 |
-----END CERTIFICATE-----
|
521 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
522 |
XRamp Global CA Root
|
523 |
====================
|
524 |
-----BEGIN CERTIFICATE-----
|
662 |
+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
|
663 |
-----END CERTIFICATE-----
|
664 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
665 |
DigiCert Assured ID Root CA
|
666 |
===========================
|
667 |
-----BEGIN CERTIFICATE-----
|
1019 |
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
1020 |
-----END CERTIFICATE-----
|
1021 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1022 |
COMODO ECC Certification Authority
|
1023 |
==================================
|
1024 |
-----BEGIN CERTIFICATE-----
|
1036 |
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
|
1037 |
-----END CERTIFICATE-----
|
1038 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1039 |
Security Communication EV RootCA1
|
1040 |
=================================
|
1041 |
-----BEGIN CERTIFICATE-----
|
1080 |
okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
|
1081 |
-----END CERTIFICATE-----
|
1082 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1083 |
Certigna
|
1084 |
========
|
1085 |
-----BEGIN CERTIFICATE-----
|
1205 |
dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
|
1206 |
-----END CERTIFICATE-----
|
1207 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1208 |
certSIGN ROOT CA
|
1209 |
================
|
1210 |
-----BEGIN CERTIFICATE-----
|
1225 |
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
|
1226 |
-----END CERTIFICATE-----
|
1227 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1228 |
GeoTrust Primary Certification Authority - G3
|
1229 |
=============================================
|
1230 |
-----BEGIN CERTIFICATE-----
|
1356 |
-----END CERTIFICATE-----
|
1357 |
|
1358 |
NetLock Arany (Class Gold) Főtanúsítvány
|
1359 |
+
========================================
|
1360 |
-----BEGIN CERTIFICATE-----
|
1361 |
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
|
1362 |
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
|
1411 |
66+KAQ==
|
1412 |
-----END CERTIFICATE-----
|
1413 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1414 |
Hongkong Post Root CA 1
|
1415 |
=======================
|
1416 |
-----BEGIN CERTIFICATE-----
|
1844 |
-----END CERTIFICATE-----
|
1845 |
|
1846 |
Certinomis - Autorité Racine
|
1847 |
+
============================
|
1848 |
-----BEGIN CERTIFICATE-----
|
1849 |
MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
|
1850 |
Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg
|
1874 |
vgt2Fl43N+bYdJeimUV5
|
1875 |
-----END CERTIFICATE-----
|
1876 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1877 |
TWCA Root Certification Authority
|
1878 |
=================================
|
1879 |
-----BEGIN CERTIFICATE-----
|
2319 |
eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
|
2320 |
-----END CERTIFICATE-----
|
2321 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2322 |
CA Disig Root R1
|
2323 |
================
|
2324 |
-----BEGIN CERTIFICATE-----
|
3117 |
-----END CERTIFICATE-----
|
3118 |
|
3119 |
TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5
|
3120 |
+
====================================================
|
3121 |
-----BEGIN CERTIFICATE-----
|
3122 |
MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN
|
3123 |
BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
|
3140 |
B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU=
|
3141 |
-----END CERTIFICATE-----
|
3142 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3143 |
Certinomis - Root CA
|
3144 |
====================
|
3145 |
-----BEGIN CERTIFICATE-----
|
3229 |
a/GRspBl9JrmkO5K
|
3230 |
-----END CERTIFICATE-----
|
3231 |
|
3232 |
+
SZAFIR ROOT CA2
|
3233 |
+
===============
|
3234 |
+
-----BEGIN CERTIFICATE-----
|
3235 |
+
MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG
|
3236 |
+
A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV
|
3237 |
+
BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ
|
3238 |
+
BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD
|
3239 |
+
VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q
|
3240 |
+
qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK
|
3241 |
+
DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE
|
3242 |
+
2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ
|
3243 |
+
ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi
|
3244 |
+
ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
|
3245 |
+
AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC
|
3246 |
+
AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5
|
3247 |
+
O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67
|
3248 |
+
oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul
|
3249 |
+
4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6
|
3250 |
+
+/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw==
|
3251 |
+
-----END CERTIFICATE-----
|
3252 |
+
|
3253 |
+
Certum Trusted Network CA 2
|
3254 |
+
===========================
|
3255 |
+
-----BEGIN CERTIFICATE-----
|
3256 |
+
MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE
|
3257 |
+
BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1
|
3258 |
+
bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y
|
3259 |
+
ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ
|
3260 |
+
TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl
|
3261 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB
|
3262 |
+
IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9
|
3263 |
+
7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o
|
3264 |
+
CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b
|
3265 |
+
Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p
|
3266 |
+
uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130
|
3267 |
+
GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ
|
3268 |
+
9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB
|
3269 |
+
Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye
|
3270 |
+
hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM
|
3271 |
+
BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
3272 |
+
AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI
|
3273 |
+
hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW
|
3274 |
+
Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA
|
3275 |
+
L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo
|
3276 |
+
clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM
|
3277 |
+
pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb
|
3278 |
+
w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo
|
3279 |
+
J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm
|
3280 |
+
ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX
|
3281 |
+
is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7
|
3282 |
+
zAYspsbiDrW5viSP
|
3283 |
+
-----END CERTIFICATE-----
|
3284 |
+
|
3285 |
+
Hellenic Academic and Research Institutions RootCA 2015
|
3286 |
+
=======================================================
|
3287 |
+
-----BEGIN CERTIFICATE-----
|
3288 |
+
MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT
|
3289 |
+
BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0
|
3290 |
+
aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl
|
3291 |
+
YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx
|
3292 |
+
MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg
|
3293 |
+
QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV
|
3294 |
+
BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw
|
3295 |
+
MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv
|
3296 |
+
bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh
|
3297 |
+
iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+
|
3298 |
+
6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd
|
3299 |
+
FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr
|
3300 |
+
i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F
|
3301 |
+
GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2
|
3302 |
+
fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu
|
3303 |
+
iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
|
3304 |
+
Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
3305 |
+
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI
|
3306 |
+
hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+
|
3307 |
+
D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM
|
3308 |
+
d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y
|
3309 |
+
d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn
|
3310 |
+
82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb
|
3311 |
+
davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F
|
3312 |
+
Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt
|
3313 |
+
J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa
|
3314 |
+
JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q
|
3315 |
+
p/UsQu0yrbYhnr68
|
3316 |
+
-----END CERTIFICATE-----
|
3317 |
+
|
3318 |
+
Hellenic Academic and Research Institutions ECC RootCA 2015
|
3319 |
+
===========================================================
|
3320 |
+
-----BEGIN CERTIFICATE-----
|
3321 |
+
MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0
|
3322 |
+
aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u
|
3323 |
+
cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj
|
3324 |
+
aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw
|
3325 |
+
MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj
|
3326 |
+
IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD
|
3327 |
+
VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290
|
3328 |
+
Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP
|
3329 |
+
dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK
|
3330 |
+
Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
3331 |
+
BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA
|
3332 |
+
GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn
|
3333 |
+
dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
|
3334 |
+
-----END CERTIFICATE-----
|
3335 |
+
|
3336 |
+
Certplus Root CA G1
|
3337 |
+
===================
|
3338 |
+
-----BEGIN CERTIFICATE-----
|
3339 |
+
MIIFazCCA1OgAwIBAgISESBVg+QtPlRWhS2DN7cs3EYRMA0GCSqGSIb3DQEBDQUAMD4xCzAJBgNV
|
3340 |
+
BAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTAe
|
3341 |
+
Fw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhD
|
3342 |
+
ZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTCCAiIwDQYJKoZIhvcNAQEBBQAD
|
3343 |
+
ggIPADCCAgoCggIBANpQh7bauKk+nWT6VjOaVj0W5QOVsjQcmm1iBdTYj+eJZJ+622SLZOZ5KmHN
|
3344 |
+
r49aiZFluVj8tANfkT8tEBXgfs+8/H9DZ6itXjYj2JizTfNDnjl8KvzsiNWI7nC9hRYt6kuJPKNx
|
3345 |
+
Qv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP0FG7Yn2ksYyy/yARujVj
|
3346 |
+
BYZHYEMzkPZHogNPlk2dT8Hq6pyi/jQu3rfKG3akt62f6ajUeD94/vI4CTYd0hYCyOwqaK/1jpTv
|
3347 |
+
LRN6HkJKHRUxrgwEV/xhc/MxVoYxgKDEEW4wduOU8F8ExKyHcomYxZ3MVwia9Az8fXoFOvpHgDm2
|
3348 |
+
z4QTd28n6v+WZxcIbekN1iNQMLAVdBM+5S//Ds3EC0pd8NgAM0lm66EYfFkuPSi5YXHLtaW6uOrc
|
3349 |
+
4nBvCGrch2c0798wct3zyT8j/zXhviEpIDCB5BmlIOklynMxdCm+4kLV87ImZsdo/Rmz5yCTmehd
|
3350 |
+
4F6H50boJZwKKSTUzViGUkAksnsPmBIgJPaQbEfIDbsYIC7Z/fyL8inqh3SV4EJQeIQEQWGw9CEj
|
3351 |
+
jy3LKCHyamz0GqbFFLQ3ZU+V/YDI+HLlJWvEYLF7bY5KinPOWftwenMGE9nTdDckQQoRb5fc5+R+
|
3352 |
+
ob0V8rqHDz1oihYHAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0G
|
3353 |
+
A1UdDgQWBBSowcCbkahDFXxdBie0KlHYlwuBsTAfBgNVHSMEGDAWgBSowcCbkahDFXxdBie0KlHY
|
3354 |
+
lwuBsTANBgkqhkiG9w0BAQ0FAAOCAgEAnFZvAX7RvUz1isbwJh/k4DgYzDLDKTudQSk0YcbX8ACh
|
3355 |
+
66Ryj5QXvBMsdbRX7gp8CXrc1cqh0DQT+Hern+X+2B50ioUHj3/MeXrKls3N/U/7/SMNkPX0XtPG
|
3356 |
+
YX2eEeAC7gkE2Qfdpoq3DIMku4NQkv5gdRE+2J2winq14J2by5BSS7CTKtQ+FjPlnsZlFT5kOwQ/
|
3357 |
+
2wyPX1wdaR+v8+khjPPvl/aatxm2hHSco1S1cE5j2FddUyGbQJJD+tZ3VTNPZNX70Cxqjm0lpu+F
|
3358 |
+
6ALEUz65noe8zDUa3qHpimOHZR4RKttjd5cUvpoUmRGywO6wT/gUITJDT5+rosuoD6o7BlXGEilX
|
3359 |
+
CNQ314cnrUlZp5GrRHpejXDbl85IULFzk/bwg2D5zfHhMf1bfHEhYxQUqq/F3pN+aLHsIqKqkHWe
|
3360 |
+
tUNy6mSjhEv9DKgma3GX7lZjZuhCVPnHHd/Qj1vfyDBviP4NxDMcU6ij/UgQ8uQKTuEVV/xuZDDC
|
3361 |
+
VRHc6qnNSlSsKWNEz0pAoNZoWRsz+e86i9sgktxChL8Bq4fA1SCC28a5g4VCXA9DO2pJNdWY9BW/
|
3362 |
+
+mGBDAkgGNLQFwzLSABQ6XaCjGTXOqAHVcweMcDvOrRl++O/QmueD6i9a5jc2NvLi6Td11n0bt3+
|
3363 |
+
qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo=
|
3364 |
+
-----END CERTIFICATE-----
|
3365 |
+
|
3366 |
+
Certplus Root CA G2
|
3367 |
+
===================
|
3368 |
+
-----BEGIN CERTIFICATE-----
|
3369 |
+
MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4xCzAJBgNVBAYT
|
3370 |
+
AkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjAeFw0x
|
3371 |
+
NDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0
|
3372 |
+
cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IA
|
3373 |
+
BM0PW1aC3/BFGtat93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uN
|
3374 |
+
Am8xIk0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0PAQH/BAQD
|
3375 |
+
AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMB8GA1Ud
|
3376 |
+
IwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqGSM49BAMDA2gAMGUCMHD+sAvZ94OX7PNV
|
3377 |
+
HdTcswYO/jOYnYs5kGuUIe22113WTNchp+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjl
|
3378 |
+
vPl5adytRSv3tjFzzAalU5ORGpOucGpnutee5WEaXw==
|
3379 |
+
-----END CERTIFICATE-----
|
3380 |
+
|
3381 |
+
OpenTrust Root CA G1
|
3382 |
+
====================
|
3383 |
+
-----BEGIN CERTIFICATE-----
|
3384 |
+
MIIFbzCCA1egAwIBAgISESCzkFU5fX82bWTCp59rY45nMA0GCSqGSIb3DQEBCwUAMEAxCzAJBgNV
|
3385 |
+
BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcx
|
3386 |
+
MB4XDTE0MDUyNjA4NDU1MFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM
|
3387 |
+
CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzEwggIiMA0GCSqGSIb3DQEB
|
3388 |
+
AQUAA4ICDwAwggIKAoICAQD4eUbalsUwXopxAy1wpLuwxQjczeY1wICkES3d5oeuXT2R0odsN7fa
|
3389 |
+
Yp6bwiTXj/HbpqbfRm9RpnHLPhsxZ2L3EVs0J9V5ToybWL0iEA1cJwzdMOWo010hOHQX/uMftk87
|
3390 |
+
ay3bfWAfjH1MBcLrARYVmBSO0ZB3Ij/swjm4eTrwSSTilZHcYTSSjFR077F9jAHiOH3BX2pfJLKO
|
3391 |
+
YheteSCtqx234LSWSE9mQxAGFiQD4eCcjsZGT44ameGPuY4zbGneWK2gDqdkVBFpRGZPTBKnjix9
|
3392 |
+
xNRbxQA0MMHZmf4yzgeEtE7NCv82TWLxp2NX5Ntqp66/K7nJ5rInieV+mhxNaMbBGN4zK1FGSxyO
|
3393 |
+
9z0M+Yo0FMT7MzUj8czxKselu7Cizv5Ta01BG2Yospb6p64KTrk5M0ScdMGTHPjgniQlQ/GbI4Kq
|
3394 |
+
3ywgsNw2TgOzfALU5nsaqocTvz6hdLubDuHAk5/XpGbKuxs74zD0M1mKB3IDVedzagMxbm+WG+Oi
|
3395 |
+
n6+Sx+31QrclTDsTBM8clq8cIqPQqwWyTBIjUtz9GVsnnB47ev1CI9sjgBPwvFEVVJSmdz7QdFG9
|
3396 |
+
URQIOTfLHzSpMJ1ShC5VkLG631UAC9hWLbFJSXKAqWLXwPYYEQRVzXR7z2FwefR7LFxckvzluFqr
|
3397 |
+
TJOVoSfupb7PcSNCupt2LQIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
3398 |
+
/zAdBgNVHQ4EFgQUl0YhVyE12jZVx/PxN3DlCPaTKbYwHwYDVR0jBBgwFoAUl0YhVyE12jZVx/Px
|
3399 |
+
N3DlCPaTKbYwDQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E
|
3400 |
+
PLuHIT839HEl2ku6q5aCgZG27dmxpGWX4m9kWaSW7mDKHyP7Rbr/jyTwyqkxf3kfgLMtMrpkZ2Cv
|
3401 |
+
uVnN35pJ06iCsfmYlIrM4LvgBBuZYLFGZdwIorJGnkSI6pN+VxbSFXJfLkur1J1juONI5f6ELlgK
|
3402 |
+
n0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLh
|
3403 |
+
X4SPgPL0DTatdrOjteFkdjpY3H1PXlZs5VVZV6Xf8YpmMIzUUmI4d7S+KNfKNsSbBfD4Fdvb8e80
|
3404 |
+
nR14SohWZ25g/4/Ii+GOvUKpMwpZQhISKvqxnUOOBZuZ2mKtVzazHbYNeS2WuOvyDEsMpZTGMKcm
|
3405 |
+
GS3tTAZQMPH9WD25SxdfGbRqhFS0OE85og2WaMMolP3tLR9Ka0OWLpABEPs4poEL0L9109S5zvE/
|
3406 |
+
bw4cHjdx5RiHdRk/ULlepEU0rbDK5uUTdg8xFKmOLZTW1YVNcxVPS/KyPu1svf0OnWZzsD2097+o
|
3407 |
+
4BGkxK51CUpjAEggpsadCwmKtODmzj7HPiY46SvepghJAwSQiumPv+i2tCqjI40cHLI5kqiPAlxA
|
3408 |
+
OXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj1oxx
|
3409 |
+
-----END CERTIFICATE-----
|
3410 |
+
|
3411 |
+
OpenTrust Root CA G2
|
3412 |
+
====================
|
3413 |
+
-----BEGIN CERTIFICATE-----
|
3414 |
+
MIIFbzCCA1egAwIBAgISESChaRu/vbm9UpaPI+hIvyYRMA0GCSqGSIb3DQEBDQUAMEAxCzAJBgNV
|
3415 |
+
BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcy
|
3416 |
+
MB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM
|
3417 |
+
CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEB
|
3418 |
+
AQUAA4ICDwAwggIKAoICAQDMtlelM5QQgTJT32F+D3Y5z1zCU3UdSXqWON2ic2rxb95eolq5cSG+
|
3419 |
+
Ntmh/LzubKh8NBpxGuga2F8ORAbtp+Dz0mEL4DKiltE48MLaARf85KxP6O6JHnSrT78eCbY2albz
|
3420 |
+
4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/61UWY0jUJ9gNDlP7ZvyCV
|
3421 |
+
eYCYitmJNbtRG6Q3ffyZO6v/v6wNj0OxmXsWEH4db0fEFY8ElggGQgT4hNYdvJGmQr5J1WqIP7wt
|
3422 |
+
UdGejeBSzFfdNTVY27SPJIjki9/ca1TSgSuyzpJLHB9G+h3Ykst2Z7UJmQnlrBcUVXDGPKBWCgOz
|
3423 |
+
3GIZ38i1MH/1PCZ1Eb3XG7OHngevZXHloM8apwkQHZOJZlvoPGIytbU6bumFAYueQ4xncyhZW+vj
|
3424 |
+
3CzMpSZyYhK05pyDRPZRpOLAeiRXyg6lPzq1O4vldu5w5pLeFlwoW5cZJ5L+epJUzpM5ChaHvGOz
|
3425 |
+
9bGTXOBut9Dq+WIyiET7vycotjCVXRIouZW+j1MY5aIYFuJWpLIsEPUdN6b4t/bQWVyJ98LVtZR0
|
3426 |
+
0dX+G7bw5tYee9I8y6jj9RjzIR9u701oBnstXW5DiabA+aC/gh7PU3+06yzbXfZqfUAkBXKJOAGT
|
3427 |
+
y3HCOV0GEfZvePg3DTmEJwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
3428 |
+
/zAdBgNVHQ4EFgQUajn6QiL35okATV59M4PLuG53hq8wHwYDVR0jBBgwFoAUajn6QiL35okATV59
|
3429 |
+
M4PLuG53hq8wDQYJKoZIhvcNAQENBQADggIBAJjLq0A85TMCl38th6aP1F5Kr7ge57tx+4BkJamz
|
3430 |
+
Gj5oXScmp7oq4fBXgwpkTx4idBvpkF/wrM//T2h6OKQQbA2xx6R3gBi2oihEdqc0nXGEL8pZ0keI
|
3431 |
+
mUEiyTCYYW49qKgFbdEfwFFEVn8nNQLdXpgKQuswv42hm1GqO+qTRmTFAHneIWv2V6CG1wZy7HBG
|
3432 |
+
S4tz3aAhdT7cHcCP009zHIXZ/n9iyJVvttN7jLpTwm+bREx50B1ws9efAvSyB7DH5fitIw6mVskp
|
3433 |
+
EndI2S9G/Tvw/HRwkqWOOAgfZDC2t0v7NqwQjqBSM2OdAzVWxWm9xiNaJ5T2pBL4LTM8oValX9YZ
|
3434 |
+
6e18CL13zSdkzJTaTkZQh+D5wVOAHrut+0dSixv9ovneDiK3PTNZbNTe9ZUGMg1RGUFcPk8G97kr
|
3435 |
+
gCf2o6p6fAbhQ8MTOWIaNr3gKC6UAuQpLmBVrkA9sHSSXvAgZJY/X0VdiLWK2gKgW0VU3jg9CcCo
|
3436 |
+
SmVGFvyqv1ROTVu+OEO3KMqLM6oaJbolXCkvW0pujOotnCr2BXbgd5eAiN1nE28daCSLT7d0geX0
|
3437 |
+
YJ96Vdc+N9oWaz53rK4YcJUIeSkDiv7BO7M/Gg+kO14fWKGVyasvc0rQLW6aWQ9VGHgtPFGml4vm
|
3438 |
+
u7JwqkwR3v98KzfUetF3NI/n+UL3PIEMS1IK
|
3439 |
+
-----END CERTIFICATE-----
|
3440 |
+
|
3441 |
+
OpenTrust Root CA G3
|
3442 |
+
====================
|
3443 |
+
-----BEGIN CERTIFICATE-----
|
3444 |
+
MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAxCzAJBgNVBAYT
|
3445 |
+
AkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEczMB4X
|
3446 |
+
DTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9w
|
3447 |
+
ZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQA
|
3448 |
+
IgNiAARK7liuTcpm3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5B
|
3449 |
+
ta1doYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4GA1UdDwEB
|
3450 |
+
/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAf
|
3451 |
+
BgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAKBggqhkjOPQQDAwNpADBmAjEAj6jcnboM
|
3452 |
+
BBf6Fek9LykBl7+BFjNAk2z8+e2AcG+qj9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta
|
3453 |
+
3U1fJAuwACEl74+nBCZx4nxp5V2a+EEfOzmTk51V6s2N8fvB
|
3454 |
+
-----END CERTIFICATE-----
|
3455 |
+
|
3456 |
+
ISRG Root X1
|
3457 |
+
============
|
3458 |
+
-----BEGIN CERTIFICATE-----
|
3459 |
+
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE
|
3460 |
+
BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD
|
3461 |
+
EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG
|
3462 |
+
EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT
|
3463 |
+
DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r
|
3464 |
+
Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1
|
3465 |
+
3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K
|
3466 |
+
b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN
|
3467 |
+
Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ
|
3468 |
+
4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf
|
3469 |
+
1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu
|
3470 |
+
hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH
|
3471 |
+
usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r
|
3472 |
+
OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G
|
3473 |
+
A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY
|
3474 |
+
9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
|
3475 |
+
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV
|
3476 |
+
0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt
|
3477 |
+
hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw
|
3478 |
+
TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx
|
3479 |
+
e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA
|
3480 |
+
JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD
|
3481 |
+
YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n
|
3482 |
+
JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ
|
3483 |
+
m+kXQ99b21/+jh5Xos1AnX5iItreGCc=
|
3484 |
+
-----END CERTIFICATE-----
|
3485 |
+
|
3486 |
+
AC RAIZ FNMT-RCM
|
3487 |
+
================
|
3488 |
+
-----BEGIN CERTIFICATE-----
|
3489 |
+
MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT
|
3490 |
+
AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw
|
3491 |
+
MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD
|
3492 |
+
TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
|
3493 |
+
ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf
|
3494 |
+
qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr
|
3495 |
+
btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL
|
3496 |
+
j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou
|
3497 |
+
08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw
|
3498 |
+
WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT
|
3499 |
+
tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ
|
3500 |
+
47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC
|
3501 |
+
ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa
|
3502 |
+
i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
|
3503 |
+
FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o
|
3504 |
+
dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD
|
3505 |
+
nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s
|
3506 |
+
D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ
|
3507 |
+
j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT
|
3508 |
+
Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW
|
3509 |
+
+YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7
|
3510 |
+
Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d
|
3511 |
+
8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm
|
3512 |
+
5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG
|
3513 |
+
rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM=
|
3514 |
+
-----END CERTIFICATE-----
|
3515 |
+
|
3516 |
+
Amazon Root CA 1
|
3517 |
+
================
|
3518 |
+
-----BEGIN CERTIFICATE-----
|
3519 |
+
MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD
|
3520 |
+
VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1
|
3521 |
+
MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
|
3522 |
+
bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
3523 |
+
ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH
|
3524 |
+
FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ
|
3525 |
+
gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t
|
3526 |
+
dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce
|
3527 |
+
VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
|
3528 |
+
/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3
|
3529 |
+
DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM
|
3530 |
+
CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy
|
3531 |
+
8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa
|
3532 |
+
2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2
|
3533 |
+
xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5
|
3534 |
+
-----END CERTIFICATE-----
|
3535 |
+
|
3536 |
+
Amazon Root CA 2
|
3537 |
+
================
|
3538 |
+
-----BEGIN CERTIFICATE-----
|
3539 |
+
MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD
|
3540 |
+
VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1
|
3541 |
+
MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
|
3542 |
+
bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
|
3543 |
+
ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4
|
3544 |
+
kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp
|
3545 |
+
N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9
|
3546 |
+
AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd
|
3547 |
+
fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx
|
3548 |
+
kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS
|
3549 |
+
btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0
|
3550 |
+
Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN
|
3551 |
+
c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+
|
3552 |
+
3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw
|
3553 |
+
DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA
|
3554 |
+
A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY
|
3555 |
+
+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE
|
3556 |
+
YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW
|
3557 |
+
xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ
|
3558 |
+
gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW
|
3559 |
+
aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV
|
3560 |
+
Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3
|
3561 |
+
KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi
|
3562 |
+
JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw=
|
3563 |
+
-----END CERTIFICATE-----
|
3564 |
+
|
3565 |
+
Amazon Root CA 3
|
3566 |
+
================
|
3567 |
+
-----BEGIN CERTIFICATE-----
|
3568 |
+
MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG
|
3569 |
+
EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy
|
3570 |
+
NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
|
3571 |
+
MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB
|
3572 |
+
f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr
|
3573 |
+
Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43
|
3574 |
+
rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc
|
3575 |
+
eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw==
|
3576 |
+
-----END CERTIFICATE-----
|
3577 |
+
|
3578 |
+
Amazon Root CA 4
|
3579 |
+
================
|
3580 |
+
-----BEGIN CERTIFICATE-----
|
3581 |
+
MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG
|
3582 |
+
EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy
|
3583 |
+
NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
|
3584 |
+
MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN
|
3585 |
+
/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri
|
3586 |
+
83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
|
3587 |
+
HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA
|
3588 |
+
MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1
|
3589 |
+
AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA==
|
3590 |
+
-----END CERTIFICATE-----
|
3591 |
+
|
3592 |
+
LuxTrust Global Root 2
|
3593 |
+
======================
|
3594 |
+
-----BEGIN CERTIFICATE-----
|
3595 |
+
MIIFwzCCA6ugAwIBAgIUCn6m30tEntpqJIWe5rgV0xZ/u7EwDQYJKoZIhvcNAQELBQAwRjELMAkG
|
3596 |
+
A1UEBhMCTFUxFjAUBgNVBAoMDUx1eFRydXN0IFMuQS4xHzAdBgNVBAMMFkx1eFRydXN0IEdsb2Jh
|
3597 |
+
bCBSb290IDIwHhcNMTUwMzA1MTMyMTU3WhcNMzUwMzA1MTMyMTU3WjBGMQswCQYDVQQGEwJMVTEW
|
3598 |
+
MBQGA1UECgwNTHV4VHJ1c3QgUy5BLjEfMB0GA1UEAwwWTHV4VHJ1c3QgR2xvYmFsIFJvb3QgMjCC
|
3599 |
+
AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeFl78RmOnwYoNMPIf5U2o3C/IPPIfOb9wm
|
3600 |
+
Kb3FibrJgz337spbxm1Jc7TJRqMbNBM/wYlFV/TZsfs2ZUv7COJIcRHIbjuend+JZTemhfY7RBi2
|
3601 |
+
xjcwYkSSl2l9QjAk5A0MiWtj3sXh306pFGxT4GHO9hcvHTy95iJMHZP1EMShduxq3sVs35a0VkBC
|
3602 |
+
wGKSMKEtFZSg0iAGCW5qbeXrt77U8PEVfIvmTroTzEsnXpk8F12PgX8zPU/TPxvsXD/wPEx1bvKm
|
3603 |
+
1Z3aLQdjAsZy6ZS8TEmVT4hSyNvoaYL4zDRbIvCGp4m9SAptZoFtyMhk+wHh9OHe2Z7d21vUKpkm
|
3604 |
+
FRseTJIpgp7VkoGSQXAZ96Tlk0u8d2cx3Rz9MXANF5kM+Qw5GSoXtTBxVdUPrljhPS80m8+f9niF
|
3605 |
+
wpN6cj5mj5wWEWCPnolvZ77gR1o7DJpni89Gxq44o/KnvObWhWszJHAiS8sIm7vI+AIpHb4gDEa/
|
3606 |
+
a4ebsypmQjVGbKq6rfmYe+lQVRQxv7HaLe2ArWgk+2mr2HETMOZns4dA/Yl+8kPREd8vZS9kzl8U
|
3607 |
+
ubG/Mb2HeFpZZYiq/FkySIbWTLkpS5XTdvN3JW1CHDiDTf2jX5t/Lax5Gw5CMZdjpPuKadUiDTSQ
|
3608 |
+
MC6otOBttpSsvItO13D8xTiOZCXhTTmQzsmHhFhxAgMBAAGjgagwgaUwDwYDVR0TAQH/BAUwAwEB
|
3609 |
+
/zBCBgNVHSAEOzA5MDcGByuBKwEBAQowLDAqBggrBgEFBQcCARYeaHR0cHM6Ly9yZXBvc2l0b3J5
|
3610 |
+
Lmx1eHRydXN0Lmx1MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBT/GCh2+UgFLKGu8SsbK7JT
|
3611 |
+
+Et8szAdBgNVHQ4EFgQU/xgodvlIBSyhrvErGyuyU/hLfLMwDQYJKoZIhvcNAQELBQADggIBAGoZ
|
3612 |
+
FO1uecEsh9QNcH7X9njJCwROxLHOk3D+sFTAMs2ZMGQXvw/l4jP9BzZAcg4atmpZ1gDlaCDdLnIN
|
3613 |
+
H2pkMSCEfUmmWjfrRcmF9dTHF5kH5ptV5AzoqbTOjFu1EVzPig4N1qx3gf4ynCSecs5U89BvolbW
|
3614 |
+
7MM3LGVYvlcAGvI1+ut7MV3CwRI9loGIlonBWVx65n9wNOeD4rHh4bhY79SV5GCc8JaXcozrhAIu
|
3615 |
+
ZY+kt9J/Z93I055cqqmkoCUUBpvsT34tC38ddfEz2O3OuHVtPlu5mB0xDVbYQw8wkbIEa91WvpWA
|
3616 |
+
VWe+2M2D2RjuLg+GLZKecBPs3lHJQ3gCpU3I+V/EkVhGFndadKpAvAefMLmx9xIX3eP/JEAdemrR
|
3617 |
+
TxgKqpAd60Ae36EeRJIQmvKN4dFLRp7oRUKX6kWZ8+xm1QL68qZKJKrezrnK+T+Tb/mjuuqlPpmt
|
3618 |
+
/f97mfVl7vBZKGfXkJWkE4SphMHozs51k2MavDzq1WQfLSoSOcbDWjLtR5EWDrw4wVDej8oqkDQc
|
3619 |
+
7kGUnF4ZLvhFSZl0kbAEb+MEWrGrKqv+x9CWttrhSmQGbmBNvUJO/3jaJMobtNeWOWyu8Q6qp31I
|
3620 |
+
iyBMz2TWuJdGsE7RKlY6oJO9r4Ak4Ap+58rVyuiFVdw2KuGUaJPHZnJED4AhMmwlxyOAgwrr
|
3621 |
+
-----END CERTIFICATE-----
|
3622 |
+
|
3623 |
+
TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1
|
3624 |
+
=============================================
|
3625 |
+
-----BEGIN CERTIFICATE-----
|
3626 |
+
MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT
|
3627 |
+
D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr
|
3628 |
+
IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g
|
3629 |
+
TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp
|
3630 |
+
ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD
|
3631 |
+
VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt
|
3632 |
+
c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth
|
3633 |
+
bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11
|
3634 |
+
IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
3635 |
+
MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8
|
3636 |
+
6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc
|
3637 |
+
wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0
|
3638 |
+
3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9
|
3639 |
+
WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU
|
3640 |
+
ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
|
3641 |
+
KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh
|
3642 |
+
AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc
|
3643 |
+
lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R
|
3644 |
+
e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j
|
3645 |
+
q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=
|
3646 |
-----END CERTIFICATE-----
|
includes/lib/Stripe/init.php
CHANGED
@@ -5,8 +5,10 @@ require(dirname(__FILE__) . '/lib/Stripe.php');
|
|
5 |
|
6 |
// Utilities
|
7 |
require(dirname(__FILE__) . '/lib/Util/AutoPagingIterator.php');
|
|
|
8 |
require(dirname(__FILE__) . '/lib/Util/LoggerInterface.php');
|
9 |
require(dirname(__FILE__) . '/lib/Util/DefaultLogger.php');
|
|
|
10 |
require(dirname(__FILE__) . '/lib/Util/RequestOptions.php');
|
11 |
require(dirname(__FILE__) . '/lib/Util/Set.php');
|
12 |
require(dirname(__FILE__) . '/lib/Util/Util.php');
|
@@ -21,6 +23,7 @@ require(dirname(__FILE__) . '/lib/Error/Api.php');
|
|
21 |
require(dirname(__FILE__) . '/lib/Error/ApiConnection.php');
|
22 |
require(dirname(__FILE__) . '/lib/Error/Authentication.php');
|
23 |
require(dirname(__FILE__) . '/lib/Error/Card.php');
|
|
|
24 |
require(dirname(__FILE__) . '/lib/Error/InvalidRequest.php');
|
25 |
require(dirname(__FILE__) . '/lib/Error/Permission.php');
|
26 |
require(dirname(__FILE__) . '/lib/Error/RateLimit.php');
|
@@ -35,18 +38,26 @@ require(dirname(__FILE__) . '/lib/Error/OAuth/InvalidScope.php');
|
|
35 |
require(dirname(__FILE__) . '/lib/Error/OAuth/UnsupportedGrantType.php');
|
36 |
require(dirname(__FILE__) . '/lib/Error/OAuth/UnsupportedResponseType.php');
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
// Plumbing
|
39 |
require(dirname(__FILE__) . '/lib/ApiResponse.php');
|
40 |
-
require(dirname(__FILE__) . '/lib/
|
41 |
require(dirname(__FILE__) . '/lib/StripeObject.php');
|
42 |
require(dirname(__FILE__) . '/lib/ApiRequestor.php');
|
43 |
require(dirname(__FILE__) . '/lib/ApiResource.php');
|
44 |
require(dirname(__FILE__) . '/lib/SingletonApiResource.php');
|
45 |
-
require(dirname(__FILE__) . '/lib/AttachedObject.php');
|
46 |
-
require(dirname(__FILE__) . '/lib/ExternalAccount.php');
|
47 |
|
48 |
// Stripe API Resources
|
49 |
require(dirname(__FILE__) . '/lib/Account.php');
|
|
|
50 |
require(dirname(__FILE__) . '/lib/AlipayAccount.php');
|
51 |
require(dirname(__FILE__) . '/lib/ApplePayDomain.php');
|
52 |
require(dirname(__FILE__) . '/lib/ApplicationFee.php');
|
@@ -56,39 +67,79 @@ require(dirname(__FILE__) . '/lib/BalanceTransaction.php');
|
|
56 |
require(dirname(__FILE__) . '/lib/BankAccount.php');
|
57 |
require(dirname(__FILE__) . '/lib/BitcoinReceiver.php');
|
58 |
require(dirname(__FILE__) . '/lib/BitcoinTransaction.php');
|
|
|
59 |
require(dirname(__FILE__) . '/lib/Card.php');
|
60 |
require(dirname(__FILE__) . '/lib/Charge.php');
|
|
|
61 |
require(dirname(__FILE__) . '/lib/Collection.php');
|
62 |
require(dirname(__FILE__) . '/lib/CountrySpec.php');
|
63 |
require(dirname(__FILE__) . '/lib/Coupon.php');
|
|
|
64 |
require(dirname(__FILE__) . '/lib/Customer.php');
|
|
|
|
|
65 |
require(dirname(__FILE__) . '/lib/Dispute.php');
|
66 |
require(dirname(__FILE__) . '/lib/EphemeralKey.php');
|
67 |
require(dirname(__FILE__) . '/lib/Event.php');
|
|
|
|
|
|
|
68 |
require(dirname(__FILE__) . '/lib/FileUpload.php');
|
69 |
require(dirname(__FILE__) . '/lib/Invoice.php');
|
70 |
require(dirname(__FILE__) . '/lib/InvoiceItem.php');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
require(dirname(__FILE__) . '/lib/LoginLink.php');
|
72 |
require(dirname(__FILE__) . '/lib/Order.php');
|
|
|
73 |
require(dirname(__FILE__) . '/lib/OrderReturn.php');
|
|
|
|
|
74 |
require(dirname(__FILE__) . '/lib/Payout.php');
|
|
|
75 |
require(dirname(__FILE__) . '/lib/Plan.php');
|
76 |
require(dirname(__FILE__) . '/lib/Product.php');
|
|
|
|
|
|
|
77 |
require(dirname(__FILE__) . '/lib/Recipient.php');
|
78 |
require(dirname(__FILE__) . '/lib/RecipientTransfer.php');
|
79 |
require(dirname(__FILE__) . '/lib/Refund.php');
|
|
|
|
|
|
|
|
|
80 |
require(dirname(__FILE__) . '/lib/SKU.php');
|
|
|
81 |
require(dirname(__FILE__) . '/lib/Source.php');
|
|
|
82 |
require(dirname(__FILE__) . '/lib/Subscription.php');
|
83 |
require(dirname(__FILE__) . '/lib/SubscriptionItem.php');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
require(dirname(__FILE__) . '/lib/ThreeDSecure.php');
|
85 |
require(dirname(__FILE__) . '/lib/Token.php');
|
|
|
86 |
require(dirname(__FILE__) . '/lib/Transfer.php');
|
87 |
require(dirname(__FILE__) . '/lib/TransferReversal.php');
|
|
|
|
|
88 |
|
89 |
// OAuth
|
90 |
require(dirname(__FILE__) . '/lib/OAuth.php');
|
91 |
|
92 |
// Webhooks
|
93 |
require(dirname(__FILE__) . '/lib/Webhook.php');
|
|
|
94 |
require(dirname(__FILE__) . '/lib/WebhookSignature.php');
|
5 |
|
6 |
// Utilities
|
7 |
require(dirname(__FILE__) . '/lib/Util/AutoPagingIterator.php');
|
8 |
+
require(dirname(__FILE__) . '/lib/Util/CaseInsensitiveArray.php');
|
9 |
require(dirname(__FILE__) . '/lib/Util/LoggerInterface.php');
|
10 |
require(dirname(__FILE__) . '/lib/Util/DefaultLogger.php');
|
11 |
+
require(dirname(__FILE__) . '/lib/Util/RandomGenerator.php');
|
12 |
require(dirname(__FILE__) . '/lib/Util/RequestOptions.php');
|
13 |
require(dirname(__FILE__) . '/lib/Util/Set.php');
|
14 |
require(dirname(__FILE__) . '/lib/Util/Util.php');
|
23 |
require(dirname(__FILE__) . '/lib/Error/ApiConnection.php');
|
24 |
require(dirname(__FILE__) . '/lib/Error/Authentication.php');
|
25 |
require(dirname(__FILE__) . '/lib/Error/Card.php');
|
26 |
+
require(dirname(__FILE__) . '/lib/Error/Idempotency.php');
|
27 |
require(dirname(__FILE__) . '/lib/Error/InvalidRequest.php');
|
28 |
require(dirname(__FILE__) . '/lib/Error/Permission.php');
|
29 |
require(dirname(__FILE__) . '/lib/Error/RateLimit.php');
|
38 |
require(dirname(__FILE__) . '/lib/Error/OAuth/UnsupportedGrantType.php');
|
39 |
require(dirname(__FILE__) . '/lib/Error/OAuth/UnsupportedResponseType.php');
|
40 |
|
41 |
+
// API operations
|
42 |
+
require(dirname(__FILE__) . '/lib/ApiOperations/All.php');
|
43 |
+
require(dirname(__FILE__) . '/lib/ApiOperations/Create.php');
|
44 |
+
require(dirname(__FILE__) . '/lib/ApiOperations/Delete.php');
|
45 |
+
require(dirname(__FILE__) . '/lib/ApiOperations/NestedResource.php');
|
46 |
+
require(dirname(__FILE__) . '/lib/ApiOperations/Request.php');
|
47 |
+
require(dirname(__FILE__) . '/lib/ApiOperations/Retrieve.php');
|
48 |
+
require(dirname(__FILE__) . '/lib/ApiOperations/Update.php');
|
49 |
+
|
50 |
// Plumbing
|
51 |
require(dirname(__FILE__) . '/lib/ApiResponse.php');
|
52 |
+
require(dirname(__FILE__) . '/lib/RequestTelemetry.php');
|
53 |
require(dirname(__FILE__) . '/lib/StripeObject.php');
|
54 |
require(dirname(__FILE__) . '/lib/ApiRequestor.php');
|
55 |
require(dirname(__FILE__) . '/lib/ApiResource.php');
|
56 |
require(dirname(__FILE__) . '/lib/SingletonApiResource.php');
|
|
|
|
|
57 |
|
58 |
// Stripe API Resources
|
59 |
require(dirname(__FILE__) . '/lib/Account.php');
|
60 |
+
require(dirname(__FILE__) . '/lib/AccountLink.php');
|
61 |
require(dirname(__FILE__) . '/lib/AlipayAccount.php');
|
62 |
require(dirname(__FILE__) . '/lib/ApplePayDomain.php');
|
63 |
require(dirname(__FILE__) . '/lib/ApplicationFee.php');
|
67 |
require(dirname(__FILE__) . '/lib/BankAccount.php');
|
68 |
require(dirname(__FILE__) . '/lib/BitcoinReceiver.php');
|
69 |
require(dirname(__FILE__) . '/lib/BitcoinTransaction.php');
|
70 |
+
require(dirname(__FILE__) . '/lib/Capability.php');
|
71 |
require(dirname(__FILE__) . '/lib/Card.php');
|
72 |
require(dirname(__FILE__) . '/lib/Charge.php');
|
73 |
+
require(dirname(__FILE__) . '/lib/Checkout/Session.php');
|
74 |
require(dirname(__FILE__) . '/lib/Collection.php');
|
75 |
require(dirname(__FILE__) . '/lib/CountrySpec.php');
|
76 |
require(dirname(__FILE__) . '/lib/Coupon.php');
|
77 |
+
require(dirname(__FILE__) . '/lib/CreditNote.php');
|
78 |
require(dirname(__FILE__) . '/lib/Customer.php');
|
79 |
+
require(dirname(__FILE__) . '/lib/CustomerBalanceTransaction.php');
|
80 |
+
require(dirname(__FILE__) . '/lib/Discount.php');
|
81 |
require(dirname(__FILE__) . '/lib/Dispute.php');
|
82 |
require(dirname(__FILE__) . '/lib/EphemeralKey.php');
|
83 |
require(dirname(__FILE__) . '/lib/Event.php');
|
84 |
+
require(dirname(__FILE__) . '/lib/ExchangeRate.php');
|
85 |
+
require(dirname(__FILE__) . '/lib/File.php');
|
86 |
+
require(dirname(__FILE__) . '/lib/FileLink.php');
|
87 |
require(dirname(__FILE__) . '/lib/FileUpload.php');
|
88 |
require(dirname(__FILE__) . '/lib/Invoice.php');
|
89 |
require(dirname(__FILE__) . '/lib/InvoiceItem.php');
|
90 |
+
require(dirname(__FILE__) . '/lib/InvoiceLineItem.php');
|
91 |
+
require(dirname(__FILE__) . '/lib/IssuerFraudRecord.php');
|
92 |
+
require(dirname(__FILE__) . '/lib/Issuing/Authorization.php');
|
93 |
+
require(dirname(__FILE__) . '/lib/Issuing/Card.php');
|
94 |
+
require(dirname(__FILE__) . '/lib/Issuing/CardDetails.php');
|
95 |
+
require(dirname(__FILE__) . '/lib/Issuing/Cardholder.php');
|
96 |
+
require(dirname(__FILE__) . '/lib/Issuing/Dispute.php');
|
97 |
+
require(dirname(__FILE__) . '/lib/Issuing/Transaction.php');
|
98 |
require(dirname(__FILE__) . '/lib/LoginLink.php');
|
99 |
require(dirname(__FILE__) . '/lib/Order.php');
|
100 |
+
require(dirname(__FILE__) . '/lib/OrderItem.php');
|
101 |
require(dirname(__FILE__) . '/lib/OrderReturn.php');
|
102 |
+
require(dirname(__FILE__) . '/lib/PaymentIntent.php');
|
103 |
+
require(dirname(__FILE__) . '/lib/PaymentMethod.php');
|
104 |
require(dirname(__FILE__) . '/lib/Payout.php');
|
105 |
+
require(dirname(__FILE__) . '/lib/Person.php');
|
106 |
require(dirname(__FILE__) . '/lib/Plan.php');
|
107 |
require(dirname(__FILE__) . '/lib/Product.php');
|
108 |
+
require(dirname(__FILE__) . '/lib/Radar/EarlyFraudWarning.php');
|
109 |
+
require(dirname(__FILE__) . '/lib/Radar/ValueList.php');
|
110 |
+
require(dirname(__FILE__) . '/lib/Radar/ValueListItem.php');
|
111 |
require(dirname(__FILE__) . '/lib/Recipient.php');
|
112 |
require(dirname(__FILE__) . '/lib/RecipientTransfer.php');
|
113 |
require(dirname(__FILE__) . '/lib/Refund.php');
|
114 |
+
require(dirname(__FILE__) . '/lib/Reporting/ReportRun.php');
|
115 |
+
require(dirname(__FILE__) . '/lib/Reporting/ReportType.php');
|
116 |
+
require(dirname(__FILE__) . '/lib/Review.php');
|
117 |
+
require(dirname(__FILE__) . '/lib/SetupIntent.php');
|
118 |
require(dirname(__FILE__) . '/lib/SKU.php');
|
119 |
+
require(dirname(__FILE__) . '/lib/Sigma/ScheduledQueryRun.php');
|
120 |
require(dirname(__FILE__) . '/lib/Source.php');
|
121 |
+
require(dirname(__FILE__) . '/lib/SourceTransaction.php');
|
122 |
require(dirname(__FILE__) . '/lib/Subscription.php');
|
123 |
require(dirname(__FILE__) . '/lib/SubscriptionItem.php');
|
124 |
+
require(dirname(__FILE__) . '/lib/SubscriptionSchedule.php');
|
125 |
+
require(dirname(__FILE__) . '/lib/SubscriptionScheduleRevision.php');
|
126 |
+
require(dirname(__FILE__) . '/lib/TaxId.php');
|
127 |
+
require(dirname(__FILE__) . '/lib/TaxRate.php');
|
128 |
+
require(dirname(__FILE__) . '/lib/Terminal/ConnectionToken.php');
|
129 |
+
require(dirname(__FILE__) . '/lib/Terminal/Location.php');
|
130 |
+
require(dirname(__FILE__) . '/lib/Terminal/Reader.php');
|
131 |
require(dirname(__FILE__) . '/lib/ThreeDSecure.php');
|
132 |
require(dirname(__FILE__) . '/lib/Token.php');
|
133 |
+
require(dirname(__FILE__) . '/lib/Topup.php');
|
134 |
require(dirname(__FILE__) . '/lib/Transfer.php');
|
135 |
require(dirname(__FILE__) . '/lib/TransferReversal.php');
|
136 |
+
require(dirname(__FILE__) . '/lib/UsageRecord.php');
|
137 |
+
require(dirname(__FILE__) . '/lib/UsageRecordSummary.php');
|
138 |
|
139 |
// OAuth
|
140 |
require(dirname(__FILE__) . '/lib/OAuth.php');
|
141 |
|
142 |
// Webhooks
|
143 |
require(dirname(__FILE__) . '/lib/Webhook.php');
|
144 |
+
require(dirname(__FILE__) . '/lib/WebhookEndpoint.php');
|
145 |
require(dirname(__FILE__) . '/lib/WebhookSignature.php');
|
includes/lib/Stripe/lib/Account.php
CHANGED
@@ -7,36 +7,89 @@ namespace Stripe;
|
|
7 |
*
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
-
* @property mixed $
|
11 |
-
* @property string $
|
12 |
-
* @property mixed $
|
13 |
* @property bool $charges_enabled
|
|
|
14 |
* @property string $country
|
15 |
-
* @property
|
16 |
-
* @property mixed $decline_charge_on
|
17 |
* @property string $default_currency
|
18 |
* @property bool $details_submitted
|
19 |
-
* @property string $display_name
|
20 |
* @property string $email
|
21 |
-
* @property
|
22 |
-
* @property mixed $
|
23 |
-
* @property
|
24 |
-
* @property mixed $payout_schedule
|
25 |
-
* @property mixed $payout_statement_descriptor
|
26 |
* @property bool $payouts_enabled
|
27 |
-
* @property mixed $
|
28 |
-
* @property mixed $
|
29 |
-
* @property mixed $support_email
|
30 |
-
* @property mixed $support_phone
|
31 |
-
* @property string $timezone
|
32 |
* @property mixed $tos_acceptance
|
33 |
-
* @property
|
34 |
-
* @property mixed $keys
|
35 |
*
|
36 |
* @package Stripe
|
37 |
*/
|
38 |
class Account extends ApiResource
|
39 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
public function instanceUrl()
|
41 |
{
|
42 |
if ($this['id'] === null) {
|
@@ -66,77 +119,275 @@ class Account extends ApiResource
|
|
66 |
* @param array|null $params
|
67 |
* @param array|string|null $opts
|
68 |
*
|
69 |
-
* @return Account
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
*/
|
71 |
-
public static function
|
72 |
{
|
73 |
-
return self::
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
}
|
75 |
|
76 |
/**
|
77 |
-
* @param string $id The ID of the account to update.
|
78 |
* @param array|null $params
|
79 |
* @param array|string|null $options
|
80 |
*
|
81 |
-
* @return
|
82 |
*/
|
83 |
-
public
|
84 |
{
|
85 |
-
|
|
|
|
|
|
|
|
|
86 |
}
|
87 |
|
88 |
/**
|
|
|
|
|
89 |
* @param array|string|null $opts
|
90 |
*
|
91 |
-
* @return
|
92 |
*/
|
93 |
-
public function
|
94 |
{
|
95 |
-
return
|
96 |
}
|
97 |
|
98 |
/**
|
|
|
|
|
99 |
* @param array|null $params
|
100 |
* @param array|string|null $opts
|
101 |
*
|
102 |
-
* @return
|
103 |
*/
|
104 |
-
public function
|
105 |
{
|
106 |
-
return
|
107 |
}
|
108 |
|
109 |
/**
|
|
|
|
|
110 |
* @param array|null $params
|
111 |
* @param array|string|null $opts
|
112 |
*
|
113 |
-
* @return
|
114 |
*/
|
115 |
-
public function
|
116 |
{
|
117 |
-
$
|
118 |
-
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
119 |
-
$this->refreshFrom($response, $opts);
|
120 |
-
return $this;
|
121 |
}
|
122 |
|
123 |
/**
|
|
|
|
|
124 |
* @param array|null $params
|
125 |
* @param array|string|null $opts
|
126 |
*
|
127 |
-
* @return
|
128 |
*/
|
129 |
-
public static function
|
130 |
{
|
131 |
-
return self::
|
132 |
}
|
133 |
|
134 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
{
|
136 |
-
$params
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
}
|
142 |
}
|
7 |
*
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
+
* @property mixed $business_profile
|
11 |
+
* @property string $business_type
|
12 |
+
* @property mixed $capabilities
|
13 |
* @property bool $charges_enabled
|
14 |
+
* @property mixed $company
|
15 |
* @property string $country
|
16 |
+
* @property int $created
|
|
|
17 |
* @property string $default_currency
|
18 |
* @property bool $details_submitted
|
|
|
19 |
* @property string $email
|
20 |
+
* @property Collection $external_accounts
|
21 |
+
* @property mixed $individual
|
22 |
+
* @property StripeObject $metadata
|
|
|
|
|
23 |
* @property bool $payouts_enabled
|
24 |
+
* @property mixed $requirements
|
25 |
+
* @property mixed $settings
|
|
|
|
|
|
|
26 |
* @property mixed $tos_acceptance
|
27 |
+
* @property string $type
|
|
|
28 |
*
|
29 |
* @package Stripe
|
30 |
*/
|
31 |
class Account extends ApiResource
|
32 |
{
|
33 |
+
|
34 |
+
const OBJECT_NAME = "account";
|
35 |
+
|
36 |
+
use ApiOperations\All;
|
37 |
+
use ApiOperations\Create;
|
38 |
+
use ApiOperations\Delete;
|
39 |
+
use ApiOperations\NestedResource;
|
40 |
+
use ApiOperations\Retrieve {
|
41 |
+
retrieve as protected _retrieve;
|
42 |
+
}
|
43 |
+
use ApiOperations\Update;
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Possible string representations of an account's business type.
|
47 |
+
* @link https://stripe.com/docs/api/accounts/object#account_object-business_type
|
48 |
+
*/
|
49 |
+
const BUSINESS_TYPE_COMPANY = 'company';
|
50 |
+
const BUSINESS_TYPE_INDIVIDUAL = 'individual';
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Possible string representations of an account's capabilities.
|
54 |
+
* @link https://stripe.com/docs/api/accounts/object#account_object-capabilities
|
55 |
+
*/
|
56 |
+
const CAPABILITY_CARD_PAYMENTS = 'card_payments';
|
57 |
+
const CAPABILITY_LEGACY_PAYMENTS = 'legacy_payments';
|
58 |
+
const CAPABILITY_PLATFORM_PAYMENTS = 'platform_payments';
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Possible string representations of an account's capability status.
|
62 |
+
* @link https://stripe.com/docs/api/accounts/object#account_object-capabilities
|
63 |
+
*/
|
64 |
+
const CAPABILITY_STATUS_ACTIVE = 'active';
|
65 |
+
const CAPABILITY_STATUS_INACTIVE = 'inactive';
|
66 |
+
const CAPABILITY_STATUS_PENDING = 'pending';
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Possible string representations of an account's type.
|
70 |
+
* @link https://stripe.com/docs/api/accounts/object#account_object-type
|
71 |
+
*/
|
72 |
+
const TYPE_CUSTOM = 'custom';
|
73 |
+
const TYPE_EXPRESS = 'express';
|
74 |
+
const TYPE_STANDARD = 'standard';
|
75 |
+
|
76 |
+
public static function getSavedNestedResources()
|
77 |
+
{
|
78 |
+
static $savedNestedResources = null;
|
79 |
+
if ($savedNestedResources === null) {
|
80 |
+
$savedNestedResources = new Util\Set([
|
81 |
+
'external_account',
|
82 |
+
'bank_account',
|
83 |
+
]);
|
84 |
+
}
|
85 |
+
return $savedNestedResources;
|
86 |
+
}
|
87 |
+
|
88 |
+
const PATH_CAPABILITIES = '/capabilities';
|
89 |
+
const PATH_EXTERNAL_ACCOUNTS = '/external_accounts';
|
90 |
+
const PATH_LOGIN_LINKS = '/login_links';
|
91 |
+
const PATH_PERSONS = '/persons';
|
92 |
+
|
93 |
public function instanceUrl()
|
94 |
{
|
95 |
if ($this['id'] === null) {
|
119 |
* @param array|null $params
|
120 |
* @param array|string|null $opts
|
121 |
*
|
122 |
+
* @return Account The rejected account.
|
123 |
+
*/
|
124 |
+
public function reject($params = null, $opts = null)
|
125 |
+
{
|
126 |
+
$url = $this->instanceUrl() . '/reject';
|
127 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
128 |
+
$this->refreshFrom($response, $opts);
|
129 |
+
return $this;
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* @param array|null $clientId
|
134 |
+
* @param array|string|null $opts
|
135 |
+
*
|
136 |
+
* @return StripeObject Object containing the response from the API.
|
137 |
+
*/
|
138 |
+
public function deauthorize($clientId = null, $opts = null)
|
139 |
+
{
|
140 |
+
$params = [
|
141 |
+
'client_id' => $clientId,
|
142 |
+
'stripe_user_id' => $this->id,
|
143 |
+
];
|
144 |
+
return OAuth::deauthorize($params, $opts);
|
145 |
+
}
|
146 |
+
|
147 |
+
/*
|
148 |
+
* Capabilities methods
|
149 |
+
* We can not add the capabilities() method today as the Account object already has a
|
150 |
+
* capabilities property which is a hash and not the sub-list of capabilities.
|
151 |
+
*/
|
152 |
+
|
153 |
+
|
154 |
+
/**
|
155 |
+
* @param string $id The ID of the account to which the capability belongs.
|
156 |
+
* @param string $capabilityId The ID of the capability to retrieve.
|
157 |
+
* @param array|null $params
|
158 |
+
* @param array|string|null $opts
|
159 |
+
*
|
160 |
+
* @return Capability
|
161 |
+
*/
|
162 |
+
public static function retrieveCapability($id, $capabilityId, $params = null, $opts = null)
|
163 |
+
{
|
164 |
+
return self::_retrieveNestedResource($id, static::PATH_CAPABILITIES, $capabilityId, $params, $opts);
|
165 |
+
}
|
166 |
+
|
167 |
+
/**
|
168 |
+
* @param string $id The ID of the account to which the capability belongs.
|
169 |
+
* @param string $capabilityId The ID of the capability to update.
|
170 |
+
* @param array|null $params
|
171 |
+
* @param array|string|null $opts
|
172 |
+
*
|
173 |
+
* @return Capability
|
174 |
+
*/
|
175 |
+
public static function updateCapability($id, $capabilityId, $params = null, $opts = null)
|
176 |
+
{
|
177 |
+
return self::_updateNestedResource($id, static::PATH_CAPABILITIES, $capabilityId, $params, $opts);
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* @param string $id The ID of the account on which to retrieve the capabilities.
|
182 |
+
* @param array|null $params
|
183 |
+
* @param array|string|null $opts
|
184 |
+
*
|
185 |
+
* @return Collection The list of capabilities.
|
186 |
*/
|
187 |
+
public static function allCapabilities($id, $params = null, $opts = null)
|
188 |
{
|
189 |
+
return self::_allNestedResources($id, static::PATH_CAPABILITIES, $params, $opts);
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* @param string $id The ID of the account on which to create the external account.
|
194 |
+
* @param array|null $params
|
195 |
+
* @param array|string|null $opts
|
196 |
+
*
|
197 |
+
* @return BankAccount|Card
|
198 |
+
*/
|
199 |
+
public static function createExternalAccount($id, $params = null, $opts = null)
|
200 |
+
{
|
201 |
+
return self::_createNestedResource($id, static::PATH_EXTERNAL_ACCOUNTS, $params, $opts);
|
202 |
+
}
|
203 |
+
|
204 |
+
/**
|
205 |
+
* @param string $id The ID of the account to which the external account belongs.
|
206 |
+
* @param string $externalAccountId The ID of the external account to retrieve.
|
207 |
+
* @param array|null $params
|
208 |
+
* @param array|string|null $opts
|
209 |
+
*
|
210 |
+
* @return BankAccount|Card
|
211 |
+
*/
|
212 |
+
public static function retrieveExternalAccount($id, $externalAccountId, $params = null, $opts = null)
|
213 |
+
{
|
214 |
+
return self::_retrieveNestedResource($id, static::PATH_EXTERNAL_ACCOUNTS, $externalAccountId, $params, $opts);
|
215 |
+
}
|
216 |
+
|
217 |
+
/**
|
218 |
+
* @param string $id The ID of the account to which the external account belongs.
|
219 |
+
* @param string $externalAccountId The ID of the external account to update.
|
220 |
+
* @param array|null $params
|
221 |
+
* @param array|string|null $opts
|
222 |
+
*
|
223 |
+
* @return BankAccount|Card
|
224 |
+
*/
|
225 |
+
public static function updateExternalAccount($id, $externalAccountId, $params = null, $opts = null)
|
226 |
+
{
|
227 |
+
return self::_updateNestedResource($id, static::PATH_EXTERNAL_ACCOUNTS, $externalAccountId, $params, $opts);
|
228 |
+
}
|
229 |
+
|
230 |
+
/**
|
231 |
+
* @param string $id The ID of the account to which the external account belongs.
|
232 |
+
* @param string $externalAccountId The ID of the external account to delete.
|
233 |
+
* @param array|null $params
|
234 |
+
* @param array|string|null $opts
|
235 |
+
*
|
236 |
+
* @return BankAccount|Card
|
237 |
+
*/
|
238 |
+
public static function deleteExternalAccount($id, $externalAccountId, $params = null, $opts = null)
|
239 |
+
{
|
240 |
+
return self::_deleteNestedResource($id, static::PATH_EXTERNAL_ACCOUNTS, $externalAccountId, $params, $opts);
|
241 |
+
}
|
242 |
+
|
243 |
+
/**
|
244 |
+
* @param string $id The ID of the account on which to retrieve the external accounts.
|
245 |
+
* @param array|null $params
|
246 |
+
* @param array|string|null $opts
|
247 |
+
*
|
248 |
+
* @return Collection The list of external accounts (BankAccount or Card).
|
249 |
+
*/
|
250 |
+
public static function allExternalAccounts($id, $params = null, $opts = null)
|
251 |
+
{
|
252 |
+
return self::_allNestedResources($id, static::PATH_EXTERNAL_ACCOUNTS, $params, $opts);
|
253 |
+
}
|
254 |
+
|
255 |
+
/**
|
256 |
+
* @param string $id The ID of the account on which to create the login link.
|
257 |
+
* @param array|null $params
|
258 |
+
* @param array|string|null $opts
|
259 |
+
*
|
260 |
+
* @return LoginLink
|
261 |
+
*/
|
262 |
+
public static function createLoginLink($id, $params = null, $opts = null)
|
263 |
+
{
|
264 |
+
return self::_createNestedResource($id, static::PATH_LOGIN_LINKS, $params, $opts);
|
265 |
}
|
266 |
|
267 |
/**
|
|
|
268 |
* @param array|null $params
|
269 |
* @param array|string|null $options
|
270 |
*
|
271 |
+
* @return Collection The list of persons.
|
272 |
*/
|
273 |
+
public function persons($params = null, $options = null)
|
274 |
{
|
275 |
+
$url = $this->instanceUrl() . '/persons';
|
276 |
+
list($response, $opts) = $this->_request('get', $url, $params, $options);
|
277 |
+
$obj = Util\Util::convertToStripeObject($response, $opts);
|
278 |
+
$obj->setLastResponse($response);
|
279 |
+
return $obj;
|
280 |
}
|
281 |
|
282 |
/**
|
283 |
+
* @param string $id The ID of the account on which to create the person.
|
284 |
+
* @param array|null $params
|
285 |
* @param array|string|null $opts
|
286 |
*
|
287 |
+
* @return Person
|
288 |
*/
|
289 |
+
public static function createPerson($id, $params = null, $opts = null)
|
290 |
{
|
291 |
+
return self::_createNestedResource($id, static::PATH_PERSONS, $params, $opts);
|
292 |
}
|
293 |
|
294 |
/**
|
295 |
+
* @param string $id The ID of the account to which the person belongs.
|
296 |
+
* @param string $personId The ID of the person to retrieve.
|
297 |
* @param array|null $params
|
298 |
* @param array|string|null $opts
|
299 |
*
|
300 |
+
* @return Person
|
301 |
*/
|
302 |
+
public static function retrievePerson($id, $personId, $params = null, $opts = null)
|
303 |
{
|
304 |
+
return self::_retrieveNestedResource($id, static::PATH_PERSONS, $personId, $params, $opts);
|
305 |
}
|
306 |
|
307 |
/**
|
308 |
+
* @param string $id The ID of the account to which the person belongs.
|
309 |
+
* @param string $personId The ID of the person to update.
|
310 |
* @param array|null $params
|
311 |
* @param array|string|null $opts
|
312 |
*
|
313 |
+
* @return Person
|
314 |
*/
|
315 |
+
public static function updatePerson($id, $personId, $params = null, $opts = null)
|
316 |
{
|
317 |
+
return self::_updateNestedResource($id, static::PATH_PERSONS, $personId, $params, $opts);
|
|
|
|
|
|
|
318 |
}
|
319 |
|
320 |
/**
|
321 |
+
* @param string $id The ID of the account to which the person belongs.
|
322 |
+
* @param string $personId The ID of the person to delete.
|
323 |
* @param array|null $params
|
324 |
* @param array|string|null $opts
|
325 |
*
|
326 |
+
* @return Person
|
327 |
*/
|
328 |
+
public static function deletePerson($id, $personId, $params = null, $opts = null)
|
329 |
{
|
330 |
+
return self::_deleteNestedResource($id, static::PATH_PERSONS, $personId, $params, $opts);
|
331 |
}
|
332 |
|
333 |
+
/**
|
334 |
+
* @param string $id The ID of the account on which to retrieve the persons.
|
335 |
+
* @param array|null $params
|
336 |
+
* @param array|string|null $opts
|
337 |
+
*
|
338 |
+
* @return Collection The list of persons.
|
339 |
+
*/
|
340 |
+
public static function allPersons($id, $params = null, $opts = null)
|
341 |
{
|
342 |
+
return self::_allNestedResources($id, static::PATH_PERSONS, $params, $opts);
|
343 |
+
}
|
344 |
+
|
345 |
+
public function serializeParameters($force = false)
|
346 |
+
{
|
347 |
+
$update = parent::serializeParameters($force);
|
348 |
+
if (isset($this->_values['legal_entity'])) {
|
349 |
+
$entity = $this['legal_entity'];
|
350 |
+
if (isset($entity->_values['additional_owners'])) {
|
351 |
+
$owners = $entity['additional_owners'];
|
352 |
+
$entityUpdate = isset($update['legal_entity']) ? $update['legal_entity'] : [];
|
353 |
+
$entityUpdate['additional_owners'] = $this->serializeAdditionalOwners($entity, $owners);
|
354 |
+
$update['legal_entity'] = $entityUpdate;
|
355 |
+
}
|
356 |
+
}
|
357 |
+
if (isset($this->_values['individual'])) {
|
358 |
+
$individual = $this['individual'];
|
359 |
+
if (($individual instanceof Person) && !isset($update['individual'])) {
|
360 |
+
$update['individual'] = $individual->serializeParameters($force);
|
361 |
+
}
|
362 |
+
}
|
363 |
+
return $update;
|
364 |
+
}
|
365 |
+
|
366 |
+
private function serializeAdditionalOwners($legalEntity, $additionalOwners)
|
367 |
+
{
|
368 |
+
if (isset($legalEntity->_originalValues['additional_owners'])) {
|
369 |
+
$originalValue = $legalEntity->_originalValues['additional_owners'];
|
370 |
+
} else {
|
371 |
+
$originalValue = [];
|
372 |
+
}
|
373 |
+
if (($originalValue) && (count($originalValue) > count($additionalOwners))) {
|
374 |
+
throw new \InvalidArgumentException(
|
375 |
+
"You cannot delete an item from an array, you must instead set a new array"
|
376 |
+
);
|
377 |
+
}
|
378 |
+
|
379 |
+
$updateArr = [];
|
380 |
+
foreach ($additionalOwners as $i => $v) {
|
381 |
+
$update = ($v instanceof StripeObject) ? $v->serializeParameters() : $v;
|
382 |
+
|
383 |
+
if ($update !== []) {
|
384 |
+
if (!$originalValue ||
|
385 |
+
!array_key_exists($i, $originalValue) ||
|
386 |
+
($update != $legalEntity->serializeParamsValue($originalValue[$i], null, false, true))) {
|
387 |
+
$updateArr[$i] = $update;
|
388 |
+
}
|
389 |
+
}
|
390 |
+
}
|
391 |
+
return $updateArr;
|
392 |
}
|
393 |
}
|
includes/lib/Stripe/lib/AccountLink.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class AccountLink
|
7 |
+
*
|
8 |
+
* @property string $object
|
9 |
+
* @property int $created
|
10 |
+
* @property int $expires_at
|
11 |
+
* @property string $url
|
12 |
+
*
|
13 |
+
* @package Stripe
|
14 |
+
*/
|
15 |
+
class AccountLink extends ApiResource
|
16 |
+
{
|
17 |
+
|
18 |
+
const OBJECT_NAME = "account_link";
|
19 |
+
|
20 |
+
use ApiOperations\Create;
|
21 |
+
}
|
includes/lib/Stripe/lib/AlipayAccount.php
CHANGED
@@ -6,8 +6,67 @@ namespace Stripe;
|
|
6 |
* Class AlipayAccount
|
7 |
*
|
8 |
* @package Stripe
|
|
|
|
|
|
|
9 |
*/
|
10 |
-
class AlipayAccount extends
|
11 |
{
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
}
|
6 |
* Class AlipayAccount
|
7 |
*
|
8 |
* @package Stripe
|
9 |
+
*
|
10 |
+
* @deprecated Alipay accounts are deprecated. Please use the sources API instead.
|
11 |
+
* @link https://stripe.com/docs/sources/alipay
|
12 |
*/
|
13 |
+
class AlipayAccount extends ApiResource
|
14 |
{
|
15 |
|
16 |
+
const OBJECT_NAME = "alipay_account";
|
17 |
+
|
18 |
+
use ApiOperations\Delete;
|
19 |
+
use ApiOperations\Update;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @return string The instance URL for this resource. It needs to be special
|
23 |
+
* cased because it doesn't fit into the standard resource pattern.
|
24 |
+
*/
|
25 |
+
public function instanceUrl()
|
26 |
+
{
|
27 |
+
if ($this['customer']) {
|
28 |
+
$base = Customer::classUrl();
|
29 |
+
$parent = $this['customer'];
|
30 |
+
$path = 'sources';
|
31 |
+
} else {
|
32 |
+
$msg = "Alipay accounts cannot be accessed without a customer ID.";
|
33 |
+
throw new Error\InvalidRequest($msg, null);
|
34 |
+
}
|
35 |
+
$parentExtn = urlencode(Util\Util::utf8($parent));
|
36 |
+
$extn = urlencode(Util\Util::utf8($this['id']));
|
37 |
+
return "$base/$parentExtn/$path/$extn";
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @param array|string $_id
|
42 |
+
* @param array|string|null $_opts
|
43 |
+
*
|
44 |
+
* @throws \Stripe\Error\InvalidRequest
|
45 |
+
*
|
46 |
+
* @deprecated Alipay accounts are deprecated. Please use the sources API instead.
|
47 |
+
* @link https://stripe.com/docs/sources/alipay
|
48 |
+
*/
|
49 |
+
public static function retrieve($_id, $_opts = null)
|
50 |
+
{
|
51 |
+
$msg = "Alipay accounts cannot be accessed without a customer ID. " .
|
52 |
+
"Retrieve an Alipay account using \$customer->sources->retrieve('alipay_account_id') instead.";
|
53 |
+
throw new Error\InvalidRequest($msg, null);
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* @param string $_id
|
58 |
+
* @param array|null $_params
|
59 |
+
* @param array|string|null $_options
|
60 |
+
*
|
61 |
+
* @throws \Stripe\Error\InvalidRequest
|
62 |
+
*
|
63 |
+
* @deprecated Alipay accounts are deprecated. Please use the sources API instead.
|
64 |
+
* @link https://stripe.com/docs/sources/alipay
|
65 |
+
*/
|
66 |
+
public static function update($_id, $_params = null, $_options = null)
|
67 |
+
{
|
68 |
+
$msg = "Alipay accounts cannot be accessed without a customer ID. " .
|
69 |
+
"Call save() on \$customer->sources->retrieve('alipay_account_id') instead.";
|
70 |
+
throw new Error\InvalidRequest($msg, null);
|
71 |
+
}
|
72 |
}
|
includes/lib/Stripe/lib/ApiOperations/All.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\ApiOperations;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Trait for listable resources. Adds a `all()` static method to the class.
|
7 |
+
*
|
8 |
+
* This trait should only be applied to classes that derive from StripeObject.
|
9 |
+
*/
|
10 |
+
trait All
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* @param array|null $params
|
14 |
+
* @param array|string|null $opts
|
15 |
+
*
|
16 |
+
* @return \Stripe\Collection of ApiResources
|
17 |
+
*/
|
18 |
+
public static function all($params = null, $opts = null)
|
19 |
+
{
|
20 |
+
self::_validateParams($params);
|
21 |
+
$url = static::classUrl();
|
22 |
+
|
23 |
+
list($response, $opts) = static::_staticRequest('get', $url, $params, $opts);
|
24 |
+
$obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
|
25 |
+
if (!is_a($obj, 'Stripe\\Collection')) {
|
26 |
+
$class = get_class($obj);
|
27 |
+
$message = "Expected type \"Stripe\\Collection\", got \"$class\" instead";
|
28 |
+
throw new \Stripe\Error\Api($message);
|
29 |
+
}
|
30 |
+
$obj->setLastResponse($response);
|
31 |
+
$obj->setRequestParams($params);
|
32 |
+
return $obj;
|
33 |
+
}
|
34 |
+
}
|
includes/lib/Stripe/lib/ApiOperations/Create.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\ApiOperations;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Trait for creatable resources. Adds a `create()` static method to the class.
|
7 |
+
*
|
8 |
+
* This trait should only be applied to classes that derive from StripeObject.
|
9 |
+
*/
|
10 |
+
trait Create
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* @param array|null $params
|
14 |
+
* @param array|string|null $options
|
15 |
+
*
|
16 |
+
* @return static The created resource.
|
17 |
+
*/
|
18 |
+
public static function create($params = null, $options = null)
|
19 |
+
{
|
20 |
+
self::_validateParams($params);
|
21 |
+
$url = static::classUrl();
|
22 |
+
|
23 |
+
list($response, $opts) = static::_staticRequest('post', $url, $params, $options);
|
24 |
+
$obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
|
25 |
+
$obj->setLastResponse($response);
|
26 |
+
return $obj;
|
27 |
+
}
|
28 |
+
}
|
includes/lib/Stripe/lib/ApiOperations/Delete.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\ApiOperations;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Trait for deletable resources. Adds a `delete()` method to the class.
|
7 |
+
*
|
8 |
+
* This trait should only be applied to classes that derive from StripeObject.
|
9 |
+
*/
|
10 |
+
trait Delete
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* @param array|null $params
|
14 |
+
* @param array|string|null $opts
|
15 |
+
*
|
16 |
+
* @return static The deleted resource.
|
17 |
+
*/
|
18 |
+
public function delete($params = null, $opts = null)
|
19 |
+
{
|
20 |
+
self::_validateParams($params);
|
21 |
+
|
22 |
+
$url = $this->instanceUrl();
|
23 |
+
list($response, $opts) = $this->_request('delete', $url, $params, $opts);
|
24 |
+
$this->refreshFrom($response, $opts);
|
25 |
+
return $this;
|
26 |
+
}
|
27 |
+
}
|
includes/lib/Stripe/lib/ApiOperations/NestedResource.php
ADDED
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\ApiOperations;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Trait for resources that have nested resources.
|
7 |
+
*
|
8 |
+
* This trait should only be applied to classes that derive from StripeObject.
|
9 |
+
*/
|
10 |
+
trait NestedResource
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* @param string $method
|
14 |
+
* @param string $url
|
15 |
+
* @param array|null $params
|
16 |
+
* @param array|string|null $options
|
17 |
+
*
|
18 |
+
* @return \Stripe\StripeObject
|
19 |
+
*/
|
20 |
+
protected static function _nestedResourceOperation($method, $url, $params = null, $options = null)
|
21 |
+
{
|
22 |
+
self::_validateParams($params);
|
23 |
+
|
24 |
+
list($response, $opts) = static::_staticRequest($method, $url, $params, $options);
|
25 |
+
$obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
|
26 |
+
$obj->setLastResponse($response);
|
27 |
+
return $obj;
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @param string $id
|
32 |
+
* @param string $nestedPath
|
33 |
+
* @param string|null $nestedId
|
34 |
+
*
|
35 |
+
* @return string
|
36 |
+
*/
|
37 |
+
protected static function _nestedResourceUrl($id, $nestedPath, $nestedId = null)
|
38 |
+
{
|
39 |
+
$url = static::resourceUrl($id) . $nestedPath;
|
40 |
+
if ($nestedId !== null) {
|
41 |
+
$url .= "/$nestedId";
|
42 |
+
}
|
43 |
+
return $url;
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @param string $id
|
48 |
+
* @param string $nestedPath
|
49 |
+
* @param array|null $params
|
50 |
+
* @param array|string|null $options
|
51 |
+
*
|
52 |
+
* @return \Stripe\StripeObject
|
53 |
+
*/
|
54 |
+
protected static function _createNestedResource($id, $nestedPath, $params = null, $options = null)
|
55 |
+
{
|
56 |
+
$url = static::_nestedResourceUrl($id, $nestedPath);
|
57 |
+
return self::_nestedResourceOperation('post', $url, $params, $options);
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* @param string $id
|
62 |
+
* @param string $nestedPath
|
63 |
+
* @param string|null $nestedId
|
64 |
+
* @param array|null $params
|
65 |
+
* @param array|string|null $options
|
66 |
+
*
|
67 |
+
* @return \Stripe\StripeObject
|
68 |
+
*/
|
69 |
+
protected static function _retrieveNestedResource($id, $nestedPath, $nestedId, $params = null, $options = null)
|
70 |
+
{
|
71 |
+
$url = static::_nestedResourceUrl($id, $nestedPath, $nestedId);
|
72 |
+
return self::_nestedResourceOperation('get', $url, $params, $options);
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* @param string $id
|
77 |
+
* @param string $nestedPath
|
78 |
+
* @param string|null $nestedId
|
79 |
+
* @param array|null $params
|
80 |
+
* @param array|string|null $options
|
81 |
+
*
|
82 |
+
* @return \Stripe\StripeObject
|
83 |
+
*/
|
84 |
+
protected static function _updateNestedResource($id, $nestedPath, $nestedId, $params = null, $options = null)
|
85 |
+
{
|
86 |
+
$url = static::_nestedResourceUrl($id, $nestedPath, $nestedId);
|
87 |
+
return self::_nestedResourceOperation('post', $url, $params, $options);
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* @param string $id
|
92 |
+
* @param string $nestedPath
|
93 |
+
* @param string|null $nestedId
|
94 |
+
* @param array|null $params
|
95 |
+
* @param array|string|null $options
|
96 |
+
*
|
97 |
+
* @return \Stripe\StripeObject
|
98 |
+
*/
|
99 |
+
protected static function _deleteNestedResource($id, $nestedPath, $nestedId, $params = null, $options = null)
|
100 |
+
{
|
101 |
+
$url = static::_nestedResourceUrl($id, $nestedPath, $nestedId);
|
102 |
+
return self::_nestedResourceOperation('delete', $url, $params, $options);
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* @param string $id
|
107 |
+
* @param string $nestedPath
|
108 |
+
* @param array|null $params
|
109 |
+
* @param array|string|null $options
|
110 |
+
*
|
111 |
+
* @return \Stripe\StripeObject
|
112 |
+
*/
|
113 |
+
protected static function _allNestedResources($id, $nestedPath, $params = null, $options = null)
|
114 |
+
{
|
115 |
+
$url = static::_nestedResourceUrl($id, $nestedPath);
|
116 |
+
return self::_nestedResourceOperation('get', $url, $params, $options);
|
117 |
+
}
|
118 |
+
}
|
includes/lib/Stripe/lib/ApiOperations/Request.php
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\ApiOperations;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Trait for resources that need to make API requests.
|
7 |
+
*
|
8 |
+
* This trait should only be applied to classes that derive from StripeObject.
|
9 |
+
*/
|
10 |
+
trait Request
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* @param array|null|mixed $params The list of parameters to validate
|
14 |
+
*
|
15 |
+
* @throws \Stripe\Error\Api if $params exists and is not an array
|
16 |
+
*/
|
17 |
+
protected static function _validateParams($params = null)
|
18 |
+
{
|
19 |
+
if ($params && !is_array($params)) {
|
20 |
+
$message = "You must pass an array as the first argument to Stripe API "
|
21 |
+
. "method calls. (HINT: an example call to create a charge "
|
22 |
+
. "would be: \"Stripe\\Charge::create(['amount' => 100, "
|
23 |
+
. "'currency' => 'usd', 'source' => 'tok_1234'])\")";
|
24 |
+
throw new \Stripe\Error\Api($message);
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* @param string $method HTTP method ('get', 'post', etc.)
|
30 |
+
* @param string $url URL for the request
|
31 |
+
* @param array $params list of parameters for the request
|
32 |
+
* @param array|string|null $options
|
33 |
+
*
|
34 |
+
* @return array tuple containing (the JSON response, $options)
|
35 |
+
*/
|
36 |
+
protected function _request($method, $url, $params = [], $options = null)
|
37 |
+
{
|
38 |
+
$opts = $this->_opts->merge($options);
|
39 |
+
list($resp, $options) = static::_staticRequest($method, $url, $params, $opts);
|
40 |
+
$this->setLastResponse($resp);
|
41 |
+
return [$resp->json, $options];
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @param string $method HTTP method ('get', 'post', etc.)
|
46 |
+
* @param string $url URL for the request
|
47 |
+
* @param array $params list of parameters for the request
|
48 |
+
* @param array|string|null $options
|
49 |
+
*
|
50 |
+
* @return array tuple containing (the JSON response, $options)
|
51 |
+
*/
|
52 |
+
protected static function _staticRequest($method, $url, $params, $options)
|
53 |
+
{
|
54 |
+
$opts = \Stripe\Util\RequestOptions::parse($options);
|
55 |
+
$baseUrl = isset($opts->apiBase) ? $opts->apiBase : static::baseUrl();
|
56 |
+
$requestor = new \Stripe\ApiRequestor($opts->apiKey, $baseUrl);
|
57 |
+
list($response, $opts->apiKey) = $requestor->request($method, $url, $params, $opts->headers);
|
58 |
+
$opts->discardNonPersistentHeaders();
|
59 |
+
return [$response, $opts];
|
60 |
+
}
|
61 |
+
}
|
includes/lib/Stripe/lib/ApiOperations/Retrieve.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\ApiOperations;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Trait for retrievable resources. Adds a `retrieve()` static method to the
|
7 |
+
* class.
|
8 |
+
*
|
9 |
+
* This trait should only be applied to classes that derive from StripeObject.
|
10 |
+
*/
|
11 |
+
trait Retrieve
|
12 |
+
{
|
13 |
+
/**
|
14 |
+
* @param array|string $id The ID of the API resource to retrieve,
|
15 |
+
* or an options array containing an `id` key.
|
16 |
+
* @param array|string|null $opts
|
17 |
+
*
|
18 |
+
* @return static
|
19 |
+
*/
|
20 |
+
public static function retrieve($id, $opts = null)
|
21 |
+
{
|
22 |
+
$opts = \Stripe\Util\RequestOptions::parse($opts);
|
23 |
+
$instance = new static($id, $opts);
|
24 |
+
$instance->refresh();
|
25 |
+
return $instance;
|
26 |
+
}
|
27 |
+
}
|
includes/lib/Stripe/lib/ApiOperations/Update.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\ApiOperations;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Trait for updatable resources. Adds an `update()` static method and a
|
7 |
+
* `save()` method to the class.
|
8 |
+
*
|
9 |
+
* This trait should only be applied to classes that derive from StripeObject.
|
10 |
+
*/
|
11 |
+
trait Update
|
12 |
+
{
|
13 |
+
/**
|
14 |
+
* @param string $id The ID of the resource to update.
|
15 |
+
* @param array|null $params
|
16 |
+
* @param array|string|null $opts
|
17 |
+
*
|
18 |
+
* @return static The updated resource.
|
19 |
+
*/
|
20 |
+
public static function update($id, $params = null, $opts = null)
|
21 |
+
{
|
22 |
+
self::_validateParams($params);
|
23 |
+
$url = static::resourceUrl($id);
|
24 |
+
|
25 |
+
list($response, $opts) = static::_staticRequest('post', $url, $params, $opts);
|
26 |
+
$obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
|
27 |
+
$obj->setLastResponse($response);
|
28 |
+
return $obj;
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @param array|string|null $opts
|
33 |
+
*
|
34 |
+
* @return static The saved resource.
|
35 |
+
*/
|
36 |
+
public function save($opts = null)
|
37 |
+
{
|
38 |
+
$params = $this->serializeParameters();
|
39 |
+
if (count($params) > 0) {
|
40 |
+
$url = $this->instanceUrl();
|
41 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
42 |
+
$this->refreshFrom($response, $opts);
|
43 |
+
}
|
44 |
+
return $this;
|
45 |
+
}
|
46 |
+
}
|
includes/lib/Stripe/lib/ApiRequestor.php
CHANGED
@@ -9,12 +9,32 @@ namespace Stripe;
|
|
9 |
*/
|
10 |
class ApiRequestor
|
11 |
{
|
|
|
|
|
|
|
12 |
private $_apiKey;
|
13 |
|
|
|
|
|
|
|
14 |
private $_apiBase;
|
15 |
|
|
|
|
|
|
|
16 |
private static $_httpClient;
|
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
public function __construct($apiKey = null, $apiBase = null)
|
19 |
{
|
20 |
$this->_apiKey = $apiKey;
|
@@ -24,6 +44,37 @@ class ApiRequestor
|
|
24 |
$this->_apiBase = $apiBase;
|
25 |
}
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
private static function _encodeObjects($d)
|
28 |
{
|
29 |
if ($d instanceof ApiResource) {
|
@@ -33,7 +84,7 @@ class ApiRequestor
|
|
33 |
} elseif ($d === false) {
|
34 |
return 'false';
|
35 |
} elseif (is_array($d)) {
|
36 |
-
$res =
|
37 |
foreach ($d as $k => $v) {
|
38 |
$res[$k] = self::_encodeObjects($v);
|
39 |
}
|
@@ -44,27 +95,37 @@ class ApiRequestor
|
|
44 |
}
|
45 |
|
46 |
/**
|
47 |
-
* @param string
|
48 |
-
* @param string
|
49 |
* @param array|null $params
|
50 |
* @param array|null $headers
|
51 |
*
|
52 |
* @return array An array whose first element is an API response and second
|
53 |
* element is the API key used to make the request.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
*/
|
55 |
public function request($method, $url, $params = null, $headers = null)
|
56 |
{
|
57 |
-
|
58 |
-
|
59 |
-
}
|
60 |
-
if (!$headers) {
|
61 |
-
$headers = array();
|
62 |
-
}
|
63 |
list($rbody, $rcode, $rheaders, $myApiKey) =
|
64 |
$this->_requestRaw($method, $url, $params, $headers);
|
65 |
$json = $this->_interpretResponse($rbody, $rcode, $rheaders);
|
66 |
$resp = new ApiResponse($rbody, $rcode, $rheaders, $json);
|
67 |
-
return
|
68 |
}
|
69 |
|
70 |
/**
|
@@ -80,6 +141,16 @@ class ApiRequestor
|
|
80 |
* permissions.
|
81 |
* @throws Error\Card if the error is the error code is 402 (payment
|
82 |
* required)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
* @throws Error\RateLimit if the error is caused by too many requests
|
84 |
* hitting the API.
|
85 |
* @throws Error\Api otherwise.
|
@@ -105,11 +176,23 @@ class ApiRequestor
|
|
105 |
throw $error;
|
106 |
}
|
107 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
private static function _specificAPIError($rbody, $rcode, $rheaders, $resp, $errorData)
|
109 |
{
|
110 |
$msg = isset($errorData['message']) ? $errorData['message'] : null;
|
111 |
$param = isset($errorData['param']) ? $errorData['param'] : null;
|
112 |
$code = isset($errorData['code']) ? $errorData['code'] : null;
|
|
|
113 |
|
114 |
switch ($rcode) {
|
115 |
case 400:
|
@@ -118,6 +201,9 @@ class ApiRequestor
|
|
118 |
if ($code == 'rate_limit') {
|
119 |
return new Error\RateLimit($msg, $param, $rcode, $rbody, $resp, $rheaders);
|
120 |
}
|
|
|
|
|
|
|
121 |
|
122 |
// intentional fall-through
|
123 |
case 404:
|
@@ -135,6 +221,17 @@ class ApiRequestor
|
|
135 |
}
|
136 |
}
|
137 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
private static function _specificOAuthError($rbody, $rcode, $rheaders, $resp, $errorCode)
|
139 |
{
|
140 |
$description = isset($resp['error_description']) ? $resp['error_description'] : $errorCode;
|
@@ -157,6 +254,13 @@ class ApiRequestor
|
|
157 |
return null;
|
158 |
}
|
159 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
private static function _formatAppInfo($appInfo)
|
161 |
{
|
162 |
if ($appInfo !== null) {
|
@@ -173,6 +277,14 @@ class ApiRequestor
|
|
173 |
}
|
174 |
}
|
175 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
private static function _defaultHeaders($apiKey, $clientInfo = null)
|
177 |
{
|
178 |
$uaString = 'Stripe/v1 PhpBindings/' . Stripe::VERSION;
|
@@ -181,13 +293,13 @@ class ApiRequestor
|
|
181 |
$uname = php_uname();
|
182 |
|
183 |
$appInfo = Stripe::getAppInfo();
|
184 |
-
$ua =
|
185 |
'bindings_version' => Stripe::VERSION,
|
186 |
'lang' => 'php',
|
187 |
'lang_version' => $langVersion,
|
188 |
'publisher' => 'stripe',
|
189 |
'uname' => $uname,
|
190 |
-
|
191 |
if ($clientInfo) {
|
192 |
$ua = array_merge($clientInfo, $ua);
|
193 |
}
|
@@ -196,14 +308,25 @@ class ApiRequestor
|
|
196 |
$ua['application'] = $appInfo;
|
197 |
}
|
198 |
|
199 |
-
$defaultHeaders =
|
200 |
'X-Stripe-Client-User-Agent' => json_encode($ua),
|
201 |
'User-Agent' => $uaString,
|
202 |
'Authorization' => 'Bearer ' . $apiKey,
|
203 |
-
|
204 |
return $defaultHeaders;
|
205 |
}
|
206 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
private function _requestRaw($method, $url, $params, $headers)
|
208 |
{
|
209 |
$myApiKey = $this->_apiKey;
|
@@ -238,6 +361,10 @@ class ApiRequestor
|
|
238 |
$defaultHeaders['Stripe-Account'] = Stripe::$accountId;
|
239 |
}
|
240 |
|
|
|
|
|
|
|
|
|
241 |
$hasFile = false;
|
242 |
$hasCurlFile = class_exists('\CURLFile', false);
|
243 |
foreach ($params as $k => $v) {
|
@@ -256,12 +383,14 @@ class ApiRequestor
|
|
256 |
}
|
257 |
|
258 |
$combinedHeaders = array_merge($defaultHeaders, $headers);
|
259 |
-
$rawHeaders =
|
260 |
|
261 |
foreach ($combinedHeaders as $header => $value) {
|
262 |
$rawHeaders[] = $header . ': ' . $value;
|
263 |
}
|
264 |
|
|
|
|
|
265 |
list($rbody, $rcode, $rheaders) = $this->httpClient()->request(
|
266 |
$method,
|
267 |
$absUrl,
|
@@ -269,9 +398,24 @@ class ApiRequestor
|
|
269 |
$params,
|
270 |
$hasFile
|
271 |
);
|
272 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
}
|
274 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
275 |
private function _processResourceParam($resource, $hasCurlFile)
|
276 |
{
|
277 |
if (get_resource_type($resource) !== 'stream') {
|
@@ -295,6 +439,26 @@ class ApiRequestor
|
|
295 |
}
|
296 |
}
|
297 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
298 |
private function _interpretResponse($rbody, $rcode, $rheaders)
|
299 |
{
|
300 |
$resp = json_decode($rbody, true);
|
@@ -311,11 +475,29 @@ class ApiRequestor
|
|
311 |
return $resp;
|
312 |
}
|
313 |
|
|
|
|
|
|
|
|
|
|
|
314 |
public static function setHttpClient($client)
|
315 |
{
|
316 |
self::$_httpClient = $client;
|
317 |
}
|
318 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
319 |
private function httpClient()
|
320 |
{
|
321 |
if (!self::$_httpClient) {
|
9 |
*/
|
10 |
class ApiRequestor
|
11 |
{
|
12 |
+
/**
|
13 |
+
* @var string|null
|
14 |
+
*/
|
15 |
private $_apiKey;
|
16 |
|
17 |
+
/**
|
18 |
+
* @var string
|
19 |
+
*/
|
20 |
private $_apiBase;
|
21 |
|
22 |
+
/**
|
23 |
+
* @var HttpClient\ClientInterface
|
24 |
+
*/
|
25 |
private static $_httpClient;
|
26 |
|
27 |
+
/**
|
28 |
+
* @var RequestTelemetry
|
29 |
+
*/
|
30 |
+
private static $requestTelemetry;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* ApiRequestor constructor.
|
34 |
+
*
|
35 |
+
* @param string|null $apiKey
|
36 |
+
* @param string|null $apiBase
|
37 |
+
*/
|
38 |
public function __construct($apiKey = null, $apiBase = null)
|
39 |
{
|
40 |
$this->_apiKey = $apiKey;
|
44 |
$this->_apiBase = $apiBase;
|
45 |
}
|
46 |
|
47 |
+
/**
|
48 |
+
* Creates a telemetry json blob for use in 'X-Stripe-Client-Telemetry' headers
|
49 |
+
* @static
|
50 |
+
*
|
51 |
+
* @param RequestTelemetry $requestTelemetry
|
52 |
+
* @return string
|
53 |
+
*/
|
54 |
+
private static function _telemetryJson($requestTelemetry)
|
55 |
+
{
|
56 |
+
$payload = array(
|
57 |
+
'last_request_metrics' => array(
|
58 |
+
'request_id' => $requestTelemetry->requestId,
|
59 |
+
'request_duration_ms' => $requestTelemetry->requestDuration,
|
60 |
+
));
|
61 |
+
|
62 |
+
$result = json_encode($payload);
|
63 |
+
if ($result != false) {
|
64 |
+
return $result;
|
65 |
+
} else {
|
66 |
+
Stripe::getLogger()->error("Serializing telemetry payload failed!");
|
67 |
+
return "{}";
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* @static
|
73 |
+
*
|
74 |
+
* @param ApiResource|bool|array|mixed $d
|
75 |
+
*
|
76 |
+
* @return ApiResource|array|string|mixed
|
77 |
+
*/
|
78 |
private static function _encodeObjects($d)
|
79 |
{
|
80 |
if ($d instanceof ApiResource) {
|
84 |
} elseif ($d === false) {
|
85 |
return 'false';
|
86 |
} elseif (is_array($d)) {
|
87 |
+
$res = [];
|
88 |
foreach ($d as $k => $v) {
|
89 |
$res[$k] = self::_encodeObjects($v);
|
90 |
}
|
95 |
}
|
96 |
|
97 |
/**
|
98 |
+
* @param string $method
|
99 |
+
* @param string $url
|
100 |
* @param array|null $params
|
101 |
* @param array|null $headers
|
102 |
*
|
103 |
* @return array An array whose first element is an API response and second
|
104 |
* element is the API key used to make the request.
|
105 |
+
* @throws Error\Api
|
106 |
+
* @throws Error\Authentication
|
107 |
+
* @throws Error\Card
|
108 |
+
* @throws Error\InvalidRequest
|
109 |
+
* @throws Error\OAuth\InvalidClient
|
110 |
+
* @throws Error\OAuth\InvalidGrant
|
111 |
+
* @throws Error\OAuth\InvalidRequest
|
112 |
+
* @throws Error\OAuth\InvalidScope
|
113 |
+
* @throws Error\OAuth\UnsupportedGrantType
|
114 |
+
* @throws Error\OAuth\UnsupportedResponseType
|
115 |
+
* @throws Error\Permission
|
116 |
+
* @throws Error\RateLimit
|
117 |
+
* @throws Error\Idempotency
|
118 |
+
* @throws Error\ApiConnection
|
119 |
*/
|
120 |
public function request($method, $url, $params = null, $headers = null)
|
121 |
{
|
122 |
+
$params = $params ?: [];
|
123 |
+
$headers = $headers ?: [];
|
|
|
|
|
|
|
|
|
124 |
list($rbody, $rcode, $rheaders, $myApiKey) =
|
125 |
$this->_requestRaw($method, $url, $params, $headers);
|
126 |
$json = $this->_interpretResponse($rbody, $rcode, $rheaders);
|
127 |
$resp = new ApiResponse($rbody, $rcode, $rheaders, $json);
|
128 |
+
return [$resp, $myApiKey];
|
129 |
}
|
130 |
|
131 |
/**
|
141 |
* permissions.
|
142 |
* @throws Error\Card if the error is the error code is 402 (payment
|
143 |
* required)
|
144 |
+
* @throws Error\InvalidRequest if the error is caused by the user.
|
145 |
+
* @throws Error\Idempotency if the error is caused by an idempotency key.
|
146 |
+
* @throws Error\OAuth\InvalidClient
|
147 |
+
* @throws Error\OAuth\InvalidGrant
|
148 |
+
* @throws Error\OAuth\InvalidRequest
|
149 |
+
* @throws Error\OAuth\InvalidScope
|
150 |
+
* @throws Error\OAuth\UnsupportedGrantType
|
151 |
+
* @throws Error\OAuth\UnsupportedResponseType
|
152 |
+
* @throws Error\Permission if the error is caused by insufficient
|
153 |
+
* permissions.
|
154 |
* @throws Error\RateLimit if the error is caused by too many requests
|
155 |
* hitting the API.
|
156 |
* @throws Error\Api otherwise.
|
176 |
throw $error;
|
177 |
}
|
178 |
|
179 |
+
/**
|
180 |
+
* @static
|
181 |
+
*
|
182 |
+
* @param string $rbody
|
183 |
+
* @param int $rcode
|
184 |
+
* @param array $rheaders
|
185 |
+
* @param array $resp
|
186 |
+
* @param array $errorData
|
187 |
+
*
|
188 |
+
* @return Error\RateLimit|Error\Idempotency|Error\InvalidRequest|Error\Authentication|Error\Card|Error\Permission|Error\Api
|
189 |
+
*/
|
190 |
private static function _specificAPIError($rbody, $rcode, $rheaders, $resp, $errorData)
|
191 |
{
|
192 |
$msg = isset($errorData['message']) ? $errorData['message'] : null;
|
193 |
$param = isset($errorData['param']) ? $errorData['param'] : null;
|
194 |
$code = isset($errorData['code']) ? $errorData['code'] : null;
|
195 |
+
$type = isset($errorData['type']) ? $errorData['type'] : null;
|
196 |
|
197 |
switch ($rcode) {
|
198 |
case 400:
|
201 |
if ($code == 'rate_limit') {
|
202 |
return new Error\RateLimit($msg, $param, $rcode, $rbody, $resp, $rheaders);
|
203 |
}
|
204 |
+
if ($type == 'idempotency_error') {
|
205 |
+
return new Error\Idempotency($msg, $rcode, $rbody, $resp, $rheaders);
|
206 |
+
}
|
207 |
|
208 |
// intentional fall-through
|
209 |
case 404:
|
221 |
}
|
222 |
}
|
223 |
|
224 |
+
/**
|
225 |
+
* @static
|
226 |
+
*
|
227 |
+
* @param string|bool $rbody
|
228 |
+
* @param int $rcode
|
229 |
+
* @param array $rheaders
|
230 |
+
* @param array $resp
|
231 |
+
* @param string $errorCode
|
232 |
+
*
|
233 |
+
* @return null|Error\OAuth\InvalidClient|Error\OAuth\InvalidGrant|Error\OAuth\InvalidRequest|Error\OAuth\InvalidScope|Error\OAuth\UnsupportedGrantType|Error\OAuth\UnsupportedResponseType
|
234 |
+
*/
|
235 |
private static function _specificOAuthError($rbody, $rcode, $rheaders, $resp, $errorCode)
|
236 |
{
|
237 |
$description = isset($resp['error_description']) ? $resp['error_description'] : $errorCode;
|
254 |
return null;
|
255 |
}
|
256 |
|
257 |
+
/**
|
258 |
+
* @static
|
259 |
+
*
|
260 |
+
* @param null|array $appInfo
|
261 |
+
*
|
262 |
+
* @return null|string
|
263 |
+
*/
|
264 |
private static function _formatAppInfo($appInfo)
|
265 |
{
|
266 |
if ($appInfo !== null) {
|
277 |
}
|
278 |
}
|
279 |
|
280 |
+
/**
|
281 |
+
* @static
|
282 |
+
*
|
283 |
+
* @param string $apiKey
|
284 |
+
* @param null $clientInfo
|
285 |
+
*
|
286 |
+
* @return array
|
287 |
+
*/
|
288 |
private static function _defaultHeaders($apiKey, $clientInfo = null)
|
289 |
{
|
290 |
$uaString = 'Stripe/v1 PhpBindings/' . Stripe::VERSION;
|
293 |
$uname = php_uname();
|
294 |
|
295 |
$appInfo = Stripe::getAppInfo();
|
296 |
+
$ua = [
|
297 |
'bindings_version' => Stripe::VERSION,
|
298 |
'lang' => 'php',
|
299 |
'lang_version' => $langVersion,
|
300 |
'publisher' => 'stripe',
|
301 |
'uname' => $uname,
|
302 |
+
];
|
303 |
if ($clientInfo) {
|
304 |
$ua = array_merge($clientInfo, $ua);
|
305 |
}
|
308 |
$ua['application'] = $appInfo;
|
309 |
}
|
310 |
|
311 |
+
$defaultHeaders = [
|
312 |
'X-Stripe-Client-User-Agent' => json_encode($ua),
|
313 |
'User-Agent' => $uaString,
|
314 |
'Authorization' => 'Bearer ' . $apiKey,
|
315 |
+
];
|
316 |
return $defaultHeaders;
|
317 |
}
|
318 |
|
319 |
+
/**
|
320 |
+
* @param string $method
|
321 |
+
* @param string $url
|
322 |
+
* @param array $params
|
323 |
+
* @param array $headers
|
324 |
+
*
|
325 |
+
* @return array
|
326 |
+
* @throws Error\Api
|
327 |
+
* @throws Error\ApiConnection
|
328 |
+
* @throws Error\Authentication
|
329 |
+
*/
|
330 |
private function _requestRaw($method, $url, $params, $headers)
|
331 |
{
|
332 |
$myApiKey = $this->_apiKey;
|
361 |
$defaultHeaders['Stripe-Account'] = Stripe::$accountId;
|
362 |
}
|
363 |
|
364 |
+
if (Stripe::$enableTelemetry && self::$requestTelemetry != null) {
|
365 |
+
$defaultHeaders["X-Stripe-Client-Telemetry"] = self::_telemetryJson(self::$requestTelemetry);
|
366 |
+
}
|
367 |
+
|
368 |
$hasFile = false;
|
369 |
$hasCurlFile = class_exists('\CURLFile', false);
|
370 |
foreach ($params as $k => $v) {
|
383 |
}
|
384 |
|
385 |
$combinedHeaders = array_merge($defaultHeaders, $headers);
|
386 |
+
$rawHeaders = [];
|
387 |
|
388 |
foreach ($combinedHeaders as $header => $value) {
|
389 |
$rawHeaders[] = $header . ': ' . $value;
|
390 |
}
|
391 |
|
392 |
+
$requestStartMs = Util\Util::currentTimeMillis();
|
393 |
+
|
394 |
list($rbody, $rcode, $rheaders) = $this->httpClient()->request(
|
395 |
$method,
|
396 |
$absUrl,
|
398 |
$params,
|
399 |
$hasFile
|
400 |
);
|
401 |
+
|
402 |
+
if (array_key_exists('request-id', $rheaders)) {
|
403 |
+
self::$requestTelemetry = new RequestTelemetry(
|
404 |
+
$rheaders['request-id'],
|
405 |
+
Util\Util::currentTimeMillis() - $requestStartMs
|
406 |
+
);
|
407 |
+
}
|
408 |
+
|
409 |
+
return [$rbody, $rcode, $rheaders, $myApiKey];
|
410 |
}
|
411 |
|
412 |
+
/**
|
413 |
+
* @param resource $resource
|
414 |
+
* @param bool $hasCurlFile
|
415 |
+
*
|
416 |
+
* @return \CURLFile|string
|
417 |
+
* @throws Error\Api
|
418 |
+
*/
|
419 |
private function _processResourceParam($resource, $hasCurlFile)
|
420 |
{
|
421 |
if (get_resource_type($resource) !== 'stream') {
|
439 |
}
|
440 |
}
|
441 |
|
442 |
+
/**
|
443 |
+
* @param string $rbody
|
444 |
+
* @param int $rcode
|
445 |
+
* @param array $rheaders
|
446 |
+
*
|
447 |
+
* @return mixed
|
448 |
+
* @throws Error\Api
|
449 |
+
* @throws Error\Authentication
|
450 |
+
* @throws Error\Card
|
451 |
+
* @throws Error\InvalidRequest
|
452 |
+
* @throws Error\OAuth\InvalidClient
|
453 |
+
* @throws Error\OAuth\InvalidGrant
|
454 |
+
* @throws Error\OAuth\InvalidRequest
|
455 |
+
* @throws Error\OAuth\InvalidScope
|
456 |
+
* @throws Error\OAuth\UnsupportedGrantType
|
457 |
+
* @throws Error\OAuth\UnsupportedResponseType
|
458 |
+
* @throws Error\Permission
|
459 |
+
* @throws Error\RateLimit
|
460 |
+
* @throws Error\Idempotency
|
461 |
+
*/
|
462 |
private function _interpretResponse($rbody, $rcode, $rheaders)
|
463 |
{
|
464 |
$resp = json_decode($rbody, true);
|
475 |
return $resp;
|
476 |
}
|
477 |
|
478 |
+
/**
|
479 |
+
* @static
|
480 |
+
*
|
481 |
+
* @param HttpClient\ClientInterface $client
|
482 |
+
*/
|
483 |
public static function setHttpClient($client)
|
484 |
{
|
485 |
self::$_httpClient = $client;
|
486 |
}
|
487 |
|
488 |
+
/**
|
489 |
+
* @static
|
490 |
+
*
|
491 |
+
* Resets any stateful telemetry data
|
492 |
+
*/
|
493 |
+
public static function resetTelemetry()
|
494 |
+
{
|
495 |
+
self::$requestTelemetry = null;
|
496 |
+
}
|
497 |
+
|
498 |
+
/**
|
499 |
+
* @return HttpClient\ClientInterface
|
500 |
+
*/
|
501 |
private function httpClient()
|
502 |
{
|
503 |
if (!self::$_httpClient) {
|
includes/lib/Stripe/lib/ApiResource.php
CHANGED
@@ -9,11 +9,42 @@ namespace Stripe;
|
|
9 |
*/
|
10 |
abstract class ApiResource extends StripeObject
|
11 |
{
|
12 |
-
|
13 |
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
{
|
16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
}
|
18 |
|
19 |
/**
|
@@ -36,27 +67,11 @@ abstract class ApiResource extends StripeObject
|
|
36 |
}
|
37 |
|
38 |
/**
|
39 |
-
* @return string The
|
40 |
-
* stripped.
|
41 |
*/
|
42 |
-
public static function
|
43 |
{
|
44 |
-
|
45 |
-
// Useful for namespaces: Foo\Charge
|
46 |
-
if ($postfixNamespaces = strrchr($class, '\\')) {
|
47 |
-
$class = substr($postfixNamespaces, 1);
|
48 |
-
}
|
49 |
-
// Useful for underscored 'namespaces': Foo_Charge
|
50 |
-
if ($postfixFakeNamespaces = strrchr($class, '')) {
|
51 |
-
$class = $postfixFakeNamespaces;
|
52 |
-
}
|
53 |
-
if (substr($class, 0, strlen('Stripe')) == 'Stripe') {
|
54 |
-
$class = substr($class, strlen('Stripe'));
|
55 |
-
}
|
56 |
-
$class = str_replace('_', '', $class);
|
57 |
-
$name = urlencode($class);
|
58 |
-
$name = strtolower($name);
|
59 |
-
return $name;
|
60 |
}
|
61 |
|
62 |
/**
|
@@ -64,7 +79,9 @@ abstract class ApiResource extends StripeObject
|
|
64 |
*/
|
65 |
public static function classUrl()
|
66 |
{
|
67 |
-
|
|
|
|
|
68 |
return "/v1/${base}s";
|
69 |
}
|
70 |
|
@@ -92,111 +109,4 @@ abstract class ApiResource extends StripeObject
|
|
92 |
{
|
93 |
return static::resourceUrl($this['id']);
|
94 |
}
|
95 |
-
|
96 |
-
protected static function _validateParams($params = null)
|
97 |
-
{
|
98 |
-
if ($params && !is_array($params)) {
|
99 |
-
$message = "You must pass an array as the first argument to Stripe API "
|
100 |
-
. "method calls. (HINT: an example call to create a charge "
|
101 |
-
. "would be: \"Stripe\\Charge::create(array('amount' => 100, "
|
102 |
-
. "'currency' => 'usd', 'source' => 'tok_1234'))\")";
|
103 |
-
throw new Error\Api($message);
|
104 |
-
}
|
105 |
-
}
|
106 |
-
|
107 |
-
protected function _request($method, $url, $params = array(), $options = null)
|
108 |
-
{
|
109 |
-
$opts = $this->_opts->merge($options);
|
110 |
-
list($resp, $options) = static::_staticRequest($method, $url, $params, $opts);
|
111 |
-
$this->setLastResponse($resp);
|
112 |
-
return array($resp->json, $options);
|
113 |
-
}
|
114 |
-
|
115 |
-
protected static function _staticRequest($method, $url, $params, $options)
|
116 |
-
{
|
117 |
-
$opts = Util\RequestOptions::parse($options);
|
118 |
-
$requestor = new ApiRequestor($opts->apiKey, static::baseUrl());
|
119 |
-
list($response, $opts->apiKey) = $requestor->request($method, $url, $params, $opts->headers);
|
120 |
-
foreach ($opts->headers as $k => $v) {
|
121 |
-
if (!array_key_exists($k, self::$HEADERS_TO_PERSIST)) {
|
122 |
-
unset($opts->headers[$k]);
|
123 |
-
}
|
124 |
-
}
|
125 |
-
return array($response, $opts);
|
126 |
-
}
|
127 |
-
|
128 |
-
protected static function _retrieve($id, $options = null)
|
129 |
-
{
|
130 |
-
$opts = Util\RequestOptions::parse($options);
|
131 |
-
$instance = new static($id, $opts);
|
132 |
-
$instance->refresh();
|
133 |
-
return $instance;
|
134 |
-
}
|
135 |
-
|
136 |
-
protected static function _all($params = null, $options = null)
|
137 |
-
{
|
138 |
-
self::_validateParams($params);
|
139 |
-
$url = static::classUrl();
|
140 |
-
|
141 |
-
list($response, $opts) = static::_staticRequest('get', $url, $params, $options);
|
142 |
-
$obj = Util\Util::convertToStripeObject($response->json, $opts);
|
143 |
-
if (!is_a($obj, 'Stripe\\Collection')) {
|
144 |
-
$class = get_class($obj);
|
145 |
-
$message = "Expected type \"Stripe\\Collection\", got \"$class\" instead";
|
146 |
-
throw new Error\Api($message);
|
147 |
-
}
|
148 |
-
$obj->setLastResponse($response);
|
149 |
-
$obj->setRequestParams($params);
|
150 |
-
return $obj;
|
151 |
-
}
|
152 |
-
|
153 |
-
protected static function _create($params = null, $options = null)
|
154 |
-
{
|
155 |
-
self::_validateParams($params);
|
156 |
-
$url = static::classUrl();
|
157 |
-
|
158 |
-
list($response, $opts) = static::_staticRequest('post', $url, $params, $options);
|
159 |
-
$obj = Util\Util::convertToStripeObject($response->json, $opts);
|
160 |
-
$obj->setLastResponse($response);
|
161 |
-
return $obj;
|
162 |
-
}
|
163 |
-
|
164 |
-
/**
|
165 |
-
* @param string $id The ID of the API resource to update.
|
166 |
-
* @param array|null $params
|
167 |
-
* @param array|string|null $opts
|
168 |
-
*
|
169 |
-
* @return ApiResource the updated API resource
|
170 |
-
*/
|
171 |
-
protected static function _update($id, $params = null, $options = null)
|
172 |
-
{
|
173 |
-
self::_validateParams($params);
|
174 |
-
$url = static::resourceUrl($id);
|
175 |
-
|
176 |
-
list($response, $opts) = static::_staticRequest('post', $url, $params, $options);
|
177 |
-
$obj = Util\Util::convertToStripeObject($response->json, $opts);
|
178 |
-
$obj->setLastResponse($response);
|
179 |
-
return $obj;
|
180 |
-
}
|
181 |
-
|
182 |
-
protected function _save($options = null)
|
183 |
-
{
|
184 |
-
$params = $this->serializeParameters();
|
185 |
-
if (count($params) > 0) {
|
186 |
-
$url = $this->instanceUrl();
|
187 |
-
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
188 |
-
$this->refreshFrom($response, $opts);
|
189 |
-
}
|
190 |
-
return $this;
|
191 |
-
}
|
192 |
-
|
193 |
-
protected function _delete($params = null, $options = null)
|
194 |
-
{
|
195 |
-
self::_validateParams($params);
|
196 |
-
|
197 |
-
$url = $this->instanceUrl();
|
198 |
-
list($response, $opts) = $this->_request('delete', $url, $params, $options);
|
199 |
-
$this->refreshFrom($response, $opts);
|
200 |
-
return $this;
|
201 |
-
}
|
202 |
}
|
9 |
*/
|
10 |
abstract class ApiResource extends StripeObject
|
11 |
{
|
12 |
+
use ApiOperations\Request;
|
13 |
|
14 |
+
/**
|
15 |
+
* @return \Stripe\Util\Set A list of fields that can be their own type of
|
16 |
+
* API resource (say a nested card under an account for example), and if
|
17 |
+
* that resource is set, it should be transmitted to the API on a create or
|
18 |
+
* update. Doing so is not the default behavior because API resources
|
19 |
+
* should normally be persisted on their own RESTful endpoints.
|
20 |
+
*/
|
21 |
+
public static function getSavedNestedResources()
|
22 |
{
|
23 |
+
static $savedNestedResources = null;
|
24 |
+
if ($savedNestedResources === null) {
|
25 |
+
$savedNestedResources = new Util\Set();
|
26 |
+
}
|
27 |
+
return $savedNestedResources;
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @var boolean A flag that can be set a behavior that will cause this
|
32 |
+
* resource to be encoded and sent up along with an update of its parent
|
33 |
+
* resource. This is usually not desirable because resources are updated
|
34 |
+
* individually on their own endpoints, but there are certain cases,
|
35 |
+
* replacing a customer's source for example, where this is allowed.
|
36 |
+
*/
|
37 |
+
public $saveWithParent = false;
|
38 |
+
|
39 |
+
public function __set($k, $v)
|
40 |
+
{
|
41 |
+
parent::__set($k, $v);
|
42 |
+
$v = $this->$k;
|
43 |
+
if ((static::getSavedNestedResources()->includes($k)) &&
|
44 |
+
($v instanceof ApiResource)) {
|
45 |
+
$v->saveWithParent = true;
|
46 |
+
}
|
47 |
+
return $v;
|
48 |
}
|
49 |
|
50 |
/**
|
67 |
}
|
68 |
|
69 |
/**
|
70 |
+
* @return string The base URL for the given class.
|
|
|
71 |
*/
|
72 |
+
public static function baseUrl()
|
73 |
{
|
74 |
+
return Stripe::$apiBase;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
}
|
76 |
|
77 |
/**
|
79 |
*/
|
80 |
public static function classUrl()
|
81 |
{
|
82 |
+
// Replace dots with slashes for namespaced resources, e.g. if the object's name is
|
83 |
+
// "foo.bar", then its URL will be "/v1/foo/bars".
|
84 |
+
$base = str_replace('.', '/', static::OBJECT_NAME);
|
85 |
return "/v1/${base}s";
|
86 |
}
|
87 |
|
109 |
{
|
110 |
return static::resourceUrl($this['id']);
|
111 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
}
|
includes/lib/Stripe/lib/ApplePayDomain.php
CHANGED
@@ -9,7 +9,14 @@ namespace Stripe;
|
|
9 |
*/
|
10 |
class ApplePayDomain extends ApiResource
|
11 |
{
|
12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
/**
|
14 |
* @return string The class URL for this resource. It needs to be special
|
15 |
* cased because it doesn't fit into the standard resource pattern.
|
@@ -18,49 +25,4 @@ class ApplePayDomain extends ApiResource
|
|
18 |
{
|
19 |
return '/v1/apple_pay/domains';
|
20 |
}
|
21 |
-
|
22 |
-
/**
|
23 |
-
* @param array|string $id The ID of the domain to retrieve, or an options
|
24 |
-
* array containing an `id` key.
|
25 |
-
* @param array|string|null $opts
|
26 |
-
*
|
27 |
-
* @return ApplePayDomain
|
28 |
-
*/
|
29 |
-
public static function retrieve($id, $opts = null)
|
30 |
-
{
|
31 |
-
return self::_retrieve($id, $opts);
|
32 |
-
}
|
33 |
-
|
34 |
-
/**
|
35 |
-
* @param array|null $params
|
36 |
-
* @param array|string|null $opts
|
37 |
-
*
|
38 |
-
* @return ApplePayDomain The created domain.
|
39 |
-
*/
|
40 |
-
public static function create($params = null, $opts = null)
|
41 |
-
{
|
42 |
-
return self::_create($params, $opts);
|
43 |
-
}
|
44 |
-
|
45 |
-
/**
|
46 |
-
* @param array|null $params
|
47 |
-
* @param array|string|null $opts
|
48 |
-
*
|
49 |
-
* @return ApplePayDomain The deleted domain.
|
50 |
-
*/
|
51 |
-
public function delete($params = null, $opts = null)
|
52 |
-
{
|
53 |
-
return $this->_delete($params, $opts);
|
54 |
-
}
|
55 |
-
|
56 |
-
/**
|
57 |
-
* @param array|null $params
|
58 |
-
* @param array|string|null $opts
|
59 |
-
*
|
60 |
-
* @return Collection of ApplePayDomains
|
61 |
-
*/
|
62 |
-
public static function all($params = null, $opts = null)
|
63 |
-
{
|
64 |
-
return self::_all($params, $opts);
|
65 |
-
}
|
66 |
}
|
9 |
*/
|
10 |
class ApplePayDomain extends ApiResource
|
11 |
{
|
12 |
+
|
13 |
+
const OBJECT_NAME = "apple_pay_domain";
|
14 |
+
|
15 |
+
use ApiOperations\All;
|
16 |
+
use ApiOperations\Create;
|
17 |
+
use ApiOperations\Delete;
|
18 |
+
use ApiOperations\Retrieve;
|
19 |
+
|
20 |
/**
|
21 |
* @return string The class URL for this resource. It needs to be special
|
22 |
* cased because it doesn't fit into the standard resource pattern.
|
25 |
{
|
26 |
return '/v1/apple_pay/domains';
|
27 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
}
|
includes/lib/Stripe/lib/ApplicationFee.php
CHANGED
@@ -5,66 +5,94 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class ApplicationFee
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class ApplicationFee extends ApiResource
|
11 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
/**
|
13 |
-
*
|
14 |
-
*
|
15 |
*
|
16 |
-
* @return
|
17 |
*/
|
18 |
-
public
|
19 |
{
|
20 |
-
|
|
|
|
|
21 |
}
|
22 |
|
23 |
/**
|
24 |
-
* @param
|
25 |
-
*
|
26 |
* @param array|string|null $opts
|
27 |
*
|
28 |
-
* @return
|
29 |
*/
|
30 |
-
public static function
|
31 |
{
|
32 |
-
return self::
|
33 |
}
|
34 |
|
35 |
/**
|
36 |
-
* @param string $id The ID of the application fee to
|
|
|
37 |
* @param array|null $params
|
38 |
-
* @param array|string|null $
|
39 |
*
|
40 |
-
* @return
|
41 |
*/
|
42 |
-
public static function
|
43 |
{
|
44 |
-
return self::
|
45 |
}
|
46 |
|
47 |
/**
|
|
|
|
|
48 |
* @param array|null $params
|
49 |
* @param array|string|null $opts
|
50 |
*
|
51 |
-
* @return
|
52 |
*/
|
53 |
-
public static function
|
54 |
{
|
55 |
-
return self::
|
56 |
}
|
57 |
|
58 |
/**
|
|
|
59 |
* @param array|null $params
|
60 |
* @param array|string|null $opts
|
61 |
*
|
62 |
-
* @return
|
63 |
*/
|
64 |
-
public function
|
65 |
{
|
66 |
-
|
67 |
-
$this->refresh();
|
68 |
-
return $this;
|
69 |
}
|
70 |
}
|
5 |
/**
|
6 |
* Class ApplicationFee
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property string $account
|
11 |
+
* @property int $amount
|
12 |
+
* @property int $amount_refunded
|
13 |
+
* @property string $application
|
14 |
+
* @property string $balance_transaction
|
15 |
+
* @property string $charge
|
16 |
+
* @property int $created
|
17 |
+
* @property string $currency
|
18 |
+
* @property bool $livemode
|
19 |
+
* @property string $originating_transaction
|
20 |
+
* @property bool $refunded
|
21 |
+
* @property Collection $refunds
|
22 |
+
*
|
23 |
* @package Stripe
|
24 |
*/
|
25 |
class ApplicationFee extends ApiResource
|
26 |
{
|
27 |
+
|
28 |
+
const OBJECT_NAME = "application_fee";
|
29 |
+
|
30 |
+
use ApiOperations\All;
|
31 |
+
use ApiOperations\NestedResource;
|
32 |
+
use ApiOperations\Retrieve;
|
33 |
+
|
34 |
+
const PATH_REFUNDS = '/refunds';
|
35 |
+
|
36 |
/**
|
37 |
+
* @param array|null $params
|
38 |
+
* @param array|string|null $opts
|
39 |
*
|
40 |
+
* @return ApplicationFee The refunded application fee.
|
41 |
*/
|
42 |
+
public function refund($params = null, $opts = null)
|
43 |
{
|
44 |
+
$this->refunds->create($params, $opts);
|
45 |
+
$this->refresh();
|
46 |
+
return $this;
|
47 |
}
|
48 |
|
49 |
/**
|
50 |
+
* @param string|null $id The ID of the application fee on which to create the refund.
|
51 |
+
* @param array|null $params
|
52 |
* @param array|string|null $opts
|
53 |
*
|
54 |
+
* @return ApplicationFeeRefund
|
55 |
*/
|
56 |
+
public static function createRefund($id, $params = null, $opts = null)
|
57 |
{
|
58 |
+
return self::_createNestedResource($id, static::PATH_REFUNDS, $params, $opts);
|
59 |
}
|
60 |
|
61 |
/**
|
62 |
+
* @param string|null $id The ID of the application fee to which the refund belongs.
|
63 |
+
* @param array|null $refundId The ID of the refund to retrieve.
|
64 |
* @param array|null $params
|
65 |
+
* @param array|string|null $opts
|
66 |
*
|
67 |
+
* @return ApplicationFeeRefund
|
68 |
*/
|
69 |
+
public static function retrieveRefund($id, $refundId, $params = null, $opts = null)
|
70 |
{
|
71 |
+
return self::_retrieveNestedResource($id, static::PATH_REFUNDS, $refundId, $params, $opts);
|
72 |
}
|
73 |
|
74 |
/**
|
75 |
+
* @param string|null $id The ID of the application fee to which the refund belongs.
|
76 |
+
* @param array|null $refundId The ID of the refund to update.
|
77 |
* @param array|null $params
|
78 |
* @param array|string|null $opts
|
79 |
*
|
80 |
+
* @return ApplicationFeeRefund
|
81 |
*/
|
82 |
+
public static function updateRefund($id, $refundId, $params = null, $opts = null)
|
83 |
{
|
84 |
+
return self::_updateNestedResource($id, static::PATH_REFUNDS, $refundId, $params, $opts);
|
85 |
}
|
86 |
|
87 |
/**
|
88 |
+
* @param string|null $id The ID of the application fee on which to retrieve the refunds.
|
89 |
* @param array|null $params
|
90 |
* @param array|string|null $opts
|
91 |
*
|
92 |
+
* @return Collection The list of refunds.
|
93 |
*/
|
94 |
+
public static function allRefunds($id, $params = null, $opts = null)
|
95 |
{
|
96 |
+
return self::_allNestedResources($id, static::PATH_REFUNDS, $params, $opts);
|
|
|
|
|
97 |
}
|
98 |
}
|
includes/lib/Stripe/lib/ApplicationFeeRefund.php
CHANGED
@@ -5,10 +5,26 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class ApplicationFeeRefund
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class ApplicationFeeRefund extends ApiResource
|
11 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
/**
|
13 |
* @return string The API URL for this Stripe refund.
|
14 |
*/
|
5 |
/**
|
6 |
* Class ApplicationFeeRefund
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount
|
11 |
+
* @property string $balance_transaction
|
12 |
+
* @property int $created
|
13 |
+
* @property string $currency
|
14 |
+
* @property string $fee
|
15 |
+
* @property StripeObject $metadata
|
16 |
+
*
|
17 |
* @package Stripe
|
18 |
*/
|
19 |
class ApplicationFeeRefund extends ApiResource
|
20 |
{
|
21 |
+
|
22 |
+
const OBJECT_NAME = "fee_refund";
|
23 |
+
|
24 |
+
use ApiOperations\Update {
|
25 |
+
save as protected _save;
|
26 |
+
}
|
27 |
+
|
28 |
/**
|
29 |
* @return string The API URL for this Stripe refund.
|
30 |
*/
|
includes/lib/Stripe/lib/Balance.php
CHANGED
@@ -6,14 +6,18 @@ namespace Stripe;
|
|
6 |
* Class Balance
|
7 |
*
|
8 |
* @property string $object
|
9 |
-
* @property
|
10 |
-
* @property
|
11 |
-
* @property
|
|
|
12 |
*
|
13 |
* @package Stripe
|
14 |
*/
|
15 |
class Balance extends SingletonApiResource
|
16 |
{
|
|
|
|
|
|
|
17 |
/**
|
18 |
* @param array|string|null $opts
|
19 |
*
|
6 |
* Class Balance
|
7 |
*
|
8 |
* @property string $object
|
9 |
+
* @property array $available
|
10 |
+
* @property array $connect_reserved
|
11 |
+
* @property bool $livemode
|
12 |
+
* @property array $pending
|
13 |
*
|
14 |
* @package Stripe
|
15 |
*/
|
16 |
class Balance extends SingletonApiResource
|
17 |
{
|
18 |
+
|
19 |
+
const OBJECT_NAME = "balance";
|
20 |
+
|
21 |
/**
|
22 |
* @param array|string|null $opts
|
23 |
*
|
includes/lib/Stripe/lib/BalanceTransaction.php
CHANGED
@@ -12,11 +12,11 @@ namespace Stripe;
|
|
12 |
* @property int $created
|
13 |
* @property string $currency
|
14 |
* @property string $description
|
|
|
15 |
* @property int $fee
|
16 |
* @property mixed $fee_details
|
17 |
* @property int $net
|
18 |
* @property string $source
|
19 |
-
* @property mixed $sourced_transfers
|
20 |
* @property string $status
|
21 |
* @property string $type
|
22 |
*
|
@@ -24,35 +24,52 @@ namespace Stripe;
|
|
24 |
*/
|
25 |
class BalanceTransaction extends ApiResource
|
26 |
{
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
{
|
33 |
-
return "/v1/balance/history";
|
34 |
-
}
|
35 |
|
36 |
/**
|
37 |
-
*
|
38 |
-
*
|
39 |
-
* @param array|string|null $opts
|
40 |
-
*
|
41 |
-
* @return BalanceTransaction
|
42 |
*/
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
|
48 |
/**
|
49 |
-
* @
|
50 |
-
*
|
51 |
-
*
|
52 |
-
* @return Collection of BalanceTransactions
|
53 |
*/
|
54 |
-
public static function
|
55 |
{
|
56 |
-
return
|
57 |
}
|
58 |
}
|
12 |
* @property int $created
|
13 |
* @property string $currency
|
14 |
* @property string $description
|
15 |
+
* @property float $exchange_rate
|
16 |
* @property int $fee
|
17 |
* @property mixed $fee_details
|
18 |
* @property int $net
|
19 |
* @property string $source
|
|
|
20 |
* @property string $status
|
21 |
* @property string $type
|
22 |
*
|
24 |
*/
|
25 |
class BalanceTransaction extends ApiResource
|
26 |
{
|
27 |
+
|
28 |
+
const OBJECT_NAME = "balance_transaction";
|
29 |
+
|
30 |
+
use ApiOperations\All;
|
31 |
+
use ApiOperations\Retrieve;
|
|
|
|
|
|
|
32 |
|
33 |
/**
|
34 |
+
* Possible string representations of the type of balance transaction.
|
35 |
+
* @link https://stripe.com/docs/api/balance/balance_transaction#balance_transaction_object-type
|
|
|
|
|
|
|
36 |
*/
|
37 |
+
const TYPE_ADJUSTMENT = 'adjustment';
|
38 |
+
const TYPE_ADVANCE = 'advance';
|
39 |
+
const TYPE_ADVANCE_FUNDING = 'advance_funding';
|
40 |
+
const TYPE_APPLICATION_FEE = 'application_fee';
|
41 |
+
const TYPE_APPLICATION_FEE_REFUND = 'application_fee_refund';
|
42 |
+
const TYPE_CHARGE = 'charge';
|
43 |
+
const TYPE_CONNECT_COLLECTION_TRANSFER = 'connect_collection_transfer';
|
44 |
+
const TYPE_ISSUING_AUTHORIZATION_HOLD = 'issuing_authorization_hold';
|
45 |
+
const TYPE_ISSUING_AUTHORIZATION_RELEASE = 'issuing_authorization_release';
|
46 |
+
const TYPE_ISSUING_TRANSACTION = 'issuing_transaction';
|
47 |
+
const TYPE_PAYMENT = 'payment';
|
48 |
+
const TYPE_PAYMENT_FAILURE_REFUND = 'payment_failure_refund';
|
49 |
+
const TYPE_PAYMENT_REFUND = 'payment_refund';
|
50 |
+
const TYPE_PAYOUT = 'payout';
|
51 |
+
const TYPE_PAYOUT_CANCEL = 'payout_cancel';
|
52 |
+
const TYPE_PAYOUT_FAILURE = 'payout_failure';
|
53 |
+
const TYPE_REFUND = 'refund';
|
54 |
+
const TYPE_REFUND_FAILURE = 'refund_failure';
|
55 |
+
const TYPE_RESERVE_TRANSACTION = 'reserve_transaction';
|
56 |
+
const TYPE_RESERVED_FUNDS = 'reserved_funds';
|
57 |
+
const TYPE_STRIPE_FEE = 'stripe_fee';
|
58 |
+
const TYPE_STRIPE_FX_FEE = 'stripe_fx_fee';
|
59 |
+
const TYPE_TAX_FEE = 'tax_fee';
|
60 |
+
const TYPE_TOPUP = 'topup';
|
61 |
+
const TYPE_TOPUP_REVERSAL = 'topup_reversal';
|
62 |
+
const TYPE_TRANSFER = 'transfer';
|
63 |
+
const TYPE_TRANSFER_CANCEL = 'transfer_cancel';
|
64 |
+
const TYPE_TRANSFER_FAILURE = 'transfer_failure';
|
65 |
+
const TYPE_TRANSFER_REFUND = 'transfer_refund';
|
66 |
|
67 |
/**
|
68 |
+
* @return string The class URL for this resource. It needs to be special
|
69 |
+
* cased because it doesn't fit into the standard resource pattern.
|
|
|
|
|
70 |
*/
|
71 |
+
public static function classUrl()
|
72 |
{
|
73 |
+
return "/v1/balance/history";
|
74 |
}
|
75 |
}
|
includes/lib/Stripe/lib/BankAccount.php
CHANGED
@@ -5,11 +5,95 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class BankAccount
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
-
class BankAccount extends
|
11 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
* @param array|null $params
|
14 |
* @param array|string|null $options
|
15 |
*
|
5 |
/**
|
6 |
* Class BankAccount
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property string $account
|
11 |
+
* @property string $account_holder_name
|
12 |
+
* @property string $account_holder_type
|
13 |
+
* @property string $bank_name
|
14 |
+
* @property string $country
|
15 |
+
* @property string $currency
|
16 |
+
* @property string $customer
|
17 |
+
* @property bool $default_for_currency
|
18 |
+
* @property string $fingerprint
|
19 |
+
* @property string $last4
|
20 |
+
* @property StripeObject $metadata
|
21 |
+
* @property string $routing_number
|
22 |
+
* @property string $status
|
23 |
+
*
|
24 |
* @package Stripe
|
25 |
*/
|
26 |
+
class BankAccount extends ApiResource
|
27 |
{
|
28 |
+
|
29 |
+
const OBJECT_NAME = "bank_account";
|
30 |
+
|
31 |
+
use ApiOperations\Delete;
|
32 |
+
use ApiOperations\Update;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Possible string representations of the bank verification status.
|
36 |
+
* @link https://stripe.com/docs/api/external_account_bank_accounts/object#account_bank_account_object-status
|
37 |
+
*/
|
38 |
+
const STATUS_NEW = 'new';
|
39 |
+
const STATUS_VALIDATED = 'validated';
|
40 |
+
const STATUS_VERIFIED = 'verified';
|
41 |
+
const STATUS_VERIFICATION_FAILED = 'verification_failed';
|
42 |
+
const STATUS_ERRORED = 'errored';
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @return string The instance URL for this resource. It needs to be special
|
46 |
+
* cased because it doesn't fit into the standard resource pattern.
|
47 |
+
*/
|
48 |
+
public function instanceUrl()
|
49 |
+
{
|
50 |
+
if ($this['customer']) {
|
51 |
+
$base = Customer::classUrl();
|
52 |
+
$parent = $this['customer'];
|
53 |
+
$path = 'sources';
|
54 |
+
} elseif ($this['account']) {
|
55 |
+
$base = Account::classUrl();
|
56 |
+
$parent = $this['account'];
|
57 |
+
$path = 'external_accounts';
|
58 |
+
} else {
|
59 |
+
$msg = "Bank accounts cannot be accessed without a customer ID or account ID.";
|
60 |
+
throw new Error\InvalidRequest($msg, null);
|
61 |
+
}
|
62 |
+
$parentExtn = urlencode(Util\Util::utf8($parent));
|
63 |
+
$extn = urlencode(Util\Util::utf8($this['id']));
|
64 |
+
return "$base/$parentExtn/$path/$extn";
|
65 |
+
}
|
66 |
+
|
67 |
/**
|
68 |
+
* @param array|string $_id
|
69 |
+
* @param array|string|null $_opts
|
70 |
+
*
|
71 |
+
* @throws \Stripe\Error\InvalidRequest
|
72 |
+
*/
|
73 |
+
public static function retrieve($_id, $_opts = null)
|
74 |
+
{
|
75 |
+
$msg = "Bank accounts cannot be accessed without a customer ID or account ID. " .
|
76 |
+
"Retrieve a bank account using \$customer->sources->retrieve('bank_account_id') or " .
|
77 |
+
"\$account->external_accounts->retrieve('bank_account_id') instead.";
|
78 |
+
throw new Error\InvalidRequest($msg, null);
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* @param string $_id
|
83 |
+
* @param array|null $_params
|
84 |
+
* @param array|string|null $_options
|
85 |
+
*
|
86 |
+
* @throws \Stripe\Error\InvalidRequest
|
87 |
+
*/
|
88 |
+
public static function update($_id, $_params = null, $_options = null)
|
89 |
+
{
|
90 |
+
$msg = "Bank accounts cannot be accessed without a customer ID or account ID. " .
|
91 |
+
"Call save() on \$customer->sources->retrieve('bank_account_id') or " .
|
92 |
+
"\$account->external_accounts->retrieve('bank_account_id') instead.";
|
93 |
+
throw new Error\InvalidRequest($msg, null);
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
* @param array|null $params
|
98 |
* @param array|string|null $options
|
99 |
*
|
includes/lib/Stripe/lib/BitcoinReceiver.php
CHANGED
@@ -4,16 +4,23 @@ namespace Stripe;
|
|
4 |
|
5 |
/**
|
6 |
* Class BitcoinReceiver
|
7 |
-
|
8 |
-
* @
|
|
|
|
|
|
|
9 |
*/
|
10 |
-
class BitcoinReceiver extends
|
11 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
/**
|
13 |
* @return string The class URL for this resource. It needs to be special
|
14 |
* cased because it doesn't fit into the standard resource pattern.
|
15 |
-
*
|
16 |
-
* @deprecated Please use sources instead.
|
17 |
*/
|
18 |
public static function classUrl()
|
19 |
{
|
@@ -23,76 +30,20 @@ class BitcoinReceiver extends ExternalAccount
|
|
23 |
/**
|
24 |
* @return string The instance URL for this resource. It needs to be special
|
25 |
* cased because it doesn't fit into the standard resource pattern.
|
26 |
-
*
|
27 |
-
* @deprecated Please use sources instead.
|
28 |
*/
|
29 |
public function instanceUrl()
|
30 |
{
|
31 |
-
|
32 |
-
|
33 |
-
|
|
|
|
|
|
|
|
|
34 |
} else {
|
35 |
-
$id = $this['id'];
|
36 |
-
$id = Util\Util::utf8($id);
|
37 |
-
$extn = urlencode($id);
|
38 |
$base = BitcoinReceiver::classUrl();
|
|
|
39 |
return "$base/$extn";
|
40 |
}
|
41 |
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* @param array|string $id The ID of the bitcoin receiver to retrieve, or
|
45 |
-
* an options array containing an `id` key.
|
46 |
-
* @param array|string|null $opts
|
47 |
-
*
|
48 |
-
* @return BitcoinReceiver
|
49 |
-
*
|
50 |
-
* @deprecated Please use sources instead.
|
51 |
-
*/
|
52 |
-
public static function retrieve($id, $opts = null)
|
53 |
-
{
|
54 |
-
return self::_retrieve($id, $opts);
|
55 |
-
}
|
56 |
-
|
57 |
-
/**
|
58 |
-
* @param array|null $params
|
59 |
-
* @param array|string|null $opts
|
60 |
-
*
|
61 |
-
* @return Collection of BitcoinReceivers
|
62 |
-
*
|
63 |
-
* @deprecated Please use sources instead.
|
64 |
-
*/
|
65 |
-
public static function all($params = null, $opts = null)
|
66 |
-
{
|
67 |
-
return self::_all($params, $opts);
|
68 |
-
}
|
69 |
-
|
70 |
-
/**
|
71 |
-
* @param array|null $params
|
72 |
-
* @param array|string|null $opts
|
73 |
-
*
|
74 |
-
* @return BitcoinReceiver The created Bitcoin Receiver item.
|
75 |
-
*
|
76 |
-
* @deprecated Please use sources instead.
|
77 |
-
*/
|
78 |
-
public static function create($params = null, $opts = null)
|
79 |
-
{
|
80 |
-
return self::_create($params, $opts);
|
81 |
-
}
|
82 |
-
|
83 |
-
/**
|
84 |
-
* @param array|null $params
|
85 |
-
* @param array|string|null $options
|
86 |
-
*
|
87 |
-
* @return BitcoinReceiver The refunded Bitcoin Receiver item.
|
88 |
-
*
|
89 |
-
* @deprecated Please use sources instead.
|
90 |
-
*/
|
91 |
-
public function refund($params = null, $options = null)
|
92 |
-
{
|
93 |
-
$url = $this->instanceUrl() . '/refund';
|
94 |
-
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
95 |
-
$this->refreshFrom($response, $opts);
|
96 |
-
return $this;
|
97 |
-
}
|
98 |
}
|
4 |
|
5 |
/**
|
6 |
* Class BitcoinReceiver
|
7 |
+
*
|
8 |
+
* @package Stripe
|
9 |
+
*
|
10 |
+
* @deprecated Bitcoin receivers are deprecated. Please use the sources API instead.
|
11 |
+
* @link https://stripe.com/docs/sources/bitcoin
|
12 |
*/
|
13 |
+
class BitcoinReceiver extends ApiResource
|
14 |
{
|
15 |
+
|
16 |
+
const OBJECT_NAME = "bitcoin_receiver";
|
17 |
+
|
18 |
+
use ApiOperations\All;
|
19 |
+
use ApiOperations\Retrieve;
|
20 |
+
|
21 |
/**
|
22 |
* @return string The class URL for this resource. It needs to be special
|
23 |
* cased because it doesn't fit into the standard resource pattern.
|
|
|
|
|
24 |
*/
|
25 |
public static function classUrl()
|
26 |
{
|
30 |
/**
|
31 |
* @return string The instance URL for this resource. It needs to be special
|
32 |
* cased because it doesn't fit into the standard resource pattern.
|
|
|
|
|
33 |
*/
|
34 |
public function instanceUrl()
|
35 |
{
|
36 |
+
if ($this['customer']) {
|
37 |
+
$base = Customer::classUrl();
|
38 |
+
$parent = $this['customer'];
|
39 |
+
$path = 'sources';
|
40 |
+
$parentExtn = urlencode(Util\Util::utf8($parent));
|
41 |
+
$extn = urlencode(Util\Util::utf8($this['id']));
|
42 |
+
return "$base/$parentExtn/$path/$extn";
|
43 |
} else {
|
|
|
|
|
|
|
44 |
$base = BitcoinReceiver::classUrl();
|
45 |
+
$extn = urlencode(Util\Util::utf8($this['id']));
|
46 |
return "$base/$extn";
|
47 |
}
|
48 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
}
|
includes/lib/Stripe/lib/BitcoinTransaction.php
CHANGED
@@ -10,4 +10,5 @@ namespace Stripe;
|
|
10 |
class BitcoinTransaction extends ApiResource
|
11 |
{
|
12 |
|
|
|
13 |
}
|
10 |
class BitcoinTransaction extends ApiResource
|
11 |
{
|
12 |
|
13 |
+
const OBJECT_NAME = "bitcoin_transaction";
|
14 |
}
|
includes/lib/Stripe/lib/Capability.php
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Capability
|
7 |
+
*
|
8 |
+
* @package Stripe
|
9 |
+
*
|
10 |
+
* @property string $id
|
11 |
+
* @property string $object
|
12 |
+
* @property string $account
|
13 |
+
* @property bool $requested
|
14 |
+
* @property int $requested_at
|
15 |
+
* @property mixed $requirements
|
16 |
+
* @property string $status
|
17 |
+
*/
|
18 |
+
class Capability extends ApiResource
|
19 |
+
{
|
20 |
+
|
21 |
+
const OBJECT_NAME = "capability";
|
22 |
+
|
23 |
+
use ApiOperations\Update;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Possible string representations of a capability's status.
|
27 |
+
* @link https://stripe.com/docs/api/capabilities/object#capability_object-status
|
28 |
+
*/
|
29 |
+
const STATUS_ACTIVE = 'active';
|
30 |
+
const STATUS_INACTIVE = 'inactive';
|
31 |
+
const STATUS_PENDING = 'pending';
|
32 |
+
const STATUS_UNREQUESTED = 'unrequested';
|
33 |
+
|
34 |
+
/**
|
35 |
+
* @return string The API URL for this Stripe account reversal.
|
36 |
+
*/
|
37 |
+
public function instanceUrl()
|
38 |
+
{
|
39 |
+
$id = $this['id'];
|
40 |
+
$account = $this['account'];
|
41 |
+
if (!$id) {
|
42 |
+
throw new Error\InvalidRequest(
|
43 |
+
"Could not determine which URL to request: " .
|
44 |
+
"class instance has invalid ID: $id",
|
45 |
+
null
|
46 |
+
);
|
47 |
+
}
|
48 |
+
$id = Util\Util::utf8($id);
|
49 |
+
$account = Util\Util::utf8($account);
|
50 |
+
|
51 |
+
$base = Account::classUrl();
|
52 |
+
$accountExtn = urlencode($account);
|
53 |
+
$extn = urlencode($id);
|
54 |
+
return "$base/$accountExtn/capabilities/$extn";
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* @param array|string $_id
|
59 |
+
* @param array|string|null $_opts
|
60 |
+
*
|
61 |
+
* @throws \Stripe\Error\InvalidRequest
|
62 |
+
*/
|
63 |
+
public static function retrieve($_id, $_opts = null)
|
64 |
+
{
|
65 |
+
$msg = "Capabilities cannot be accessed without an account ID. " .
|
66 |
+
"Retrieve a Capability using \$account->retrieveCapability('acap_123') instead.";
|
67 |
+
throw new Error\InvalidRequest($msg, null);
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* @param string $_id
|
72 |
+
* @param array|null $_params
|
73 |
+
* @param array|string|null $_options
|
74 |
+
*
|
75 |
+
* @throws \Stripe\Error\InvalidRequest
|
76 |
+
*/
|
77 |
+
public static function update($_id, $_params = null, $_options = null)
|
78 |
+
{
|
79 |
+
$msg = "Capabilities cannot be accessed without an account ID. " .
|
80 |
+
"Update a Capability using \$account->updateCapability('acap_123') instead.";
|
81 |
+
throw new Error\InvalidRequest($msg, null);
|
82 |
+
}
|
83 |
+
}
|
includes/lib/Stripe/lib/Card.php
CHANGED
@@ -5,9 +5,126 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class Card
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
-
class Card extends
|
11 |
{
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
}
|
5 |
/**
|
6 |
* Class Card
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property string $account
|
11 |
+
* @property string $address_city
|
12 |
+
* @property string $address_country
|
13 |
+
* @property string $address_line1
|
14 |
+
* @property string $address_line1_check
|
15 |
+
* @property string $address_line2
|
16 |
+
* @property string $address_state
|
17 |
+
* @property string $address_zip
|
18 |
+
* @property string $address_zip_check
|
19 |
+
* @property string[] $available_payout_methods
|
20 |
+
* @property string $brand
|
21 |
+
* @property string $country
|
22 |
+
* @property string $currency
|
23 |
+
* @property string $customer
|
24 |
+
* @property string $cvc_check
|
25 |
+
* @property bool $default_for_currency
|
26 |
+
* @property string $dynamic_last4
|
27 |
+
* @property int $exp_month
|
28 |
+
* @property int $exp_year
|
29 |
+
* @property string $fingerprint
|
30 |
+
* @property string $funding
|
31 |
+
* @property string $last4
|
32 |
+
* @property StripeObject $metadata
|
33 |
+
* @property string $name
|
34 |
+
* @property string $recipient
|
35 |
+
* @property string $tokenization_method
|
36 |
+
*
|
37 |
* @package Stripe
|
38 |
*/
|
39 |
+
class Card extends ApiResource
|
40 |
{
|
41 |
|
42 |
+
const OBJECT_NAME = "card";
|
43 |
+
|
44 |
+
use ApiOperations\Delete;
|
45 |
+
use ApiOperations\Update;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Possible string representations of the CVC check status.
|
49 |
+
* @link https://stripe.com/docs/api/cards/object#card_object-cvc_check
|
50 |
+
*/
|
51 |
+
const CVC_CHECK_FAIL = 'fail';
|
52 |
+
const CVC_CHECK_PASS = 'pass';
|
53 |
+
const CVC_CHECK_UNAVAILABLE = 'unavailable';
|
54 |
+
const CVC_CHECK_UNCHECKED = 'unchecked';
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Possible string representations of the funding of the card.
|
58 |
+
* @link https://stripe.com/docs/api/cards/object#card_object-funding
|
59 |
+
*/
|
60 |
+
const FUNDING_CREDIT = 'credit';
|
61 |
+
const FUNDING_DEBIT = 'debit';
|
62 |
+
const FUNDING_PREPAID = 'prepaid';
|
63 |
+
const FUNDING_UNKNOWN = 'unknown';
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Possible string representations of the tokenization method when using Apple Pay or Google Pay.
|
67 |
+
* @link https://stripe.com/docs/api/cards/object#card_object-tokenization_method
|
68 |
+
*/
|
69 |
+
const TOKENIZATION_METHOD_APPLE_PAY = 'apple_pay';
|
70 |
+
const TOKENIZATION_METHOD_GOOGLE_PAY = 'google_pay';
|
71 |
+
|
72 |
+
/**
|
73 |
+
* @return string The instance URL for this resource. It needs to be special
|
74 |
+
* cased because cards are nested resources that may belong to different
|
75 |
+
* top-level resources.
|
76 |
+
*/
|
77 |
+
public function instanceUrl()
|
78 |
+
{
|
79 |
+
if ($this['customer']) {
|
80 |
+
$base = Customer::classUrl();
|
81 |
+
$parent = $this['customer'];
|
82 |
+
$path = 'sources';
|
83 |
+
} elseif ($this['account']) {
|
84 |
+
$base = Account::classUrl();
|
85 |
+
$parent = $this['account'];
|
86 |
+
$path = 'external_accounts';
|
87 |
+
} elseif ($this['recipient']) {
|
88 |
+
$base = Recipient::classUrl();
|
89 |
+
$parent = $this['recipient'];
|
90 |
+
$path = 'cards';
|
91 |
+
} else {
|
92 |
+
$msg = "Cards cannot be accessed without a customer ID, account ID or recipient ID.";
|
93 |
+
throw new Error\InvalidRequest($msg, null);
|
94 |
+
}
|
95 |
+
$parentExtn = urlencode(Util\Util::utf8($parent));
|
96 |
+
$extn = urlencode(Util\Util::utf8($this['id']));
|
97 |
+
return "$base/$parentExtn/$path/$extn";
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* @param array|string $_id
|
102 |
+
* @param array|string|null $_opts
|
103 |
+
*
|
104 |
+
* @throws \Stripe\Error\InvalidRequest
|
105 |
+
*/
|
106 |
+
public static function retrieve($_id, $_opts = null)
|
107 |
+
{
|
108 |
+
$msg = "Cards cannot be accessed without a customer, recipient or account ID. " .
|
109 |
+
"Retrieve a card using \$customer->sources->retrieve('card_id'), " .
|
110 |
+
"\$recipient->cards->retrieve('card_id'), or " .
|
111 |
+
"\$account->external_accounts->retrieve('card_id') instead.";
|
112 |
+
throw new Error\InvalidRequest($msg, null);
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* @param string $_id
|
117 |
+
* @param array|null $_params
|
118 |
+
* @param array|string|null $_options
|
119 |
+
*
|
120 |
+
* @throws \Stripe\Error\InvalidRequest
|
121 |
+
*/
|
122 |
+
public static function update($_id, $_params = null, $_options = null)
|
123 |
+
{
|
124 |
+
$msg = "Cards cannot be accessed without a customer, recipient or account ID. " .
|
125 |
+
"Call save() on \$customer->sources->retrieve('card_id'), " .
|
126 |
+
"\$recipient->cards->retrieve('card_id'), or " .
|
127 |
+
"\$account->external_accounts->retrieve('card_id') instead.";
|
128 |
+
throw new Error\InvalidRequest($msg, null);
|
129 |
+
}
|
130 |
}
|
includes/lib/Stripe/lib/Charge.php
CHANGED
@@ -9,92 +9,114 @@ namespace Stripe;
|
|
9 |
* @property string $object
|
10 |
* @property int $amount
|
11 |
* @property int $amount_refunded
|
12 |
-
* @property
|
|
|
|
|
13 |
* @property string $balance_transaction
|
|
|
14 |
* @property bool $captured
|
15 |
* @property int $created
|
16 |
* @property string $currency
|
17 |
* @property string $customer
|
18 |
-
* @property
|
19 |
-
* @property
|
20 |
-
* @property string
|
21 |
-
* @property
|
22 |
-
* @property
|
23 |
* @property mixed $fraud_details
|
24 |
-
* @property
|
25 |
* @property bool $livemode
|
26 |
-
* @property
|
27 |
-
* @property
|
|
|
|
|
28 |
* @property bool $paid
|
29 |
-
* @property
|
30 |
-
* @property
|
|
|
|
|
|
|
|
|
31 |
* @property bool $refunded
|
32 |
-
* @property
|
|
|
33 |
* @property mixed $shipping
|
34 |
* @property mixed $source
|
35 |
-
* @property
|
36 |
-
* @property
|
37 |
* @property string $status
|
|
|
|
|
|
|
38 |
*
|
39 |
* @package Stripe
|
40 |
*/
|
41 |
class Charge extends ApiResource
|
42 |
{
|
43 |
-
/**
|
44 |
-
* @param array|string $id The ID of the charge to retrieve, or an options
|
45 |
-
* array containing an `id` key.
|
46 |
-
* @param array|string|null $options
|
47 |
-
*
|
48 |
-
* @return Charge
|
49 |
-
*/
|
50 |
-
public static function retrieve($id, $options = null)
|
51 |
-
{
|
52 |
-
return self::_retrieve($id, $options);
|
53 |
-
}
|
54 |
|
55 |
-
|
56 |
-
* @param array|null $params
|
57 |
-
* @param array|string|null $options
|
58 |
-
*
|
59 |
-
* @return Collection of Charges
|
60 |
-
*/
|
61 |
-
public static function all($params = null, $options = null)
|
62 |
-
{
|
63 |
-
return self::_all($params, $options);
|
64 |
-
}
|
65 |
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
* @return Charge The created charge.
|
71 |
-
*/
|
72 |
-
public static function create($params = null, $options = null)
|
73 |
-
{
|
74 |
-
return self::_create($params, $options);
|
75 |
-
}
|
76 |
|
77 |
/**
|
78 |
-
*
|
79 |
-
*
|
80 |
-
* @
|
81 |
-
*
|
82 |
-
* @return Charge The updated charge.
|
83 |
*/
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
|
89 |
/**
|
90 |
-
*
|
91 |
-
*
|
92 |
-
* @return Charge The saved charge.
|
93 |
*/
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
}
|
98 |
|
99 |
/**
|
100 |
* @param array|null $params
|
@@ -136,7 +158,7 @@ class Charge extends ApiResource
|
|
136 |
{
|
137 |
$url = $this->instanceUrl() . '/dispute';
|
138 |
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
139 |
-
$this->refreshFrom(
|
140 |
return $this->dispute;
|
141 |
}
|
142 |
|
@@ -162,7 +184,7 @@ class Charge extends ApiResource
|
|
162 |
*/
|
163 |
public function markAsFraudulent($opts = null)
|
164 |
{
|
165 |
-
$params =
|
166 |
$url = $this->instanceUrl();
|
167 |
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
168 |
$this->refreshFrom($response, $opts);
|
@@ -176,7 +198,7 @@ class Charge extends ApiResource
|
|
176 |
*/
|
177 |
public function markAsSafe($opts = null)
|
178 |
{
|
179 |
-
$params =
|
180 |
$url = $this->instanceUrl();
|
181 |
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
182 |
$this->refreshFrom($response, $opts);
|
9 |
* @property string $object
|
10 |
* @property int $amount
|
11 |
* @property int $amount_refunded
|
12 |
+
* @property string $application
|
13 |
+
* @property string $application_fee
|
14 |
+
* @property int $application_fee_amount
|
15 |
* @property string $balance_transaction
|
16 |
+
* @property mixed $billing_details
|
17 |
* @property bool $captured
|
18 |
* @property int $created
|
19 |
* @property string $currency
|
20 |
* @property string $customer
|
21 |
+
* @property string $description
|
22 |
+
* @property string $destination
|
23 |
+
* @property string $dispute
|
24 |
+
* @property string $failure_code
|
25 |
+
* @property string $failure_message
|
26 |
* @property mixed $fraud_details
|
27 |
+
* @property string $invoice
|
28 |
* @property bool $livemode
|
29 |
+
* @property StripeObject $metadata
|
30 |
+
* @property string $on_behalf_of
|
31 |
+
* @property string $order
|
32 |
+
* @property mixed $outcome
|
33 |
* @property bool $paid
|
34 |
+
* @property string $payment_intent
|
35 |
+
* @property string $payment_method
|
36 |
+
* @property mixed $payment_method_details
|
37 |
+
* @property string $receipt_email
|
38 |
+
* @property string $receipt_number
|
39 |
+
* @property string $receipt_url
|
40 |
* @property bool $refunded
|
41 |
+
* @property Collection $refunds
|
42 |
+
* @property string $review
|
43 |
* @property mixed $shipping
|
44 |
* @property mixed $source
|
45 |
+
* @property string $source_transfer
|
46 |
+
* @property string $statement_descriptor
|
47 |
* @property string $status
|
48 |
+
* @property string $transfer
|
49 |
+
* @property mixed $transfer_data
|
50 |
+
* @property string $transfer_group
|
51 |
*
|
52 |
* @package Stripe
|
53 |
*/
|
54 |
class Charge extends ApiResource
|
55 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
|
57 |
+
const OBJECT_NAME = "charge";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
|
59 |
+
use ApiOperations\All;
|
60 |
+
use ApiOperations\Create;
|
61 |
+
use ApiOperations\Retrieve;
|
62 |
+
use ApiOperations\Update;
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
|
64 |
/**
|
65 |
+
* Possible string representations of decline codes.
|
66 |
+
* These strings are applicable to the decline_code property of the \Stripe\Error\Card exception.
|
67 |
+
* @link https://stripe.com/docs/declines/codes
|
|
|
|
|
68 |
*/
|
69 |
+
const DECLINED_APPROVE_WITH_ID = 'approve_with_id';
|
70 |
+
const DECLINED_CALL_ISSUER = 'call_issuer';
|
71 |
+
const DECLINED_CARD_NOT_SUPPORTED = 'card_not_supported';
|
72 |
+
const DECLINED_CARD_VELOCITY_EXCEEDED = 'card_velocity_exceeded';
|
73 |
+
const DECLINED_CURRENCY_NOT_SUPPORTED = 'currency_not_supported';
|
74 |
+
const DECLINED_DO_NOT_HONOR = 'do_not_honor';
|
75 |
+
const DECLINED_DO_NOT_TRY_AGAIN = 'do_not_try_again';
|
76 |
+
const DECLINED_DUPLICATED_TRANSACTION = 'duplicate_transaction';
|
77 |
+
const DECLINED_EXPIRED_CARD = 'expired_card';
|
78 |
+
const DECLINED_FRAUDULENT = 'fraudulent';
|
79 |
+
const DECLINED_GENERIC_DECLINE = 'generic_decline';
|
80 |
+
const DECLINED_INCORRECT_NUMBER = 'incorrect_number';
|
81 |
+
const DECLINED_INCORRECT_CVC = 'incorrect_cvc';
|
82 |
+
const DECLINED_INCORRECT_PIN = 'incorrect_pin';
|
83 |
+
const DECLINED_INCORRECT_ZIP = 'incorrect_zip';
|
84 |
+
const DECLINED_INSUFFICIENT_FUNDS = 'insufficient_funds';
|
85 |
+
const DECLINED_INVALID_ACCOUNT = 'invalid_account';
|
86 |
+
const DECLINED_INVALID_AMOUNT = 'invalid_amount';
|
87 |
+
const DECLINED_INVALID_CVC = 'invalid_cvc';
|
88 |
+
const DECLINED_INVALID_EXPIRY_YEAR = 'invalid_expiry_year';
|
89 |
+
const DECLINED_INVALID_NUMBER = 'invalid_number';
|
90 |
+
const DECLINED_INVALID_PIN = 'invalid_pin';
|
91 |
+
const DECLINED_ISSUER_NOT_AVAILABLE = 'issuer_not_available';
|
92 |
+
const DECLINED_LOST_CARD = 'lost_card';
|
93 |
+
const DECLINED_MERCHANT_BLACKLIST = 'merchant_blacklist';
|
94 |
+
const DECLINED_NEW_ACCOUNT_INFORMATION_AVAILABLE = 'new_account_information_available';
|
95 |
+
const DECLINED_NO_ACTION_TAKEN = 'no_action_taken';
|
96 |
+
const DECLINED_NOT_PERMITTED = 'not_permitted';
|
97 |
+
const DECLINED_PICKUP_CARD = 'pickup_card';
|
98 |
+
const DECLINED_PIN_TRY_EXCEEDED = 'pin_try_exceeded';
|
99 |
+
const DECLINED_PROCESSING_ERROR = 'processing_error';
|
100 |
+
const DECLINED_REENTER_TRANSACTION = 'reenter_transaction';
|
101 |
+
const DECLINED_RESTRICTED_CARD = 'restricted_card';
|
102 |
+
const DECLINED_REVOCATION_OF_ALL_AUTHORIZATIONS = 'revocation_of_all_authorizations';
|
103 |
+
const DECLINED_REVOCATION_OF_AUTHORIZATION = 'revocation_of_authorization';
|
104 |
+
const DECLINED_SECURITY_VIOLATION = 'security_violation';
|
105 |
+
const DECLINED_SERVICE_NOT_ALLOWED = 'service_not_allowed';
|
106 |
+
const DECLINED_STOLEN_CARD = 'stolen_card';
|
107 |
+
const DECLINED_STOP_PAYMENT_ORDER = 'stop_payment_order';
|
108 |
+
const DECLINED_TESTMODE_DECLINE = 'testmode_decline';
|
109 |
+
const DECLINED_TRANSACTION_NOT_ALLOWED = 'transaction_not_allowed';
|
110 |
+
const DECLINED_TRY_AGAIN_LATER = 'try_again_later';
|
111 |
+
const DECLINED_WITHDRAWAL_COUNT_LIMIT_EXCEEDED = 'withdrawal_count_limit_exceeded';
|
112 |
|
113 |
/**
|
114 |
+
* Possible string representations of the status of the charge.
|
115 |
+
* @link https://stripe.com/docs/api/charges/object#charge_object-status
|
|
|
116 |
*/
|
117 |
+
const STATUS_FAILED = 'failed';
|
118 |
+
const STATUS_PENDING = 'pending';
|
119 |
+
const STATUS_SUCCEEDED = 'succeeded';
|
|
|
120 |
|
121 |
/**
|
122 |
* @param array|null $params
|
158 |
{
|
159 |
$url = $this->instanceUrl() . '/dispute';
|
160 |
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
161 |
+
$this->refreshFrom(['dispute' => $response], $opts, true);
|
162 |
return $this->dispute;
|
163 |
}
|
164 |
|
184 |
*/
|
185 |
public function markAsFraudulent($opts = null)
|
186 |
{
|
187 |
+
$params = ['fraud_details' => ['user_report' => 'fraudulent']];
|
188 |
$url = $this->instanceUrl();
|
189 |
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
190 |
$this->refreshFrom($response, $opts);
|
198 |
*/
|
199 |
public function markAsSafe($opts = null)
|
200 |
{
|
201 |
+
$params = ['fraud_details' => ['user_report' => 'safe']];
|
202 |
$url = $this->instanceUrl();
|
203 |
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
204 |
$this->refreshFrom($response, $opts);
|
includes/lib/Stripe/lib/Checkout/Session.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Checkout;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Session
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property string $cancel_url
|
11 |
+
* @property string $client_reference_id
|
12 |
+
* @property string $customer
|
13 |
+
* @property string $customer_email
|
14 |
+
* @property mixed $display_items
|
15 |
+
* @property bool $livemode
|
16 |
+
* @property string $payment_intent
|
17 |
+
* @property string[] $payment_method_types
|
18 |
+
* @property string $submit_type
|
19 |
+
* @property string $subscription
|
20 |
+
* @property string $success_url
|
21 |
+
*
|
22 |
+
* @package Stripe
|
23 |
+
*/
|
24 |
+
class Session extends \Stripe\ApiResource
|
25 |
+
{
|
26 |
+
|
27 |
+
const OBJECT_NAME = "checkout.session";
|
28 |
+
|
29 |
+
use \Stripe\ApiOperations\Create;
|
30 |
+
use \Stripe\ApiOperations\Retrieve;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Possible string representations of submit type.
|
34 |
+
* @link https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-submit_type
|
35 |
+
*/
|
36 |
+
const SUBMIT_TYPE_AUTO = 'auto';
|
37 |
+
const SUBMIT_TYPE_BOOK = 'book';
|
38 |
+
const SUBMIT_TYPE_DONATE = 'donate';
|
39 |
+
const SUBMIT_TYPE_PAY = 'pay';
|
40 |
+
}
|
includes/lib/Stripe/lib/Collection.php
CHANGED
@@ -12,9 +12,22 @@ namespace Stripe;
|
|
12 |
*
|
13 |
* @package Stripe
|
14 |
*/
|
15 |
-
class Collection extends
|
16 |
{
|
17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
|
19 |
public function setRequestParams($params)
|
20 |
{
|
@@ -55,6 +68,15 @@ class Collection extends ApiResource
|
|
55 |
return Util\Util::convertToStripeObject($response, $opts);
|
56 |
}
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
/**
|
59 |
* @return Util\AutoPagingIterator An iterator that can be used to iterate
|
60 |
* across all objects across all pages. As page boundaries are
|
@@ -76,12 +98,11 @@ class Collection extends ApiResource
|
|
76 |
if (isset($url['query'])) {
|
77 |
// If the URL contains a query param, parse it out into $params so they
|
78 |
// don't interact weirdly with each other.
|
79 |
-
$query =
|
80 |
parse_str($url['query'], $query);
|
81 |
-
|
82 |
-
$params = array_merge($params ? $params : array(), $query);
|
83 |
}
|
84 |
|
85 |
-
return
|
86 |
}
|
87 |
}
|
12 |
*
|
13 |
* @package Stripe
|
14 |
*/
|
15 |
+
class Collection extends StripeObject implements \IteratorAggregate
|
16 |
{
|
17 |
+
|
18 |
+
const OBJECT_NAME = "list";
|
19 |
+
|
20 |
+
use ApiOperations\Request;
|
21 |
+
|
22 |
+
protected $_requestParams = [];
|
23 |
+
|
24 |
+
/**
|
25 |
+
* @return string The base URL for the given class.
|
26 |
+
*/
|
27 |
+
public static function baseUrl()
|
28 |
+
{
|
29 |
+
return Stripe::$apiBase;
|
30 |
+
}
|
31 |
|
32 |
public function setRequestParams($params)
|
33 |
{
|
68 |
return Util\Util::convertToStripeObject($response, $opts);
|
69 |
}
|
70 |
|
71 |
+
/**
|
72 |
+
* @return \ArrayIterator An iterator that can be used to iterate
|
73 |
+
* across objects in the current page.
|
74 |
+
*/
|
75 |
+
public function getIterator()
|
76 |
+
{
|
77 |
+
return new \ArrayIterator($this->data);
|
78 |
+
}
|
79 |
+
|
80 |
/**
|
81 |
* @return Util\AutoPagingIterator An iterator that can be used to iterate
|
82 |
* across all objects across all pages. As page boundaries are
|
98 |
if (isset($url['query'])) {
|
99 |
// If the URL contains a query param, parse it out into $params so they
|
100 |
// don't interact weirdly with each other.
|
101 |
+
$query = [];
|
102 |
parse_str($url['query'], $query);
|
103 |
+
$params = array_merge($params ?: [], $query);
|
|
|
104 |
}
|
105 |
|
106 |
+
return [$url['path'], $params];
|
107 |
}
|
108 |
}
|
includes/lib/Stripe/lib/CountrySpec.php
CHANGED
@@ -5,42 +5,22 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class CountrySpec
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class CountrySpec extends ApiResource
|
11 |
{
|
12 |
-
/**
|
13 |
-
* This is a special case because the country specs endpoint has an
|
14 |
-
* underscore in it. The parent `className` function strips underscores.
|
15 |
-
*
|
16 |
-
* @return string The name of the class.
|
17 |
-
*/
|
18 |
-
public static function className()
|
19 |
-
{
|
20 |
-
return 'country_spec';
|
21 |
-
}
|
22 |
|
23 |
-
|
24 |
-
* @param array|string $country The ISO country code of the country we
|
25 |
-
* retrieve the country specfication for, or an options array
|
26 |
-
* containing an `id` containing that code.
|
27 |
-
* @param array|string|null $opts
|
28 |
-
*
|
29 |
-
* @return CountrySpec
|
30 |
-
*/
|
31 |
-
public static function retrieve($country, $opts = null)
|
32 |
-
{
|
33 |
-
return self::_retrieve($country, $opts);
|
34 |
-
}
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
* @param array|string|null $opts
|
39 |
-
*
|
40 |
-
* @return Collection of CountrySpecs
|
41 |
-
*/
|
42 |
-
public static function all($params = null, $opts = null)
|
43 |
-
{
|
44 |
-
return self::_all($params, $opts);
|
45 |
-
}
|
46 |
}
|
5 |
/**
|
6 |
* Class CountrySpec
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property string $default_currency
|
11 |
+
* @property mixed $supported_bank_account_currencies
|
12 |
+
* @property string[] $supported_payment_currencies
|
13 |
+
* @property string[] $supported_payment_methods
|
14 |
+
* @property string[] $supported_transfer_countries
|
15 |
+
* @property mixed $verification_fields
|
16 |
+
*
|
17 |
* @package Stripe
|
18 |
*/
|
19 |
class CountrySpec extends ApiResource
|
20 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
|
22 |
+
const OBJECT_NAME = "country_spec";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
|
24 |
+
use ApiOperations\All;
|
25 |
+
use ApiOperations\Retrieve;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
}
|
includes/lib/Stripe/lib/Coupon.php
CHANGED
@@ -5,74 +5,32 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class Coupon
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class Coupon extends ApiResource
|
11 |
{
|
12 |
-
/**
|
13 |
-
* @param array|string $id The ID of the coupon to retrieve, or an options
|
14 |
-
* array containing an `id` key.
|
15 |
-
* @param array|string|null $opts
|
16 |
-
*
|
17 |
-
* @return Coupon
|
18 |
-
*/
|
19 |
-
public static function retrieve($id, $opts = null)
|
20 |
-
{
|
21 |
-
return self::_retrieve($id, $opts);
|
22 |
-
}
|
23 |
-
|
24 |
-
/**
|
25 |
-
* @param array|null $params
|
26 |
-
* @param array|string|null $opts
|
27 |
-
*
|
28 |
-
* @return Coupon The created coupon.
|
29 |
-
*/
|
30 |
-
public static function create($params = null, $opts = null)
|
31 |
-
{
|
32 |
-
return self::_create($params, $opts);
|
33 |
-
}
|
34 |
-
|
35 |
-
/**
|
36 |
-
* @param string $id The ID of the coupon to update.
|
37 |
-
* @param array|null $params
|
38 |
-
* @param array|string|null $options
|
39 |
-
*
|
40 |
-
* @return Coupon The updated coupon.
|
41 |
-
*/
|
42 |
-
public static function update($id, $params = null, $options = null)
|
43 |
-
{
|
44 |
-
return self::_update($id, $params, $options);
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* @param array|null $params
|
49 |
-
* @param array|string|null $opts
|
50 |
-
*
|
51 |
-
* @return Coupon The deleted coupon.
|
52 |
-
*/
|
53 |
-
public function delete($params = null, $opts = null)
|
54 |
-
{
|
55 |
-
return $this->_delete($params, $opts);
|
56 |
-
}
|
57 |
|
58 |
-
|
59 |
-
* @param array|string|null $opts
|
60 |
-
*
|
61 |
-
* @return Coupon The saved coupon.
|
62 |
-
*/
|
63 |
-
public function save($opts = null)
|
64 |
-
{
|
65 |
-
return $this->_save($opts);
|
66 |
-
}
|
67 |
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
*/
|
74 |
-
public static function all($params = null, $opts = null)
|
75 |
-
{
|
76 |
-
return self::_all($params, $opts);
|
77 |
-
}
|
78 |
}
|
5 |
/**
|
6 |
* Class Coupon
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount_off
|
11 |
+
* @property int $created
|
12 |
+
* @property string $currency
|
13 |
+
* @property string $duration
|
14 |
+
* @property int $duration_in_months
|
15 |
+
* @property bool $livemode
|
16 |
+
* @property int $max_redemptions
|
17 |
+
* @property StripeObject $metadata
|
18 |
+
* @property string $name
|
19 |
+
* @property float $percent_off
|
20 |
+
* @property int $redeem_by
|
21 |
+
* @property int $times_redeemed
|
22 |
+
* @property bool $valid
|
23 |
+
*
|
24 |
* @package Stripe
|
25 |
*/
|
26 |
class Coupon extends ApiResource
|
27 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
+
const OBJECT_NAME = "coupon";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
+
use ApiOperations\All;
|
32 |
+
use ApiOperations\Create;
|
33 |
+
use ApiOperations\Delete;
|
34 |
+
use ApiOperations\Retrieve;
|
35 |
+
use ApiOperations\Update;
|
|
|
|
|
|
|
|
|
|
|
36 |
}
|
includes/lib/Stripe/lib/CreditNote.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class CreditNote
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount
|
11 |
+
* @property string $customer_balance_transaction
|
12 |
+
* @property int $created
|
13 |
+
* @property string $currency
|
14 |
+
* @property string $customer
|
15 |
+
* @property string $invoice
|
16 |
+
* @property bool $livemode
|
17 |
+
* @property string $memo
|
18 |
+
* @property StripeObject $metadata
|
19 |
+
* @property string $number
|
20 |
+
* @property string $pdf
|
21 |
+
* @property string $reason
|
22 |
+
* @property string $refund
|
23 |
+
* @property string $status
|
24 |
+
* @property string $type
|
25 |
+
*
|
26 |
+
* @package Stripe
|
27 |
+
*/
|
28 |
+
class CreditNote extends ApiResource
|
29 |
+
{
|
30 |
+
|
31 |
+
const OBJECT_NAME = "credit_note";
|
32 |
+
|
33 |
+
use ApiOperations\All;
|
34 |
+
use ApiOperations\Create;
|
35 |
+
use ApiOperations\Retrieve;
|
36 |
+
use ApiOperations\Update;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Possible string representations of the credit note reason.
|
40 |
+
* @link https://stripe.com/docs/api/credit_notes/object#credit_note_object-reason
|
41 |
+
*/
|
42 |
+
const REASON_DUPLICATE = 'duplicate';
|
43 |
+
const REASON_FRAUDULENT = 'fraudulent';
|
44 |
+
const REASON_ORDER_CHANGE = 'order_change';
|
45 |
+
const REASON_PRODUCT_UNSATISFACTORY = 'product_unsatisfactory';
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Possible string representations of the credit note status.
|
49 |
+
* @link https://stripe.com/docs/api/credit_notes/object#credit_note_object-status
|
50 |
+
*/
|
51 |
+
const STATUS_ISSUED = 'issued';
|
52 |
+
const STATUS_VOID = 'void';
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Possible string representations of the credit note type.
|
56 |
+
* @link https://stripe.com/docs/api/credit_notes/object#credit_note_object-status
|
57 |
+
*/
|
58 |
+
const TYPE_POST_PAYMENT = 'post_payment';
|
59 |
+
const TYPE_PRE_PAYMENT = 'pre_payment';
|
60 |
+
|
61 |
+
/**
|
62 |
+
* @param array|null $params
|
63 |
+
* @param array|string|null $opts
|
64 |
+
*
|
65 |
+
* @return CreditNote The voided credit note.
|
66 |
+
*/
|
67 |
+
public function voidCreditNote($params = null, $opts = null)
|
68 |
+
{
|
69 |
+
$url = $this->instanceUrl() . '/void';
|
70 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
71 |
+
$this->refreshFrom($response, $opts);
|
72 |
+
return $this;
|
73 |
+
}
|
74 |
+
}
|
includes/lib/Stripe/lib/Customer.php
CHANGED
@@ -7,185 +7,314 @@ namespace Stripe;
|
|
7 |
*
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
-
* @property
|
11 |
-
* @property
|
12 |
* @property string $created
|
13 |
* @property string $currency
|
14 |
* @property string $default_source
|
15 |
* @property bool $delinquent
|
16 |
* @property string $description
|
17 |
-
* @property
|
18 |
* @property string $email
|
|
|
|
|
19 |
* @property bool $livemode
|
20 |
-
* @property
|
|
|
|
|
|
|
21 |
* @property mixed $shipping
|
22 |
* @property Collection $sources
|
23 |
* @property Collection $subscriptions
|
|
|
|
|
24 |
*
|
25 |
* @package Stripe
|
26 |
*/
|
27 |
class Customer extends ApiResource
|
28 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
/**
|
30 |
-
* @param
|
31 |
-
*
|
32 |
* @param array|string|null $opts
|
33 |
*
|
34 |
-
* @return
|
35 |
*/
|
36 |
-
public static function
|
37 |
{
|
38 |
-
return self::
|
39 |
}
|
40 |
|
41 |
/**
|
|
|
|
|
42 |
* @param array|null $params
|
43 |
* @param array|string|null $opts
|
44 |
*
|
45 |
-
* @return
|
46 |
*/
|
47 |
-
public static function
|
48 |
{
|
49 |
-
return self::
|
50 |
}
|
51 |
|
52 |
/**
|
|
|
|
|
53 |
* @param array|null $params
|
54 |
* @param array|string|null $opts
|
55 |
*
|
56 |
-
* @return
|
57 |
*/
|
58 |
-
public static function
|
59 |
{
|
60 |
-
return self::
|
61 |
}
|
62 |
|
63 |
/**
|
64 |
-
* @param string $id The ID of the customer to
|
|
|
65 |
* @param array|null $params
|
66 |
-
* @param array|string|null $
|
67 |
*
|
68 |
-
* @return
|
69 |
*/
|
70 |
-
public static function
|
71 |
{
|
72 |
-
return self::
|
73 |
}
|
74 |
|
75 |
/**
|
|
|
|
|
76 |
* @param array|string|null $opts
|
77 |
*
|
78 |
-
* @return
|
79 |
*/
|
80 |
-
public function
|
81 |
{
|
82 |
-
return
|
83 |
}
|
84 |
|
85 |
/**
|
|
|
86 |
* @param array|null $params
|
87 |
* @param array|string|null $opts
|
88 |
*
|
89 |
-
* @return
|
90 |
*/
|
91 |
-
public function
|
92 |
{
|
93 |
-
return
|
94 |
}
|
95 |
|
96 |
/**
|
|
|
|
|
97 |
* @param array|null $params
|
|
|
98 |
*
|
99 |
-
* @return
|
100 |
*/
|
101 |
-
public function
|
102 |
{
|
103 |
-
|
104 |
-
$params = array();
|
105 |
-
}
|
106 |
-
$params['customer'] = $this->id;
|
107 |
-
$ii = InvoiceItem::create($params, $this->_opts);
|
108 |
-
return $ii;
|
109 |
}
|
110 |
|
111 |
/**
|
|
|
|
|
112 |
* @param array|null $params
|
|
|
113 |
*
|
114 |
-
* @return
|
115 |
*/
|
116 |
-
public function
|
117 |
{
|
118 |
-
|
119 |
-
$params = array();
|
120 |
-
}
|
121 |
-
$params['customer'] = $this->id;
|
122 |
-
$invoices = Invoice::all($params, $this->_opts);
|
123 |
-
return $invoices;
|
124 |
}
|
125 |
|
126 |
/**
|
|
|
127 |
* @param array|null $params
|
|
|
128 |
*
|
129 |
-
* @return
|
130 |
*/
|
131 |
-
public function
|
132 |
{
|
133 |
-
|
134 |
-
$params = array();
|
135 |
-
}
|
136 |
-
$params['customer'] = $this->id;
|
137 |
-
$iis = InvoiceItem::all($params, $this->_opts);
|
138 |
-
return $iis;
|
139 |
}
|
140 |
|
141 |
/**
|
|
|
142 |
* @param array|null $params
|
|
|
143 |
*
|
144 |
-
* @return
|
145 |
*/
|
146 |
-
public function
|
147 |
{
|
148 |
-
|
149 |
-
$params = array();
|
150 |
-
}
|
151 |
-
$params['customer'] = $this->id;
|
152 |
-
$charges = Charge::all($params, $this->_opts);
|
153 |
-
return $charges;
|
154 |
}
|
155 |
|
156 |
/**
|
|
|
|
|
157 |
* @param array|null $params
|
|
|
158 |
*
|
159 |
-
* @return
|
160 |
*/
|
161 |
-
public function
|
162 |
{
|
163 |
-
$
|
164 |
-
list($response, $opts) = $this->_request('post', $url, $params);
|
165 |
-
$this->refreshFrom(array('subscription' => $response), $opts, true);
|
166 |
-
return $this->subscription;
|
167 |
}
|
168 |
|
169 |
/**
|
|
|
|
|
170 |
* @param array|null $params
|
|
|
171 |
*
|
172 |
-
*
|
|
|
173 |
*/
|
174 |
-
public function
|
175 |
{
|
176 |
-
$
|
177 |
-
list($response, $opts) = $this->_request('delete', $url, $params);
|
178 |
-
$this->refreshFrom(array('subscription' => $response), $opts, true);
|
179 |
-
return $this->subscription;
|
180 |
}
|
181 |
|
182 |
/**
|
183 |
-
* @
|
|
|
|
|
|
|
|
|
184 |
*/
|
185 |
-
public function
|
186 |
{
|
187 |
-
$
|
188 |
-
list($response, $opts) = $this->_request('delete', $url);
|
189 |
-
$this->refreshFrom(array('discount' => null), $opts, true);
|
190 |
}
|
191 |
}
|
7 |
*
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
+
* @property mixed $address
|
11 |
+
* @property int $balance
|
12 |
* @property string $created
|
13 |
* @property string $currency
|
14 |
* @property string $default_source
|
15 |
* @property bool $delinquent
|
16 |
* @property string $description
|
17 |
+
* @property Discount $discount
|
18 |
* @property string $email
|
19 |
+
* @property string $invoice_prefix
|
20 |
+
* @property mixed $invoice_settings
|
21 |
* @property bool $livemode
|
22 |
+
* @property StripeObject $metadata
|
23 |
+
* @property string $name
|
24 |
+
* @property string $phone
|
25 |
+
* @property string[] preferred_locales
|
26 |
* @property mixed $shipping
|
27 |
* @property Collection $sources
|
28 |
* @property Collection $subscriptions
|
29 |
+
* @property string $tax_exempt
|
30 |
+
* @property Collection $tax_ids
|
31 |
*
|
32 |
* @package Stripe
|
33 |
*/
|
34 |
class Customer extends ApiResource
|
35 |
{
|
36 |
+
|
37 |
+
const OBJECT_NAME = "customer";
|
38 |
+
|
39 |
+
use ApiOperations\All;
|
40 |
+
use ApiOperations\Create;
|
41 |
+
use ApiOperations\Delete;
|
42 |
+
use ApiOperations\NestedResource;
|
43 |
+
use ApiOperations\Retrieve;
|
44 |
+
use ApiOperations\Update;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Possible string representations of the customer's type of tax exemption.
|
48 |
+
* @link https://stripe.com/docs/api/customers/object#customer_object-tax_exempt
|
49 |
+
*/
|
50 |
+
const TAX_EXEMPT_NONE = 'none';
|
51 |
+
const TAX_EXEMPT_EXEMPT = 'exempt';
|
52 |
+
const TAX_EXEMPT_REVERSE = 'reverse';
|
53 |
+
|
54 |
+
public static function getSavedNestedResources()
|
55 |
+
{
|
56 |
+
static $savedNestedResources = null;
|
57 |
+
if ($savedNestedResources === null) {
|
58 |
+
$savedNestedResources = new Util\Set([
|
59 |
+
'source',
|
60 |
+
]);
|
61 |
+
}
|
62 |
+
return $savedNestedResources;
|
63 |
+
}
|
64 |
+
|
65 |
+
const PATH_BALANCE_TRANSACTIONS = '/balance_transactions';
|
66 |
+
const PATH_SOURCES = '/sources';
|
67 |
+
const PATH_TAX_IDS = '/tax_ids';
|
68 |
+
|
69 |
+
/**
|
70 |
+
* @param array|null $params
|
71 |
+
*
|
72 |
+
* @return InvoiceItem The resulting invoice item.
|
73 |
+
*/
|
74 |
+
public function addInvoiceItem($params = null)
|
75 |
+
{
|
76 |
+
$params = $params ?: [];
|
77 |
+
$params['customer'] = $this->id;
|
78 |
+
$ii = InvoiceItem::create($params, $this->_opts);
|
79 |
+
return $ii;
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* @param array|null $params
|
84 |
+
*
|
85 |
+
* @return array An array of the customer's Invoices.
|
86 |
+
*/
|
87 |
+
public function invoices($params = null)
|
88 |
+
{
|
89 |
+
$params = $params ?: [];
|
90 |
+
$params['customer'] = $this->id;
|
91 |
+
$invoices = Invoice::all($params, $this->_opts);
|
92 |
+
return $invoices;
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* @param array|null $params
|
97 |
+
*
|
98 |
+
* @return array An array of the customer's InvoiceItems.
|
99 |
+
*/
|
100 |
+
public function invoiceItems($params = null)
|
101 |
+
{
|
102 |
+
$params = $params ?: [];
|
103 |
+
$params['customer'] = $this->id;
|
104 |
+
$iis = InvoiceItem::all($params, $this->_opts);
|
105 |
+
return $iis;
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* @param array|null $params
|
110 |
+
*
|
111 |
+
* @return array An array of the customer's Charges.
|
112 |
+
*/
|
113 |
+
public function charges($params = null)
|
114 |
+
{
|
115 |
+
$params = $params ?: [];
|
116 |
+
$params['customer'] = $this->id;
|
117 |
+
$charges = Charge::all($params, $this->_opts);
|
118 |
+
return $charges;
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* @param array|null $params
|
123 |
+
*
|
124 |
+
* @return Subscription The updated subscription.
|
125 |
+
*/
|
126 |
+
public function updateSubscription($params = null)
|
127 |
+
{
|
128 |
+
$url = $this->instanceUrl() . '/subscription';
|
129 |
+
list($response, $opts) = $this->_request('post', $url, $params);
|
130 |
+
$this->refreshFrom(['subscription' => $response], $opts, true);
|
131 |
+
return $this->subscription;
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* @param array|null $params
|
136 |
+
*
|
137 |
+
* @return Subscription The cancelled subscription.
|
138 |
+
*/
|
139 |
+
public function cancelSubscription($params = null)
|
140 |
+
{
|
141 |
+
$url = $this->instanceUrl() . '/subscription';
|
142 |
+
list($response, $opts) = $this->_request('delete', $url, $params);
|
143 |
+
$this->refreshFrom(['subscription' => $response], $opts, true);
|
144 |
+
return $this->subscription;
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* @return Customer The updated customer.
|
149 |
+
*/
|
150 |
+
public function deleteDiscount()
|
151 |
+
{
|
152 |
+
$url = $this->instanceUrl() . '/discount';
|
153 |
+
list($response, $opts) = $this->_request('delete', $url);
|
154 |
+
$this->refreshFrom(['discount' => null], $opts, true);
|
155 |
+
}
|
156 |
+
|
157 |
/**
|
158 |
+
* @param string|null $id The ID of the customer on which to create the source.
|
159 |
+
* @param array|null $params
|
160 |
* @param array|string|null $opts
|
161 |
*
|
162 |
+
* @return ApiResource
|
163 |
*/
|
164 |
+
public static function createSource($id, $params = null, $opts = null)
|
165 |
{
|
166 |
+
return self::_createNestedResource($id, static::PATH_SOURCES, $params, $opts);
|
167 |
}
|
168 |
|
169 |
/**
|
170 |
+
* @param string|null $id The ID of the customer to which the source belongs.
|
171 |
+
* @param string|null $sourceId The ID of the source to retrieve.
|
172 |
* @param array|null $params
|
173 |
* @param array|string|null $opts
|
174 |
*
|
175 |
+
* @return ApiResource
|
176 |
*/
|
177 |
+
public static function retrieveSource($id, $sourceId, $params = null, $opts = null)
|
178 |
{
|
179 |
+
return self::_retrieveNestedResource($id, static::PATH_SOURCES, $sourceId, $params, $opts);
|
180 |
}
|
181 |
|
182 |
/**
|
183 |
+
* @param string|null $id The ID of the customer to which the source belongs.
|
184 |
+
* @param string|null $sourceId The ID of the source to update.
|
185 |
* @param array|null $params
|
186 |
* @param array|string|null $opts
|
187 |
*
|
188 |
+
* @return ApiResource
|
189 |
*/
|
190 |
+
public static function updateSource($id, $sourceId, $params = null, $opts = null)
|
191 |
{
|
192 |
+
return self::_updateNestedResource($id, static::PATH_SOURCES, $sourceId, $params, $opts);
|
193 |
}
|
194 |
|
195 |
/**
|
196 |
+
* @param string|null $id The ID of the customer to which the source belongs.
|
197 |
+
* @param string|null $sourceId The ID of the source to delete.
|
198 |
* @param array|null $params
|
199 |
+
* @param array|string|null $opts
|
200 |
*
|
201 |
+
* @return ApiResource
|
202 |
*/
|
203 |
+
public static function deleteSource($id, $sourceId, $params = null, $opts = null)
|
204 |
{
|
205 |
+
return self::_deleteNestedResource($id, static::PATH_SOURCES, $sourceId, $params, $opts);
|
206 |
}
|
207 |
|
208 |
/**
|
209 |
+
* @param string|null $id The ID of the customer on which to retrieve the sources.
|
210 |
+
* @param array|null $params
|
211 |
* @param array|string|null $opts
|
212 |
*
|
213 |
+
* @return Collection The list of sources.
|
214 |
*/
|
215 |
+
public static function allSources($id, $params = null, $opts = null)
|
216 |
{
|
217 |
+
return self::_allNestedResources($id, static::PATH_SOURCES, $params, $opts);
|
218 |
}
|
219 |
|
220 |
/**
|
221 |
+
* @param string|null $id The ID of the customer on which to create the tax id.
|
222 |
* @param array|null $params
|
223 |
* @param array|string|null $opts
|
224 |
*
|
225 |
+
* @return ApiResource
|
226 |
*/
|
227 |
+
public static function createTaxId($id, $params = null, $opts = null)
|
228 |
{
|
229 |
+
return self::_createNestedResource($id, static::PATH_TAX_IDS, $params, $opts);
|
230 |
}
|
231 |
|
232 |
/**
|
233 |
+
* @param string|null $id The ID of the customer to which the tax id belongs.
|
234 |
+
* @param string|null $taxIdId The ID of the tax id to retrieve.
|
235 |
* @param array|null $params
|
236 |
+
* @param array|string|null $opts
|
237 |
*
|
238 |
+
* @return ApiResource
|
239 |
*/
|
240 |
+
public static function retrieveTaxId($id, $taxIdId, $params = null, $opts = null)
|
241 |
{
|
242 |
+
return self::_retrieveNestedResource($id, static::PATH_TAX_IDS, $taxIdId, $params, $opts);
|
|
|
|
|
|
|
|
|
|
|
243 |
}
|
244 |
|
245 |
/**
|
246 |
+
* @param string|null $id The ID of the customer to which the tax id belongs.
|
247 |
+
* @param string|null $taxIdId The ID of the tax id to delete.
|
248 |
* @param array|null $params
|
249 |
+
* @param array|string|null $opts
|
250 |
*
|
251 |
+
* @return ApiResource
|
252 |
*/
|
253 |
+
public static function deleteTaxId($id, $taxIdId, $params = null, $opts = null)
|
254 |
{
|
255 |
+
return self::_deleteNestedResource($id, static::PATH_TAX_IDS, $taxIdId, $params, $opts);
|
|
|
|
|
|
|
|
|
|
|
256 |
}
|
257 |
|
258 |
/**
|
259 |
+
* @param string|null $id The ID of the customer on which to retrieve the tax ids.
|
260 |
* @param array|null $params
|
261 |
+
* @param array|string|null $opts
|
262 |
*
|
263 |
+
* @return Collection The list of tax ids.
|
264 |
*/
|
265 |
+
public static function allTaxIds($id, $params = null, $opts = null)
|
266 |
{
|
267 |
+
return self::_allNestedResources($id, static::PATH_TAX_IDS, $params, $opts);
|
|
|
|
|
|
|
|
|
|
|
268 |
}
|
269 |
|
270 |
/**
|
271 |
+
* @param string|null $id The ID of the customer on which to create the balance transaction.
|
272 |
* @param array|null $params
|
273 |
+
* @param array|string|null $opts
|
274 |
*
|
275 |
+
* @return ApiResource
|
276 |
*/
|
277 |
+
public static function createBalanceTransaction($id, $params = null, $opts = null)
|
278 |
{
|
279 |
+
return self::_createNestedResource($id, static::PATH_BALANCE_TRANSACTIONS, $params, $opts);
|
|
|
|
|
|
|
|
|
|
|
280 |
}
|
281 |
|
282 |
/**
|
283 |
+
* @param string|null $id The ID of the customer to which the balance transaction belongs.
|
284 |
+
* @param string|null $balanceTransactionId The ID of the balance transaction to retrieve.
|
285 |
* @param array|null $params
|
286 |
+
* @param array|string|null $opts
|
287 |
*
|
288 |
+
* @return ApiResource
|
289 |
*/
|
290 |
+
public static function retrieveBalanceTransaction($id, $balanceTransactionId, $params = null, $opts = null)
|
291 |
{
|
292 |
+
return self::_retrieveNestedResource($id, static::PATH_BALANCE_TRANSACTIONS, $balanceTransactionId, $params, $opts);
|
|
|
|
|
|
|
293 |
}
|
294 |
|
295 |
/**
|
296 |
+
* @param string|null $id The ID of the customer on which to update the balance transaction.
|
297 |
+
* @param string|null $balanceTransactionId The ID of the balance transaction to update.
|
298 |
* @param array|null $params
|
299 |
+
* @param array|string|null $opts
|
300 |
*
|
301 |
+
*
|
302 |
+
* @return ApiResource
|
303 |
*/
|
304 |
+
public static function updateBalanceTransaction($id, $balanceTransactionId, $params = null, $opts = null)
|
305 |
{
|
306 |
+
return self::_updateNestedResource($id, static::PATH_BALANCE_TRANSACTIONS, $balanceTransactionId, $params, $opts);
|
|
|
|
|
|
|
307 |
}
|
308 |
|
309 |
/**
|
310 |
+
* @param string|null $id The ID of the customer on which to retrieve the customer balance transactions.
|
311 |
+
* @param array|null $params
|
312 |
+
* @param array|string|null $opts
|
313 |
+
*
|
314 |
+
* @return Collection The list of customer balance transactions.
|
315 |
*/
|
316 |
+
public static function allBalanceTransactions($id, $params = null, $opts = null)
|
317 |
{
|
318 |
+
return self::_allNestedResources($id, static::PATH_BALANCE_TRANSACTIONS, $params, $opts);
|
|
|
|
|
319 |
}
|
320 |
}
|
includes/lib/Stripe/lib/CustomerBalanceTransaction.php
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class CustomerBalanceTransaction
|
7 |
+
*
|
8 |
+
* @package Stripe
|
9 |
+
*
|
10 |
+
* @property string $id
|
11 |
+
* @property string $object
|
12 |
+
* @property int $amount
|
13 |
+
* @property string $credit_note
|
14 |
+
* @property int $created
|
15 |
+
* @property string $currency
|
16 |
+
* @property string $customer
|
17 |
+
* @property string $description
|
18 |
+
* @property int $ending_balance
|
19 |
+
* @property string $invoice
|
20 |
+
* @property bool $livemode
|
21 |
+
* @property StripeObject $metadata
|
22 |
+
* @property string $type
|
23 |
+
*/
|
24 |
+
class CustomerBalanceTransaction extends ApiResource
|
25 |
+
{
|
26 |
+
const OBJECT_NAME = "customer_balance_transaction";
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Possible string representations of a balance transaction's type.
|
30 |
+
* @link https://stripe.com/docs/api/customers/customer_balance_transaction_object#customer_balance_transaction_object-type
|
31 |
+
*/
|
32 |
+
const TYPE_ADJUSTEMENT = 'adjustment';
|
33 |
+
const TYPE_APPLIED_TO_INVOICE = 'applied_to_invoice';
|
34 |
+
const TYPE_CREDIT_NOTE = 'credit_note';
|
35 |
+
const TYPE_INITIAL = 'initial';
|
36 |
+
const TYPE_INVOICE_TOO_LARGE = 'invoice_too_large';
|
37 |
+
const TYPE_INVOICE_TOO_SMALL = 'invoice_too_small';
|
38 |
+
const TYPE_UNSPENT_RECEIVER_CREDIT = 'unspent_receiver_credit';
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @return string The API URL for this balance transaction.
|
42 |
+
*/
|
43 |
+
public function instanceUrl()
|
44 |
+
{
|
45 |
+
$id = $this['id'];
|
46 |
+
$customer = $this['customer'];
|
47 |
+
if (!$id) {
|
48 |
+
throw new Error\InvalidRequest(
|
49 |
+
"Could not determine which URL to request: class instance has invalid ID: $id",
|
50 |
+
null
|
51 |
+
);
|
52 |
+
}
|
53 |
+
$id = Util\Util::utf8($id);
|
54 |
+
$customer = Util\Util::utf8($customer);
|
55 |
+
|
56 |
+
$base = Customer::classUrl();
|
57 |
+
$customerExtn = urlencode($customer);
|
58 |
+
$extn = urlencode($id);
|
59 |
+
return "$base/$customerExtn/balance_transactions/$extn";
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* @param array|string $_id
|
64 |
+
* @param array|string|null $_opts
|
65 |
+
*
|
66 |
+
* @throws \Stripe\Error\InvalidRequest
|
67 |
+
*/
|
68 |
+
public static function retrieve($_id, $_opts = null)
|
69 |
+
{
|
70 |
+
$msg = "Customer Balance Transactions cannot be accessed without a customer ID. " .
|
71 |
+
"Retrieve a balance transaction using Customer::retrieveBalanceTransaction('cus_123', 'cbtxn_123') instead.";
|
72 |
+
throw new Error\InvalidRequest($msg, null);
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* @param string $_id
|
77 |
+
* @param array|null $_params
|
78 |
+
* @param array|string|null $_options
|
79 |
+
*
|
80 |
+
* @throws \Stripe\Error\InvalidRequest
|
81 |
+
*/
|
82 |
+
public static function update($_id, $_params = null, $_options = null)
|
83 |
+
{
|
84 |
+
$msg = "Customer Balance Transactions cannot be accessed without a customer ID. " .
|
85 |
+
"Update a balance transaction using Customer::updateBalanceTransaction('cus_123', 'cbtxn_123', \$params) instead.";
|
86 |
+
throw new Error\InvalidRequest($msg, null);
|
87 |
+
}
|
88 |
+
}
|
includes/lib/Stripe/lib/Discount.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Discount
|
7 |
+
*
|
8 |
+
* @property string $object
|
9 |
+
* @property Coupon $coupon
|
10 |
+
* @property string $customer
|
11 |
+
* @property int $end
|
12 |
+
* @property int $start
|
13 |
+
* @property string $subscription
|
14 |
+
*
|
15 |
+
* @package Stripe
|
16 |
+
*/
|
17 |
+
class Discount extends StripeObject
|
18 |
+
{
|
19 |
+
|
20 |
+
const OBJECT_NAME = "discount";
|
21 |
+
}
|
includes/lib/Stripe/lib/Dispute.php
CHANGED
@@ -8,7 +8,7 @@ namespace Stripe;
|
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
* @property int $amount
|
11 |
-
* @property
|
12 |
* @property string $charge
|
13 |
* @property int $created
|
14 |
* @property string $currency
|
@@ -16,7 +16,7 @@ namespace Stripe;
|
|
16 |
* @property mixed $evidence_details
|
17 |
* @property bool $is_charge_refundable
|
18 |
* @property bool $livemode
|
19 |
-
* @property
|
20 |
* @property string $reason
|
21 |
* @property string $status
|
22 |
*
|
@@ -24,50 +24,44 @@ namespace Stripe;
|
|
24 |
*/
|
25 |
class Dispute extends ApiResource
|
26 |
{
|
27 |
-
/**
|
28 |
-
* @param array|string $id The ID of the dispute to retrieve, or an options
|
29 |
-
* array containing an `id` key.
|
30 |
-
* @param array|string|null $options
|
31 |
-
*
|
32 |
-
* @return Dispute
|
33 |
-
*/
|
34 |
-
public static function retrieve($id, $options = null)
|
35 |
-
{
|
36 |
-
return self::_retrieve($id, $options);
|
37 |
-
}
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
*/
|
45 |
-
public static function all($params = null, $options = null)
|
46 |
-
{
|
47 |
-
return self::_all($params, $options);
|
48 |
-
}
|
49 |
|
50 |
/**
|
51 |
-
*
|
52 |
-
* @
|
53 |
-
* @param array|string|null $options
|
54 |
-
*
|
55 |
-
* @return Dispute The updated dispute.
|
56 |
*/
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
/**
|
63 |
-
*
|
64 |
-
*
|
65 |
-
* @return Dispute The saved charge.
|
66 |
*/
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
|
|
|
|
|
|
|
|
71 |
|
72 |
/**
|
73 |
* @param array|string|null $options
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
* @property int $amount
|
11 |
+
* @property BalanceTransaction[] $balance_transactions
|
12 |
* @property string $charge
|
13 |
* @property int $created
|
14 |
* @property string $currency
|
16 |
* @property mixed $evidence_details
|
17 |
* @property bool $is_charge_refundable
|
18 |
* @property bool $livemode
|
19 |
+
* @property StripeObject $metadata
|
20 |
* @property string $reason
|
21 |
* @property string $status
|
22 |
*
|
24 |
*/
|
25 |
class Dispute extends ApiResource
|
26 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
+
const OBJECT_NAME = "dispute";
|
29 |
+
|
30 |
+
use ApiOperations\All;
|
31 |
+
use ApiOperations\Retrieve;
|
32 |
+
use ApiOperations\Update;
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
/**
|
35 |
+
* Possible string representations of dispute reasons.
|
36 |
+
* @link https://stripe.com/docs/api#dispute_object
|
|
|
|
|
|
|
37 |
*/
|
38 |
+
const REASON_BANK_CANNOT_PROCESS = 'bank_cannot_process';
|
39 |
+
const REASON_CHECK_RETURNED = 'check_returned';
|
40 |
+
const REASON_CREDIT_NOT_PROCESSED = 'credit_not_processed';
|
41 |
+
const REASON_CUSTOMER_INITIATED = 'customer_initiated';
|
42 |
+
const REASON_DEBIT_NOT_AUTHORIZED = 'debit_not_authorized';
|
43 |
+
const REASON_DUPLICATE = 'duplicate';
|
44 |
+
const REASON_FRAUDULENT = 'fraudulent';
|
45 |
+
const REASON_GENERAL = 'general';
|
46 |
+
const REASON_INCORRECT_ACCOUNT_DETAILS = 'incorrect_account_details';
|
47 |
+
const REASON_INSUFFICIENT_FUNDS = 'insufficient_funds';
|
48 |
+
const REASON_PRODUCT_NOT_RECEIVED = 'product_not_received';
|
49 |
+
const REASON_PRODUCT_UNACCEPTABLE = 'product_unacceptable';
|
50 |
+
const REASON_SUBSCRIPTION_CANCELED = 'subscription_canceled';
|
51 |
+
const REASON_UNRECOGNIZED = 'unrecognized';
|
52 |
|
53 |
/**
|
54 |
+
* Possible string representations of dispute statuses.
|
55 |
+
* @link https://stripe.com/docs/api#dispute_object
|
|
|
56 |
*/
|
57 |
+
const STATUS_CHARGE_REFUNDED = 'charge_refunded';
|
58 |
+
const STATUS_LOST = 'lost';
|
59 |
+
const STATUS_NEEDS_RESPONSE = 'needs_response';
|
60 |
+
const STATUS_UNDER_REVIEW = 'under_review';
|
61 |
+
const STATUS_WARNING_CLOSED = 'warning_closed';
|
62 |
+
const STATUS_WARNING_NEEDS_RESPONSE = 'warning_needs_response';
|
63 |
+
const STATUS_WARNING_UNDER_REVIEW = 'warning_under_review';
|
64 |
+
const STATUS_WON = 'won';
|
65 |
|
66 |
/**
|
67 |
* @param array|string|null $options
|
includes/lib/Stripe/lib/EphemeralKey.php
CHANGED
@@ -17,16 +17,13 @@ namespace Stripe;
|
|
17 |
*/
|
18 |
class EphemeralKey extends ApiResource
|
19 |
{
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
*/
|
26 |
-
public static function className()
|
27 |
-
{
|
28 |
-
return 'ephemeral_key';
|
29 |
}
|
|
|
30 |
|
31 |
/**
|
32 |
* @param array|null $params
|
@@ -41,15 +38,4 @@ class EphemeralKey extends ApiResource
|
|
41 |
}
|
42 |
return self::_create($params, $opts);
|
43 |
}
|
44 |
-
|
45 |
-
/**
|
46 |
-
* @param array|null $params
|
47 |
-
* @param array|string|null $opts
|
48 |
-
*
|
49 |
-
* @return EphemeralKey The deleted key.
|
50 |
-
*/
|
51 |
-
public function delete($params = null, $opts = null)
|
52 |
-
{
|
53 |
-
return $this->_delete($params, $opts);
|
54 |
-
}
|
55 |
}
|
17 |
*/
|
18 |
class EphemeralKey extends ApiResource
|
19 |
{
|
20 |
+
|
21 |
+
const OBJECT_NAME = "ephemeral_key";
|
22 |
+
|
23 |
+
use ApiOperations\Create {
|
24 |
+
create as protected _create;
|
|
|
|
|
|
|
|
|
25 |
}
|
26 |
+
use ApiOperations\Delete;
|
27 |
|
28 |
/**
|
29 |
* @param array|null $params
|
38 |
}
|
39 |
return self::_create($params, $opts);
|
40 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
}
|
includes/lib/Stripe/lib/Error/Base.php
CHANGED
@@ -20,11 +20,20 @@ abstract class Base extends Exception
|
|
20 |
$this->httpHeaders = $httpHeaders;
|
21 |
$this->requestId = null;
|
22 |
|
|
|
|
|
|
|
|
|
23 |
if ($httpHeaders && isset($httpHeaders['Request-Id'])) {
|
24 |
$this->requestId = $httpHeaders['Request-Id'];
|
25 |
}
|
26 |
}
|
27 |
|
|
|
|
|
|
|
|
|
|
|
28 |
public function getHttpStatus()
|
29 |
{
|
30 |
return $this->httpStatus;
|
20 |
$this->httpHeaders = $httpHeaders;
|
21 |
$this->requestId = null;
|
22 |
|
23 |
+
// TODO: make this a proper constructor argument in the next major
|
24 |
+
// release.
|
25 |
+
$this->stripeCode = isset($jsonBody["error"]["code"]) ? $jsonBody["error"]["code"] : null;
|
26 |
+
|
27 |
if ($httpHeaders && isset($httpHeaders['Request-Id'])) {
|
28 |
$this->requestId = $httpHeaders['Request-Id'];
|
29 |
}
|
30 |
}
|
31 |
|
32 |
+
public function getStripeCode()
|
33 |
+
{
|
34 |
+
return $this->stripeCode;
|
35 |
+
}
|
36 |
+
|
37 |
public function getHttpStatus()
|
38 |
{
|
39 |
return $this->httpStatus;
|
includes/lib/Stripe/lib/Error/Card.php
CHANGED
@@ -15,12 +15,16 @@ class Card extends Base
|
|
15 |
) {
|
16 |
parent::__construct($message, $httpStatus, $httpBody, $jsonBody, $httpHeaders);
|
17 |
$this->stripeParam = $stripeParam;
|
|
|
|
|
|
|
18 |
$this->stripeCode = $stripeCode;
|
19 |
|
20 |
// This one is not like the others because it was added later and we're
|
21 |
// trying to do our best not to change the public interface of this class'
|
22 |
-
// constructor.
|
23 |
-
//
|
|
|
24 |
$this->declineCode = isset($jsonBody["error"]["decline_code"]) ? $jsonBody["error"]["decline_code"] : null;
|
25 |
}
|
26 |
|
@@ -29,11 +33,6 @@ class Card extends Base
|
|
29 |
return $this->declineCode;
|
30 |
}
|
31 |
|
32 |
-
public function getStripeCode()
|
33 |
-
{
|
34 |
-
return $this->stripeCode;
|
35 |
-
}
|
36 |
-
|
37 |
public function getStripeParam()
|
38 |
{
|
39 |
return $this->stripeParam;
|
15 |
) {
|
16 |
parent::__construct($message, $httpStatus, $httpBody, $jsonBody, $httpHeaders);
|
17 |
$this->stripeParam = $stripeParam;
|
18 |
+
|
19 |
+
// TODO: once Error\Base accepts the error code as an argument, pass it
|
20 |
+
// in the call to parent::__construct() and stop setting it here.
|
21 |
$this->stripeCode = $stripeCode;
|
22 |
|
23 |
// This one is not like the others because it was added later and we're
|
24 |
// trying to do our best not to change the public interface of this class'
|
25 |
+
// constructor.
|
26 |
+
// TODO: make this a proper constructor argument in the next major
|
27 |
+
// release.
|
28 |
$this->declineCode = isset($jsonBody["error"]["decline_code"]) ? $jsonBody["error"]["decline_code"] : null;
|
29 |
}
|
30 |
|
33 |
return $this->declineCode;
|
34 |
}
|
35 |
|
|
|
|
|
|
|
|
|
|
|
36 |
public function getStripeParam()
|
37 |
{
|
38 |
return $this->stripeParam;
|
includes/lib/Stripe/lib/Error/Idempotency.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Error;
|
4 |
+
|
5 |
+
class Idempotency extends Base
|
6 |
+
{
|
7 |
+
}
|
includes/lib/Stripe/lib/Error/OAuth/OAuthBase.php
CHANGED
@@ -13,11 +13,11 @@ class OAuthBase extends \Stripe\Error\Base
|
|
13 |
$httpHeaders = null
|
14 |
) {
|
15 |
parent::__construct($description, $httpStatus, $httpBody, $jsonBody, $httpHeaders);
|
16 |
-
$this->
|
17 |
}
|
18 |
|
19 |
public function getErrorCode()
|
20 |
{
|
21 |
-
return $this->
|
22 |
}
|
23 |
}
|
13 |
$httpHeaders = null
|
14 |
) {
|
15 |
parent::__construct($description, $httpStatus, $httpBody, $jsonBody, $httpHeaders);
|
16 |
+
$this->errorCode = $code;
|
17 |
}
|
18 |
|
19 |
public function getErrorCode()
|
20 |
{
|
21 |
+
return $this->errorCode;
|
22 |
}
|
23 |
}
|
includes/lib/Stripe/lib/Event.php
CHANGED
@@ -7,38 +7,162 @@ namespace Stripe;
|
|
7 |
*
|
8 |
* @property string $id
|
9 |
* @property string $object
|
|
|
10 |
* @property string $api_version
|
11 |
-
* @property int
|
12 |
-
* @property mixed
|
13 |
-
* @property bool
|
14 |
-
* @property int
|
15 |
-
* @property
|
16 |
* @property string $type
|
17 |
*
|
18 |
* @package Stripe
|
19 |
*/
|
20 |
class Event extends ApiResource
|
21 |
{
|
22 |
-
|
23 |
-
|
24 |
-
* array containing an `id` key.
|
25 |
-
* @param array|string|null $opts
|
26 |
-
*
|
27 |
-
* @return Event
|
28 |
-
*/
|
29 |
-
public static function retrieve($id, $opts = null)
|
30 |
-
{
|
31 |
-
return self::_retrieve($id, $opts);
|
32 |
-
}
|
33 |
|
34 |
/**
|
35 |
-
*
|
36 |
-
* @
|
37 |
-
*
|
38 |
-
* @return Collection of Events
|
39 |
*/
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
}
|
7 |
*
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
+
* @property string $account
|
11 |
* @property string $api_version
|
12 |
+
* @property int $created
|
13 |
+
* @property mixed $data
|
14 |
+
* @property bool $livemode
|
15 |
+
* @property int $pending_webhooks
|
16 |
+
* @property mixed $request
|
17 |
* @property string $type
|
18 |
*
|
19 |
* @package Stripe
|
20 |
*/
|
21 |
class Event extends ApiResource
|
22 |
{
|
23 |
+
|
24 |
+
const OBJECT_NAME = "event";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
/**
|
27 |
+
* Possible string representations of event types.
|
28 |
+
* @link https://stripe.com/docs/api#event_types
|
|
|
|
|
29 |
*/
|
30 |
+
const ACCOUNT_UPDATED = 'account.updated';
|
31 |
+
const ACCOUNT_APPLICATION_AUTHORIZED = 'account.application.authorized';
|
32 |
+
const ACCOUNT_APPLICATION_DEAUTHORIZED = 'account.application.deauthorized';
|
33 |
+
const ACCOUNT_EXTERNAL_ACCOUNT_CREATED = 'account.external_account.created';
|
34 |
+
const ACCOUNT_EXTERNAL_ACCOUNT_DELETED = 'account.external_account.deleted';
|
35 |
+
const ACCOUNT_EXTERNAL_ACCOUNT_UPDATED = 'account.external_account.updated';
|
36 |
+
const APPLICATION_FEE_CREATED = 'application_fee.created';
|
37 |
+
const APPLICATION_FEE_REFUNDED = 'application_fee.refunded';
|
38 |
+
const APPLICATION_FEE_REFUND_UPDATED = 'application_fee.refund.updated';
|
39 |
+
const BALANCE_AVAILABLE = 'balance.available';
|
40 |
+
const CHARGE_CAPTURED = 'charge.captured';
|
41 |
+
const CHARGE_EXPIRED = 'charge.expired';
|
42 |
+
const CHARGE_FAILED = 'charge.failed';
|
43 |
+
const CHARGE_PENDING = 'charge.pending';
|
44 |
+
const CHARGE_REFUNDED = 'charge.refunded';
|
45 |
+
const CHARGE_SUCCEEDED = 'charge.succeeded';
|
46 |
+
const CHARGE_UPDATED = 'charge.updated';
|
47 |
+
const CHARGE_DISPUTE_CLOSED = 'charge.dispute.closed';
|
48 |
+
const CHARGE_DISPUTE_CREATED = 'charge.dispute.created';
|
49 |
+
const CHARGE_DISPUTE_FUNDS_REINSTATED = 'charge.dispute.funds_reinstated';
|
50 |
+
const CHARGE_DISPUTE_FUNDS_WITHDRAWN = 'charge.dispute.funds_withdrawn';
|
51 |
+
const CHARGE_DISPUTE_UPDATED = 'charge.dispute.updated';
|
52 |
+
const CHARGE_REFUND_UPDATED = 'charge.refund.updated';
|
53 |
+
const CHECKOUT_SESSION_COMPLETED = 'checkout.session.completed';
|
54 |
+
const COUPON_CREATED = 'coupon.created';
|
55 |
+
const COUPON_DELETED = 'coupon.deleted';
|
56 |
+
const COUPON_UPDATED = 'coupon.updated';
|
57 |
+
const CREDIT_NOTE_CREATED = 'credit_note.created';
|
58 |
+
const CREDIT_NOTE_UPDATED = 'credit_note.updated';
|
59 |
+
const CREDIT_NOTE_VOIDED = 'credit_note.voided';
|
60 |
+
const CUSTOMER_CREATED = 'customer.created';
|
61 |
+
const CUSTOMER_DELETED = 'customer.deleted';
|
62 |
+
const CUSTOMER_UPDATED = 'customer.updated';
|
63 |
+
const CUSTOMER_DISCOUNT_CREATED = 'customer.discount.created';
|
64 |
+
const CUSTOMER_DISCOUNT_DELETED = 'customer.discount.deleted';
|
65 |
+
const CUSTOMER_DISCOUNT_UPDATED = 'customer.discount.updated';
|
66 |
+
const CUSTOMER_SOURCE_CREATED = 'customer.source.created';
|
67 |
+
const CUSTOMER_SOURCE_DELETED = 'customer.source.deleted';
|
68 |
+
const CUSTOMER_SOURCE_EXPIRING = 'customer.source.expiring';
|
69 |
+
const CUSTOMER_SOURCE_UPDATED = 'customer.source.updated';
|
70 |
+
const CUSTOMER_SUBSCRIPTION_CREATED = 'customer.subscription.created';
|
71 |
+
const CUSTOMER_SUBSCRIPTION_DELETED = 'customer.subscription.deleted';
|
72 |
+
const CUSTOMER_SUBSCRIPTION_TRIAL_WILL_END = 'customer.subscription.trial_will_end';
|
73 |
+
const CUSTOMER_SUBSCRIPTION_UPDATED = 'customer.subscription.updated';
|
74 |
+
const FILE_CREATED = 'file.created';
|
75 |
+
const INVOICE_CREATED = 'invoice.created';
|
76 |
+
const INVOICE_DELETED = 'invoice.deleted';
|
77 |
+
const INVOICE_FINALIZED = 'invoice.finalized';
|
78 |
+
const INVOICE_MARKED_UNCOLLECTIBLE = 'invoice.marked_uncollectible';
|
79 |
+
const INVOICE_PAYMENT_ACTION_REQUIRED = 'invoice.payment_action_required';
|
80 |
+
const INVOICE_PAYMENT_FAILED = 'invoice.payment_failed';
|
81 |
+
const INVOICE_PAYMENT_SUCCEEDED = 'invoice.payment_succeeded';
|
82 |
+
const INVOICE_SENT = 'invoice.sent';
|
83 |
+
const INVOICE_UPCOMING = 'invoice.upcoming';
|
84 |
+
const INVOICE_UPDATED = 'invoice.updated';
|
85 |
+
const INVOICE_VOIDED = 'invoice.voided';
|
86 |
+
const INVOICEITEM_CREATED = 'invoiceitem.created';
|
87 |
+
const INVOICEITEM_DELETED = 'invoiceitem.deleted';
|
88 |
+
const INVOICEITEM_UPDATED = 'invoiceitem.updated';
|
89 |
+
const ISSUER_FRAUD_RECORD_CREATED = 'issuer_fraud_record.created';
|
90 |
+
const ISSUING_AUTHORIZATION_CREATED = 'issuing_authorization.created';
|
91 |
+
const ISSUING_AUTHORIZATION_REQUEST = 'issuing_authorization.request';
|
92 |
+
const ISSUING_AUTHORIZATION_UPDATED = 'issuing_authorization.updated';
|
93 |
+
const ISSUING_CARD_CREATED = 'issuing_card.created';
|
94 |
+
const ISSUING_CARD_UPDATED = 'issuing_card.updated';
|
95 |
+
const ISSUING_CARDHOLDER_CREATED = 'issuing_cardholder.created';
|
96 |
+
const ISSUING_CARDHOLDER_UPDATED = 'issuing_cardholder.updated';
|
97 |
+
const ISSUING_DISPUTE_CREATED = 'issuing_dispute.created';
|
98 |
+
const ISSUING_DISPUTE_UPDATED = 'issuing_dispute.updated';
|
99 |
+
const ISSUING_TRANSACTION_CREATED = 'issuing_transaction.created';
|
100 |
+
const ISSUING_TRANSACTION_UPDATED = 'issuing_transaction.updated';
|
101 |
+
const ORDER_CREATED = 'order.created';
|
102 |
+
const ORDER_PAYMENT_FAILED = 'order.payment_failed';
|
103 |
+
const ORDER_PAYMENT_SUCCEEDED = 'order.payment_succeeded';
|
104 |
+
const ORDER_UPDATED = 'order.updated';
|
105 |
+
const ORDER_RETURN_CREATED = 'order_return.created';
|
106 |
+
const PAYMENT_INTENT_AMOUNT_CAPTURABLE_UPDATED = 'payment_intent.amount_capturable_updated';
|
107 |
+
const PAYMENT_INTENT_CREATED = 'payment_intent.created';
|
108 |
+
const PAYMENT_INTENT_PAYMENT_FAILED = 'payment_intent.payment_failed';
|
109 |
+
const PAYMENT_INTENT_SUCCEEDED = 'payment_intent.succeeded';
|
110 |
+
const PAYMENT_METHOD_ATTACHED = 'payment_method.attached';
|
111 |
+
const PAYMENT_METHOD_CARD_AUTOMATICALLY_UPDATED = 'payment_method.card_automatically_updated';
|
112 |
+
const PAYMENT_METHOD_DETACHED = 'payment_method.detached';
|
113 |
+
const PAYMENT_METHOD_UPDATED = 'payment_method.updated';
|
114 |
+
const PAYOUT_CANCELED = 'payout.canceled';
|
115 |
+
const PAYOUT_CREATED = 'payout.created';
|
116 |
+
const PAYOUT_FAILED = 'payout.failed';
|
117 |
+
const PAYOUT_PAID = 'payout.paid';
|
118 |
+
const PAYOUT_UPDATED = 'payout.updated';
|
119 |
+
const PERSON_CREATED = 'person.created';
|
120 |
+
const PERSON_DELETED = 'person.deleted';
|
121 |
+
const PERSON_UPDATED = 'person.updated';
|
122 |
+
const PING = 'ping';
|
123 |
+
const PLAN_CREATED = 'plan.created';
|
124 |
+
const PLAN_DELETED = 'plan.deleted';
|
125 |
+
const PLAN_UPDATED = 'plan.updated';
|
126 |
+
const PRODUCT_CREATED = 'product.created';
|
127 |
+
const PRODUCT_DELETED = 'product.deleted';
|
128 |
+
const PRODUCT_UPDATED = 'product.updated';
|
129 |
+
const RECIPIENT_CREATED = 'recipient.created';
|
130 |
+
const RECIPIENT_DELETED = 'recipient.deleted';
|
131 |
+
const RECIPIENT_UPDATED = 'recipient.updated';
|
132 |
+
const REPORTING_REPORT_RUN_FAILED = 'reporting.report_run.failed';
|
133 |
+
const REPORTING_REPORT_RUN_SUCCEEDED = 'reporting.report_run.succeeded';
|
134 |
+
const REPORTING_REPORT_TYPE_UPDATED = 'reporting.report_type.updated';
|
135 |
+
const REVIEW_CLOSED = 'review.closed';
|
136 |
+
const REVIEW_OPENED = 'review.opened';
|
137 |
+
const SIGMA_SCHEDULED_QUERY_RUN_CREATED = 'sigma.scheduled_query_run.created';
|
138 |
+
const SKU_CREATED = 'sku.created';
|
139 |
+
const SKU_DELETED = 'sku.deleted';
|
140 |
+
const SKU_UPDATED = 'sku.updated';
|
141 |
+
const SOURCE_CANCELED = 'source.canceled';
|
142 |
+
const SOURCE_CHARGEABLE = 'source.chargeable';
|
143 |
+
const SOURCE_FAILED = 'source.failed';
|
144 |
+
const SOURCE_MANDATE_NOTIFICATION = 'source.mandate_notification';
|
145 |
+
const SOURCE_REFUND_ATTRIBUTES_REQUIRED = 'source.refund_attributes_required';
|
146 |
+
const SOURCE_TRANSACTION_CREATED = 'source.transaction.created';
|
147 |
+
const SOURCE_TRANSACTION_UPDATED = 'source.transaction.updated';
|
148 |
+
const SUBSCRIPTION_SCHEDULE_ABORTED = 'subscription_schedule.aborted';
|
149 |
+
const SUBSCRIPTION_SCHEDULE_CANCELED = 'subscription_schedule.canceled';
|
150 |
+
const SUBSCRIPTION_SCHEDULE_COMPLETED = 'subscription_schedule.completed';
|
151 |
+
const SUBSCRIPTION_SCHEDULE_CREATED = 'subscription_schedule.created';
|
152 |
+
const SUBSCRIPTION_SCHEDULE_EXPIRING = 'subscription_schedule.expiring';
|
153 |
+
const SUBSCRIPTION_SCHEDULE_RELEASED = 'subscription_schedule.released';
|
154 |
+
const SUBSCRIPTION_SCHEDULE_UPDATED = 'subscription_schedule.updated';
|
155 |
+
const TAX_RATE_CREATED = 'tax_rate.created';
|
156 |
+
const TAX_RATE_UPDATED = 'tax_rate.updated';
|
157 |
+
const TOPUP_CANCELED = 'topup.canceled';
|
158 |
+
const TOPUP_CREATED = 'topup.created';
|
159 |
+
const TOPUP_FAILED = 'topup.failed';
|
160 |
+
const TOPUP_REVERSED = 'topup.reversed';
|
161 |
+
const TOPUP_SUCCEEDED = 'topup.succeeded';
|
162 |
+
const TRANSFER_CREATED = 'transfer.created';
|
163 |
+
const TRANSFER_REVERSED = 'transfer.reversed';
|
164 |
+
const TRANSFER_UPDATED = 'transfer.updated';
|
165 |
+
|
166 |
+
use ApiOperations\All;
|
167 |
+
use ApiOperations\Retrieve;
|
168 |
}
|
includes/lib/Stripe/lib/ExchangeRate.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class ExchangeRate
|
7 |
+
*
|
8 |
+
* @package Stripe
|
9 |
+
*/
|
10 |
+
class ExchangeRate extends ApiResource
|
11 |
+
{
|
12 |
+
|
13 |
+
const OBJECT_NAME = "exchange_rate";
|
14 |
+
|
15 |
+
use ApiOperations\All;
|
16 |
+
use ApiOperations\Retrieve;
|
17 |
+
}
|
includes/lib/Stripe/lib/File.php
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class File
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $created
|
11 |
+
* @property string $filename
|
12 |
+
* @property Collection $links
|
13 |
+
* @property string $purpose
|
14 |
+
* @property int $size
|
15 |
+
* @property string $title
|
16 |
+
* @property string $type
|
17 |
+
* @property string $url
|
18 |
+
*
|
19 |
+
* @package Stripe
|
20 |
+
*/
|
21 |
+
class File extends ApiResource
|
22 |
+
{
|
23 |
+
// This resource can have two different object names. In latter API
|
24 |
+
// versions, only `file` is used, but since stripe-php may be used with
|
25 |
+
// any API version, we need to support deserializing the older
|
26 |
+
// `file_upload` object into the same class.
|
27 |
+
const OBJECT_NAME = "file";
|
28 |
+
const OBJECT_NAME_ALT = "file_upload";
|
29 |
+
|
30 |
+
use ApiOperations\All;
|
31 |
+
use ApiOperations\Create {
|
32 |
+
create as protected _create;
|
33 |
+
}
|
34 |
+
use ApiOperations\Retrieve;
|
35 |
+
|
36 |
+
public static function classUrl()
|
37 |
+
{
|
38 |
+
return '/v1/files';
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @param array|null $params
|
43 |
+
* @param array|string|null $options
|
44 |
+
*
|
45 |
+
* @return \Stripe\File The created resource.
|
46 |
+
*/
|
47 |
+
public static function create($params = null, $options = null)
|
48 |
+
{
|
49 |
+
$opts = \Stripe\Util\RequestOptions::parse($options);
|
50 |
+
if (is_null($opts->apiBase)) {
|
51 |
+
$opts->apiBase = Stripe::$apiUploadBase;
|
52 |
+
}
|
53 |
+
// Manually flatten params, otherwise curl's multipart encoder will
|
54 |
+
// choke on nested arrays.
|
55 |
+
// TODO: use array_column() once we drop support for PHP 5.4
|
56 |
+
$flatParams = [];
|
57 |
+
foreach (\Stripe\Util\Util::flattenParams($params) as $pair) {
|
58 |
+
$flatParams[$pair[0]] = $pair[1];
|
59 |
+
}
|
60 |
+
return static::_create($flatParams, $opts);
|
61 |
+
}
|
62 |
+
}
|
includes/lib/Stripe/lib/FileLink.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class FileLink
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $created
|
11 |
+
* @property bool $expired
|
12 |
+
* @property int $expires_at
|
13 |
+
* @property string $file
|
14 |
+
* @property bool $livemode
|
15 |
+
* @property StripeObject $metadata
|
16 |
+
* @property string $url
|
17 |
+
*
|
18 |
+
* @package Stripe
|
19 |
+
*/
|
20 |
+
class FileLink extends ApiResource
|
21 |
+
{
|
22 |
+
|
23 |
+
const OBJECT_NAME = "file_link";
|
24 |
+
|
25 |
+
use ApiOperations\All;
|
26 |
+
use ApiOperations\Create;
|
27 |
+
use ApiOperations\Retrieve;
|
28 |
+
use ApiOperations\Update;
|
29 |
+
}
|
includes/lib/Stripe/lib/FileUpload.php
CHANGED
@@ -2,61 +2,5 @@
|
|
2 |
|
3 |
namespace Stripe;
|
4 |
|
5 |
-
|
6 |
-
|
7 |
-
*
|
8 |
-
* @property string $id
|
9 |
-
* @property string $object
|
10 |
-
* @property int $created
|
11 |
-
* @property string $purpose
|
12 |
-
* @property int $size
|
13 |
-
* @property string $type
|
14 |
-
*
|
15 |
-
* @package Stripe
|
16 |
-
*/
|
17 |
-
class FileUpload extends ApiResource
|
18 |
-
{
|
19 |
-
public static function baseUrl()
|
20 |
-
{
|
21 |
-
return Stripe::$apiUploadBase;
|
22 |
-
}
|
23 |
-
|
24 |
-
public static function className()
|
25 |
-
{
|
26 |
-
return 'file';
|
27 |
-
}
|
28 |
-
|
29 |
-
/**
|
30 |
-
* @param array|string $id The ID of the file upload to retrieve, or an
|
31 |
-
* options array containing an `id key.
|
32 |
-
* @param array|string|null $opts
|
33 |
-
*
|
34 |
-
* @return FileUpload
|
35 |
-
*/
|
36 |
-
public static function retrieve($id, $opts = null)
|
37 |
-
{
|
38 |
-
return self::_retrieve($id, $opts);
|
39 |
-
}
|
40 |
-
|
41 |
-
/**
|
42 |
-
* @param array|null $params
|
43 |
-
* @param array|string|null $opts
|
44 |
-
*
|
45 |
-
* @return FileUpload The created file upload.
|
46 |
-
*/
|
47 |
-
public static function create($params = null, $opts = null)
|
48 |
-
{
|
49 |
-
return self::_create($params, $opts);
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* @param array|null $params
|
54 |
-
* @param array|string|null $opts
|
55 |
-
*
|
56 |
-
* @return Collection of FileUploads
|
57 |
-
*/
|
58 |
-
public static function all($params = null, $opts = null)
|
59 |
-
{
|
60 |
-
return self::_all($params, $opts);
|
61 |
-
}
|
62 |
-
}
|
2 |
|
3 |
namespace Stripe;
|
4 |
|
5 |
+
// For backwards compatibility, the `File` class is aliased to `FileUpload`.
|
6 |
+
class_alias('Stripe\\File', 'Stripe\\FileUpload');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/Stripe/lib/HttpClient/ClientInterface.php
CHANGED
@@ -11,8 +11,11 @@ interface ClientInterface
|
|
11 |
* @param array $params KV pairs for parameters. Can be nested for arrays and hashes
|
12 |
* @param boolean $hasFile Whether or not $params references a file (via an @ prefix or
|
13 |
* CurlFile)
|
14 |
-
*
|
15 |
-
* @
|
|
|
|
|
|
|
16 |
*/
|
17 |
public function request($method, $absUrl, $headers, $params, $hasFile);
|
18 |
}
|
11 |
* @param array $params KV pairs for parameters. Can be nested for arrays and hashes
|
12 |
* @param boolean $hasFile Whether or not $params references a file (via an @ prefix or
|
13 |
* CurlFile)
|
14 |
+
*
|
15 |
+
* @throws \Stripe\Error\Api
|
16 |
+
* @throws \Stripe\Error\ApiConnection
|
17 |
+
* @return array An array whose first element is raw request body, second
|
18 |
+
* element is HTTP status code and third array of HTTP headers.
|
19 |
*/
|
20 |
public function request($method, $absUrl, $headers, $params, $hasFile);
|
21 |
}
|
includes/lib/Stripe/lib/HttpClient/CurlClient.php
CHANGED
@@ -22,6 +22,10 @@ if (!defined('CURL_SSLVERSION_TLSv1_2')) {
|
|
22 |
}
|
23 |
// @codingStandardsIgnoreEnd
|
24 |
|
|
|
|
|
|
|
|
|
25 |
class CurlClient implements ClientInterface
|
26 |
{
|
27 |
private static $instance;
|
@@ -38,6 +42,12 @@ class CurlClient implements ClientInterface
|
|
38 |
|
39 |
protected $userAgentInfo;
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
/**
|
42 |
* CurlClient constructor.
|
43 |
*
|
@@ -51,19 +61,31 @@ class CurlClient implements ClientInterface
|
|
51 |
*
|
52 |
* @param array|callable|null $defaultOptions
|
53 |
*/
|
54 |
-
public function __construct($defaultOptions = null)
|
55 |
{
|
56 |
$this->defaultOptions = $defaultOptions;
|
|
|
57 |
$this->initUserAgentInfo();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
}
|
59 |
|
60 |
public function initUserAgentInfo()
|
61 |
{
|
62 |
$curlVersion = curl_version();
|
63 |
-
$this->userAgentInfo =
|
64 |
'httplib' => 'curl ' . $curlVersion['version'],
|
65 |
'ssllib' => $curlVersion['ssl_version'],
|
66 |
-
|
67 |
}
|
68 |
|
69 |
public function getDefaultOptions()
|
@@ -76,6 +98,38 @@ class CurlClient implements ClientInterface
|
|
76 |
return $this->userAgentInfo;
|
77 |
}
|
78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
// USER DEFINED TIMEOUTS
|
80 |
|
81 |
const DEFAULT_TIMEOUT = 80;
|
@@ -110,10 +164,9 @@ class CurlClient implements ClientInterface
|
|
110 |
|
111 |
public function request($method, $absUrl, $headers, $params, $hasFile)
|
112 |
{
|
113 |
-
$curl = curl_init();
|
114 |
$method = strtolower($method);
|
115 |
|
116 |
-
$opts =
|
117 |
if (is_callable($this->defaultOptions)) { // call defaultOptions callback, set options to return value
|
118 |
$opts = call_user_func_array($this->defaultOptions, func_get_args());
|
119 |
if (!is_array($opts)) {
|
@@ -123,6 +176,8 @@ class CurlClient implements ClientInterface
|
|
123 |
$opts = $this->defaultOptions;
|
124 |
}
|
125 |
|
|
|
|
|
126 |
if ($method == 'get') {
|
127 |
if ($hasFile) {
|
128 |
throw new Error\Api(
|
@@ -131,24 +186,32 @@ class CurlClient implements ClientInterface
|
|
131 |
}
|
132 |
$opts[CURLOPT_HTTPGET] = 1;
|
133 |
if (count($params) > 0) {
|
134 |
-
$encoded = Util\Util::
|
135 |
$absUrl = "$absUrl?$encoded";
|
136 |
}
|
137 |
} elseif ($method == 'post') {
|
138 |
$opts[CURLOPT_POST] = 1;
|
139 |
-
$opts[CURLOPT_POSTFIELDS] = $hasFile ? $params : Util\Util::
|
140 |
} elseif ($method == 'delete') {
|
141 |
$opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
|
142 |
if (count($params) > 0) {
|
143 |
-
$encoded = Util\Util::
|
144 |
$absUrl = "$absUrl?$encoded";
|
145 |
}
|
146 |
} else {
|
147 |
throw new Error\Api("Unrecognized method $method");
|
148 |
}
|
149 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
// Create a callback to capture HTTP headers for the response
|
151 |
-
$rheaders =
|
152 |
$headerCallback = function ($curl, $header_line) use (&$rheaders) {
|
153 |
// Ignore the HTTP request line (HTTP/1.1 200 OK)
|
154 |
if (strpos($header_line, ":") === false) {
|
@@ -180,50 +243,70 @@ class CurlClient implements ClientInterface
|
|
180 |
$opts[CURLOPT_TIMEOUT] = $this->timeout;
|
181 |
$opts[CURLOPT_HEADERFUNCTION] = $headerCallback;
|
182 |
$opts[CURLOPT_HTTPHEADER] = $headers;
|
183 |
-
|
|
|
184 |
$opts[CURLOPT_SSL_VERIFYPEER] = false;
|
185 |
}
|
186 |
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
if (!defined('CURLE_SSL_CACERT_BADFILE')) {
|
191 |
-
define('CURLE_SSL_CACERT_BADFILE', 77); // constant not defined in PHP
|
192 |
}
|
193 |
|
194 |
-
$
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
}
|
208 |
|
209 |
if ($rbody === false) {
|
210 |
-
$errno
|
211 |
-
$message = curl_error($curl);
|
212 |
-
curl_close($curl);
|
213 |
-
$this->handleCurlError($absUrl, $errno, $message);
|
214 |
}
|
215 |
|
216 |
-
|
217 |
-
curl_close($curl);
|
218 |
-
return array($rbody, $rcode, $rheaders);
|
219 |
}
|
220 |
|
221 |
/**
|
222 |
-
* @param
|
|
|
223 |
* @param string $message
|
|
|
224 |
* @throws Error\ApiConnection
|
225 |
*/
|
226 |
-
private function handleCurlError($url, $errno, $message)
|
227 |
{
|
228 |
switch ($errno) {
|
229 |
case CURLE_COULDNT_CONNECT:
|
@@ -248,11 +331,130 @@ class CurlClient implements ClientInterface
|
|
248 |
$msg .= " let us know at support@stripe.com.";
|
249 |
|
250 |
$msg .= "\n\n(Network error [errno $errno]: $message)";
|
|
|
|
|
|
|
|
|
|
|
251 |
throw new Error\ApiConnection($msg);
|
252 |
}
|
253 |
|
254 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
255 |
{
|
256 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
}
|
258 |
}
|
22 |
}
|
23 |
// @codingStandardsIgnoreEnd
|
24 |
|
25 |
+
if (!defined('CURL_HTTP_VERSION_2TLS')) {
|
26 |
+
define('CURL_HTTP_VERSION_2TLS', 4);
|
27 |
+
}
|
28 |
+
|
29 |
class CurlClient implements ClientInterface
|
30 |
{
|
31 |
private static $instance;
|
42 |
|
43 |
protected $userAgentInfo;
|
44 |
|
45 |
+
protected $enablePersistentConnections = null;
|
46 |
+
|
47 |
+
protected $enableHttp2 = null;
|
48 |
+
|
49 |
+
protected $curlHandle = null;
|
50 |
+
|
51 |
/**
|
52 |
* CurlClient constructor.
|
53 |
*
|
61 |
*
|
62 |
* @param array|callable|null $defaultOptions
|
63 |
*/
|
64 |
+
public function __construct($defaultOptions = null, $randomGenerator = null)
|
65 |
{
|
66 |
$this->defaultOptions = $defaultOptions;
|
67 |
+
$this->randomGenerator = $randomGenerator ?: new Util\RandomGenerator();
|
68 |
$this->initUserAgentInfo();
|
69 |
+
|
70 |
+
// TODO: curl_reset requires PHP >= 5.5.0. Once we drop support for PHP 5.4, we can simply
|
71 |
+
// initialize this to true.
|
72 |
+
$this->enablePersistentConnections = function_exists('curl_reset');
|
73 |
+
|
74 |
+
$this->enableHttp2 = $this->canSafelyUseHttp2();
|
75 |
+
}
|
76 |
+
|
77 |
+
public function __destruct()
|
78 |
+
{
|
79 |
+
$this->closeCurlHandle();
|
80 |
}
|
81 |
|
82 |
public function initUserAgentInfo()
|
83 |
{
|
84 |
$curlVersion = curl_version();
|
85 |
+
$this->userAgentInfo = [
|
86 |
'httplib' => 'curl ' . $curlVersion['version'],
|
87 |
'ssllib' => $curlVersion['ssl_version'],
|
88 |
+
];
|
89 |
}
|
90 |
|
91 |
public function getDefaultOptions()
|
98 |
return $this->userAgentInfo;
|
99 |
}
|
100 |
|
101 |
+
/**
|
102 |
+
* @return boolean
|
103 |
+
*/
|
104 |
+
public function getEnablePersistentConnections()
|
105 |
+
{
|
106 |
+
return $this->enablePersistentConnections;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* @param boolean $enable
|
111 |
+
*/
|
112 |
+
public function setEnablePersistentConnections($enable)
|
113 |
+
{
|
114 |
+
$this->enablePersistentConnections = $enable;
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* @return boolean
|
119 |
+
*/
|
120 |
+
public function getEnableHttp2()
|
121 |
+
{
|
122 |
+
return $this->enableHttp2;
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* @param boolean $enable
|
127 |
+
*/
|
128 |
+
public function setEnableHttp2($enable)
|
129 |
+
{
|
130 |
+
$this->enableHttp2 = $enable;
|
131 |
+
}
|
132 |
+
|
133 |
// USER DEFINED TIMEOUTS
|
134 |
|
135 |
const DEFAULT_TIMEOUT = 80;
|
164 |
|
165 |
public function request($method, $absUrl, $headers, $params, $hasFile)
|
166 |
{
|
|
|
167 |
$method = strtolower($method);
|
168 |
|
169 |
+
$opts = [];
|
170 |
if (is_callable($this->defaultOptions)) { // call defaultOptions callback, set options to return value
|
171 |
$opts = call_user_func_array($this->defaultOptions, func_get_args());
|
172 |
if (!is_array($opts)) {
|
176 |
$opts = $this->defaultOptions;
|
177 |
}
|
178 |
|
179 |
+
$params = Util\Util::objectsToIds($params);
|
180 |
+
|
181 |
if ($method == 'get') {
|
182 |
if ($hasFile) {
|
183 |
throw new Error\Api(
|
186 |
}
|
187 |
$opts[CURLOPT_HTTPGET] = 1;
|
188 |
if (count($params) > 0) {
|
189 |
+
$encoded = Util\Util::encodeParameters($params);
|
190 |
$absUrl = "$absUrl?$encoded";
|
191 |
}
|
192 |
} elseif ($method == 'post') {
|
193 |
$opts[CURLOPT_POST] = 1;
|
194 |
+
$opts[CURLOPT_POSTFIELDS] = $hasFile ? $params : Util\Util::encodeParameters($params);
|
195 |
} elseif ($method == 'delete') {
|
196 |
$opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
|
197 |
if (count($params) > 0) {
|
198 |
+
$encoded = Util\Util::encodeParameters($params);
|
199 |
$absUrl = "$absUrl?$encoded";
|
200 |
}
|
201 |
} else {
|
202 |
throw new Error\Api("Unrecognized method $method");
|
203 |
}
|
204 |
|
205 |
+
// It is only safe to retry network failures on POST requests if we
|
206 |
+
// add an Idempotency-Key header
|
207 |
+
if (($method == 'post') && (Stripe::$maxNetworkRetries > 0)) {
|
208 |
+
if (!$this->hasHeader($headers, "Idempotency-Key")) {
|
209 |
+
array_push($headers, 'Idempotency-Key: ' . $this->randomGenerator->uuid());
|
210 |
+
}
|
211 |
+
}
|
212 |
+
|
213 |
// Create a callback to capture HTTP headers for the response
|
214 |
+
$rheaders = new Util\CaseInsensitiveArray();
|
215 |
$headerCallback = function ($curl, $header_line) use (&$rheaders) {
|
216 |
// Ignore the HTTP request line (HTTP/1.1 200 OK)
|
217 |
if (strpos($header_line, ":") === false) {
|
243 |
$opts[CURLOPT_TIMEOUT] = $this->timeout;
|
244 |
$opts[CURLOPT_HEADERFUNCTION] = $headerCallback;
|
245 |
$opts[CURLOPT_HTTPHEADER] = $headers;
|
246 |
+
$opts[CURLOPT_CAINFO] = Stripe::getCABundlePath();
|
247 |
+
if (!Stripe::getVerifySslCerts()) {
|
248 |
$opts[CURLOPT_SSL_VERIFYPEER] = false;
|
249 |
}
|
250 |
|
251 |
+
if (!isset($opts[CURLOPT_HTTP_VERSION]) && $this->getEnableHttp2()) {
|
252 |
+
// For HTTPS requests, enable HTTP/2, if supported
|
253 |
+
$opts[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2TLS;
|
|
|
|
|
254 |
}
|
255 |
|
256 |
+
list($rbody, $rcode) = $this->executeRequestWithRetries($opts, $absUrl);
|
257 |
+
|
258 |
+
return [$rbody, $rcode, $rheaders];
|
259 |
+
}
|
260 |
+
|
261 |
+
/**
|
262 |
+
* @param array $opts cURL options
|
263 |
+
*/
|
264 |
+
private function executeRequestWithRetries($opts, $absUrl)
|
265 |
+
{
|
266 |
+
$numRetries = 0;
|
267 |
+
|
268 |
+
while (true) {
|
269 |
+
$rcode = 0;
|
270 |
+
$errno = 0;
|
271 |
+
|
272 |
+
$this->resetCurlHandle();
|
273 |
+
curl_setopt_array($this->curlHandle, $opts);
|
274 |
+
$rbody = curl_exec($this->curlHandle);
|
275 |
+
|
276 |
+
if ($rbody === false) {
|
277 |
+
$errno = curl_errno($this->curlHandle);
|
278 |
+
$message = curl_error($this->curlHandle);
|
279 |
+
} else {
|
280 |
+
$rcode = curl_getinfo($this->curlHandle, CURLINFO_HTTP_CODE);
|
281 |
+
}
|
282 |
+
if (!$this->getEnablePersistentConnections()) {
|
283 |
+
$this->closeCurlHandle();
|
284 |
+
}
|
285 |
+
|
286 |
+
if ($this->shouldRetry($errno, $rcode, $numRetries)) {
|
287 |
+
$numRetries += 1;
|
288 |
+
$sleepSeconds = $this->sleepTime($numRetries);
|
289 |
+
usleep(intval($sleepSeconds * 1000000));
|
290 |
+
} else {
|
291 |
+
break;
|
292 |
+
}
|
293 |
}
|
294 |
|
295 |
if ($rbody === false) {
|
296 |
+
$this->handleCurlError($absUrl, $errno, $message, $numRetries);
|
|
|
|
|
|
|
297 |
}
|
298 |
|
299 |
+
return [$rbody, $rcode];
|
|
|
|
|
300 |
}
|
301 |
|
302 |
/**
|
303 |
+
* @param string $url
|
304 |
+
* @param int $errno
|
305 |
* @param string $message
|
306 |
+
* @param int $numRetries
|
307 |
* @throws Error\ApiConnection
|
308 |
*/
|
309 |
+
private function handleCurlError($url, $errno, $message, $numRetries)
|
310 |
{
|
311 |
switch ($errno) {
|
312 |
case CURLE_COULDNT_CONNECT:
|
331 |
$msg .= " let us know at support@stripe.com.";
|
332 |
|
333 |
$msg .= "\n\n(Network error [errno $errno]: $message)";
|
334 |
+
|
335 |
+
if ($numRetries > 0) {
|
336 |
+
$msg .= "\n\nRequest was retried $numRetries times.";
|
337 |
+
}
|
338 |
+
|
339 |
throw new Error\ApiConnection($msg);
|
340 |
}
|
341 |
|
342 |
+
/**
|
343 |
+
* Checks if an error is a problem that we should retry on. This includes both
|
344 |
+
* socket errors that may represent an intermittent problem and some special
|
345 |
+
* HTTP statuses.
|
346 |
+
* @param int $errno
|
347 |
+
* @param int $rcode
|
348 |
+
* @param int $numRetries
|
349 |
+
* @return bool
|
350 |
+
*/
|
351 |
+
private function shouldRetry($errno, $rcode, $numRetries)
|
352 |
+
{
|
353 |
+
if ($numRetries >= Stripe::getMaxNetworkRetries()) {
|
354 |
+
return false;
|
355 |
+
}
|
356 |
+
|
357 |
+
// Retry on timeout-related problems (either on open or read).
|
358 |
+
if ($errno === CURLE_OPERATION_TIMEOUTED) {
|
359 |
+
return true;
|
360 |
+
}
|
361 |
+
|
362 |
+
// Destination refused the connection, the connection was reset, or a
|
363 |
+
// variety of other connection failures. This could occur from a single
|
364 |
+
// saturated server, so retry in case it's intermittent.
|
365 |
+
if ($errno === CURLE_COULDNT_CONNECT) {
|
366 |
+
return true;
|
367 |
+
}
|
368 |
+
|
369 |
+
// 409 conflict
|
370 |
+
if ($rcode === 409) {
|
371 |
+
return true;
|
372 |
+
}
|
373 |
+
|
374 |
+
return false;
|
375 |
+
}
|
376 |
+
|
377 |
+
private function sleepTime($numRetries)
|
378 |
{
|
379 |
+
// Apply exponential backoff with $initialNetworkRetryDelay on the
|
380 |
+
// number of $numRetries so far as inputs. Do not allow the number to exceed
|
381 |
+
// $maxNetworkRetryDelay.
|
382 |
+
$sleepSeconds = min(
|
383 |
+
Stripe::getInitialNetworkRetryDelay() * 1.0 * pow(2, $numRetries - 1),
|
384 |
+
Stripe::getMaxNetworkRetryDelay()
|
385 |
+
);
|
386 |
+
|
387 |
+
// Apply some jitter by randomizing the value in the range of
|
388 |
+
// ($sleepSeconds / 2) to ($sleepSeconds).
|
389 |
+
$sleepSeconds *= 0.5 * (1 + $this->randomGenerator->randFloat());
|
390 |
+
|
391 |
+
// But never sleep less than the base sleep seconds.
|
392 |
+
$sleepSeconds = max(Stripe::getInitialNetworkRetryDelay(), $sleepSeconds);
|
393 |
+
|
394 |
+
return $sleepSeconds;
|
395 |
+
}
|
396 |
+
|
397 |
+
/**
|
398 |
+
* Initializes the curl handle. If already initialized, the handle is closed first.
|
399 |
+
*/
|
400 |
+
private function initCurlHandle()
|
401 |
+
{
|
402 |
+
$this->closeCurlHandle();
|
403 |
+
$this->curlHandle = curl_init();
|
404 |
+
}
|
405 |
+
|
406 |
+
/**
|
407 |
+
* Closes the curl handle if initialized. Do nothing if already closed.
|
408 |
+
*/
|
409 |
+
private function closeCurlHandle()
|
410 |
+
{
|
411 |
+
if (!is_null($this->curlHandle)) {
|
412 |
+
curl_close($this->curlHandle);
|
413 |
+
$this->curlHandle = null;
|
414 |
+
}
|
415 |
+
}
|
416 |
+
|
417 |
+
/**
|
418 |
+
* Resets the curl handle. If the handle is not already initialized, or if persistent
|
419 |
+
* connections are disabled, the handle is reinitialized instead.
|
420 |
+
*/
|
421 |
+
private function resetCurlHandle()
|
422 |
+
{
|
423 |
+
if (!is_null($this->curlHandle) && $this->getEnablePersistentConnections()) {
|
424 |
+
curl_reset($this->curlHandle);
|
425 |
+
} else {
|
426 |
+
$this->initCurlHandle();
|
427 |
+
}
|
428 |
+
}
|
429 |
+
|
430 |
+
/**
|
431 |
+
* Indicates whether it is safe to use HTTP/2 or not.
|
432 |
+
*
|
433 |
+
* @return boolean
|
434 |
+
*/
|
435 |
+
private function canSafelyUseHttp2()
|
436 |
+
{
|
437 |
+
// Versions of curl older than 7.60.0 don't respect GOAWAY frames
|
438 |
+
// (cf. https://github.com/curl/curl/issues/2416), which Stripe use.
|
439 |
+
$curlVersion = curl_version()['version'];
|
440 |
+
return (version_compare($curlVersion, '7.60.0') >= 0);
|
441 |
+
}
|
442 |
+
|
443 |
+
/**
|
444 |
+
* Checks if a list of headers contains a specific header name.
|
445 |
+
*
|
446 |
+
* @param string[] $headers
|
447 |
+
* @param string $name
|
448 |
+
* @return boolean
|
449 |
+
*/
|
450 |
+
private function hasHeader($headers, $name)
|
451 |
+
{
|
452 |
+
foreach ($headers as $header) {
|
453 |
+
if (strncasecmp($header, "{$name}: ", strlen($name) + 2) === 0) {
|
454 |
+
return true;
|
455 |
+
}
|
456 |
+
}
|
457 |
+
|
458 |
+
return false;
|
459 |
}
|
460 |
}
|
includes/lib/Stripe/lib/Invoice.php
CHANGED
@@ -5,54 +5,171 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class Invoice
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class Invoice extends ApiResource
|
11 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
/**
|
13 |
* @param array|null $params
|
14 |
* @param array|string|null $opts
|
15 |
*
|
16 |
-
* @return Invoice The
|
17 |
*/
|
18 |
-
public
|
19 |
{
|
20 |
-
|
|
|
|
|
|
|
21 |
}
|
22 |
|
23 |
/**
|
24 |
-
* @param array|
|
25 |
-
* array containing an `id` key.
|
26 |
* @param array|string|null $opts
|
27 |
*
|
28 |
-
* @return Invoice
|
29 |
*/
|
30 |
-
public
|
31 |
{
|
32 |
-
|
|
|
|
|
|
|
33 |
}
|
34 |
|
35 |
/**
|
36 |
* @param array|null $params
|
37 |
* @param array|string|null $opts
|
38 |
*
|
39 |
-
* @return
|
40 |
*/
|
41 |
-
public
|
42 |
{
|
43 |
-
|
|
|
|
|
|
|
44 |
}
|
45 |
|
46 |
/**
|
47 |
-
* @param string $id The ID of the invoice to update.
|
48 |
* @param array|null $params
|
49 |
-
* @param array|string|null $
|
50 |
*
|
51 |
-
* @return Invoice The
|
52 |
*/
|
53 |
-
public
|
54 |
{
|
55 |
-
|
|
|
|
|
|
|
56 |
}
|
57 |
|
58 |
/**
|
@@ -71,21 +188,14 @@ class Invoice extends ApiResource
|
|
71 |
}
|
72 |
|
73 |
/**
|
|
|
74 |
* @param array|string|null $opts
|
75 |
*
|
76 |
-
* @return Invoice The
|
77 |
-
*/
|
78 |
-
public function save($opts = null)
|
79 |
-
{
|
80 |
-
return $this->_save($opts);
|
81 |
-
}
|
82 |
-
|
83 |
-
/**
|
84 |
-
* @return Invoice The paid invoice.
|
85 |
*/
|
86 |
-
public function
|
87 |
{
|
88 |
-
$url = $this->instanceUrl() . '/
|
89 |
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
90 |
$this->refreshFrom($response, $opts);
|
91 |
return $this;
|
5 |
/**
|
6 |
* Class Invoice
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property string $account_country
|
11 |
+
* @property string $account_name
|
12 |
+
* @property int $amount_due
|
13 |
+
* @property int $amount_paid
|
14 |
+
* @property int $amount_remaining
|
15 |
+
* @property int $application_fee_amount
|
16 |
+
* @property int $attempt_count
|
17 |
+
* @property bool $attempted
|
18 |
+
* @property bool $auto_advance
|
19 |
+
* @property string $billing
|
20 |
+
* @property string $billing_reason
|
21 |
+
* @property string $charge
|
22 |
+
* @property string $collection_method
|
23 |
+
* @property int $created
|
24 |
+
* @property string $currency
|
25 |
+
* @property array $custom_fields
|
26 |
+
* @property string $customer
|
27 |
+
* @property mixed $customer_address
|
28 |
+
* @property string $customer_email
|
29 |
+
* @property string $customer_name
|
30 |
+
* @property string $customer_phone
|
31 |
+
* @property mixed $customer_shipping
|
32 |
+
* @property string $customer_tax_exempt
|
33 |
+
* @property array $customer_tax_ids
|
34 |
+
* @property string $default_payment_method
|
35 |
+
* @property string $default_source
|
36 |
+
* @property array $default_tax_rates
|
37 |
+
* @property string $description
|
38 |
+
* @property Discount $discount
|
39 |
+
* @property int $due_date
|
40 |
+
* @property int $ending_balance
|
41 |
+
* @property string $footer
|
42 |
+
* @property string $hosted_invoice_url
|
43 |
+
* @property string $invoice_pdf
|
44 |
+
* @property Collection $lines
|
45 |
+
* @property bool $livemode
|
46 |
+
* @property StripeObject $metadata
|
47 |
+
* @property int $next_payment_attempt
|
48 |
+
* @property string $number
|
49 |
+
* @property bool $paid
|
50 |
+
* @property string $payment_intent
|
51 |
+
* @property int $period_end
|
52 |
+
* @property int $period_start
|
53 |
+
* @property int $post_payment_credit_notes_amount
|
54 |
+
* @property int $pre_payment_credit_notes_amount
|
55 |
+
* @property string $receipt_number
|
56 |
+
* @property int $starting_balance
|
57 |
+
* @property string $statement_descriptor
|
58 |
+
* @property string $status
|
59 |
+
* @property mixed $status_transitions
|
60 |
+
* @property string $subscription
|
61 |
+
* @property int $subscription_proration_date
|
62 |
+
* @property int $subtotal
|
63 |
+
* @property int $tax
|
64 |
+
* @property mixed $threshold_reason
|
65 |
+
* @property int $total
|
66 |
+
* @property array $total_tax_amounts
|
67 |
+
* @property int $webhooks_delivered_at
|
68 |
+
*
|
69 |
* @package Stripe
|
70 |
*/
|
71 |
class Invoice extends ApiResource
|
72 |
{
|
73 |
+
|
74 |
+
const OBJECT_NAME = "invoice";
|
75 |
+
|
76 |
+
use ApiOperations\All;
|
77 |
+
use ApiOperations\Create;
|
78 |
+
use ApiOperations\Delete;
|
79 |
+
use ApiOperations\Retrieve;
|
80 |
+
use ApiOperations\Update;
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Possible string representations of the billing reason.
|
84 |
+
* @link https://stripe.com/docs/api/invoices/object#invoice_object-billing_reason
|
85 |
+
*/
|
86 |
+
const BILLING_REASON_MANUAL = 'manual';
|
87 |
+
const BILLING_REASON_SUBSCRIPTION = 'subscription';
|
88 |
+
const BILLING_REASON_SUBSCRIPTION_CREATE = 'subscription_create';
|
89 |
+
const BILLING_REASON_SUBSCRIPTION_CYCLE = 'subscription_cycle';
|
90 |
+
const BILLING_REASON_SUBSCRIPTION_THRESHOLD = 'subscription_threshold';
|
91 |
+
const BILLING_REASON_SUBSCRIPTION_UPDATE = 'subscription_update';
|
92 |
+
const BILLING_REASON_UPCOMING = 'upcoming';
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Possible string representations of the `collection_method` property.
|
96 |
+
* @link https://stripe.com/docs/api/invoices/object#invoice_object-collection_method
|
97 |
+
*/
|
98 |
+
const COLLECTION_METHOD_CHARGE_AUTOMATICALLY = 'charge_automatically';
|
99 |
+
const COLLECTION_METHOD_SEND_INVOICE = 'send_invoice';
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Possible string representations of the invoice status.
|
103 |
+
* @link https://stripe.com/docs/api/invoices/object#invoice_object-status
|
104 |
+
*/
|
105 |
+
const STATUS_DRAFT = 'draft';
|
106 |
+
const STATUS_OPEN = 'open';
|
107 |
+
const STATUS_PAID = 'paid';
|
108 |
+
const STATUS_UNCOLLECTIBLE = 'uncollectible';
|
109 |
+
const STATUS_VOID = 'void';
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Possible string representations of the `billing` property.
|
113 |
+
* @deprecated Use `collection_method` instead.
|
114 |
+
* @link https://stripe.com/docs/api/invoices/object#invoice_object-billing
|
115 |
+
*/
|
116 |
+
const BILLING_CHARGE_AUTOMATICALLY = 'charge_automatically';
|
117 |
+
const BILLING_SEND_INVOICE = 'send_invoice';
|
118 |
+
|
119 |
/**
|
120 |
* @param array|null $params
|
121 |
* @param array|string|null $opts
|
122 |
*
|
123 |
+
* @return Invoice The finalized invoice.
|
124 |
*/
|
125 |
+
public function finalizeInvoice($params = null, $opts = null)
|
126 |
{
|
127 |
+
$url = $this->instanceUrl() . '/finalize';
|
128 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
129 |
+
$this->refreshFrom($response, $opts);
|
130 |
+
return $this;
|
131 |
}
|
132 |
|
133 |
/**
|
134 |
+
* @param array|null $params
|
|
|
135 |
* @param array|string|null $opts
|
136 |
*
|
137 |
+
* @return Invoice The uncollectible invoice.
|
138 |
*/
|
139 |
+
public function markUncollectible($params = null, $opts = null)
|
140 |
{
|
141 |
+
$url = $this->instanceUrl() . '/mark_uncollectible';
|
142 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
143 |
+
$this->refreshFrom($response, $opts);
|
144 |
+
return $this;
|
145 |
}
|
146 |
|
147 |
/**
|
148 |
* @param array|null $params
|
149 |
* @param array|string|null $opts
|
150 |
*
|
151 |
+
* @return Invoice The paid invoice.
|
152 |
*/
|
153 |
+
public function pay($params = null, $opts = null)
|
154 |
{
|
155 |
+
$url = $this->instanceUrl() . '/pay';
|
156 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
157 |
+
$this->refreshFrom($response, $opts);
|
158 |
+
return $this;
|
159 |
}
|
160 |
|
161 |
/**
|
|
|
162 |
* @param array|null $params
|
163 |
+
* @param array|string|null $opts
|
164 |
*
|
165 |
+
* @return Invoice The sent invoice.
|
166 |
*/
|
167 |
+
public function sendInvoice($params = null, $opts = null)
|
168 |
{
|
169 |
+
$url = $this->instanceUrl() . '/send';
|
170 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
171 |
+
$this->refreshFrom($response, $opts);
|
172 |
+
return $this;
|
173 |
}
|
174 |
|
175 |
/**
|
188 |
}
|
189 |
|
190 |
/**
|
191 |
+
* @param array|null $params
|
192 |
* @param array|string|null $opts
|
193 |
*
|
194 |
+
* @return Invoice The voided invoice.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
*/
|
196 |
+
public function voidInvoice($params = null, $opts = null)
|
197 |
{
|
198 |
+
$url = $this->instanceUrl() . '/void';
|
199 |
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
200 |
$this->refreshFrom($response, $opts);
|
201 |
return $this;
|
includes/lib/Stripe/lib/InvoiceItem.php
CHANGED
@@ -5,74 +5,36 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class InvoiceItem
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class InvoiceItem extends ApiResource
|
11 |
{
|
12 |
-
/**
|
13 |
-
* @param array|string $id The ID of the invoice item to retrieve, or an
|
14 |
-
* options array containing an `id` key.
|
15 |
-
* @param array|string|null $opts
|
16 |
-
*
|
17 |
-
* @return InvoiceItem
|
18 |
-
*/
|
19 |
-
public static function retrieve($id, $opts = null)
|
20 |
-
{
|
21 |
-
return self::_retrieve($id, $opts);
|
22 |
-
}
|
23 |
-
|
24 |
-
/**
|
25 |
-
* @param array|null $params
|
26 |
-
* @param array|string|null $opts
|
27 |
-
*
|
28 |
-
* @return Collection of InvoiceItems
|
29 |
-
*/
|
30 |
-
public static function all($params = null, $opts = null)
|
31 |
-
{
|
32 |
-
return self::_all($params, $opts);
|
33 |
-
}
|
34 |
-
|
35 |
-
/**
|
36 |
-
* @param array|null $params
|
37 |
-
* @param array|string|null $opts
|
38 |
-
*
|
39 |
-
* @return InvoiceItem The created invoice item.
|
40 |
-
*/
|
41 |
-
public static function create($params = null, $opts = null)
|
42 |
-
{
|
43 |
-
return self::_create($params, $opts);
|
44 |
-
}
|
45 |
-
|
46 |
-
/**
|
47 |
-
* @param string $id The ID of the invoice item to update.
|
48 |
-
* @param array|null $params
|
49 |
-
* @param array|string|null $options
|
50 |
-
*
|
51 |
-
* @return InvoiceItem The updated invoice item.
|
52 |
-
*/
|
53 |
-
public static function update($id, $params = null, $options = null)
|
54 |
-
{
|
55 |
-
return self::_update($id, $params, $options);
|
56 |
-
}
|
57 |
|
58 |
-
|
59 |
-
* @param array|string|null $opts
|
60 |
-
*
|
61 |
-
* @return InvoiceItem The saved invoice item.
|
62 |
-
*/
|
63 |
-
public function save($opts = null)
|
64 |
-
{
|
65 |
-
return $this->_save($opts);
|
66 |
-
}
|
67 |
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
*/
|
74 |
-
public function delete($params = null, $opts = null)
|
75 |
-
{
|
76 |
-
return $this->_delete($params, $opts);
|
77 |
-
}
|
78 |
}
|
5 |
/**
|
6 |
* Class InvoiceItem
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount
|
11 |
+
* @property string $currency
|
12 |
+
* @property string $customer
|
13 |
+
* @property int $date
|
14 |
+
* @property string $description
|
15 |
+
* @property bool $discountable
|
16 |
+
* @property string $invoice
|
17 |
+
* @property bool $livemode
|
18 |
+
* @property StripeObject $metadata
|
19 |
+
* @property mixed $period
|
20 |
+
* @property Plan $plan
|
21 |
+
* @property bool $proration
|
22 |
+
* @property int $quantity
|
23 |
+
* @property string $subscription
|
24 |
+
* @property string $subscription_item
|
25 |
+
* @property array $tax_rates
|
26 |
+
* @property int $unit_amount
|
27 |
+
*
|
28 |
* @package Stripe
|
29 |
*/
|
30 |
class InvoiceItem extends ApiResource
|
31 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
+
const OBJECT_NAME = "invoiceitem";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
+
use ApiOperations\All;
|
36 |
+
use ApiOperations\Create;
|
37 |
+
use ApiOperations\Delete;
|
38 |
+
use ApiOperations\Retrieve;
|
39 |
+
use ApiOperations\Update;
|
|
|
|
|
|
|
|
|
|
|
40 |
}
|
includes/lib/Stripe/lib/InvoiceLineItem.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class InvoiceLineItem
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount
|
11 |
+
* @property string $currency
|
12 |
+
* @property string $description
|
13 |
+
* @property bool $discountable
|
14 |
+
* @property string $invoice_item
|
15 |
+
* @property bool $livemode
|
16 |
+
* @property StripeObject $metadata
|
17 |
+
* @property mixed $period
|
18 |
+
* @property Plan $plan
|
19 |
+
* @property bool $proration
|
20 |
+
* @property int $quantity
|
21 |
+
* @property string $subscription
|
22 |
+
* @property string $subscription_item
|
23 |
+
* @property array $tax_amounts
|
24 |
+
* @property array $tax_rates
|
25 |
+
* @property string $type
|
26 |
+
*
|
27 |
+
* @package Stripe
|
28 |
+
*/
|
29 |
+
class InvoiceLineItem extends ApiResource
|
30 |
+
{
|
31 |
+
const OBJECT_NAME = "line_item";
|
32 |
+
}
|
includes/lib/Stripe/lib/IssuerFraudRecord.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class IssuerFraudRecord
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property string $charge
|
11 |
+
* @property int $created
|
12 |
+
* @property int $post_date
|
13 |
+
* @property string $fraud_type
|
14 |
+
* @property bool $livemode
|
15 |
+
*
|
16 |
+
* @package Stripe
|
17 |
+
*/
|
18 |
+
class IssuerFraudRecord extends ApiResource
|
19 |
+
{
|
20 |
+
|
21 |
+
const OBJECT_NAME = "issuer_fraud_record";
|
22 |
+
|
23 |
+
use ApiOperations\All;
|
24 |
+
use ApiOperations\Retrieve;
|
25 |
+
}
|
includes/lib/Stripe/lib/Issuing/Authorization.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Issuing;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Authorization
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property bool $approved
|
11 |
+
* @property string $authorization_method
|
12 |
+
* @property int $authorized_amount
|
13 |
+
* @property string $authorized_currency
|
14 |
+
* @property \Stripe\Collection $balance_transactions
|
15 |
+
* @property Card $card
|
16 |
+
* @property Cardholder $cardholder
|
17 |
+
* @property int $created
|
18 |
+
* @property int $held_amount
|
19 |
+
* @property string $held_currency
|
20 |
+
* @property bool $is_held_amount_controllable
|
21 |
+
* @property bool $livemode
|
22 |
+
* @property mixed $merchant_data
|
23 |
+
* @property \Stripe\StripeObject $metadata
|
24 |
+
* @property int $pending_authorized_amount
|
25 |
+
* @property int $pending_held_amount
|
26 |
+
* @property mixed $request_history
|
27 |
+
* @property string $status
|
28 |
+
* @property \Stripe\Collection $transactions
|
29 |
+
* @property mixed $verification_data
|
30 |
+
*
|
31 |
+
* @package Stripe\Issuing
|
32 |
+
*/
|
33 |
+
class Authorization extends \Stripe\ApiResource
|
34 |
+
{
|
35 |
+
const OBJECT_NAME = "issuing.authorization";
|
36 |
+
|
37 |
+
use \Stripe\ApiOperations\All;
|
38 |
+
use \Stripe\ApiOperations\Retrieve;
|
39 |
+
use \Stripe\ApiOperations\Update;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @param array|null $params
|
43 |
+
* @param array|string|null $options
|
44 |
+
*
|
45 |
+
* @return Authorization The approved authorization.
|
46 |
+
*/
|
47 |
+
public function approve($params = null, $options = null)
|
48 |
+
{
|
49 |
+
$url = $this->instanceUrl() . '/approve';
|
50 |
+
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
51 |
+
$this->refreshFrom($response, $opts);
|
52 |
+
return $this;
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* @param array|null $params
|
57 |
+
* @param array|string|null $options
|
58 |
+
*
|
59 |
+
* @return Authorization The declined authorization.
|
60 |
+
*/
|
61 |
+
public function decline($params = null, $options = null)
|
62 |
+
{
|
63 |
+
$url = $this->instanceUrl() . '/decline';
|
64 |
+
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
65 |
+
$this->refreshFrom($response, $opts);
|
66 |
+
return $this;
|
67 |
+
}
|
68 |
+
}
|
includes/lib/Stripe/lib/Issuing/Card.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Issuing;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Card
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property mixed $authorization_controls
|
11 |
+
* @property mixed $billing
|
12 |
+
* @property string $brand
|
13 |
+
* @property Cardholder $cardholder
|
14 |
+
* @property int $created
|
15 |
+
* @property string $currency
|
16 |
+
* @property int $exp_month
|
17 |
+
* @property int $exp_year
|
18 |
+
* @property string $last4
|
19 |
+
* @property bool $livemode
|
20 |
+
* @property \Stripe\StripeObject $metadata
|
21 |
+
* @property string $name
|
22 |
+
* @property mixed $shipping
|
23 |
+
* @property string $status
|
24 |
+
* @property string $type
|
25 |
+
*
|
26 |
+
* @package Stripe\Issuing
|
27 |
+
*/
|
28 |
+
class Card extends \Stripe\ApiResource
|
29 |
+
{
|
30 |
+
const OBJECT_NAME = "issuing.card";
|
31 |
+
|
32 |
+
use \Stripe\ApiOperations\All;
|
33 |
+
use \Stripe\ApiOperations\Create;
|
34 |
+
use \Stripe\ApiOperations\Retrieve;
|
35 |
+
use \Stripe\ApiOperations\Update;
|
36 |
+
|
37 |
+
/**
|
38 |
+
* @param array|null $params
|
39 |
+
* @param array|string|null $options
|
40 |
+
*
|
41 |
+
* @return CardDetails The card details associated with that issuing card.
|
42 |
+
*/
|
43 |
+
public function details($params = null, $options = null)
|
44 |
+
{
|
45 |
+
$url = $this->instanceUrl() . '/details';
|
46 |
+
list($response, $opts) = $this->_request('get', $url, $params, $options);
|
47 |
+
$obj = \Stripe\Util\Util::convertToStripeObject($response, $opts);
|
48 |
+
$obj->setLastResponse($response);
|
49 |
+
return $obj;
|
50 |
+
}
|
51 |
+
}
|
includes/lib/Stripe/lib/Issuing/CardDetails.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Issuing;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class CardDetails
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property Card $card
|
11 |
+
* @property string $cvc
|
12 |
+
* @property int $exp_month
|
13 |
+
* @property int $exp_year
|
14 |
+
* @property string $number
|
15 |
+
*
|
16 |
+
* @package Stripe\Issuing
|
17 |
+
*/
|
18 |
+
class CardDetails extends \Stripe\ApiResource
|
19 |
+
{
|
20 |
+
const OBJECT_NAME = "issuing.card_details";
|
21 |
+
}
|
includes/lib/Stripe/lib/Issuing/Cardholder.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Issuing;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Cardholder
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property mixed $billing
|
11 |
+
* @property int $created
|
12 |
+
* @property string $email
|
13 |
+
* @property bool $livemode
|
14 |
+
* @property \Stripe\StripeObject $metadata
|
15 |
+
* @property string $name
|
16 |
+
* @property string $phone_number
|
17 |
+
* @property string $status
|
18 |
+
* @property string $type
|
19 |
+
*
|
20 |
+
* @package Stripe\Issuing
|
21 |
+
*/
|
22 |
+
class Cardholder extends \Stripe\ApiResource
|
23 |
+
{
|
24 |
+
const OBJECT_NAME = "issuing.cardholder";
|
25 |
+
|
26 |
+
use \Stripe\ApiOperations\All;
|
27 |
+
use \Stripe\ApiOperations\Create;
|
28 |
+
use \Stripe\ApiOperations\Retrieve;
|
29 |
+
use \Stripe\ApiOperations\Update;
|
30 |
+
}
|
includes/lib/Stripe/lib/Issuing/Dispute.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Issuing;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Dispute
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount
|
11 |
+
* @property int $created
|
12 |
+
* @property string $currency
|
13 |
+
* @property mixed $evidence
|
14 |
+
* @property bool $livemode
|
15 |
+
* @property \Stripe\StripeObject $metadata
|
16 |
+
* @property string $reason
|
17 |
+
* @property string $status
|
18 |
+
* @property Transaction $transaction
|
19 |
+
*
|
20 |
+
* @package Stripe\Issuing
|
21 |
+
*/
|
22 |
+
class Dispute extends \Stripe\ApiResource
|
23 |
+
{
|
24 |
+
const OBJECT_NAME = "issuing.dispute";
|
25 |
+
|
26 |
+
use \Stripe\ApiOperations\All;
|
27 |
+
use \Stripe\ApiOperations\Create;
|
28 |
+
use \Stripe\ApiOperations\Retrieve;
|
29 |
+
use \Stripe\ApiOperations\Update;
|
30 |
+
}
|
includes/lib/Stripe/lib/Issuing/Transaction.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Issuing;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Transaction
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount
|
11 |
+
* @property string $authorization
|
12 |
+
* @property string $balance_transaction
|
13 |
+
* @property string $card
|
14 |
+
* @property string $cardholder
|
15 |
+
* @property int $created
|
16 |
+
* @property string $currency
|
17 |
+
* @property string $dispute
|
18 |
+
* @property bool $livemode
|
19 |
+
* @property mixed $merchant_data
|
20 |
+
* @property int $merchant_amount
|
21 |
+
* @property string $merchant_currency
|
22 |
+
* @property \Stripe\StripeObject $metadata
|
23 |
+
* @property string $type
|
24 |
+
*
|
25 |
+
* @package Stripe\Issuing
|
26 |
+
*/
|
27 |
+
class Transaction extends \Stripe\ApiResource
|
28 |
+
{
|
29 |
+
const OBJECT_NAME = "issuing.transaction";
|
30 |
+
|
31 |
+
use \Stripe\ApiOperations\All;
|
32 |
+
use \Stripe\ApiOperations\Create;
|
33 |
+
use \Stripe\ApiOperations\Retrieve;
|
34 |
+
use \Stripe\ApiOperations\Update;
|
35 |
+
}
|
includes/lib/Stripe/lib/LoginLink.php
CHANGED
@@ -5,9 +5,14 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class LoginLink
|
7 |
*
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class LoginLink extends ApiResource
|
11 |
{
|
12 |
|
|
|
13 |
}
|
5 |
/**
|
6 |
* Class LoginLink
|
7 |
*
|
8 |
+
* @property string $object
|
9 |
+
* @property int $created
|
10 |
+
* @property string $url
|
11 |
+
*
|
12 |
* @package Stripe
|
13 |
*/
|
14 |
class LoginLink extends ApiResource
|
15 |
{
|
16 |
|
17 |
+
const OBJECT_NAME = "login_link";
|
18 |
}
|
includes/lib/Stripe/lib/OAuth.php
CHANGED
@@ -14,9 +14,7 @@ abstract class OAuth
|
|
14 |
*/
|
15 |
public static function authorizeUrl($params = null, $opts = null)
|
16 |
{
|
17 |
-
|
18 |
-
$params = array();
|
19 |
-
}
|
20 |
|
21 |
$base = ($opts && array_key_exists('connect_base', $opts)) ? $opts['connect_base'] : Stripe::$connectBase;
|
22 |
|
@@ -24,7 +22,7 @@ abstract class OAuth
|
|
24 |
if (!array_key_exists('response_type', $params)) {
|
25 |
$params['response_type'] = 'code';
|
26 |
}
|
27 |
-
$query = Util\Util::
|
28 |
|
29 |
return $base . '/oauth/authorize?' . $query;
|
30 |
}
|
@@ -61,10 +59,7 @@ abstract class OAuth
|
|
61 |
*/
|
62 |
public static function deauthorize($params = null, $opts = null)
|
63 |
{
|
64 |
-
|
65 |
-
$params = array();
|
66 |
-
}
|
67 |
-
|
68 |
$base = ($opts && array_key_exists('connect_base', $opts)) ? $opts['connect_base'] : Stripe::$connectBase;
|
69 |
$requestor = new ApiRequestor(null, $base);
|
70 |
$params['client_id'] = self::_getClientId($params);
|
14 |
*/
|
15 |
public static function authorizeUrl($params = null, $opts = null)
|
16 |
{
|
17 |
+
$params = $params ?: [];
|
|
|
|
|
18 |
|
19 |
$base = ($opts && array_key_exists('connect_base', $opts)) ? $opts['connect_base'] : Stripe::$connectBase;
|
20 |
|
22 |
if (!array_key_exists('response_type', $params)) {
|
23 |
$params['response_type'] = 'code';
|
24 |
}
|
25 |
+
$query = Util\Util::encodeParameters($params);
|
26 |
|
27 |
return $base . '/oauth/authorize?' . $query;
|
28 |
}
|
59 |
*/
|
60 |
public static function deauthorize($params = null, $opts = null)
|
61 |
{
|
62 |
+
$params = $params ?: [];
|
|
|
|
|
|
|
63 |
$base = ($opts && array_key_exists('connect_base', $opts)) ? $opts['connect_base'] : Stripe::$connectBase;
|
64 |
$requestor = new ApiRequestor(null, $base);
|
65 |
$params['client_id'] = self::_getClientId($params);
|
includes/lib/Stripe/lib/Order.php
CHANGED
@@ -5,65 +5,41 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class Order
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class Order extends ApiResource
|
11 |
{
|
12 |
-
/**
|
13 |
-
* @param array|string $id The ID of the order to retrieve, or an options
|
14 |
-
* array containing an `id` key.
|
15 |
-
* @param array|string|null $opts
|
16 |
-
*
|
17 |
-
* @return Order
|
18 |
-
*/
|
19 |
-
public static function retrieve($id, $opts = null)
|
20 |
-
{
|
21 |
-
return self::_retrieve($id, $opts);
|
22 |
-
}
|
23 |
|
24 |
-
|
25 |
-
* @param array|null $params
|
26 |
-
* @param array|string|null $opts
|
27 |
-
*
|
28 |
-
* @return Order The created Order.
|
29 |
-
*/
|
30 |
-
public static function create($params = null, $opts = null)
|
31 |
-
{
|
32 |
-
return self::_create($params, $opts);
|
33 |
-
}
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
*
|
40 |
-
* @return Order The updated order.
|
41 |
-
*/
|
42 |
-
public static function update($id, $params = null, $options = null)
|
43 |
-
{
|
44 |
-
return self::_update($id, $params, $options);
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* @param array|string|null $opts
|
49 |
-
*
|
50 |
-
* @return Order The saved Order.
|
51 |
-
*/
|
52 |
-
public function save($opts = null)
|
53 |
-
{
|
54 |
-
return $this->_save($opts);
|
55 |
-
}
|
56 |
-
|
57 |
-
/**
|
58 |
-
* @param array|null $params
|
59 |
-
* @param array|string|null $opts
|
60 |
-
*
|
61 |
-
* @return Collection of Orders
|
62 |
-
*/
|
63 |
-
public static function all($params = null, $opts = null)
|
64 |
-
{
|
65 |
-
return self::_all($params, $opts);
|
66 |
-
}
|
67 |
|
68 |
/**
|
69 |
* @return Order The paid order.
|
5 |
/**
|
6 |
* Class Order
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount
|
11 |
+
* @property int $amount_returned
|
12 |
+
* @property string $application
|
13 |
+
* @property int $application_fee
|
14 |
+
* @property string $charge
|
15 |
+
* @property int $created
|
16 |
+
* @property string $currency
|
17 |
+
* @property string $customer
|
18 |
+
* @property string $email
|
19 |
+
* @property string $external_coupon_code
|
20 |
+
* @property OrderItem[] $items
|
21 |
+
* @property bool $livemode
|
22 |
+
* @property StripeObject $metadata
|
23 |
+
* @property Collection $returns
|
24 |
+
* @property string $selected_shipping_method
|
25 |
+
* @property mixed $shipping
|
26 |
+
* @property array $shipping_methods
|
27 |
+
* @property string $status
|
28 |
+
* @property mixed $status_transitions
|
29 |
+
* @property int $updated
|
30 |
+
* @property string $upstream_id
|
31 |
+
*
|
32 |
* @package Stripe
|
33 |
*/
|
34 |
class Order extends ApiResource
|
35 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
+
const OBJECT_NAME = "order";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
|
39 |
+
use ApiOperations\All;
|
40 |
+
use ApiOperations\Create;
|
41 |
+
use ApiOperations\Retrieve;
|
42 |
+
use ApiOperations\Update;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
/**
|
45 |
* @return Order The paid order.
|
includes/lib/Stripe/lib/OrderItem.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class OrderItem
|
7 |
+
*
|
8 |
+
* @property string $object
|
9 |
+
* @property int $amount
|
10 |
+
* @property string $currency
|
11 |
+
* @property string $description
|
12 |
+
* @property string $parent
|
13 |
+
* @property int $quantity
|
14 |
+
* @property string $type
|
15 |
+
*
|
16 |
+
* @package Stripe
|
17 |
+
*/
|
18 |
+
class OrderItem extends StripeObject
|
19 |
+
{
|
20 |
+
|
21 |
+
const OBJECT_NAME = "order_item";
|
22 |
+
}
|
includes/lib/Stripe/lib/OrderReturn.php
CHANGED
@@ -5,41 +5,23 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class OrderReturn
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class OrderReturn extends ApiResource
|
11 |
{
|
12 |
-
/**
|
13 |
-
* This is a special case because the order returns endpoint has an
|
14 |
-
* underscore in it. The parent `className` function strips underscores.
|
15 |
-
*
|
16 |
-
* @return string The name of the class.
|
17 |
-
*/
|
18 |
-
public static function className()
|
19 |
-
{
|
20 |
-
return 'order_return';
|
21 |
-
}
|
22 |
|
23 |
-
|
24 |
-
* @param array|string $id The ID of the order return to retrieve, or an
|
25 |
-
* options array containing an `id` field.
|
26 |
-
* @param array|string|null $opts
|
27 |
-
*
|
28 |
-
* @return Order
|
29 |
-
*/
|
30 |
-
public static function retrieve($id, $opts = null)
|
31 |
-
{
|
32 |
-
return self::_retrieve($id, $opts);
|
33 |
-
}
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
* @param array|string|null $opts
|
38 |
-
*
|
39 |
-
* @return Collection of OrderReturns
|
40 |
-
*/
|
41 |
-
public static function all($params = null, $opts = null)
|
42 |
-
{
|
43 |
-
return self::_all($params, $opts);
|
44 |
-
}
|
45 |
}
|
5 |
/**
|
6 |
* Class OrderReturn
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount
|
11 |
+
* @property int $created
|
12 |
+
* @property string $currency
|
13 |
+
* @property OrderItem[] $items
|
14 |
+
* @property bool $livemode
|
15 |
+
* @property string $order
|
16 |
+
* @property string $refund
|
17 |
+
*
|
18 |
* @package Stripe
|
19 |
*/
|
20 |
class OrderReturn extends ApiResource
|
21 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
+
const OBJECT_NAME = "order_return";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
|
25 |
+
use ApiOperations\All;
|
26 |
+
use ApiOperations\Retrieve;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
}
|
includes/lib/Stripe/lib/PaymentIntent.php
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class PaymentIntent
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount
|
11 |
+
* @property int $amount_capturable
|
12 |
+
* @property int $amount_received
|
13 |
+
* @property string $application
|
14 |
+
* @property int $application_fee_amount
|
15 |
+
* @property int $canceled_at
|
16 |
+
* @property string $cancellation_reason
|
17 |
+
* @property string $capture_method
|
18 |
+
* @property Collection $charges
|
19 |
+
* @property string $client_secret
|
20 |
+
* @property string $confirmation_method
|
21 |
+
* @property int $created
|
22 |
+
* @property string $currency
|
23 |
+
* @property string $customer
|
24 |
+
* @property string $description
|
25 |
+
* @property mixed $last_payment_error
|
26 |
+
* @property bool $livemode
|
27 |
+
* @property StripeObject $metadata
|
28 |
+
* @property mixed $next_action
|
29 |
+
* @property string $on_behalf_of
|
30 |
+
* @property string $payment_method
|
31 |
+
* @property string[] $payment_method_types
|
32 |
+
* @property string $receipt_email
|
33 |
+
* @property string $review
|
34 |
+
* @property mixed $shipping
|
35 |
+
* @property string $source
|
36 |
+
* @property string $statement_descriptor
|
37 |
+
* @property string $status
|
38 |
+
* @property mixed $transfer_data
|
39 |
+
* @property string $transfer_group
|
40 |
+
*
|
41 |
+
* @package Stripe
|
42 |
+
*/
|
43 |
+
class PaymentIntent extends ApiResource
|
44 |
+
{
|
45 |
+
|
46 |
+
const OBJECT_NAME = "payment_intent";
|
47 |
+
|
48 |
+
use ApiOperations\All;
|
49 |
+
use ApiOperations\Create;
|
50 |
+
use ApiOperations\Retrieve;
|
51 |
+
use ApiOperations\Update;
|
52 |
+
|
53 |
+
/**
|
54 |
+
* These constants are possible representations of the status field.
|
55 |
+
*
|
56 |
+
* @link https://stripe.com/docs/api/payment_intents/object#payment_intent_object-status
|
57 |
+
*/
|
58 |
+
const STATUS_CANCELED = 'canceled';
|
59 |
+
const STATUS_PROCESSING = 'processing';
|
60 |
+
const STATUS_REQUIRES_ACTION = 'requires_action';
|
61 |
+
const STATUS_REQUIRES_CAPTURE = 'requires_capture';
|
62 |
+
const STATUS_REQUIRES_CONFIRMATION = 'requires_confirmation';
|
63 |
+
const STATUS_REQUIRES_PAYMENT_METHOD = 'requires_payment_method';
|
64 |
+
const STATUS_SUCCEEDED = 'succeeded';
|
65 |
+
|
66 |
+
/**
|
67 |
+
* @param array|null $params
|
68 |
+
* @param array|string|null $options
|
69 |
+
*
|
70 |
+
* @return PaymentIntent The canceled payment intent.
|
71 |
+
*/
|
72 |
+
public function cancel($params = null, $options = null)
|
73 |
+
{
|
74 |
+
$url = $this->instanceUrl() . '/cancel';
|
75 |
+
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
76 |
+
$this->refreshFrom($response, $opts);
|
77 |
+
return $this;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* @param array|null $params
|
82 |
+
* @param array|string|null $options
|
83 |
+
*
|
84 |
+
* @return PaymentIntent The captured payment intent.
|
85 |
+
*/
|
86 |
+
public function capture($params = null, $options = null)
|
87 |
+
{
|
88 |
+
$url = $this->instanceUrl() . '/capture';
|
89 |
+
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
90 |
+
$this->refreshFrom($response, $opts);
|
91 |
+
return $this;
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* @param array|null $params
|
96 |
+
* @param array|string|null $options
|
97 |
+
*
|
98 |
+
* @return PaymentIntent The confirmed payment intent.
|
99 |
+
*/
|
100 |
+
public function confirm($params = null, $options = null)
|
101 |
+
{
|
102 |
+
$url = $this->instanceUrl() . '/confirm';
|
103 |
+
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
104 |
+
$this->refreshFrom($response, $opts);
|
105 |
+
return $this;
|
106 |
+
}
|
107 |
+
}
|
includes/lib/Stripe/lib/PaymentMethod.php
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class PaymentMethod
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property mixed $billing_details
|
11 |
+
* @property mixed $card
|
12 |
+
* @property mixed $card_present
|
13 |
+
* @property int $created
|
14 |
+
* @property string $customer
|
15 |
+
* @property mixed $ideal
|
16 |
+
* @property bool $livemode
|
17 |
+
* @property StripeObject $metadata
|
18 |
+
* @property mixed $sepa_debit
|
19 |
+
* @property string $type
|
20 |
+
*
|
21 |
+
* @package Stripe
|
22 |
+
*/
|
23 |
+
class PaymentMethod extends ApiResource
|
24 |
+
{
|
25 |
+
|
26 |
+
const OBJECT_NAME = "payment_method";
|
27 |
+
|
28 |
+
use ApiOperations\All;
|
29 |
+
use ApiOperations\Create;
|
30 |
+
use ApiOperations\Retrieve;
|
31 |
+
use ApiOperations\Update;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* @param array|null $params
|
35 |
+
* @param array|string|null $opts
|
36 |
+
*
|
37 |
+
* @return PaymentMethod The attached payment method.
|
38 |
+
*/
|
39 |
+
public function attach($params = null, $opts = null)
|
40 |
+
{
|
41 |
+
$url = $this->instanceUrl() . '/attach';
|
42 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
43 |
+
$this->refreshFrom($response, $opts);
|
44 |
+
return $this;
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @param array|null $params
|
49 |
+
* @param array|string|null $opts
|
50 |
+
*
|
51 |
+
* @return PaymentMethod The detached payment method.
|
52 |
+
*/
|
53 |
+
public function detach($params = null, $opts = null)
|
54 |
+
{
|
55 |
+
$url = $this->instanceUrl() . '/detach';
|
56 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
57 |
+
$this->refreshFrom($response, $opts);
|
58 |
+
return $this;
|
59 |
+
}
|
60 |
+
}
|
includes/lib/Stripe/lib/Payout.php
CHANGED
@@ -8,18 +8,19 @@ namespace Stripe;
|
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
* @property int $amount
|
|
|
|
|
11 |
* @property string $balance_transaction
|
12 |
-
* @property string $cancellation_balance_transaction
|
13 |
* @property int $created
|
14 |
* @property string $currency
|
15 |
-
* @property
|
16 |
* @property string $destination
|
|
|
17 |
* @property string $failure_code
|
18 |
* @property string $failure_message
|
19 |
* @property bool $livemode
|
20 |
-
* @property
|
21 |
* @property string $method
|
22 |
-
* @property string $recipient
|
23 |
* @property string $source_type
|
24 |
* @property string $statement_descriptor
|
25 |
* @property string $status
|
@@ -29,51 +30,55 @@ namespace Stripe;
|
|
29 |
*/
|
30 |
class Payout extends ApiResource
|
31 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
/**
|
33 |
-
*
|
34 |
-
*
|
35 |
-
* @param array|string|null $opts
|
36 |
-
*
|
37 |
-
* @return Payout
|
38 |
*/
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
/**
|
45 |
-
*
|
46 |
-
* @
|
47 |
-
*
|
48 |
-
* @return Collection of Payouts
|
49 |
*/
|
50 |
-
|
51 |
-
|
52 |
-
return self::_all($params, $opts);
|
53 |
-
}
|
54 |
|
55 |
/**
|
56 |
-
*
|
57 |
-
* @
|
58 |
-
*
|
59 |
-
* @return Payout The created payout.
|
60 |
*/
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
65 |
|
66 |
/**
|
67 |
-
*
|
68 |
-
* @
|
69 |
-
* @param array|string|null $options
|
70 |
-
*
|
71 |
-
* @return Payout The updated payout.
|
72 |
*/
|
73 |
-
|
74 |
-
|
75 |
-
return self::_update($id, $params, $options);
|
76 |
-
}
|
77 |
|
78 |
/**
|
79 |
* @return Payout The canceled payout.
|
@@ -85,14 +90,4 @@ class Payout extends ApiResource
|
|
85 |
$this->refreshFrom($response, $opts);
|
86 |
return $this;
|
87 |
}
|
88 |
-
|
89 |
-
/**
|
90 |
-
* @param array|string|null $opts
|
91 |
-
*
|
92 |
-
* @return Payout The saved payout.
|
93 |
-
*/
|
94 |
-
public function save($opts = null)
|
95 |
-
{
|
96 |
-
return $this->_save($opts);
|
97 |
-
}
|
98 |
}
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
* @property int $amount
|
11 |
+
* @property int $arrival_date
|
12 |
+
* @property bool $automatic
|
13 |
* @property string $balance_transaction
|
|
|
14 |
* @property int $created
|
15 |
* @property string $currency
|
16 |
+
* @property string $description
|
17 |
* @property string $destination
|
18 |
+
* @property string $failure_balance_transaction
|
19 |
* @property string $failure_code
|
20 |
* @property string $failure_message
|
21 |
* @property bool $livemode
|
22 |
+
* @property StripeObject $metadata
|
23 |
* @property string $method
|
|
|
24 |
* @property string $source_type
|
25 |
* @property string $statement_descriptor
|
26 |
* @property string $status
|
30 |
*/
|
31 |
class Payout extends ApiResource
|
32 |
{
|
33 |
+
|
34 |
+
const OBJECT_NAME = "payout";
|
35 |
+
|
36 |
+
use ApiOperations\All;
|
37 |
+
use ApiOperations\Create;
|
38 |
+
use ApiOperations\Retrieve;
|
39 |
+
use ApiOperations\Update;
|
40 |
+
|
41 |
/**
|
42 |
+
* Types of payout failure codes.
|
43 |
+
* @link https://stripe.com/docs/api#payout_failures
|
|
|
|
|
|
|
44 |
*/
|
45 |
+
const FAILURE_ACCOUNT_CLOSED = 'account_closed';
|
46 |
+
const FAILURE_ACCOUNT_FROZEN = 'account_frozen';
|
47 |
+
const FAILURE_BANK_ACCOUNT_RESTRICTED = 'bank_account_restricted';
|
48 |
+
const FAILURE_BANK_OWNERSHIP_CHANGED = 'bank_ownership_changed';
|
49 |
+
const FAILURE_COULD_NOT_PROCESS = 'could_not_process';
|
50 |
+
const FAILURE_DEBIT_NOT_AUTHORIZED = 'debit_not_authorized';
|
51 |
+
const FAILURE_DECLINED = 'declined';
|
52 |
+
const FAILURE_INCORRECT_ACCOUNT_HOLDER_NAME = 'incorrect_account_holder_name';
|
53 |
+
const FAILURE_INSUFFICIENT_FUNDS = 'insufficient_funds';
|
54 |
+
const FAILURE_INVALID_ACCOUNT_NUMBER = 'invalid_account_number';
|
55 |
+
const FAILURE_INVALID_CURRENCY = 'invalid_currency';
|
56 |
+
const FAILURE_NO_ACCOUNT = 'no_account';
|
57 |
+
const FAILURE_UNSUPPORTED_CARD = 'unsupported_card';
|
58 |
|
59 |
/**
|
60 |
+
* Possible string representations of the payout methods.
|
61 |
+
* @link https://stripe.com/docs/api/payouts/object#payout_object-method
|
|
|
|
|
62 |
*/
|
63 |
+
const METHOD_STANDARD = 'standard';
|
64 |
+
const METHOD_INSTANT = 'instant';
|
|
|
|
|
65 |
|
66 |
/**
|
67 |
+
* Possible string representations of the status of the payout.
|
68 |
+
* @link https://stripe.com/docs/api/payouts/object#payout_object-status
|
|
|
|
|
69 |
*/
|
70 |
+
const STATUS_CANCELED = 'canceled';
|
71 |
+
const STATUS_IN_TRANSIT = 'in_transit';
|
72 |
+
const STATUS_FAILED = 'failed';
|
73 |
+
const STATUS_PAID = 'paid';
|
74 |
+
const STATUS_PENDING = 'pending';
|
75 |
|
76 |
/**
|
77 |
+
* Possible string representations of the type of payout.
|
78 |
+
* @link https://stripe.com/docs/api/payouts/object#payout_object-type
|
|
|
|
|
|
|
79 |
*/
|
80 |
+
const TYPE_BANK_ACCOUNT = 'bank_account';
|
81 |
+
const TYPE_CARD = 'card';
|
|
|
|
|
82 |
|
83 |
/**
|
84 |
* @return Payout The canceled payout.
|
90 |
$this->refreshFrom($response, $opts);
|
91 |
return $this;
|
92 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
}
|
includes/lib/Stripe/lib/Person.php
ADDED
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Person
|
7 |
+
*
|
8 |
+
* @package Stripe
|
9 |
+
*
|
10 |
+
* @property string $id
|
11 |
+
* @property string $object
|
12 |
+
* @property string $account
|
13 |
+
* @property mixed $address
|
14 |
+
* @property mixed $address_kana
|
15 |
+
* @property mixed $address_kanji
|
16 |
+
* @property int $created
|
17 |
+
* @property bool $deleted
|
18 |
+
* @property mixed $dob
|
19 |
+
* @property string $email
|
20 |
+
* @property string $first_name
|
21 |
+
* @property string $first_name_kana
|
22 |
+
* @property string $first_name_kanji
|
23 |
+
* @property string $gender
|
24 |
+
* @property bool $id_number_provided
|
25 |
+
* @property string $last_name
|
26 |
+
* @property string $last_name_kana
|
27 |
+
* @property string $last_name_kanji
|
28 |
+
* @property string $maiden_name
|
29 |
+
* @property StripeObject $metadata
|
30 |
+
* @property string $phone
|
31 |
+
* @property mixed $relationship
|
32 |
+
* @property mixed $requirements
|
33 |
+
* @property bool $ssn_last_4_provided
|
34 |
+
* @property mixed $verification
|
35 |
+
*/
|
36 |
+
class Person extends ApiResource
|
37 |
+
{
|
38 |
+
|
39 |
+
const OBJECT_NAME = "person";
|
40 |
+
|
41 |
+
use ApiOperations\Delete;
|
42 |
+
use ApiOperations\Update;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Possible string representations of a person's gender.
|
46 |
+
* @link https://stripe.com/docs/api/persons/object#person_object-gender
|
47 |
+
*/
|
48 |
+
const GENDER_MALE = 'male';
|
49 |
+
const GENDER_FEMALE = 'female';
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Possible string representations of a person's verification status.
|
53 |
+
* @link https://stripe.com/docs/api/persons/object#person_object-verification-status
|
54 |
+
*/
|
55 |
+
const VERIFICATION_STATUS_PENDING = 'pending';
|
56 |
+
const VERIFICATION_STATUS_UNVERIFIED = 'unverified';
|
57 |
+
const VERIFICATION_STATUS_VERIFIED = 'verified';
|
58 |
+
|
59 |
+
/**
|
60 |
+
* @return string The API URL for this Stripe account reversal.
|
61 |
+
*/
|
62 |
+
public function instanceUrl()
|
63 |
+
{
|
64 |
+
$id = $this['id'];
|
65 |
+
$account = $this['account'];
|
66 |
+
if (!$id) {
|
67 |
+
throw new Error\InvalidRequest(
|
68 |
+
"Could not determine which URL to request: " .
|
69 |
+
"class instance has invalid ID: $id",
|
70 |
+
null
|
71 |
+
);
|
72 |
+
}
|
73 |
+
$id = Util\Util::utf8($id);
|
74 |
+
$account = Util\Util::utf8($account);
|
75 |
+
|
76 |
+
$base = Account::classUrl();
|
77 |
+
$accountExtn = urlencode($account);
|
78 |
+
$extn = urlencode($id);
|
79 |
+
return "$base/$accountExtn/persons/$extn";
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* @param array|string $_id
|
84 |
+
* @param array|string|null $_opts
|
85 |
+
*
|
86 |
+
* @throws \Stripe\Error\InvalidRequest
|
87 |
+
*/
|
88 |
+
public static function retrieve($_id, $_opts = null)
|
89 |
+
{
|
90 |
+
$msg = "Persons cannot be accessed without an account ID. " .
|
91 |
+
"Retrieve a Person using \$account->retrievePerson('person_id') instead.";
|
92 |
+
throw new Error\InvalidRequest($msg, null);
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* @param string $_id
|
97 |
+
* @param array|null $_params
|
98 |
+
* @param array|string|null $_options
|
99 |
+
*
|
100 |
+
* @throws \Stripe\Error\InvalidRequest
|
101 |
+
*/
|
102 |
+
public static function update($_id, $_params = null, $_options = null)
|
103 |
+
{
|
104 |
+
$msg = "Persons cannot be accessed without an account ID. " .
|
105 |
+
"Retrieve a Person using \$account->retrievePerson('person_id') instead.";
|
106 |
+
throw new Error\InvalidRequest($msg, null);
|
107 |
+
}
|
108 |
+
}
|
includes/lib/Stripe/lib/Plan.php
CHANGED
@@ -7,85 +7,34 @@ namespace Stripe;
|
|
7 |
*
|
8 |
* @package Stripe
|
9 |
*
|
10 |
-
* @property $id
|
11 |
-
* @property $object
|
12 |
-
* @property $
|
13 |
-
* @property $
|
14 |
-
* @property $
|
15 |
-
* @property $
|
16 |
-
* @property $
|
17 |
-
* @property $
|
18 |
-
* @property
|
19 |
-
* @property $
|
20 |
-
* @property $
|
21 |
-
* @property $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
*/
|
23 |
class Plan extends ApiResource
|
24 |
{
|
25 |
-
/**
|
26 |
-
* @param array|string $id The ID of the plan to retrieve, or an options
|
27 |
-
* array containing an `id` key.
|
28 |
-
* @param array|string|null $opts
|
29 |
-
*
|
30 |
-
* @return Plan
|
31 |
-
*/
|
32 |
-
public static function retrieve($id, $opts = null)
|
33 |
-
{
|
34 |
-
return self::_retrieve($id, $opts);
|
35 |
-
}
|
36 |
|
37 |
-
|
38 |
-
* @param array|null $params
|
39 |
-
* @param array|string|null $opts
|
40 |
-
*
|
41 |
-
* @return Plan The created plan.
|
42 |
-
*/
|
43 |
-
public static function create($params = null, $opts = null)
|
44 |
-
{
|
45 |
-
return self::_create($params, $opts);
|
46 |
-
}
|
47 |
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
* @return Plan The updated plan.
|
54 |
-
*/
|
55 |
-
public static function update($id, $params = null, $options = null)
|
56 |
-
{
|
57 |
-
return self::_update($id, $params, $options);
|
58 |
-
}
|
59 |
-
|
60 |
-
/**
|
61 |
-
* @param array|null $params
|
62 |
-
* @param array|string|null $opts
|
63 |
-
*
|
64 |
-
* @return Plan The deleted plan.
|
65 |
-
*/
|
66 |
-
public function delete($params = null, $opts = null)
|
67 |
-
{
|
68 |
-
return $this->_delete($params, $opts);
|
69 |
-
}
|
70 |
-
|
71 |
-
/**
|
72 |
-
* @param array|string|null $opts
|
73 |
-
*
|
74 |
-
* @return Plan The saved plan.
|
75 |
-
*/
|
76 |
-
public function save($opts = null)
|
77 |
-
{
|
78 |
-
return $this->_save($opts);
|
79 |
-
}
|
80 |
-
|
81 |
-
/**
|
82 |
-
* @param array|null $params
|
83 |
-
* @param array|string|null $opts
|
84 |
-
*
|
85 |
-
* @return Collection of Plans
|
86 |
-
*/
|
87 |
-
public static function all($params = null, $opts = null)
|
88 |
-
{
|
89 |
-
return self::_all($params, $opts);
|
90 |
-
}
|
91 |
}
|
7 |
*
|
8 |
* @package Stripe
|
9 |
*
|
10 |
+
* @property string $id
|
11 |
+
* @property string $object
|
12 |
+
* @property bool $active
|
13 |
+
* @property string $aggregate_usage
|
14 |
+
* @property int $amount
|
15 |
+
* @property string $billing_scheme
|
16 |
+
* @property int $created
|
17 |
+
* @property string $currency
|
18 |
+
* @property string $interval
|
19 |
+
* @property int $interval_count
|
20 |
+
* @property bool $livemode
|
21 |
+
* @property StripeObject $metadata
|
22 |
+
* @property string $nickname
|
23 |
+
* @property string $product
|
24 |
+
* @property mixed $tiers
|
25 |
+
* @property string $tiers_mode
|
26 |
+
* @property mixed $transform_usage
|
27 |
+
* @property int $trial_period_days
|
28 |
+
* @property string $usage_type
|
29 |
*/
|
30 |
class Plan extends ApiResource
|
31 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
+
const OBJECT_NAME = "plan";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
+
use ApiOperations\All;
|
36 |
+
use ApiOperations\Create;
|
37 |
+
use ApiOperations\Delete;
|
38 |
+
use ApiOperations\Retrieve;
|
39 |
+
use ApiOperations\Update;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
}
|
includes/lib/Stripe/lib/Product.php
CHANGED
@@ -5,74 +5,43 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class Product
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class Product extends ApiResource
|
11 |
{
|
12 |
-
/**
|
13 |
-
* @param array|string $id The ID of the product to retrieve, or an options
|
14 |
-
* array contianing an `id` key.
|
15 |
-
* @param array|string|null $opts
|
16 |
-
*
|
17 |
-
* @return Product
|
18 |
-
*/
|
19 |
-
public static function retrieve($id, $opts = null)
|
20 |
-
{
|
21 |
-
return self::_retrieve($id, $opts);
|
22 |
-
}
|
23 |
|
24 |
-
|
25 |
-
* @param array|null $params
|
26 |
-
* @param array|string|null $opts
|
27 |
-
*
|
28 |
-
* @return Product The created Product.
|
29 |
-
*/
|
30 |
-
public static function create($params = null, $opts = null)
|
31 |
-
{
|
32 |
-
return self::_create($params, $opts);
|
33 |
-
}
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
* @return Product The updated product.
|
41 |
-
*/
|
42 |
-
public static function update($id, $params = null, $options = null)
|
43 |
-
{
|
44 |
-
return self::_update($id, $params, $options);
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* @param array|string|null $opts
|
49 |
-
*
|
50 |
-
* @return Product The saved Product.
|
51 |
-
*/
|
52 |
-
public function save($opts = null)
|
53 |
-
{
|
54 |
-
return $this->_save($opts);
|
55 |
-
}
|
56 |
-
|
57 |
-
/**
|
58 |
-
* @param array|null $params
|
59 |
-
* @param array|string|null $opts
|
60 |
-
*
|
61 |
-
* @return Collection of Products
|
62 |
-
*/
|
63 |
-
public static function all($params = null, $opts = null)
|
64 |
-
{
|
65 |
-
return self::_all($params, $opts);
|
66 |
-
}
|
67 |
|
68 |
/**
|
69 |
-
*
|
70 |
-
* @
|
71 |
-
*
|
72 |
-
* @return Product The deleted product.
|
73 |
*/
|
74 |
-
|
75 |
-
|
76 |
-
return $this->_delete($params, $opts);
|
77 |
-
}
|
78 |
}
|
5 |
/**
|
6 |
* Class Product
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property bool $active
|
11 |
+
* @property string[] $attributes
|
12 |
+
* @property string $caption
|
13 |
+
* @property int $created
|
14 |
+
* @property string[] $deactivate_on
|
15 |
+
* @property string $description
|
16 |
+
* @property string[] $images
|
17 |
+
* @property bool $livemode
|
18 |
+
* @property StripeObject $metadata
|
19 |
+
* @property string $name
|
20 |
+
* @property mixed $package_dimensions
|
21 |
+
* @property bool $shippable
|
22 |
+
* @property string $statement_descriptor
|
23 |
+
* @property string $type
|
24 |
+
* @property string $unit_label
|
25 |
+
* @property int $updated
|
26 |
+
* @property string $url
|
27 |
+
*
|
28 |
* @package Stripe
|
29 |
*/
|
30 |
class Product extends ApiResource
|
31 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
+
const OBJECT_NAME = "product";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
+
use ApiOperations\All;
|
36 |
+
use ApiOperations\Create;
|
37 |
+
use ApiOperations\Delete;
|
38 |
+
use ApiOperations\Retrieve;
|
39 |
+
use ApiOperations\Update;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
41 |
/**
|
42 |
+
* Possible string representations of the type of product.
|
43 |
+
* @link https://stripe.com/docs/api/service_products/object#service_product_object-type
|
|
|
|
|
44 |
*/
|
45 |
+
const TYPE_GOOD = 'good';
|
46 |
+
const TYPE_SERVICE = 'service';
|
|
|
|
|
47 |
}
|
includes/lib/Stripe/lib/Radar/EarlyFraudWarning.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Radar;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class EarlyFraudWarning
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property bool $actionable
|
11 |
+
* @property string $charge
|
12 |
+
* @property int $created
|
13 |
+
* @property string $fraud_type
|
14 |
+
* @property bool $livemode
|
15 |
+
*
|
16 |
+
* @package Stripe\Radar
|
17 |
+
*/
|
18 |
+
class EarlyFraudWarning extends \Stripe\ApiResource
|
19 |
+
{
|
20 |
+
const OBJECT_NAME = "radar.early_fraud_warning";
|
21 |
+
|
22 |
+
use \Stripe\ApiOperations\All;
|
23 |
+
use \Stripe\ApiOperations\Retrieve;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Possible string representations of an early fraud warning's fraud type.
|
27 |
+
* @link https://stripe.com/docs/api/early_fraud_warnings/object#early_fraud_warning_object-fraud_type
|
28 |
+
*/
|
29 |
+
const FRAUD_TYPE_CARD_NEVER_RECEIVED = 'card_never_received';
|
30 |
+
const FRAUD_TYPE_FRAUDULENT_CARD_APPLICATION = 'fraudulent_card_application';
|
31 |
+
const FRAUD_TYPE_MADE_WITH_COUNTERFEIT_CARD = 'made_with_counterfeit_card';
|
32 |
+
const FRAUD_TYPE_MADE_WITH_LOST_CARD = 'made_with_lost_card';
|
33 |
+
const FRAUD_TYPE_MADE_WITH_STOLEN_CARD = 'made_with_stolen_card';
|
34 |
+
const FRAUD_TYPE_MISC = 'misc';
|
35 |
+
const FRAUD_TYPE_UNAUTHORIZED_USE_OF_CARD = 'unauthorized_use_of_card';
|
36 |
+
}
|
includes/lib/Stripe/lib/Radar/ValueList.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Radar;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class ValueList
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property string $alias
|
11 |
+
* @property int $created
|
12 |
+
* @property string $created_by
|
13 |
+
* @property string $item_type
|
14 |
+
* @property Collection $list_items
|
15 |
+
* @property bool $livemode
|
16 |
+
* @property StripeObject $metadata
|
17 |
+
* @property mixed $name
|
18 |
+
* @property int $updated
|
19 |
+
* @property string $updated_by
|
20 |
+
*
|
21 |
+
* @package Stripe\Radar
|
22 |
+
*/
|
23 |
+
class ValueList extends \Stripe\ApiResource
|
24 |
+
{
|
25 |
+
const OBJECT_NAME = "radar.value_list";
|
26 |
+
|
27 |
+
use \Stripe\ApiOperations\All;
|
28 |
+
use \Stripe\ApiOperations\Create;
|
29 |
+
use \Stripe\ApiOperations\Delete;
|
30 |
+
use \Stripe\ApiOperations\Retrieve;
|
31 |
+
use \Stripe\ApiOperations\Update;
|
32 |
+
}
|
includes/lib/Stripe/lib/Radar/ValueListItem.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Radar;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class ValueListItem
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $created
|
11 |
+
* @property string $created_by
|
12 |
+
* @property string $list
|
13 |
+
* @property bool $livemode
|
14 |
+
* @property string $value
|
15 |
+
*
|
16 |
+
* @package Stripe\Radar
|
17 |
+
*/
|
18 |
+
class ValueListItem extends \Stripe\ApiResource
|
19 |
+
{
|
20 |
+
const OBJECT_NAME = "radar.value_list_item";
|
21 |
+
|
22 |
+
use \Stripe\ApiOperations\All;
|
23 |
+
use \Stripe\ApiOperations\Create;
|
24 |
+
use \Stripe\ApiOperations\Delete;
|
25 |
+
use \Stripe\ApiOperations\Retrieve;
|
26 |
+
}
|
includes/lib/Stripe/lib/Recipient.php
CHANGED
@@ -6,75 +6,32 @@ namespace Stripe;
|
|
6 |
* Class Recipient
|
7 |
*
|
8 |
* @package Stripe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
*/
|
10 |
class Recipient extends ApiResource
|
11 |
{
|
12 |
-
/**
|
13 |
-
* @param array|string $id The ID of the recipient to retrieve, or an
|
14 |
-
* options array containing an `id` key.
|
15 |
-
* @param array|string|null $opts
|
16 |
-
*
|
17 |
-
* @return Recipient
|
18 |
-
*/
|
19 |
-
public static function retrieve($id, $opts = null)
|
20 |
-
{
|
21 |
-
return self::_retrieve($id, $opts);
|
22 |
-
}
|
23 |
-
|
24 |
-
/**
|
25 |
-
* @param array|null $params
|
26 |
-
* @param array|string|null $opts
|
27 |
-
*
|
28 |
-
* @return Collection of Recipients
|
29 |
-
*/
|
30 |
-
public static function all($params = null, $opts = null)
|
31 |
-
{
|
32 |
-
return self::_all($params, $opts);
|
33 |
-
}
|
34 |
-
|
35 |
-
/**
|
36 |
-
* @param array|null $params
|
37 |
-
* @param array|string|null $opts
|
38 |
-
*
|
39 |
-
* @return Recipient The created recipient.
|
40 |
-
*/
|
41 |
-
public static function create($params = null, $opts = null)
|
42 |
-
{
|
43 |
-
return self::_create($params, $opts);
|
44 |
-
}
|
45 |
|
46 |
-
|
47 |
-
* @param string $id The ID of the recipient to update.
|
48 |
-
* @param array|null $params
|
49 |
-
* @param array|string|null $options
|
50 |
-
*
|
51 |
-
* @return Recipient The updated recipient.
|
52 |
-
*/
|
53 |
-
public static function update($id, $params = null, $options = null)
|
54 |
-
{
|
55 |
-
return self::_update($id, $params, $options);
|
56 |
-
}
|
57 |
-
|
58 |
-
/**
|
59 |
-
* @param array|string|null $opts
|
60 |
-
*
|
61 |
-
* @return Recipient The saved recipient.
|
62 |
-
*/
|
63 |
-
public function save($opts = null)
|
64 |
-
{
|
65 |
-
return $this->_save($opts);
|
66 |
-
}
|
67 |
-
|
68 |
-
/**
|
69 |
-
* @param array|null $params
|
70 |
-
*
|
71 |
-
* @return Recipient The deleted recipient.
|
72 |
-
*/
|
73 |
-
public function delete($params = null, $opts = null)
|
74 |
-
{
|
75 |
-
return $this->_delete($params, $opts);
|
76 |
-
}
|
77 |
|
|
|
|
|
|
|
|
|
|
|
78 |
|
79 |
/**
|
80 |
* @param array|null $params
|
@@ -83,9 +40,7 @@ class Recipient extends ApiResource
|
|
83 |
*/
|
84 |
public function transfers($params = null)
|
85 |
{
|
86 |
-
|
87 |
-
$params = array();
|
88 |
-
}
|
89 |
$params['recipient'] = $this->id;
|
90 |
$transfers = Transfer::all($params, $this->_opts);
|
91 |
return $transfers;
|
6 |
* Class Recipient
|
7 |
*
|
8 |
* @package Stripe
|
9 |
+
*
|
10 |
+
* @property string $id
|
11 |
+
* @property string $object
|
12 |
+
* @property mixed $active_account
|
13 |
+
* @property Collection $cards
|
14 |
+
* @property int $created
|
15 |
+
* @property string $default_card
|
16 |
+
* @property string $description
|
17 |
+
* @property string $email
|
18 |
+
* @property bool $livemode
|
19 |
+
* @property StripeObject $metadata
|
20 |
+
* @property string $migrated_to
|
21 |
+
* @property string $name
|
22 |
+
* @property string $rolled_back_from
|
23 |
+
* @property string $type
|
24 |
*/
|
25 |
class Recipient extends ApiResource
|
26 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
+
const OBJECT_NAME = "recipient";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
+
use ApiOperations\All;
|
31 |
+
use ApiOperations\Create;
|
32 |
+
use ApiOperations\Delete;
|
33 |
+
use ApiOperations\Retrieve;
|
34 |
+
use ApiOperations\Update;
|
35 |
|
36 |
/**
|
37 |
* @param array|null $params
|
40 |
*/
|
41 |
public function transfers($params = null)
|
42 |
{
|
43 |
+
$params = $params ?: [];
|
|
|
|
|
44 |
$params['recipient'] = $this->id;
|
45 |
$transfers = Transfer::all($params, $this->_opts);
|
46 |
return $transfers;
|
includes/lib/Stripe/lib/RecipientTransfer.php
CHANGED
@@ -20,7 +20,7 @@ namespace Stripe;
|
|
20 |
* @property string $failure_code
|
21 |
* @property string $failure_message
|
22 |
* @property bool $livemode
|
23 |
-
* @property
|
24 |
* @property string $method
|
25 |
* @property string $recipient
|
26 |
* @property mixed $reversals
|
@@ -35,4 +35,5 @@ namespace Stripe;
|
|
35 |
class RecipientTransfer extends ApiResource
|
36 |
{
|
37 |
|
|
|
38 |
}
|
20 |
* @property string $failure_code
|
21 |
* @property string $failure_message
|
22 |
* @property bool $livemode
|
23 |
+
* @property StripeObject $metadata
|
24 |
* @property string $method
|
25 |
* @property string $recipient
|
26 |
* @property mixed $reversals
|
35 |
class RecipientTransfer extends ApiResource
|
36 |
{
|
37 |
|
38 |
+
const OBJECT_NAME = "recipient_transfer";
|
39 |
}
|
includes/lib/Stripe/lib/Refund.php
CHANGED
@@ -8,73 +8,54 @@ namespace Stripe;
|
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
* @property int $amount
|
11 |
-
* @property
|
12 |
* @property string $charge
|
13 |
* @property int $created
|
14 |
* @property string $currency
|
15 |
-
* @property
|
16 |
-
* @property
|
17 |
-
* @property
|
|
|
|
|
|
|
|
|
18 |
* @property string $status
|
|
|
19 |
*
|
20 |
* @package Stripe
|
21 |
*/
|
22 |
class Refund extends ApiResource
|
23 |
{
|
24 |
|
25 |
-
|
26 |
-
* @param array|string $id The ID of the refund to retrieve, or an options
|
27 |
-
* array containing an `id` key.
|
28 |
-
* @param array|string|null $options
|
29 |
-
*
|
30 |
-
* @return Refund
|
31 |
-
*/
|
32 |
-
public static function retrieve($id, $options = null)
|
33 |
-
{
|
34 |
-
return self::_retrieve($id, $options);
|
35 |
-
}
|
36 |
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
*
|
42 |
-
* @return Refund The updated refund.
|
43 |
-
*/
|
44 |
-
public static function update($id, $params = null, $options = null)
|
45 |
-
{
|
46 |
-
return self::_update($id, $params, $options);
|
47 |
-
}
|
48 |
|
49 |
/**
|
50 |
-
*
|
51 |
-
* @
|
52 |
-
*
|
53 |
-
* @return Collection of Refunds
|
54 |
*/
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
}
|
59 |
|
60 |
/**
|
61 |
-
*
|
62 |
-
* @
|
63 |
-
*
|
64 |
-
* @return Refund The created refund.
|
65 |
*/
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
}
|
70 |
|
71 |
/**
|
72 |
-
*
|
73 |
-
*
|
74 |
-
* @return Refund The saved refund.
|
75 |
*/
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
}
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
* @property int $amount
|
11 |
+
* @property string $balance_transaction
|
12 |
* @property string $charge
|
13 |
* @property int $created
|
14 |
* @property string $currency
|
15 |
+
* @property string $description
|
16 |
+
* @property string $failure_balance_transaction
|
17 |
+
* @property string $failure_reason
|
18 |
+
* @property StripeObject $metadata
|
19 |
+
* @property string $reason
|
20 |
+
* @property string $receipt_number
|
21 |
+
* @property string $source_transfer_reversal
|
22 |
* @property string $status
|
23 |
+
* @property string $transfer_reversal
|
24 |
*
|
25 |
* @package Stripe
|
26 |
*/
|
27 |
class Refund extends ApiResource
|
28 |
{
|
29 |
|
30 |
+
const OBJECT_NAME = "refund";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
+
use ApiOperations\All;
|
33 |
+
use ApiOperations\Create;
|
34 |
+
use ApiOperations\Retrieve;
|
35 |
+
use ApiOperations\Update;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
/**
|
38 |
+
* Possible string representations of the failure reason.
|
39 |
+
* @link https://stripe.com/docs/api/refunds/object#refund_object-failure_reason
|
|
|
|
|
40 |
*/
|
41 |
+
const FAILURE_REASON = 'expired_or_canceled_card';
|
42 |
+
const FAILURE_REASON_LOST_OR_STOLEN_CARD = 'lost_or_stolen_card';
|
43 |
+
const FAILURE_REASON_UNKNOWN = 'unknown';
|
|
|
44 |
|
45 |
/**
|
46 |
+
* Possible string representations of the refund reason.
|
47 |
+
* @link https://stripe.com/docs/api/refunds/object#refund_object-reason
|
|
|
|
|
48 |
*/
|
49 |
+
const REASON_DUPLICATE = 'duplicate';
|
50 |
+
const REASON_FRAUDULENT = 'fraudulent';
|
51 |
+
const REASON_REQUESTED_BY_CUSTOMER = 'requested_by_customer';
|
|
|
52 |
|
53 |
/**
|
54 |
+
* Possible string representations of the refund status.
|
55 |
+
* @link https://stripe.com/docs/api/refunds/object#refund_object-status
|
|
|
56 |
*/
|
57 |
+
const STATUS_CANCELED = 'canceled';
|
58 |
+
const STATUS_FAILED = 'failed';
|
59 |
+
const STATUS_PENDING = 'pending';
|
60 |
+
const STATUS_SUCCEEDED = 'succeeded';
|
61 |
}
|
includes/lib/Stripe/lib/Reporting/ReportRun.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Reporting;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class ReportRun
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $created
|
11 |
+
* @property string $error
|
12 |
+
* @property bool $livemode
|
13 |
+
* @property mixed $parameters
|
14 |
+
* @property string $report_type
|
15 |
+
* @property mixed $result
|
16 |
+
* @property string $status
|
17 |
+
* @property int $succeeded_at
|
18 |
+
*
|
19 |
+
* @package Stripe\Reporting
|
20 |
+
*/
|
21 |
+
class ReportRun extends \Stripe\ApiResource
|
22 |
+
{
|
23 |
+
const OBJECT_NAME = "reporting.report_run";
|
24 |
+
|
25 |
+
use \Stripe\ApiOperations\All;
|
26 |
+
use \Stripe\ApiOperations\Create;
|
27 |
+
use \Stripe\ApiOperations\Retrieve;
|
28 |
+
}
|
includes/lib/Stripe/lib/Reporting/ReportType.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Reporting;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class ReportType
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $data_available_end
|
11 |
+
* @property int $data_available_start
|
12 |
+
* @property string $name
|
13 |
+
* @property int $updated
|
14 |
+
* @property string $version
|
15 |
+
*
|
16 |
+
* @package Stripe\Reporting
|
17 |
+
*/
|
18 |
+
class ReportType extends \Stripe\ApiResource
|
19 |
+
{
|
20 |
+
const OBJECT_NAME = "reporting.report_type";
|
21 |
+
|
22 |
+
use \Stripe\ApiOperations\All;
|
23 |
+
use \Stripe\ApiOperations\Retrieve;
|
24 |
+
}
|
includes/lib/Stripe/lib/RequestTelemetry.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class RequestTelemetry
|
7 |
+
*
|
8 |
+
* Tracks client request telemetry
|
9 |
+
* @package Stripe
|
10 |
+
*/
|
11 |
+
class RequestTelemetry
|
12 |
+
{
|
13 |
+
public $requestId;
|
14 |
+
public $requestDuration;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Initialize a new telemetry object.
|
18 |
+
*
|
19 |
+
* @param string $requestId The request's request ID.
|
20 |
+
* @param int $requestDuration The request's duration in milliseconds.
|
21 |
+
*/
|
22 |
+
public function __construct($requestId, $requestDuration)
|
23 |
+
{
|
24 |
+
$this->requestId = $requestId;
|
25 |
+
$this->requestDuration = $requestDuration;
|
26 |
+
}
|
27 |
+
}
|
includes/lib/Stripe/lib/Review.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Review
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property string $billing_zip
|
11 |
+
* @property string $charge
|
12 |
+
* @property string $closed_reason
|
13 |
+
* @property int $created
|
14 |
+
* @property string $ip_address
|
15 |
+
* @property mixed $ip_address_location
|
16 |
+
* @property bool $livemode
|
17 |
+
* @property bool $open
|
18 |
+
* @property string $opened_reason
|
19 |
+
* @property string $payment_intent
|
20 |
+
* @property string $reason
|
21 |
+
* @property mixed $session
|
22 |
+
*
|
23 |
+
* @package Stripe
|
24 |
+
*/
|
25 |
+
class Review extends ApiResource
|
26 |
+
{
|
27 |
+
const OBJECT_NAME = "review";
|
28 |
+
|
29 |
+
use ApiOperations\All;
|
30 |
+
use ApiOperations\Retrieve;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Possible string representations of the current, the opening or the closure reason of the review.
|
34 |
+
* Not all of these enumeration apply to all of the ´reason´ fields. Please consult the Review object to
|
35 |
+
* determine where these are apply.
|
36 |
+
* @link https://stripe.com/docs/api/radar/reviews/object
|
37 |
+
*/
|
38 |
+
const REASON_APPROVED = 'approved';
|
39 |
+
const REASON_DISPUTED = 'disputed';
|
40 |
+
const REASON_MANUAL = 'manual';
|
41 |
+
const REASON_REFUNDED = 'refunded';
|
42 |
+
const REASON_REFUNDED_AS_FRAUD = 'refunded_as_fraud';
|
43 |
+
const REASON_RULE = 'rule';
|
44 |
+
|
45 |
+
/**
|
46 |
+
* @param array|string|null $options
|
47 |
+
*
|
48 |
+
* @return Review The approved review.
|
49 |
+
*/
|
50 |
+
public function approve($params = null, $options = null)
|
51 |
+
{
|
52 |
+
$url = $this->instanceUrl() . '/approve';
|
53 |
+
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
54 |
+
$this->refreshFrom($response, $opts);
|
55 |
+
return $this;
|
56 |
+
}
|
57 |
+
}
|
includes/lib/Stripe/lib/SKU.php
CHANGED
@@ -5,74 +5,31 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class SKU
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class SKU extends ApiResource
|
11 |
{
|
12 |
-
/**
|
13 |
-
* @param array|string $id The ID of the SKU to retrieve, or an options
|
14 |
-
* array containing an `id` key.
|
15 |
-
* @param array|string|null $opts
|
16 |
-
*
|
17 |
-
* @return SKU
|
18 |
-
*/
|
19 |
-
public static function retrieve($id, $opts = null)
|
20 |
-
{
|
21 |
-
return self::_retrieve($id, $opts);
|
22 |
-
}
|
23 |
-
|
24 |
-
/**
|
25 |
-
* @param array|null $params
|
26 |
-
* @param array|string|null $opts
|
27 |
-
*
|
28 |
-
* @return SKU The created SKU.
|
29 |
-
*/
|
30 |
-
public static function create($params = null, $opts = null)
|
31 |
-
{
|
32 |
-
return self::_create($params, $opts);
|
33 |
-
}
|
34 |
-
|
35 |
-
/**
|
36 |
-
* @param string $id The ID of the SKU to update.
|
37 |
-
* @param array|null $params
|
38 |
-
* @param array|string|null $options
|
39 |
-
*
|
40 |
-
* @return SKU The updated SKU.
|
41 |
-
*/
|
42 |
-
public static function update($id, $params = null, $options = null)
|
43 |
-
{
|
44 |
-
return self::_update($id, $params, $options);
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* @param array|string|null $opts
|
49 |
-
*
|
50 |
-
* @return SKU The saved SKU.
|
51 |
-
*/
|
52 |
-
public function save($opts = null)
|
53 |
-
{
|
54 |
-
return $this->_save($opts);
|
55 |
-
}
|
56 |
|
57 |
-
|
58 |
-
* @param array|null $params
|
59 |
-
* @param array|string|null $opts
|
60 |
-
*
|
61 |
-
* @return Collection of SKUs
|
62 |
-
*/
|
63 |
-
public static function all($params = null, $opts = null)
|
64 |
-
{
|
65 |
-
return self::_all($params, $opts);
|
66 |
-
}
|
67 |
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
*/
|
74 |
-
public function delete($params = null, $opts = null)
|
75 |
-
{
|
76 |
-
return $this->_delete($params, $opts);
|
77 |
-
}
|
78 |
}
|
5 |
/**
|
6 |
* Class SKU
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property bool $active
|
11 |
+
* @property mixed $attributes
|
12 |
+
* @property int $created
|
13 |
+
* @property string $currency
|
14 |
+
* @property string $image
|
15 |
+
* @property mixed $inventory
|
16 |
+
* @property bool $livemode
|
17 |
+
* @property StripeObject $metadata
|
18 |
+
* @property mixed $package_dimensions
|
19 |
+
* @property int $price
|
20 |
+
* @property string $product
|
21 |
+
* @property int $updated
|
22 |
+
*
|
23 |
* @package Stripe
|
24 |
*/
|
25 |
class SKU extends ApiResource
|
26 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
+
const OBJECT_NAME = "sku";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
+
use ApiOperations\All;
|
31 |
+
use ApiOperations\Create;
|
32 |
+
use ApiOperations\Delete;
|
33 |
+
use ApiOperations\Retrieve;
|
34 |
+
use ApiOperations\Update;
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
includes/lib/Stripe/lib/SetupIntent.php
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class SetupIntent
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property string $application
|
11 |
+
* @property string $client_secret
|
12 |
+
* @property int $created
|
13 |
+
* @property string $customer
|
14 |
+
* @property string $description
|
15 |
+
* @property mixed $last_setup_error
|
16 |
+
* @property bool $livemode
|
17 |
+
* @property StripeObject $metadata
|
18 |
+
* @property mixed $next_action
|
19 |
+
* @property string $on_behalf_of
|
20 |
+
* @property string $payment_method
|
21 |
+
* @property string[] $payment_method_types
|
22 |
+
* @property string $status
|
23 |
+
*
|
24 |
+
* @package Stripe
|
25 |
+
*/
|
26 |
+
class SetupIntent extends ApiResource
|
27 |
+
{
|
28 |
+
|
29 |
+
const OBJECT_NAME = "setup_intent";
|
30 |
+
|
31 |
+
use ApiOperations\All;
|
32 |
+
use ApiOperations\Create;
|
33 |
+
use ApiOperations\Retrieve;
|
34 |
+
use ApiOperations\Update;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* These constants are possible representations of the status field.
|
38 |
+
*
|
39 |
+
* @link https://stripe.com/docs/api/setup_intents/object#setup_intent_object-status
|
40 |
+
*/
|
41 |
+
const STATUS_CANCELED = 'canceled';
|
42 |
+
const STATUS_PROCESSING = 'processing';
|
43 |
+
const STATUS_REQUIRES_ACTION = 'requires_action';
|
44 |
+
const STATUS_REQUIRES_CONFIRMATION = 'requires_confirmation';
|
45 |
+
const STATUS_REQUIRES_PAYMENT_METHOD = 'requires_payment_method';
|
46 |
+
const STATUS_SUCCEEDED = 'succeeded';
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @param array|null $params
|
50 |
+
* @param array|string|null $options
|
51 |
+
*
|
52 |
+
* @return SetupIntent The canceled setup intent.
|
53 |
+
*/
|
54 |
+
public function cancel($params = null, $options = null)
|
55 |
+
{
|
56 |
+
$url = $this->instanceUrl() . '/cancel';
|
57 |
+
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
58 |
+
$this->refreshFrom($response, $opts);
|
59 |
+
return $this;
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* @param array|null $params
|
64 |
+
* @param array|string|null $options
|
65 |
+
*
|
66 |
+
* @return SetupIntent The confirmed setup intent.
|
67 |
+
*/
|
68 |
+
public function confirm($params = null, $options = null)
|
69 |
+
{
|
70 |
+
$url = $this->instanceUrl() . '/confirm';
|
71 |
+
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
72 |
+
$this->refreshFrom($response, $opts);
|
73 |
+
return $this;
|
74 |
+
}
|
75 |
+
}
|
includes/lib/Stripe/lib/Sigma/ScheduledQueryRun.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Sigma;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Authorization
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $created
|
11 |
+
* @property int $data_load_time
|
12 |
+
* @property string $error
|
13 |
+
* @property \Stripe\FileUpload $file
|
14 |
+
* @property bool $livemode
|
15 |
+
* @property int $result_available_until
|
16 |
+
* @property string $sql
|
17 |
+
* @property string $status
|
18 |
+
* @property string $title
|
19 |
+
*
|
20 |
+
* @package Stripe\Sigma
|
21 |
+
*/
|
22 |
+
class ScheduledQueryRun extends \Stripe\ApiResource
|
23 |
+
{
|
24 |
+
const OBJECT_NAME = "scheduled_query_run";
|
25 |
+
|
26 |
+
use \Stripe\ApiOperations\All;
|
27 |
+
use \Stripe\ApiOperations\Retrieve;
|
28 |
+
|
29 |
+
public static function classUrl()
|
30 |
+
{
|
31 |
+
return "/v1/sigma/scheduled_query_runs";
|
32 |
+
}
|
33 |
+
}
|
includes/lib/Stripe/lib/SingletonApiResource.php
CHANGED
@@ -22,7 +22,9 @@ abstract class SingletonApiResource extends ApiResource
|
|
22 |
*/
|
23 |
public static function classUrl()
|
24 |
{
|
25 |
-
|
|
|
|
|
26 |
return "/v1/${base}";
|
27 |
}
|
28 |
|
22 |
*/
|
23 |
public static function classUrl()
|
24 |
{
|
25 |
+
// Replace dots with slashes for namespaced resources, e.g. if the object's name is
|
26 |
+
// "foo.bar", then its URL will be "/v1/foo/bar".
|
27 |
+
$base = str_replace('.', '/', static::OBJECT_NAME);
|
28 |
return "/v1/${base}";
|
29 |
}
|
30 |
|
includes/lib/Stripe/lib/Source.php
CHANGED
@@ -5,73 +5,84 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class Source
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class Source extends ApiResource
|
11 |
{
|
12 |
-
/**
|
13 |
-
* @param array|string $id The ID of the source to retrieve, or an options
|
14 |
-
* array containing an `id` key.
|
15 |
-
* @param array|string|null $opts
|
16 |
-
*
|
17 |
-
* @return Source
|
18 |
-
*/
|
19 |
-
public static function retrieve($id, $opts = null)
|
20 |
-
{
|
21 |
-
return self::_retrieve($id, $opts);
|
22 |
-
}
|
23 |
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
*/
|
30 |
-
public static function all($params = null, $opts = null)
|
31 |
-
{
|
32 |
-
return self::_all($params, $opts);
|
33 |
-
}
|
34 |
|
35 |
/**
|
36 |
-
*
|
37 |
-
* @
|
38 |
-
*
|
39 |
-
* @return Source The created Source.
|
40 |
*/
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
|
46 |
/**
|
47 |
-
*
|
48 |
-
* @
|
49 |
-
* @param array|string|null $options
|
50 |
-
*
|
51 |
-
* @return Source The updated source.
|
52 |
*/
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
|
|
57 |
|
58 |
/**
|
59 |
-
*
|
60 |
-
*
|
61 |
-
* @return Source The saved source.
|
62 |
*/
|
63 |
-
|
64 |
-
|
65 |
-
return $this->_save($opts);
|
66 |
-
}
|
67 |
|
68 |
/**
|
69 |
* @param array|null $params
|
70 |
-
* @param array|string|null $
|
71 |
*
|
72 |
-
* @return Source The
|
73 |
*/
|
74 |
-
public function
|
75 |
{
|
76 |
self::_validateParams($params);
|
77 |
|
@@ -93,9 +104,8 @@ class Source extends ApiResource
|
|
93 |
$this->refreshFrom($response, $opts);
|
94 |
return $this;
|
95 |
} else {
|
96 |
-
$message = "
|
97 |
-
. "
|
98 |
-
. "appear to be currently attached to a customer object.";
|
99 |
throw new Error\Api($message);
|
100 |
}
|
101 |
}
|
@@ -104,7 +114,35 @@ class Source extends ApiResource
|
|
104 |
* @param array|null $params
|
105 |
* @param array|string|null $options
|
106 |
*
|
107 |
-
* @return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
*/
|
109 |
public function verify($params = null, $options = null)
|
110 |
{
|
5 |
/**
|
6 |
* Class Source
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property mixed $ach_credit_transfer
|
11 |
+
* @property mixed $ach_debit
|
12 |
+
* @property mixed $alipay
|
13 |
+
* @property int $amount
|
14 |
+
* @property mixed $bancontact
|
15 |
+
* @property mixed $card
|
16 |
+
* @property mixed $card_present
|
17 |
+
* @property string $client_secret
|
18 |
+
* @property mixed $code_verification
|
19 |
+
* @property int $created
|
20 |
+
* @property string $currency
|
21 |
+
* @property string $customer
|
22 |
+
* @property mixed $eps
|
23 |
+
* @property string $flow
|
24 |
+
* @property mixed $giropay
|
25 |
+
* @property mixed $ideal
|
26 |
+
* @property bool $livemode
|
27 |
+
* @property StripeObject $metadata
|
28 |
+
* @property mixed $multibanco
|
29 |
+
* @property mixed $owner
|
30 |
+
* @property mixed $p24
|
31 |
+
* @property mixed $receiver
|
32 |
+
* @property mixed $redirect
|
33 |
+
* @property mixed $sepa_debit
|
34 |
+
* @property mixed $sofort
|
35 |
+
* @property string $statement_descriptor
|
36 |
+
* @property string $status
|
37 |
+
* @property mixed $three_d_secure
|
38 |
+
* @property string $type
|
39 |
+
* @property string $usage
|
40 |
+
* @property mixed $wechat
|
41 |
+
|
42 |
* @package Stripe
|
43 |
*/
|
44 |
class Source extends ApiResource
|
45 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
+
const OBJECT_NAME = "source";
|
48 |
+
|
49 |
+
use ApiOperations\Create;
|
50 |
+
use ApiOperations\Retrieve;
|
51 |
+
use ApiOperations\Update;
|
|
|
|
|
|
|
|
|
|
|
52 |
|
53 |
/**
|
54 |
+
* Possible string representations of source flows.
|
55 |
+
* @link https://stripe.com/docs/api#source_object-flow
|
|
|
|
|
56 |
*/
|
57 |
+
const FLOW_REDIRECT = 'redirect';
|
58 |
+
const FLOW_RECEIVER = 'receiver';
|
59 |
+
const FLOW_CODE_VERIFICATION = 'code_verification';
|
60 |
+
const FLOW_NONE = 'none';
|
61 |
|
62 |
/**
|
63 |
+
* Possible string representations of source statuses.
|
64 |
+
* @link https://stripe.com/docs/api#source_object-status
|
|
|
|
|
|
|
65 |
*/
|
66 |
+
const STATUS_CANCELED = 'canceled';
|
67 |
+
const STATUS_CHARGEABLE = 'chargeable';
|
68 |
+
const STATUS_CONSUMED = 'consumed';
|
69 |
+
const STATUS_FAILED = 'failed';
|
70 |
+
const STATUS_PENDING = 'pending';
|
71 |
|
72 |
/**
|
73 |
+
* Possible string representations of source usage.
|
74 |
+
* @link https://stripe.com/docs/api#source_object-usage
|
|
|
75 |
*/
|
76 |
+
const USAGE_REUSABLE = 'reusable';
|
77 |
+
const USAGE_SINGLE_USE = 'single_use';
|
|
|
|
|
78 |
|
79 |
/**
|
80 |
* @param array|null $params
|
81 |
+
* @param array|string|null $options
|
82 |
*
|
83 |
+
* @return Source The detached source.
|
84 |
*/
|
85 |
+
public function detach($params = null, $options = null)
|
86 |
{
|
87 |
self::_validateParams($params);
|
88 |
|
104 |
$this->refreshFrom($response, $opts);
|
105 |
return $this;
|
106 |
} else {
|
107 |
+
$message = "This source object does not appear to be currently attached "
|
108 |
+
. "to a customer object.";
|
|
|
109 |
throw new Error\Api($message);
|
110 |
}
|
111 |
}
|
114 |
* @param array|null $params
|
115 |
* @param array|string|null $options
|
116 |
*
|
117 |
+
* @return Source The detached source.
|
118 |
+
*
|
119 |
+
* @deprecated Use the `detach` method instead.
|
120 |
+
*/
|
121 |
+
public function delete($params = null, $options = null)
|
122 |
+
{
|
123 |
+
$this->detach($params, $options);
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* @param array|null $params
|
128 |
+
* @param array|string|null $options
|
129 |
+
*
|
130 |
+
* @return Collection The list of source transactions.
|
131 |
+
*/
|
132 |
+
public function sourceTransactions($params = null, $options = null)
|
133 |
+
{
|
134 |
+
$url = $this->instanceUrl() . '/source_transactions';
|
135 |
+
list($response, $opts) = $this->_request('get', $url, $params, $options);
|
136 |
+
$obj = Util\Util::convertToStripeObject($response, $opts);
|
137 |
+
$obj->setLastResponse($response);
|
138 |
+
return $obj;
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* @param array|null $params
|
143 |
+
* @param array|string|null $options
|
144 |
+
*
|
145 |
+
* @return Source The verified source.
|
146 |
*/
|
147 |
public function verify($params = null, $options = null)
|
148 |
{
|
includes/lib/Stripe/lib/SourceTransaction.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class SourceTransaction
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount
|
11 |
+
* @property int $created
|
12 |
+
* @property string $customer_data
|
13 |
+
* @property string $currency
|
14 |
+
* @property string $type
|
15 |
+
* @property mixed $ach_credit_transfer
|
16 |
+
*
|
17 |
+
* @package Stripe
|
18 |
+
*/
|
19 |
+
class SourceTransaction extends ApiResource
|
20 |
+
{
|
21 |
+
|
22 |
+
const OBJECT_NAME = "source_transaction";
|
23 |
+
}
|
includes/lib/Stripe/lib/Stripe.php
CHANGED
@@ -22,7 +22,7 @@ class Stripe
|
|
22 |
public static $connectBase = 'https://connect.stripe.com';
|
23 |
|
24 |
// @var string The base URL for the Stripe API uploads endpoint.
|
25 |
-
public static $apiUploadBase = 'https://
|
26 |
|
27 |
// @var string|null The version of the Stripe API to use for requests.
|
28 |
public static $apiVersion = null;
|
@@ -30,6 +30,9 @@ class Stripe
|
|
30 |
// @var string|null The account ID for connected accounts requests.
|
31 |
public static $accountId = null;
|
32 |
|
|
|
|
|
|
|
33 |
// @var boolean Defaults to true.
|
34 |
public static $verifySslCerts = true;
|
35 |
|
@@ -40,7 +43,19 @@ class Stripe
|
|
40 |
// produce messages.
|
41 |
public static $logger = null;
|
42 |
|
43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
|
45 |
/**
|
46 |
* @return string The API key used for requests.
|
@@ -116,6 +131,30 @@ class Stripe
|
|
116 |
self::$apiVersion = $apiVersion;
|
117 |
}
|
118 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
/**
|
120 |
* @return boolean
|
121 |
*/
|
@@ -163,13 +202,64 @@ class Stripe
|
|
163 |
* @param string $appVersion The application's version
|
164 |
* @param string $appUrl The application's URL
|
165 |
*/
|
166 |
-
public static function setAppInfo($appName, $appVersion = null, $appUrl = null)
|
167 |
{
|
168 |
-
|
169 |
-
self::$appInfo = array();
|
170 |
-
}
|
171 |
self::$appInfo['name'] = $appName;
|
172 |
-
self::$appInfo['
|
173 |
self::$appInfo['url'] = $appUrl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
}
|
175 |
}
|
22 |
public static $connectBase = 'https://connect.stripe.com';
|
23 |
|
24 |
// @var string The base URL for the Stripe API uploads endpoint.
|
25 |
+
public static $apiUploadBase = 'https://files.stripe.com';
|
26 |
|
27 |
// @var string|null The version of the Stripe API to use for requests.
|
28 |
public static $apiVersion = null;
|
30 |
// @var string|null The account ID for connected accounts requests.
|
31 |
public static $accountId = null;
|
32 |
|
33 |
+
// @var string Path to the CA bundle used to verify SSL certificates
|
34 |
+
public static $caBundlePath = null;
|
35 |
+
|
36 |
// @var boolean Defaults to true.
|
37 |
public static $verifySslCerts = true;
|
38 |
|
43 |
// produce messages.
|
44 |
public static $logger = null;
|
45 |
|
46 |
+
// @var int Maximum number of request retries
|
47 |
+
public static $maxNetworkRetries = 0;
|
48 |
+
|
49 |
+
// @var boolean Whether client telemetry is enabled. Defaults to false.
|
50 |
+
public static $enableTelemetry = true;
|
51 |
+
|
52 |
+
// @var float Maximum delay between retries, in seconds
|
53 |
+
private static $maxNetworkRetryDelay = 2.0;
|
54 |
+
|
55 |
+
// @var float Initial delay between retries, in seconds
|
56 |
+
private static $initialNetworkRetryDelay = 0.5;
|
57 |
+
|
58 |
+
const VERSION = '6.40.0';
|
59 |
|
60 |
/**
|
61 |
* @return string The API key used for requests.
|
131 |
self::$apiVersion = $apiVersion;
|
132 |
}
|
133 |
|
134 |
+
/**
|
135 |
+
* @return string
|
136 |
+
*/
|
137 |
+
private static function getDefaultCABundlePath()
|
138 |
+
{
|
139 |
+
return realpath(dirname(__FILE__) . '/../data/ca-certificates.crt');
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* @return string
|
144 |
+
*/
|
145 |
+
public static function getCABundlePath()
|
146 |
+
{
|
147 |
+
return self::$caBundlePath ?: self::getDefaultCABundlePath();
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* @param string $caBundlePath
|
152 |
+
*/
|
153 |
+
public static function setCABundlePath($caBundlePath)
|
154 |
+
{
|
155 |
+
self::$caBundlePath = $caBundlePath;
|
156 |
+
}
|
157 |
+
|
158 |
/**
|
159 |
* @return boolean
|
160 |
*/
|
202 |
* @param string $appVersion The application's version
|
203 |
* @param string $appUrl The application's URL
|
204 |
*/
|
205 |
+
public static function setAppInfo($appName, $appVersion = null, $appUrl = null, $appPartnerId = null)
|
206 |
{
|
207 |
+
self::$appInfo = self::$appInfo ?: [];
|
|
|
|
|
208 |
self::$appInfo['name'] = $appName;
|
209 |
+
self::$appInfo['partner_id'] = $appPartnerId;
|
210 |
self::$appInfo['url'] = $appUrl;
|
211 |
+
self::$appInfo['version'] = $appVersion;
|
212 |
+
}
|
213 |
+
|
214 |
+
/**
|
215 |
+
* @return int Maximum number of request retries
|
216 |
+
*/
|
217 |
+
public static function getMaxNetworkRetries()
|
218 |
+
{
|
219 |
+
return self::$maxNetworkRetries;
|
220 |
+
}
|
221 |
+
|
222 |
+
/**
|
223 |
+
* @param int $maxNetworkRetries Maximum number of request retries
|
224 |
+
*/
|
225 |
+
public static function setMaxNetworkRetries($maxNetworkRetries)
|
226 |
+
{
|
227 |
+
self::$maxNetworkRetries = $maxNetworkRetries;
|
228 |
+
}
|
229 |
+
|
230 |
+
/**
|
231 |
+
* @return float Maximum delay between retries, in seconds
|
232 |
+
*/
|
233 |
+
public static function getMaxNetworkRetryDelay()
|
234 |
+
{
|
235 |
+
return self::$maxNetworkRetryDelay;
|
236 |
+
}
|
237 |
+
|
238 |
+
/**
|
239 |
+
* @return float Initial delay between retries, in seconds
|
240 |
+
*/
|
241 |
+
public static function getInitialNetworkRetryDelay()
|
242 |
+
{
|
243 |
+
return self::$initialNetworkRetryDelay;
|
244 |
+
}
|
245 |
+
|
246 |
+
/**
|
247 |
+
* @return bool Whether client telemetry is enabled
|
248 |
+
*/
|
249 |
+
public static function getEnableTelemetry()
|
250 |
+
{
|
251 |
+
return self::$enableTelemetry;
|
252 |
+
}
|
253 |
+
|
254 |
+
/**
|
255 |
+
* @param bool $enableTelemetry Enables client telemetry.
|
256 |
+
*
|
257 |
+
* Client telemetry enables timing and request metrics to be sent back to Stripe as an HTTP Header
|
258 |
+
* with the current request. This enables Stripe to do latency and metrics analysis without adding extra
|
259 |
+
* overhead (such as extra network calls) on the client.
|
260 |
+
*/
|
261 |
+
public static function setEnableTelemetry($enableTelemetry)
|
262 |
+
{
|
263 |
+
self::$enableTelemetry = $enableTelemetry;
|
264 |
}
|
265 |
}
|
includes/lib/Stripe/lib/StripeObject.php
CHANGED
@@ -2,120 +2,151 @@
|
|
2 |
|
3 |
namespace Stripe;
|
4 |
|
5 |
-
use ArrayAccess;
|
6 |
-
use InvalidArgumentException;
|
7 |
-
|
8 |
/**
|
9 |
* Class StripeObject
|
10 |
*
|
11 |
* @package Stripe
|
12 |
*/
|
13 |
-
class StripeObject implements ArrayAccess, JsonSerializable
|
14 |
{
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
* the parent class's URL (e.g. metadata).
|
23 |
-
*/
|
24 |
-
public static $nestedUpdatableAttributes;
|
25 |
-
|
26 |
-
public static function init()
|
27 |
-
{
|
28 |
-
self::$permanentAttributes = new Util\Set(array('_opts', 'id'));
|
29 |
-
self::$nestedUpdatableAttributes = new Util\Set(array(
|
30 |
-
'metadata', 'legal_entity', 'address', 'dob', 'payout_schedule', 'transfer_schedule', 'verification',
|
31 |
-
'tos_acceptance', 'personal_address', 'address_kana', 'address_kanji', 'shipping',
|
32 |
-
// will make the array into an AttachedObject: weird, but works for now
|
33 |
-
'additional_owners', 0, 1, 2, 3, 4, // Max 3, but leave the 4th so errors work properly
|
34 |
-
'inventory',
|
35 |
-
'owner',
|
36 |
-
));
|
37 |
-
}
|
38 |
|
39 |
/**
|
40 |
-
* @return
|
|
|
41 |
*/
|
42 |
-
public function
|
43 |
{
|
44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
}
|
46 |
|
47 |
/**
|
48 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
*
|
50 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
*/
|
52 |
-
public function
|
53 |
{
|
54 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
}
|
56 |
|
57 |
-
protected $_opts;
|
58 |
-
protected $_values;
|
59 |
-
protected $_unsavedValues;
|
60 |
-
protected $_transientValues;
|
61 |
-
protected $_retrieveOptions;
|
62 |
-
protected $_lastResponse;
|
63 |
-
|
64 |
public function __construct($id = null, $opts = null)
|
65 |
{
|
66 |
-
$this->
|
67 |
-
$this->
|
|
|
|
|
68 |
$this->_unsavedValues = new Util\Set();
|
69 |
$this->_transientValues = new Util\Set();
|
70 |
-
|
71 |
-
$this->_retrieveOptions = array();
|
72 |
-
if (is_array($id)) {
|
73 |
-
foreach ($id as $key => $value) {
|
74 |
-
if ($key != 'id') {
|
75 |
-
$this->_retrieveOptions[$key] = $value;
|
76 |
-
}
|
77 |
-
}
|
78 |
-
$id = $id['id'];
|
79 |
-
}
|
80 |
-
|
81 |
if ($id !== null) {
|
82 |
-
$this->id = $id;
|
83 |
}
|
84 |
}
|
85 |
|
86 |
// Standard accessor magic methods
|
87 |
public function __set($k, $v)
|
88 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
if ($v === "") {
|
90 |
-
throw new InvalidArgumentException(
|
91 |
'You cannot set \''.$k.'\'to an empty string. '
|
92 |
.'We interpret empty strings as NULL in requests. '
|
93 |
.'You may set obj->'.$k.' = NULL to delete the property'
|
94 |
);
|
95 |
}
|
96 |
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
} else {
|
101 |
-
// TODO: may want to clear from $_transientValues (Won't be user-visible).
|
102 |
-
$this->_values[$k] = $v;
|
103 |
-
}
|
104 |
-
if (!self::$permanentAttributes->includes($k)) {
|
105 |
-
$this->_unsavedValues->add($k);
|
106 |
-
}
|
107 |
}
|
108 |
|
109 |
public function __isset($k)
|
110 |
{
|
111 |
return isset($this->_values[$k]);
|
112 |
}
|
|
|
113 |
public function __unset($k)
|
114 |
{
|
115 |
unset($this->_values[$k]);
|
116 |
$this->_transientValues->add($k);
|
117 |
$this->_unsavedValues->discard($k);
|
118 |
}
|
|
|
119 |
public function &__get($k)
|
120 |
{
|
121 |
// function should return a reference, using $nullval to return a reference to null
|
@@ -140,6 +171,12 @@ class StripeObject implements ArrayAccess, JsonSerializable
|
|
140 |
}
|
141 |
}
|
142 |
|
|
|
|
|
|
|
|
|
|
|
|
|
143 |
// ArrayAccess methods
|
144 |
public function offsetSet($k, $v)
|
145 |
{
|
@@ -155,25 +192,37 @@ class StripeObject implements ArrayAccess, JsonSerializable
|
|
155 |
{
|
156 |
unset($this->$k);
|
157 |
}
|
|
|
158 |
public function offsetGet($k)
|
159 |
{
|
160 |
return array_key_exists($k, $this->_values) ? $this->_values[$k] : null;
|
161 |
}
|
162 |
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
public function keys()
|
164 |
{
|
165 |
return array_keys($this->_values);
|
166 |
}
|
167 |
|
|
|
|
|
|
|
|
|
|
|
168 |
/**
|
169 |
* This unfortunately needs to be public to be used in Util\Util
|
170 |
*
|
171 |
* @param array $values
|
172 |
-
* @param array $opts
|
173 |
*
|
174 |
-
* @return
|
175 |
*/
|
176 |
-
public static function constructFrom($values, $opts)
|
177 |
{
|
178 |
$obj = new static(isset($values['id']) ? $values['id'] : null);
|
179 |
$obj->refreshFrom($values, $opts);
|
@@ -184,16 +233,18 @@ class StripeObject implements ArrayAccess, JsonSerializable
|
|
184 |
* Refreshes this object using the provided values.
|
185 |
*
|
186 |
* @param array $values
|
187 |
-
* @param array|Util\RequestOptions $opts
|
188 |
* @param boolean $partial Defaults to false.
|
189 |
*/
|
190 |
public function refreshFrom($values, $opts, $partial = false)
|
191 |
{
|
192 |
-
|
193 |
-
$opts = Util\RequestOptions::parse($opts);
|
194 |
-
}
|
195 |
|
196 |
-
$this->
|
|
|
|
|
|
|
|
|
197 |
|
198 |
// Wipe old state before setting new. This is useful for e.g. updating a
|
199 |
// customer, where there is no persistent card parameter. Mark those values
|
@@ -201,30 +252,43 @@ class StripeObject implements ArrayAccess, JsonSerializable
|
|
201 |
if ($partial) {
|
202 |
$removed = new Util\Set();
|
203 |
} else {
|
204 |
-
$removed = array_diff(array_keys($this->_values), array_keys($values));
|
205 |
}
|
206 |
|
207 |
-
foreach ($removed as $k) {
|
208 |
-
if (self::$permanentAttributes->includes($k)) {
|
209 |
-
continue;
|
210 |
-
}
|
211 |
-
|
212 |
unset($this->$k);
|
213 |
}
|
214 |
|
|
|
215 |
foreach ($values as $k => $v) {
|
216 |
-
|
217 |
-
|
218 |
-
|
|
|
219 |
|
220 |
-
|
221 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
} else {
|
223 |
$this->_values[$k] = Util\Util::convertToStripeObject($v, $opts);
|
224 |
}
|
225 |
-
|
226 |
-
|
227 |
-
|
|
|
228 |
}
|
229 |
}
|
230 |
|
@@ -232,33 +296,107 @@ class StripeObject implements ArrayAccess, JsonSerializable
|
|
232 |
* @return array A recursive mapping of attributes to values for this object,
|
233 |
* including the proper value for deleted attributes.
|
234 |
*/
|
235 |
-
public function serializeParameters()
|
236 |
{
|
237 |
-
$
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
246 |
}
|
247 |
}
|
248 |
|
249 |
-
//
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
258 |
}
|
|
|
|
|
|
|
259 |
}
|
260 |
-
|
261 |
-
return $params;
|
262 |
}
|
263 |
|
264 |
public function jsonSerialize()
|
@@ -268,11 +406,7 @@ class StripeObject implements ArrayAccess, JsonSerializable
|
|
268 |
|
269 |
public function __toJSON()
|
270 |
{
|
271 |
-
|
272 |
-
return json_encode($this->__toArray(true), JSON_PRETTY_PRINT);
|
273 |
-
} else {
|
274 |
-
return json_encode($this->__toArray(true));
|
275 |
-
}
|
276 |
}
|
277 |
|
278 |
public function __toString()
|
@@ -289,6 +423,101 @@ class StripeObject implements ArrayAccess, JsonSerializable
|
|
289 |
return $this->_values;
|
290 |
}
|
291 |
}
|
292 |
-
}
|
293 |
|
294 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
namespace Stripe;
|
4 |
|
|
|
|
|
|
|
5 |
/**
|
6 |
* Class StripeObject
|
7 |
*
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
+
class StripeObject implements \ArrayAccess, \Countable, \JsonSerializable
|
11 |
{
|
12 |
+
protected $_opts;
|
13 |
+
protected $_originalValues;
|
14 |
+
protected $_values;
|
15 |
+
protected $_unsavedValues;
|
16 |
+
protected $_transientValues;
|
17 |
+
protected $_retrieveOptions;
|
18 |
+
protected $_lastResponse;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
/**
|
21 |
+
* @return Util\Set Attributes that should not be sent to the API because
|
22 |
+
* they're not updatable (e.g. ID).
|
23 |
*/
|
24 |
+
public static function getPermanentAttributes()
|
25 |
{
|
26 |
+
static $permanentAttributes = null;
|
27 |
+
if ($permanentAttributes === null) {
|
28 |
+
$permanentAttributes = new Util\Set([
|
29 |
+
'id',
|
30 |
+
]);
|
31 |
+
}
|
32 |
+
return $permanentAttributes;
|
33 |
}
|
34 |
|
35 |
/**
|
36 |
+
* Additive objects are subobjects in the API that don't have the same
|
37 |
+
* semantics as most subobjects, which are fully replaced when they're set.
|
38 |
+
* This is best illustrated by example. The `source` parameter sent when
|
39 |
+
* updating a subscription is *not* additive; if we set it:
|
40 |
+
*
|
41 |
+
* source[object]=card&source[number]=123
|
42 |
+
*
|
43 |
+
* We expect the old `source` object to have been overwritten completely. If
|
44 |
+
* the previous source had an `address_state` key associated with it and we
|
45 |
+
* didn't send one this time, that value of `address_state` is gone.
|
46 |
*
|
47 |
+
* By contrast, additive objects are those that will have new data added to
|
48 |
+
* them while keeping any existing data in place. The only known case of its
|
49 |
+
* use is for `metadata`, but it could in theory be more general. As an
|
50 |
+
* example, say we have a `metadata` object that looks like this on the
|
51 |
+
* server side:
|
52 |
+
*
|
53 |
+
* metadata = ["old" => "old_value"]
|
54 |
+
*
|
55 |
+
* If we update the object with `metadata[new]=new_value`, the server side
|
56 |
+
* object now has *both* fields:
|
57 |
+
*
|
58 |
+
* metadata = ["old" => "old_value", "new" => "new_value"]
|
59 |
+
*
|
60 |
+
* This is okay in itself because usually users will want to treat it as
|
61 |
+
* additive:
|
62 |
+
*
|
63 |
+
* $obj->metadata["new"] = "new_value";
|
64 |
+
* $obj->save();
|
65 |
+
*
|
66 |
+
* However, in other cases, they may want to replace the entire existing
|
67 |
+
* contents:
|
68 |
+
*
|
69 |
+
* $obj->metadata = ["new" => "new_value"];
|
70 |
+
* $obj->save();
|
71 |
+
*
|
72 |
+
* This is where things get a little bit tricky because in order to clear
|
73 |
+
* any old keys that may have existed, we actually have to send an explicit
|
74 |
+
* empty string to the server. So the operation above would have to send
|
75 |
+
* this form to get the intended behavior:
|
76 |
+
*
|
77 |
+
* metadata[old]=&metadata[new]=new_value
|
78 |
+
*
|
79 |
+
* This method allows us to track which parameters are considered additive,
|
80 |
+
* and lets us behave correctly where appropriate when serializing
|
81 |
+
* parameters to be sent.
|
82 |
+
*
|
83 |
+
* @return Util\Set Set of additive parameters
|
84 |
*/
|
85 |
+
public static function getAdditiveParams()
|
86 |
{
|
87 |
+
static $additiveParams = null;
|
88 |
+
if ($additiveParams === null) {
|
89 |
+
// Set `metadata` as additive so that when it's set directly we remember
|
90 |
+
// to clear keys that may have been previously set by sending empty
|
91 |
+
// values for them.
|
92 |
+
//
|
93 |
+
// It's possible that not every object has `metadata`, but having this
|
94 |
+
// option set when there is no `metadata` field is not harmful.
|
95 |
+
$additiveParams = new Util\Set([
|
96 |
+
'metadata',
|
97 |
+
]);
|
98 |
+
}
|
99 |
+
return $additiveParams;
|
100 |
}
|
101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
public function __construct($id = null, $opts = null)
|
103 |
{
|
104 |
+
list($id, $this->_retrieveOptions) = Util\Util::normalizeId($id);
|
105 |
+
$this->_opts = Util\RequestOptions::parse($opts);
|
106 |
+
$this->_originalValues = [];
|
107 |
+
$this->_values = [];
|
108 |
$this->_unsavedValues = new Util\Set();
|
109 |
$this->_transientValues = new Util\Set();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
if ($id !== null) {
|
111 |
+
$this->_values['id'] = $id;
|
112 |
}
|
113 |
}
|
114 |
|
115 |
// Standard accessor magic methods
|
116 |
public function __set($k, $v)
|
117 |
{
|
118 |
+
if (static::getPermanentAttributes()->includes($k)) {
|
119 |
+
throw new \InvalidArgumentException(
|
120 |
+
"Cannot set $k on this object. HINT: you can't set: " .
|
121 |
+
join(', ', static::getPermanentAttributes()->toArray())
|
122 |
+
);
|
123 |
+
}
|
124 |
+
|
125 |
if ($v === "") {
|
126 |
+
throw new \InvalidArgumentException(
|
127 |
'You cannot set \''.$k.'\'to an empty string. '
|
128 |
.'We interpret empty strings as NULL in requests. '
|
129 |
.'You may set obj->'.$k.' = NULL to delete the property'
|
130 |
);
|
131 |
}
|
132 |
|
133 |
+
$this->_values[$k] = Util\Util::convertToStripeObject($v, $this->_opts);
|
134 |
+
$this->dirtyValue($this->_values[$k]);
|
135 |
+
$this->_unsavedValues->add($k);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
}
|
137 |
|
138 |
public function __isset($k)
|
139 |
{
|
140 |
return isset($this->_values[$k]);
|
141 |
}
|
142 |
+
|
143 |
public function __unset($k)
|
144 |
{
|
145 |
unset($this->_values[$k]);
|
146 |
$this->_transientValues->add($k);
|
147 |
$this->_unsavedValues->discard($k);
|
148 |
}
|
149 |
+
|
150 |
public function &__get($k)
|
151 |
{
|
152 |
// function should return a reference, using $nullval to return a reference to null
|
171 |
}
|
172 |
}
|
173 |
|
174 |
+
// Magic method for var_dump output. Only works with PHP >= 5.6
|
175 |
+
public function __debugInfo()
|
176 |
+
{
|
177 |
+
return $this->_values;
|
178 |
+
}
|
179 |
+
|
180 |
// ArrayAccess methods
|
181 |
public function offsetSet($k, $v)
|
182 |
{
|
192 |
{
|
193 |
unset($this->$k);
|
194 |
}
|
195 |
+
|
196 |
public function offsetGet($k)
|
197 |
{
|
198 |
return array_key_exists($k, $this->_values) ? $this->_values[$k] : null;
|
199 |
}
|
200 |
|
201 |
+
// Countable method
|
202 |
+
public function count()
|
203 |
+
{
|
204 |
+
return count($this->_values);
|
205 |
+
}
|
206 |
+
|
207 |
public function keys()
|
208 |
{
|
209 |
return array_keys($this->_values);
|
210 |
}
|
211 |
|
212 |
+
public function values()
|
213 |
+
{
|
214 |
+
return array_values($this->_values);
|
215 |
+
}
|
216 |
+
|
217 |
/**
|
218 |
* This unfortunately needs to be public to be used in Util\Util
|
219 |
*
|
220 |
* @param array $values
|
221 |
+
* @param null|string|array|Util\RequestOptions $opts
|
222 |
*
|
223 |
+
* @return static The object constructed from the given values.
|
224 |
*/
|
225 |
+
public static function constructFrom($values, $opts = null)
|
226 |
{
|
227 |
$obj = new static(isset($values['id']) ? $values['id'] : null);
|
228 |
$obj->refreshFrom($values, $opts);
|
233 |
* Refreshes this object using the provided values.
|
234 |
*
|
235 |
* @param array $values
|
236 |
+
* @param null|string|array|Util\RequestOptions $opts
|
237 |
* @param boolean $partial Defaults to false.
|
238 |
*/
|
239 |
public function refreshFrom($values, $opts, $partial = false)
|
240 |
{
|
241 |
+
$this->_opts = Util\RequestOptions::parse($opts);
|
|
|
|
|
242 |
|
243 |
+
$this->_originalValues = self::deepCopy($values);
|
244 |
+
|
245 |
+
if ($values instanceof StripeObject) {
|
246 |
+
$values = $values->__toArray(true);
|
247 |
+
}
|
248 |
|
249 |
// Wipe old state before setting new. This is useful for e.g. updating a
|
250 |
// customer, where there is no persistent card parameter. Mark those values
|
252 |
if ($partial) {
|
253 |
$removed = new Util\Set();
|
254 |
} else {
|
255 |
+
$removed = new Util\Set(array_diff(array_keys($this->_values), array_keys($values)));
|
256 |
}
|
257 |
|
258 |
+
foreach ($removed->toArray() as $k) {
|
|
|
|
|
|
|
|
|
259 |
unset($this->$k);
|
260 |
}
|
261 |
|
262 |
+
$this->updateAttributes($values, $opts, false);
|
263 |
foreach ($values as $k => $v) {
|
264 |
+
$this->_transientValues->discard($k);
|
265 |
+
$this->_unsavedValues->discard($k);
|
266 |
+
}
|
267 |
+
}
|
268 |
|
269 |
+
/**
|
270 |
+
* Mass assigns attributes on the model.
|
271 |
+
*
|
272 |
+
* @param array $values
|
273 |
+
* @param null|string|array|Util\RequestOptions $opts
|
274 |
+
* @param boolean $dirty Defaults to true.
|
275 |
+
*/
|
276 |
+
public function updateAttributes($values, $opts = null, $dirty = true)
|
277 |
+
{
|
278 |
+
foreach ($values as $k => $v) {
|
279 |
+
// Special-case metadata to always be cast as a StripeObject
|
280 |
+
// This is necessary in case metadata is empty, as PHP arrays do
|
281 |
+
// not differentiate between lists and hashes, and we consider
|
282 |
+
// empty arrays to be lists.
|
283 |
+
if (($k === "metadata") && (is_array($v))) {
|
284 |
+
$this->_values[$k] = StripeObject::constructFrom($v, $opts);
|
285 |
} else {
|
286 |
$this->_values[$k] = Util\Util::convertToStripeObject($v, $opts);
|
287 |
}
|
288 |
+
if ($dirty) {
|
289 |
+
$this->dirtyValue($this->_values[$k]);
|
290 |
+
}
|
291 |
+
$this->_unsavedValues->add($k);
|
292 |
}
|
293 |
}
|
294 |
|
296 |
* @return array A recursive mapping of attributes to values for this object,
|
297 |
* including the proper value for deleted attributes.
|
298 |
*/
|
299 |
+
public function serializeParameters($force = false)
|
300 |
{
|
301 |
+
$updateParams = [];
|
302 |
+
|
303 |
+
foreach ($this->_values as $k => $v) {
|
304 |
+
// There are a few reasons that we may want to add in a parameter for
|
305 |
+
// update:
|
306 |
+
//
|
307 |
+
// 1. The `$force` option has been set.
|
308 |
+
// 2. We know that it was modified.
|
309 |
+
// 3. Its value is a StripeObject. A StripeObject may contain modified
|
310 |
+
// values within in that its parent StripeObject doesn't know about.
|
311 |
+
//
|
312 |
+
$original = array_key_exists($k, $this->_originalValues) ? $this->_originalValues[$k] : null;
|
313 |
+
$unsaved = $this->_unsavedValues->includes($k);
|
314 |
+
if ($force || $unsaved || $v instanceof StripeObject) {
|
315 |
+
$updateParams[$k] = $this->serializeParamsValue(
|
316 |
+
$this->_values[$k],
|
317 |
+
$original,
|
318 |
+
$unsaved,
|
319 |
+
$force,
|
320 |
+
$k
|
321 |
+
);
|
322 |
}
|
323 |
}
|
324 |
|
325 |
+
// a `null` that makes it out of `serializeParamsValue` signals an empty
|
326 |
+
// value that we shouldn't appear in the serialized form of the object
|
327 |
+
$updateParams = array_filter(
|
328 |
+
$updateParams,
|
329 |
+
function ($v) {
|
330 |
+
return $v !== null;
|
331 |
+
}
|
332 |
+
);
|
333 |
+
|
334 |
+
return $updateParams;
|
335 |
+
}
|
336 |
+
|
337 |
+
|
338 |
+
public function serializeParamsValue($value, $original, $unsaved, $force, $key = null)
|
339 |
+
{
|
340 |
+
// The logic here is that essentially any object embedded in another
|
341 |
+
// object that had a `type` is actually an API resource of a different
|
342 |
+
// type that's been included in the response. These other resources must
|
343 |
+
// be updated from their proper endpoints, and therefore they are not
|
344 |
+
// included when serializing even if they've been modified.
|
345 |
+
//
|
346 |
+
// There are _some_ known exceptions though.
|
347 |
+
//
|
348 |
+
// For example, if the value is unsaved (meaning the user has set it), and
|
349 |
+
// it looks like the API resource is persisted with an ID, then we include
|
350 |
+
// the object so that parameters are serialized with a reference to its
|
351 |
+
// ID.
|
352 |
+
//
|
353 |
+
// Another example is that on save API calls it's sometimes desirable to
|
354 |
+
// update a customer's default source by setting a new card (or other)
|
355 |
+
// object with `->source=` and then saving the customer. The
|
356 |
+
// `saveWithParent` flag to override the default behavior allows us to
|
357 |
+
// handle these exceptions.
|
358 |
+
//
|
359 |
+
// We throw an error if a property was set explicitly but we can't do
|
360 |
+
// anything with it because the integration is probably not working as the
|
361 |
+
// user intended it to.
|
362 |
+
if ($value === null) {
|
363 |
+
return "";
|
364 |
+
} elseif (($value instanceof APIResource) && (!$value->saveWithParent)) {
|
365 |
+
if (!$unsaved) {
|
366 |
+
return null;
|
367 |
+
} elseif (isset($value->id)) {
|
368 |
+
return $value;
|
369 |
+
} else {
|
370 |
+
throw new \InvalidArgumentException(
|
371 |
+
"Cannot save property `$key` containing an API resource of type " .
|
372 |
+
get_class($value) . ". It doesn't appear to be persisted and is " .
|
373 |
+
"not marked as `saveWithParent`."
|
374 |
+
);
|
375 |
+
}
|
376 |
+
} elseif (is_array($value)) {
|
377 |
+
if (Util\Util::isList($value)) {
|
378 |
+
// Sequential array, i.e. a list
|
379 |
+
$update = [];
|
380 |
+
foreach ($value as $v) {
|
381 |
+
array_push($update, $this->serializeParamsValue($v, null, true, $force));
|
382 |
+
}
|
383 |
+
// This prevents an array that's unchanged from being resent.
|
384 |
+
if ($update !== $this->serializeParamsValue($original, null, true, $force, $key)) {
|
385 |
+
return $update;
|
386 |
}
|
387 |
+
} else {
|
388 |
+
// Associative array, i.e. a map
|
389 |
+
return Util\Util::convertToStripeObject($value, $this->_opts)->serializeParameters();
|
390 |
+
}
|
391 |
+
} elseif ($value instanceof StripeObject) {
|
392 |
+
$update = $value->serializeParameters($force);
|
393 |
+
if ($original && $unsaved && $key && static::getAdditiveParams()->includes($key)) {
|
394 |
+
$update = array_merge(self::emptyValues($original), $update);
|
395 |
}
|
396 |
+
return $update;
|
397 |
+
} else {
|
398 |
+
return $value;
|
399 |
}
|
|
|
|
|
400 |
}
|
401 |
|
402 |
public function jsonSerialize()
|
406 |
|
407 |
public function __toJSON()
|
408 |
{
|
409 |
+
return json_encode($this->__toArray(true), JSON_PRETTY_PRINT);
|
|
|
|
|
|
|
|
|
410 |
}
|
411 |
|
412 |
public function __toString()
|
423 |
return $this->_values;
|
424 |
}
|
425 |
}
|
|
|
426 |
|
427 |
+
/**
|
428 |
+
* Sets all keys within the StripeObject as unsaved so that they will be
|
429 |
+
* included with an update when `serializeParameters` is called. This
|
430 |
+
* method is also recursive, so any StripeObjects contained as values or
|
431 |
+
* which are values in a tenant array are also marked as dirty.
|
432 |
+
*/
|
433 |
+
public function dirty()
|
434 |
+
{
|
435 |
+
$this->_unsavedValues = new Util\Set(array_keys($this->_values));
|
436 |
+
foreach ($this->_values as $k => $v) {
|
437 |
+
$this->dirtyValue($v);
|
438 |
+
}
|
439 |
+
}
|
440 |
+
|
441 |
+
protected function dirtyValue($value)
|
442 |
+
{
|
443 |
+
if (is_array($value)) {
|
444 |
+
foreach ($value as $v) {
|
445 |
+
$this->dirtyValue($v);
|
446 |
+
}
|
447 |
+
} elseif ($value instanceof StripeObject) {
|
448 |
+
$value->dirty();
|
449 |
+
}
|
450 |
+
}
|
451 |
+
|
452 |
+
/**
|
453 |
+
* Produces a deep copy of the given object including support for arrays
|
454 |
+
* and StripeObjects.
|
455 |
+
*/
|
456 |
+
protected static function deepCopy($obj)
|
457 |
+
{
|
458 |
+
if (is_array($obj)) {
|
459 |
+
$copy = [];
|
460 |
+
foreach ($obj as $k => $v) {
|
461 |
+
$copy[$k] = self::deepCopy($v);
|
462 |
+
}
|
463 |
+
return $copy;
|
464 |
+
} elseif ($obj instanceof StripeObject) {
|
465 |
+
return $obj::constructFrom(
|
466 |
+
self::deepCopy($obj->_values),
|
467 |
+
clone $obj->_opts
|
468 |
+
);
|
469 |
+
} else {
|
470 |
+
return $obj;
|
471 |
+
}
|
472 |
+
}
|
473 |
+
|
474 |
+
/**
|
475 |
+
* Returns a hash of empty values for all the values that are in the given
|
476 |
+
* StripeObject.
|
477 |
+
*/
|
478 |
+
public static function emptyValues($obj)
|
479 |
+
{
|
480 |
+
if (is_array($obj)) {
|
481 |
+
$values = $obj;
|
482 |
+
} elseif ($obj instanceof StripeObject) {
|
483 |
+
$values = $obj->_values;
|
484 |
+
} else {
|
485 |
+
throw new \InvalidArgumentException(
|
486 |
+
"empty_values got got unexpected object type: " . get_class($obj)
|
487 |
+
);
|
488 |
+
}
|
489 |
+
$update = array_fill_keys(array_keys($values), "");
|
490 |
+
return $update;
|
491 |
+
}
|
492 |
+
|
493 |
+
/**
|
494 |
+
* @return object The last response from the Stripe API
|
495 |
+
*/
|
496 |
+
public function getLastResponse()
|
497 |
+
{
|
498 |
+
return $this->_lastResponse;
|
499 |
+
}
|
500 |
+
|
501 |
+
/**
|
502 |
+
* Sets the last response from the Stripe API
|
503 |
+
*
|
504 |
+
* @param ApiResponse $resp
|
505 |
+
* @return void
|
506 |
+
*/
|
507 |
+
public function setLastResponse($resp)
|
508 |
+
{
|
509 |
+
$this->_lastResponse = $resp;
|
510 |
+
}
|
511 |
+
|
512 |
+
/**
|
513 |
+
* Indicates whether or not the resource has been deleted on the server.
|
514 |
+
* Note that some, but not all, resources can indicate whether they have
|
515 |
+
* been deleted.
|
516 |
+
*
|
517 |
+
* @return bool Whether the resource is deleted.
|
518 |
+
*/
|
519 |
+
public function isDeleted()
|
520 |
+
{
|
521 |
+
return isset($this->_values['deleted']) ? $this->_values['deleted'] : false;
|
522 |
+
}
|
523 |
+
}
|
includes/lib/Stripe/lib/Subscription.php
CHANGED
@@ -5,65 +5,76 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class Subscription
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class Subscription extends ApiResource
|
11 |
{
|
12 |
-
/**
|
13 |
-
* These constants are possible representations of the status field.
|
14 |
-
*
|
15 |
-
* @link https://stripe.com/docs/api#subscription_object-status
|
16 |
-
*/
|
17 |
-
const STATUS_ACTIVE = 'active';
|
18 |
-
const STATUS_CANCELED = 'canceled';
|
19 |
-
const STATUS_PAST_DUE = 'past_due';
|
20 |
-
const STATUS_TRIALING = 'trialing';
|
21 |
-
const STATUS_UNPAID = 'unpaid';
|
22 |
|
23 |
-
|
24 |
-
* @param array|string $id The ID of the subscription to retrieve, or an
|
25 |
-
* options array containing an `id` key.
|
26 |
-
* @param array|string|null $opts
|
27 |
-
*
|
28 |
-
* @return Subscription
|
29 |
-
*/
|
30 |
-
public static function retrieve($id, $opts = null)
|
31 |
-
{
|
32 |
-
return self::_retrieve($id, $opts);
|
33 |
-
}
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
* @return Collection of Subscriptions
|
40 |
-
*/
|
41 |
-
public static function all($params = null, $opts = null)
|
42 |
-
{
|
43 |
-
return self::_all($params, $opts);
|
44 |
}
|
|
|
|
|
45 |
|
46 |
/**
|
47 |
-
*
|
48 |
-
* @param array|string|null $opts
|
49 |
*
|
50 |
-
* @
|
51 |
*/
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
56 |
|
57 |
-
|
58 |
-
* @param string $id The ID of the subscription to retrieve.
|
59 |
-
* @param array|null $params
|
60 |
-
* @param array|string|null $options
|
61 |
-
*
|
62 |
-
* @return Subscription The updated subscription.
|
63 |
-
*/
|
64 |
-
public static function update($id, $params = null, $options = null)
|
65 |
{
|
66 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
}
|
68 |
|
69 |
/**
|
@@ -76,16 +87,6 @@ class Subscription extends ApiResource
|
|
76 |
return $this->_delete($params, $opts);
|
77 |
}
|
78 |
|
79 |
-
/**
|
80 |
-
* @param array|string|null $opts
|
81 |
-
*
|
82 |
-
* @return Subscription The saved subscription.
|
83 |
-
*/
|
84 |
-
public function save($opts = null)
|
85 |
-
{
|
86 |
-
return $this->_save($opts);
|
87 |
-
}
|
88 |
-
|
89 |
/**
|
90 |
* @return Subscription The updated subscription.
|
91 |
*/
|
@@ -93,6 +94,6 @@ class Subscription extends ApiResource
|
|
93 |
{
|
94 |
$url = $this->instanceUrl() . '/discount';
|
95 |
list($response, $opts) = $this->_request('delete', $url);
|
96 |
-
$this->refreshFrom(
|
97 |
}
|
98 |
}
|
5 |
/**
|
6 |
* Class Subscription
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property float $application_fee_percent
|
11 |
+
* @property string $billing
|
12 |
+
* @property int $billing_cycle_anchor
|
13 |
+
* @property mixed $billing_thresholds
|
14 |
+
* @property bool $cancel_at_period_end
|
15 |
+
* @property int $canceled_at
|
16 |
+
* @property string $collection_method
|
17 |
+
* @property int $created
|
18 |
+
* @property int $current_period_end
|
19 |
+
* @property int $current_period_start
|
20 |
+
* @property string $customer
|
21 |
+
* @property int $days_until_due
|
22 |
+
* @property string $default_payment_method
|
23 |
+
* @property string $default_source
|
24 |
+
* @property array $default_tax_rates
|
25 |
+
* @property Discount $discount
|
26 |
+
* @property int $ended_at
|
27 |
+
* @property Collection $items
|
28 |
+
* @property string $latest_invoice
|
29 |
+
* @property boolean $livemode
|
30 |
+
* @property StripeObject $metadata
|
31 |
+
* @property Plan $plan
|
32 |
+
* @property int $quantity
|
33 |
+
* @property SubscriptionSchedule $schedule
|
34 |
+
* @property int $start
|
35 |
+
* @property int $start_date
|
36 |
+
* @property string $status
|
37 |
+
* @property float $tax_percent
|
38 |
+
* @property int $trial_end
|
39 |
+
* @property int $trial_start
|
40 |
+
*
|
41 |
* @package Stripe
|
42 |
*/
|
43 |
class Subscription extends ApiResource
|
44 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
|
46 |
+
const OBJECT_NAME = "subscription";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
|
48 |
+
use ApiOperations\All;
|
49 |
+
use ApiOperations\Create;
|
50 |
+
use ApiOperations\Delete {
|
51 |
+
delete as protected _delete;
|
|
|
|
|
|
|
|
|
|
|
52 |
}
|
53 |
+
use ApiOperations\Retrieve;
|
54 |
+
use ApiOperations\Update;
|
55 |
|
56 |
/**
|
57 |
+
* These constants are possible representations of the status field.
|
|
|
58 |
*
|
59 |
+
* @link https://stripe.com/docs/api#subscription_object-status
|
60 |
*/
|
61 |
+
const STATUS_ACTIVE = 'active';
|
62 |
+
const STATUS_CANCELED = 'canceled';
|
63 |
+
const STATUS_PAST_DUE = 'past_due';
|
64 |
+
const STATUS_TRIALING = 'trialing';
|
65 |
+
const STATUS_UNPAID = 'unpaid';
|
66 |
+
const STATUS_INCOMPLETE = 'incomplete';
|
67 |
+
const STATUS_INCOMPLETE_EXPIRED = 'incomplete_expired';
|
68 |
|
69 |
+
public static function getSavedNestedResources()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
{
|
71 |
+
static $savedNestedResources = null;
|
72 |
+
if ($savedNestedResources === null) {
|
73 |
+
$savedNestedResources = new Util\Set([
|
74 |
+
'source',
|
75 |
+
]);
|
76 |
+
}
|
77 |
+
return $savedNestedResources;
|
78 |
}
|
79 |
|
80 |
/**
|
87 |
return $this->_delete($params, $opts);
|
88 |
}
|
89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
/**
|
91 |
* @return Subscription The updated subscription.
|
92 |
*/
|
94 |
{
|
95 |
$url = $this->instanceUrl() . '/discount';
|
96 |
list($response, $opts) = $this->_request('delete', $url);
|
97 |
+
$this->refreshFrom(['discount' => null], $opts, true);
|
98 |
}
|
99 |
}
|
includes/lib/Stripe/lib/SubscriptionItem.php
CHANGED
@@ -5,85 +5,41 @@ namespace Stripe;
|
|
5 |
/**
|
6 |
* Class SubscriptionItem
|
7 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @package Stripe
|
9 |
*/
|
10 |
class SubscriptionItem extends ApiResource
|
11 |
{
|
12 |
-
/**
|
13 |
-
* This is a special case because the subscription items endpoint has an
|
14 |
-
* underscore in it. The parent `className` function strips underscores.
|
15 |
-
*
|
16 |
-
* @return string The name of the class.
|
17 |
-
*/
|
18 |
-
public static function className()
|
19 |
-
{
|
20 |
-
return 'subscription_item';
|
21 |
-
}
|
22 |
|
23 |
-
|
24 |
-
* @param array|string $id The ID of the subscription item to retrieve, or
|
25 |
-
* an options array containing an `id` key.
|
26 |
-
* @param array|string|null $opts
|
27 |
-
*
|
28 |
-
* @return SubscriptionItem
|
29 |
-
*/
|
30 |
-
public static function retrieve($id, $opts = null)
|
31 |
-
{
|
32 |
-
return self::_retrieve($id, $opts);
|
33 |
-
}
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
*/
|
41 |
-
public static function all($params = null, $opts = null)
|
42 |
-
{
|
43 |
-
return self::_all($params, $opts);
|
44 |
-
}
|
45 |
|
46 |
/**
|
47 |
-
* @param array|null $params
|
48 |
-
* @param array|string|null $opts
|
49 |
-
*
|
50 |
-
* @return SubscriptionItem The created subscription item.
|
51 |
-
*/
|
52 |
-
public static function create($params = null, $opts = null)
|
53 |
-
{
|
54 |
-
return self::_create($params, $opts);
|
55 |
-
}
|
56 |
-
|
57 |
-
/**
|
58 |
-
* @param string $id The ID of the subscription item to update.
|
59 |
* @param array|null $params
|
60 |
* @param array|string|null $options
|
61 |
*
|
62 |
-
* @return
|
63 |
-
*/
|
64 |
-
public static function update($id, $params = null, $options = null)
|
65 |
-
{
|
66 |
-
return self::_update($id, $params, $options);
|
67 |
-
}
|
68 |
-
|
69 |
-
/**
|
70 |
-
* @param array|string|null $opts
|
71 |
-
*
|
72 |
-
* @return SubscriptionItem The saved subscription item.
|
73 |
-
*/
|
74 |
-
public function save($opts = null)
|
75 |
-
{
|
76 |
-
return $this->_save($opts);
|
77 |
-
}
|
78 |
-
|
79 |
-
/**
|
80 |
-
* @param array|null $params
|
81 |
-
* @param array|string|null $opts
|
82 |
-
*
|
83 |
-
* @return SubscriptionItem The deleted subscription item.
|
84 |
*/
|
85 |
-
public function
|
86 |
{
|
87 |
-
|
|
|
|
|
|
|
|
|
88 |
}
|
89 |
}
|
5 |
/**
|
6 |
* Class SubscriptionItem
|
7 |
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property mixed $billing_thresholds
|
11 |
+
* @property int $created
|
12 |
+
* @property StripeObject $metadata
|
13 |
+
* @property Plan $plan
|
14 |
+
* @property int $quantity
|
15 |
+
* @property string $subscription
|
16 |
+
* @property array $tax_rates
|
17 |
+
*
|
18 |
* @package Stripe
|
19 |
*/
|
20 |
class SubscriptionItem extends ApiResource
|
21 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
+
const OBJECT_NAME = "subscription_item";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
|
25 |
+
use ApiOperations\All;
|
26 |
+
use ApiOperations\Create;
|
27 |
+
use ApiOperations\Delete;
|
28 |
+
use ApiOperations\Retrieve;
|
29 |
+
use ApiOperations\Update;
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
* @param array|null $params
|
33 |
* @param array|string|null $options
|
34 |
*
|
35 |
+
* @return Collection The list of source transactions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
*/
|
37 |
+
public function usageRecordSummaries($params = null, $options = null)
|
38 |
{
|
39 |
+
$url = $this->instanceUrl() . '/usage_record_summaries';
|
40 |
+
list($response, $opts) = $this->_request('get', $url, $params, $options);
|
41 |
+
$obj = Util\Util::convertToStripeObject($response, $opts);
|
42 |
+
$obj->setLastResponse($response);
|
43 |
+
return $obj;
|
44 |
}
|
45 |
}
|
includes/lib/Stripe/lib/SubscriptionSchedule.php
ADDED
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class SubscriptionSchedule
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property string $billing
|
11 |
+
* @property mixed $billing_thresholds
|
12 |
+
* @property int $canceled_at
|
13 |
+
* @property int $completed_at
|
14 |
+
* @property int $created
|
15 |
+
* @property mixed $current_phase
|
16 |
+
* @property string $customer
|
17 |
+
* @property mixed $invoice_settings
|
18 |
+
* @property boolean $livemode
|
19 |
+
* @property StripeObject $metadata
|
20 |
+
* @property mixed $phases
|
21 |
+
* @property int $released_at
|
22 |
+
* @property string $released_subscription
|
23 |
+
* @property string $renewal_behavior
|
24 |
+
* @property mixed $renewal_interval
|
25 |
+
* @property string $revision
|
26 |
+
* @property string $status
|
27 |
+
* @property string $subscription
|
28 |
+
*
|
29 |
+
* @package Stripe
|
30 |
+
*/
|
31 |
+
class SubscriptionSchedule extends ApiResource
|
32 |
+
{
|
33 |
+
|
34 |
+
const OBJECT_NAME = "subscription_schedule";
|
35 |
+
|
36 |
+
use ApiOperations\All;
|
37 |
+
use ApiOperations\Create;
|
38 |
+
use ApiOperations\Retrieve;
|
39 |
+
use ApiOperations\Update;
|
40 |
+
use ApiOperations\NestedResource;
|
41 |
+
|
42 |
+
const PATH_REVISIONS = '/revisions';
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @param array|null $params
|
46 |
+
* @param array|string|null $opts
|
47 |
+
*
|
48 |
+
* @return SubscriptionSchedule The canceled subscription schedule.
|
49 |
+
*/
|
50 |
+
public function cancel($params = null, $opts = null)
|
51 |
+
{
|
52 |
+
$url = $this->instanceUrl() . '/cancel';
|
53 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
54 |
+
$this->refreshFrom($response, $opts);
|
55 |
+
return $this;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* @param array|null $params
|
60 |
+
* @param array|string|null $opts
|
61 |
+
*
|
62 |
+
* @return SubscriptionSchedule The released subscription schedule.
|
63 |
+
*/
|
64 |
+
public function release($params = null, $opts = null)
|
65 |
+
{
|
66 |
+
$url = $this->instanceUrl() . '/release';
|
67 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
68 |
+
$this->refreshFrom($response, $opts);
|
69 |
+
return $this;
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* @param array|null $params
|
74 |
+
* @param array|string|null $options
|
75 |
+
*
|
76 |
+
* @return Collection The list of subscription schedule revisions.
|
77 |
+
*/
|
78 |
+
public function revisions($params = null, $options = null)
|
79 |
+
{
|
80 |
+
$url = $this->instanceUrl() . '/revisions';
|
81 |
+
list($response, $opts) = $this->_request('get', $url, $params, $options);
|
82 |
+
$obj = Util\Util::convertToStripeObject($response, $opts);
|
83 |
+
$obj->setLastResponse($response);
|
84 |
+
return $obj;
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* @param array|null $id The ID of the subscription schedule to which the person belongs.
|
89 |
+
* @param array|null $personId The ID of the person to retrieve.
|
90 |
+
* @param array|null $params
|
91 |
+
* @param array|string|null $opts
|
92 |
+
*
|
93 |
+
* @return Revision
|
94 |
+
*/
|
95 |
+
public static function retrieveRevision($id, $personId, $params = null, $opts = null)
|
96 |
+
{
|
97 |
+
return self::_retrieveNestedResource($id, static::PATH_REVISIONS, $personId, $params, $opts);
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* @param array|null $id The ID of the subscription schedule on which to retrieve the persons.
|
102 |
+
* @param array|null $params
|
103 |
+
* @param array|string|null $opts
|
104 |
+
*
|
105 |
+
* @return Collection The list of revisions.
|
106 |
+
*/
|
107 |
+
public static function allRevisions($id, $params = null, $opts = null)
|
108 |
+
{
|
109 |
+
return self::_allNestedResources($id, static::PATH_REVISIONS, $params, $opts);
|
110 |
+
}
|
111 |
+
}
|
includes/lib/Stripe/lib/SubscriptionScheduleRevision.php
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class SubscriptionScheduleRevision
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $created
|
11 |
+
* @property mixed $invoice_settings
|
12 |
+
* @property boolean $livemode
|
13 |
+
* @property mixed $phases
|
14 |
+
* @property string $previous_revision
|
15 |
+
* @property string $renewal_behavior
|
16 |
+
* @property mixed $renewal_interval
|
17 |
+
* @property string $schedule
|
18 |
+
*
|
19 |
+
* @package Stripe
|
20 |
+
*/
|
21 |
+
class SubscriptionScheduleRevision extends ApiResource
|
22 |
+
{
|
23 |
+
|
24 |
+
const OBJECT_NAME = "subscription_schedule_revision";
|
25 |
+
|
26 |
+
use ApiOperations\All;
|
27 |
+
use ApiOperations\Retrieve;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @return string The API URL for this Subscription Schedule Revision.
|
31 |
+
*/
|
32 |
+
public function instanceUrl()
|
33 |
+
{
|
34 |
+
$id = $this['id'];
|
35 |
+
$schedule = $this['schedule'];
|
36 |
+
if (!$id) {
|
37 |
+
throw new Error\InvalidRequest(
|
38 |
+
"Could not determine which URL to request: " .
|
39 |
+
"class instance has invalid ID: $id",
|
40 |
+
null
|
41 |
+
);
|
42 |
+
}
|
43 |
+
$id = Util\Util::utf8($id);
|
44 |
+
$schedule = Util\Util::utf8($schedule);
|
45 |
+
|
46 |
+
$base = SubscriptionSchedule::classUrl();
|
47 |
+
$scheduleExtn = urlencode($schedule);
|
48 |
+
$extn = urlencode($id);
|
49 |
+
return "$base/$scheduleExtn/revisions/$extn";
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @param array|string $_id
|
54 |
+
* @param array|string|null $_opts
|
55 |
+
*
|
56 |
+
* @throws \Stripe\Error\InvalidRequest
|
57 |
+
*/
|
58 |
+
public static function retrieve($_id, $_opts = null)
|
59 |
+
{
|
60 |
+
$msg = "Subscription Schedule Revisions cannot be accessed without a Subscription Schedule ID. " .
|
61 |
+
"Retrieve one using \$schedule->retrieveRevision('revision_id') instead.";
|
62 |
+
throw new Error\InvalidRequest($msg, null);
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* @param array|string $_id
|
67 |
+
* @param array|string|null $_opts
|
68 |
+
*
|
69 |
+
* @throws \Stripe\Error\InvalidRequest
|
70 |
+
*/
|
71 |
+
public static function all($params = null, $opts = null)
|
72 |
+
{
|
73 |
+
$msg = "Subscription Schedule Revisions cannot be listed without a Subscription Schedule ID. " .
|
74 |
+
"List those using \$schedule->allRevisions('revision_id') instead.";
|
75 |
+
throw new Error\InvalidRequest($msg, null);
|
76 |
+
}
|
77 |
+
}
|
includes/lib/Stripe/lib/TaxId.php
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class TaxId
|
7 |
+
*
|
8 |
+
* @package Stripe
|
9 |
+
*
|
10 |
+
* @property string $id
|
11 |
+
* @property string $object
|
12 |
+
* @property string $country
|
13 |
+
* @property int $created
|
14 |
+
* @property string $customer
|
15 |
+
* @property bool $livemode
|
16 |
+
* @property string $type
|
17 |
+
* @property string $value
|
18 |
+
* @property mixed $verification
|
19 |
+
*/
|
20 |
+
class TaxId extends ApiResource
|
21 |
+
{
|
22 |
+
|
23 |
+
const OBJECT_NAME = "tax_id";
|
24 |
+
|
25 |
+
use ApiOperations\Delete;
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Possible string representations of a tax id's type.
|
29 |
+
* @link https://stripe.com/docs/api/customer_tax_ids/object#tax_id_object-type
|
30 |
+
*/
|
31 |
+
const TYPE_AU_ABN = 'au_abn';
|
32 |
+
const TYPE_EU_VAT = 'eu_vat';
|
33 |
+
const TYPE_IN_GST = 'in_gst';
|
34 |
+
const TYPE_NO_VAT = 'no_vat';
|
35 |
+
const TYPE_NZ_GST = 'nz_gst';
|
36 |
+
const TYPE_UNKNOWN = 'unknown';
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Possible string representations of the verification status.
|
40 |
+
* @link https://stripe.com/docs/api/customer_tax_ids/object#tax_id_object-verification
|
41 |
+
*/
|
42 |
+
const VERIFICATION_STATUS_PENDING = 'pending';
|
43 |
+
const VERIFICATION_STATUS_UNAVAILABLE = 'unavailable';
|
44 |
+
const VERIFICATION_STATUS_UNVERIFIED = 'unverified';
|
45 |
+
const VERIFICATION_STATUS_VERIFIED = 'verified';
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @return string The API URL for this tax id.
|
49 |
+
*/
|
50 |
+
public function instanceUrl()
|
51 |
+
{
|
52 |
+
$id = $this['id'];
|
53 |
+
$customer = $this['customer'];
|
54 |
+
if (!$id) {
|
55 |
+
throw new Error\InvalidRequest(
|
56 |
+
"Could not determine which URL to request: class instance has invalid ID: $id",
|
57 |
+
null
|
58 |
+
);
|
59 |
+
}
|
60 |
+
$id = Util\Util::utf8($id);
|
61 |
+
$customer = Util\Util::utf8($customer);
|
62 |
+
|
63 |
+
$base = Customer::classUrl();
|
64 |
+
$customerExtn = urlencode($customer);
|
65 |
+
$extn = urlencode($id);
|
66 |
+
return "$base/$customerExtn/tax_ids/$extn";
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* @param array|string $_id
|
71 |
+
* @param array|string|null $_opts
|
72 |
+
*
|
73 |
+
* @throws \Stripe\Error\InvalidRequest
|
74 |
+
*/
|
75 |
+
public static function retrieve($_id, $_opts = null)
|
76 |
+
{
|
77 |
+
$msg = "Tax Ids cannot be accessed without a customer ID. " .
|
78 |
+
"Retrieve a Tax Id using Customer::retrieveTaxId('tax_id') instead.";
|
79 |
+
throw new Error\InvalidRequest($msg, null);
|
80 |
+
}
|
81 |
+
}
|
includes/lib/Stripe/lib/TaxRate.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class TaxRate
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property bool $active
|
11 |
+
* @property int $created
|
12 |
+
* @property string $description
|
13 |
+
* @property string $display_name
|
14 |
+
* @property bool $inclusive
|
15 |
+
* @property string $jurisdiction
|
16 |
+
* @property bool $livemode
|
17 |
+
* @property StripeObject $metadata
|
18 |
+
* @property float $percentage
|
19 |
+
*
|
20 |
+
* @package Stripe
|
21 |
+
*/
|
22 |
+
class TaxRate extends ApiResource
|
23 |
+
{
|
24 |
+
|
25 |
+
const OBJECT_NAME = "tax_rate";
|
26 |
+
|
27 |
+
use ApiOperations\All;
|
28 |
+
use ApiOperations\Create;
|
29 |
+
use ApiOperations\Retrieve;
|
30 |
+
use ApiOperations\Update;
|
31 |
+
}
|
includes/lib/Stripe/lib/Terminal/ConnectionToken.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Terminal;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class ConnectionToken
|
7 |
+
*
|
8 |
+
* @property string $secret
|
9 |
+
*
|
10 |
+
* @package Stripe\Terminal
|
11 |
+
*/
|
12 |
+
class ConnectionToken extends \Stripe\ApiResource
|
13 |
+
{
|
14 |
+
const OBJECT_NAME = "terminal.connection_token";
|
15 |
+
|
16 |
+
use \Stripe\ApiOperations\Create;
|
17 |
+
}
|
includes/lib/Stripe/lib/Terminal/Location.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Terminal;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Location
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property mixed $address
|
11 |
+
* @property bool $deleted
|
12 |
+
* @property string $display_name
|
13 |
+
*
|
14 |
+
* @package Stripe\Terminal
|
15 |
+
*/
|
16 |
+
class Location extends \Stripe\ApiResource
|
17 |
+
{
|
18 |
+
const OBJECT_NAME = "terminal.location";
|
19 |
+
|
20 |
+
use \Stripe\ApiOperations\All;
|
21 |
+
use \Stripe\ApiOperations\Create;
|
22 |
+
use \Stripe\ApiOperations\Delete;
|
23 |
+
use \Stripe\ApiOperations\Retrieve;
|
24 |
+
use \Stripe\ApiOperations\Update;
|
25 |
+
}
|
includes/lib/Stripe/lib/Terminal/Reader.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Terminal;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Reader
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property bool $deleted
|
11 |
+
* @property string $device_sw_version
|
12 |
+
* @property string $device_type
|
13 |
+
* @property string $ip_address
|
14 |
+
* @property string $label
|
15 |
+
* @property string $location
|
16 |
+
* @property string $serial_number
|
17 |
+
* @property string $status
|
18 |
+
*
|
19 |
+
* @package Stripe\Terminal
|
20 |
+
*/
|
21 |
+
class Reader extends \Stripe\ApiResource
|
22 |
+
{
|
23 |
+
const OBJECT_NAME = "terminal.reader";
|
24 |
+
|
25 |
+
use \Stripe\ApiOperations\All;
|
26 |
+
use \Stripe\ApiOperations\Create;
|
27 |
+
use \Stripe\ApiOperations\Delete;
|
28 |
+
use \Stripe\ApiOperations\Retrieve;
|
29 |
+
use \Stripe\ApiOperations\Update;
|
30 |
+
}
|
includes/lib/Stripe/lib/ThreeDSecure.php
CHANGED
@@ -4,6 +4,12 @@ namespace Stripe;
|
|
4 |
|
5 |
class ThreeDSecure extends ApiResource
|
6 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
/**
|
8 |
* @return string The endpoint URL for the given class.
|
9 |
*/
|
@@ -11,27 +17,4 @@ class ThreeDSecure extends ApiResource
|
|
11 |
{
|
12 |
return "/v1/3d_secure";
|
13 |
}
|
14 |
-
|
15 |
-
/**
|
16 |
-
* @param array|string $id The ID of the 3DS auth to retrieve, or an
|
17 |
-
* options array contianing an `id` key.
|
18 |
-
* @param array|string|null $options
|
19 |
-
*
|
20 |
-
* @return ThreeDSecure
|
21 |
-
*/
|
22 |
-
public static function retrieve($id, $options = null)
|
23 |
-
{
|
24 |
-
return self::_retrieve($id, $options);
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* @param array|null $params
|
29 |
-
* @param array|string|null $opts
|
30 |
-
*
|
31 |
-
* @return ThreeDSecure The created 3D Secure object.
|
32 |
-
*/
|
33 |
-
public static function create($params = null, $opts = null)
|
34 |
-
{
|
35 |
-
return self::_create($params, $opts);
|
36 |
-
}
|
37 |
}
|
4 |
|
5 |
class ThreeDSecure extends ApiResource
|
6 |
{
|
7 |
+
|
8 |
+
const OBJECT_NAME = "three_d_secure";
|
9 |
+
|
10 |
+
use ApiOperations\Create;
|
11 |
+
use ApiOperations\Retrieve;
|
12 |
+
|
13 |
/**
|
14 |
* @return string The endpoint URL for the given class.
|
15 |
*/
|
17 |
{
|
18 |
return "/v1/3d_secure";
|
19 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
}
|
includes/lib/Stripe/lib/Token.php
CHANGED
@@ -7,9 +7,9 @@ namespace Stripe;
|
|
7 |
*
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
-
* @property
|
11 |
-
* @property
|
12 |
-
* @property
|
13 |
* @property int $created
|
14 |
* @property bool $livemode
|
15 |
* @property string $type
|
@@ -19,26 +19,18 @@ namespace Stripe;
|
|
19 |
*/
|
20 |
class Token extends ApiResource
|
21 |
{
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
* @return Token
|
28 |
-
*/
|
29 |
-
public static function retrieve($id, $opts = null)
|
30 |
-
{
|
31 |
-
return self::_retrieve($id, $opts);
|
32 |
-
}
|
33 |
|
34 |
/**
|
35 |
-
*
|
36 |
-
* @
|
37 |
-
*
|
38 |
-
* @return Token The created token.
|
39 |
*/
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
}
|
7 |
*
|
8 |
* @property string $id
|
9 |
* @property string $object
|
10 |
+
* @property BankAccount $bank_account
|
11 |
+
* @property Card $card
|
12 |
+
* @property string $client_ip
|
13 |
* @property int $created
|
14 |
* @property bool $livemode
|
15 |
* @property string $type
|
19 |
*/
|
20 |
class Token extends ApiResource
|
21 |
{
|
22 |
+
|
23 |
+
const OBJECT_NAME = "token";
|
24 |
+
|
25 |
+
use ApiOperations\Create;
|
26 |
+
use ApiOperations\Retrieve;
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
/**
|
29 |
+
* Possible string representations of the token type.
|
30 |
+
* @link https://stripe.com/docs/api/tokens/object#token_object-type
|
|
|
|
|
31 |
*/
|
32 |
+
const TYPE_ACCOUNT = 'account';
|
33 |
+
const TYPE_BANK_ACCOUNT = 'bank_account';
|
34 |
+
const TYPE_CARD = 'card';
|
35 |
+
const TYPE_PII = 'pii';
|
36 |
}
|
includes/lib/Stripe/lib/Topup.php
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Topup
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $amount
|
11 |
+
* @property string $balance_transaction
|
12 |
+
* @property int $created
|
13 |
+
* @property string $currency
|
14 |
+
* @property string $description
|
15 |
+
* @property int $expected_availability_date
|
16 |
+
* @property string $failure_code
|
17 |
+
* @property string $failure_message
|
18 |
+
* @property bool $livemode
|
19 |
+
* @property StripeObject $metadata
|
20 |
+
* @property mixed $source
|
21 |
+
* @property string $statement_descriptor
|
22 |
+
* @property string $status
|
23 |
+
* @property string $transfer_group
|
24 |
+
*
|
25 |
+
* @package Stripe
|
26 |
+
*/
|
27 |
+
class Topup extends ApiResource
|
28 |
+
{
|
29 |
+
|
30 |
+
const OBJECT_NAME = "topup";
|
31 |
+
|
32 |
+
use ApiOperations\All;
|
33 |
+
use ApiOperations\Create;
|
34 |
+
use ApiOperations\Retrieve;
|
35 |
+
use ApiOperations\Update;
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Possible string representations of the status of the top-up.
|
39 |
+
* @link https://stripe.com/docs/api/topups/object#topup_object-status
|
40 |
+
*/
|
41 |
+
const STATUS_CANCELED = 'canceled';
|
42 |
+
const STATUS_FAILED = 'failed';
|
43 |
+
const STATUS_PENDING = 'pending';
|
44 |
+
const STATUS_REVERSED = 'reversed';
|
45 |
+
const STATUS_SUCCEEDED = 'succeeded';
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @param array|null $params
|
49 |
+
* @param array|string|null $options
|
50 |
+
*
|
51 |
+
* @return Topup The canceled topup.
|
52 |
+
*/
|
53 |
+
public function cancel($params = null, $options = null)
|
54 |
+
{
|
55 |
+
$url = $this->instanceUrl() . '/cancel';
|
56 |
+
list($response, $opts) = $this->_request('post', $url, $params, $options);
|
57 |
+
$this->refreshFrom($response, $opts);
|
58 |
+
return $this;
|
59 |
+
}
|
60 |
+
}
|
includes/lib/Stripe/lib/Transfer.php
CHANGED
@@ -12,94 +12,110 @@ namespace Stripe;
|
|
12 |
* @property string $balance_transaction
|
13 |
* @property int $created
|
14 |
* @property string $currency
|
15 |
-
* @property
|
16 |
-
* @property
|
17 |
-
* @property
|
18 |
* @property bool $livemode
|
19 |
-
* @property
|
20 |
-
* @property
|
21 |
* @property bool $reversed
|
22 |
-
* @property
|
|
|
|
|
23 |
*
|
24 |
* @package Stripe
|
25 |
*/
|
26 |
class Transfer extends ApiResource
|
27 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
/**
|
29 |
-
*
|
30 |
-
*
|
31 |
-
* @param array|string|null $opts
|
32 |
-
*
|
33 |
-
* @return Transfer
|
34 |
*/
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
|
40 |
/**
|
41 |
-
* @
|
42 |
-
* @param array|string|null $opts
|
43 |
-
*
|
44 |
-
* @return Collection of Transfers
|
45 |
*/
|
46 |
-
public
|
47 |
{
|
48 |
-
|
|
|
|
|
|
|
49 |
}
|
50 |
|
51 |
/**
|
52 |
-
* @
|
53 |
-
* @param array|string|null $opts
|
54 |
-
*
|
55 |
-
* @return Transfer The created transfer.
|
56 |
*/
|
57 |
-
public
|
58 |
{
|
59 |
-
|
|
|
|
|
|
|
60 |
}
|
61 |
|
62 |
/**
|
63 |
-
* @param string $id The ID of the transfer to
|
64 |
* @param array|null $params
|
65 |
-
* @param array|string|null $
|
66 |
*
|
67 |
-
* @return
|
68 |
*/
|
69 |
-
public static function
|
70 |
{
|
71 |
-
return self::
|
72 |
}
|
73 |
|
74 |
/**
|
75 |
-
* @
|
|
|
|
|
|
|
|
|
|
|
76 |
*/
|
77 |
-
public function
|
78 |
{
|
79 |
-
$
|
80 |
-
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
81 |
-
$this->refreshFrom($response, $opts);
|
82 |
-
return $this;
|
83 |
}
|
84 |
|
85 |
/**
|
86 |
-
* @
|
|
|
|
|
|
|
|
|
|
|
87 |
*/
|
88 |
-
public function
|
89 |
{
|
90 |
-
$
|
91 |
-
list($response, $opts) = $this->_request('post', $url);
|
92 |
-
$this->refreshFrom($response, $opts);
|
93 |
-
return $this;
|
94 |
}
|
95 |
|
96 |
/**
|
|
|
|
|
97 |
* @param array|string|null $opts
|
98 |
*
|
99 |
-
* @return
|
100 |
*/
|
101 |
-
public function
|
102 |
{
|
103 |
-
return
|
104 |
}
|
105 |
}
|
12 |
* @property string $balance_transaction
|
13 |
* @property int $created
|
14 |
* @property string $currency
|
15 |
+
* @property string $description
|
16 |
+
* @property string $destination
|
17 |
+
* @property string $destination_payment
|
18 |
* @property bool $livemode
|
19 |
+
* @property StripeObject $metadata
|
20 |
+
* @property Collection $reversals
|
21 |
* @property bool $reversed
|
22 |
+
* @property string $source_transaction
|
23 |
+
* @property string $source_type
|
24 |
+
* @property string $transfer_group
|
25 |
*
|
26 |
* @package Stripe
|
27 |
*/
|
28 |
class Transfer extends ApiResource
|
29 |
{
|
30 |
+
|
31 |
+
const OBJECT_NAME = "transfer";
|
32 |
+
|
33 |
+
use ApiOperations\All;
|
34 |
+
use ApiOperations\Create;
|
35 |
+
use ApiOperations\NestedResource;
|
36 |
+
use ApiOperations\Retrieve;
|
37 |
+
use ApiOperations\Update;
|
38 |
+
|
39 |
+
const PATH_REVERSALS = '/reversals';
|
40 |
+
|
41 |
/**
|
42 |
+
* Possible string representations of the source type of the transfer.
|
43 |
+
* @link https://stripe.com/docs/api/transfers/object#transfer_object-source_type
|
|
|
|
|
|
|
44 |
*/
|
45 |
+
const SOURCE_TYPE_ALIPAY_ACCOUNT = 'alipay_account';
|
46 |
+
const SOURCE_TYPE_BANK_ACCOUNT = 'bank_account';
|
47 |
+
const SOURCE_TYPE_CARD = 'card';
|
48 |
+
const SOURCE_TYPE_FINANCING = 'financing';
|
49 |
|
50 |
/**
|
51 |
+
* @return TransferReversal The created transfer reversal.
|
|
|
|
|
|
|
52 |
*/
|
53 |
+
public function reverse($params = null, $opts = null)
|
54 |
{
|
55 |
+
$url = $this->instanceUrl() . '/reversals';
|
56 |
+
list($response, $opts) = $this->_request('post', $url, $params, $opts);
|
57 |
+
$this->refreshFrom($response, $opts);
|
58 |
+
return $this;
|
59 |
}
|
60 |
|
61 |
/**
|
62 |
+
* @return Transfer The canceled transfer.
|
|
|
|
|
|
|
63 |
*/
|
64 |
+
public function cancel()
|
65 |
{
|
66 |
+
$url = $this->instanceUrl() . '/cancel';
|
67 |
+
list($response, $opts) = $this->_request('post', $url);
|
68 |
+
$this->refreshFrom($response, $opts);
|
69 |
+
return $this;
|
70 |
}
|
71 |
|
72 |
/**
|
73 |
+
* @param string|null $id The ID of the transfer on which to create the reversal.
|
74 |
* @param array|null $params
|
75 |
+
* @param array|string|null $opts
|
76 |
*
|
77 |
+
* @return TransferReversal
|
78 |
*/
|
79 |
+
public static function createReversal($id, $params = null, $opts = null)
|
80 |
{
|
81 |
+
return self::_createNestedResource($id, static::PATH_REVERSALS, $params, $opts);
|
82 |
}
|
83 |
|
84 |
/**
|
85 |
+
* @param string|null $id The ID of the transfer to which the reversal belongs.
|
86 |
+
* @param array|null $reversalId The ID of the reversal to retrieve.
|
87 |
+
* @param array|null $params
|
88 |
+
* @param array|string|null $opts
|
89 |
+
*
|
90 |
+
* @return TransferReversal
|
91 |
*/
|
92 |
+
public static function retrieveReversal($id, $reversalId, $params = null, $opts = null)
|
93 |
{
|
94 |
+
return self::_retrieveNestedResource($id, static::PATH_REVERSALS, $reversalId, $params, $opts);
|
|
|
|
|
|
|
95 |
}
|
96 |
|
97 |
/**
|
98 |
+
* @param string|null $id The ID of the transfer to which the reversal belongs.
|
99 |
+
* @param array|null $reversalId The ID of the reversal to update.
|
100 |
+
* @param array|null $params
|
101 |
+
* @param array|string|null $opts
|
102 |
+
*
|
103 |
+
* @return TransferReversal
|
104 |
*/
|
105 |
+
public static function updateReversal($id, $reversalId, $params = null, $opts = null)
|
106 |
{
|
107 |
+
return self::_updateNestedResource($id, static::PATH_REVERSALS, $reversalId, $params, $opts);
|
|
|
|
|
|
|
108 |
}
|
109 |
|
110 |
/**
|
111 |
+
* @param string|null $id The ID of the transfer on which to retrieve the reversals.
|
112 |
+
* @param array|null $params
|
113 |
* @param array|string|null $opts
|
114 |
*
|
115 |
+
* @return Collection The list of reversals.
|
116 |
*/
|
117 |
+
public static function allReversals($id, $params = null, $opts = null)
|
118 |
{
|
119 |
+
return self::_allNestedResources($id, static::PATH_REVERSALS, $params, $opts);
|
120 |
}
|
121 |
}
|
includes/lib/Stripe/lib/TransferReversal.php
CHANGED
@@ -11,13 +11,22 @@ namespace Stripe;
|
|
11 |
* @property string $balance_transaction
|
12 |
* @property int $created
|
13 |
* @property string $currency
|
14 |
-
* @property
|
|
|
|
|
15 |
* @property string $transfer
|
16 |
*
|
17 |
* @package Stripe
|
18 |
*/
|
19 |
class TransferReversal extends ApiResource
|
20 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
/**
|
22 |
* @return string The API URL for this Stripe transfer reversal.
|
23 |
*/
|
11 |
* @property string $balance_transaction
|
12 |
* @property int $created
|
13 |
* @property string $currency
|
14 |
+
* @property string $destination_payment_refund
|
15 |
+
* @property StripeObject $metadata
|
16 |
+
* @property string $source_refund
|
17 |
* @property string $transfer
|
18 |
*
|
19 |
* @package Stripe
|
20 |
*/
|
21 |
class TransferReversal extends ApiResource
|
22 |
{
|
23 |
+
|
24 |
+
const OBJECT_NAME = "transfer_reversal";
|
25 |
+
|
26 |
+
use ApiOperations\Update {
|
27 |
+
save as protected _save;
|
28 |
+
}
|
29 |
+
|
30 |
/**
|
31 |
* @return string The API URL for this Stripe transfer reversal.
|
32 |
*/
|
includes/lib/Stripe/lib/UsageRecord.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class UsageRecord
|
7 |
+
*
|
8 |
+
* @package Stripe
|
9 |
+
*
|
10 |
+
* @property string $id
|
11 |
+
* @property string $object
|
12 |
+
* @property bool $livemode
|
13 |
+
* @property int $quantity
|
14 |
+
* @property string $subscription_item
|
15 |
+
* @property int $timestamp
|
16 |
+
*/
|
17 |
+
class UsageRecord extends ApiResource
|
18 |
+
{
|
19 |
+
|
20 |
+
const OBJECT_NAME = "usage_record";
|
21 |
+
|
22 |
+
/**
|
23 |
+
* @param array|null $params
|
24 |
+
* @param array|string|null $options
|
25 |
+
*
|
26 |
+
* @return \Stripe\ApiResource The created resource.
|
27 |
+
*/
|
28 |
+
public static function create($params = null, $options = null)
|
29 |
+
{
|
30 |
+
self::_validateParams($params);
|
31 |
+
if (!array_key_exists('subscription_item', $params)) {
|
32 |
+
throw new Error\InvalidRequest("Missing subscription_item param in request", null);
|
33 |
+
}
|
34 |
+
$subscription_item = $params['subscription_item'];
|
35 |
+
$url = "/v1/subscription_items/$subscription_item/usage_records";
|
36 |
+
$request_params = $params;
|
37 |
+
unset($request_params['subscription_item']);
|
38 |
+
|
39 |
+
list($response, $opts) = static::_staticRequest('post', $url, $request_params, $options);
|
40 |
+
$obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
|
41 |
+
$obj->setLastResponse($response);
|
42 |
+
return $obj;
|
43 |
+
}
|
44 |
+
}
|
includes/lib/Stripe/lib/UsageRecordSummary.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class UsageRecord
|
7 |
+
*
|
8 |
+
* @package Stripe
|
9 |
+
*
|
10 |
+
* @property string $id
|
11 |
+
* @property string $object
|
12 |
+
* @property string $invoice
|
13 |
+
* @property bool $livemode
|
14 |
+
* @property mixed $period
|
15 |
+
* @property string $subscription_item
|
16 |
+
* @property int $total_usage
|
17 |
+
*/
|
18 |
+
class UsageRecordSummary extends ApiResource
|
19 |
+
{
|
20 |
+
|
21 |
+
const OBJECT_NAME = "usage_record_summary";
|
22 |
+
}
|
includes/lib/Stripe/lib/Util/AutoPagingIterator.php
CHANGED
@@ -7,7 +7,7 @@ class AutoPagingIterator implements \Iterator
|
|
7 |
private $lastId = null;
|
8 |
private $page = null;
|
9 |
private $pageOffset = 0;
|
10 |
-
private $params =
|
11 |
|
12 |
public function __construct($collection, $params)
|
13 |
{
|
@@ -42,8 +42,8 @@ class AutoPagingIterator implements \Iterator
|
|
42 |
$this->pageOffset += count($this->page->data);
|
43 |
if ($this->page['has_more']) {
|
44 |
$this->params = array_merge(
|
45 |
-
$this->params
|
46 |
-
|
47 |
);
|
48 |
$this->page = $this->page->all($this->params);
|
49 |
} else {
|
7 |
private $lastId = null;
|
8 |
private $page = null;
|
9 |
private $pageOffset = 0;
|
10 |
+
private $params = [];
|
11 |
|
12 |
public function __construct($collection, $params)
|
13 |
{
|
42 |
$this->pageOffset += count($this->page->data);
|
43 |
if ($this->page['has_more']) {
|
44 |
$this->params = array_merge(
|
45 |
+
$this->params ?: [],
|
46 |
+
['starting_after' => $this->lastId]
|
47 |
);
|
48 |
$this->page = $this->page->all($this->params);
|
49 |
} else {
|
includes/lib/Stripe/lib/Util/CaseInsensitiveArray.php
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Util;
|
4 |
+
|
5 |
+
use ArrayAccess;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* CaseInsensitiveArray is an array-like class that ignores case for keys.
|
9 |
+
*
|
10 |
+
* It is used to store HTTP headers. Per RFC 2616, section 4.2:
|
11 |
+
* Each header field consists of a name followed by a colon (":") and the field value. Field names
|
12 |
+
* are case-insensitive.
|
13 |
+
*
|
14 |
+
* In the context of stripe-php, this is useful because the API will return headers with different
|
15 |
+
* case depending on whether HTTP/2 is used or not (with HTTP/2, headers are always in lowercase).
|
16 |
+
*/
|
17 |
+
class CaseInsensitiveArray implements ArrayAccess
|
18 |
+
{
|
19 |
+
private $container = array();
|
20 |
+
|
21 |
+
public function __construct($initial_array = array())
|
22 |
+
{
|
23 |
+
$this->container = array_map("strtolower", $initial_array);
|
24 |
+
}
|
25 |
+
|
26 |
+
public function offsetSet($offset, $value)
|
27 |
+
{
|
28 |
+
$offset = static::maybeLowercase($offset);
|
29 |
+
if (is_null($offset)) {
|
30 |
+
$this->container[] = $value;
|
31 |
+
} else {
|
32 |
+
$this->container[$offset] = $value;
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
public function offsetExists($offset)
|
37 |
+
{
|
38 |
+
$offset = static::maybeLowercase($offset);
|
39 |
+
return isset($this->container[$offset]);
|
40 |
+
}
|
41 |
+
|
42 |
+
public function offsetUnset($offset)
|
43 |
+
{
|
44 |
+
$offset = static::maybeLowercase($offset);
|
45 |
+
unset($this->container[$offset]);
|
46 |
+
}
|
47 |
+
|
48 |
+
public function offsetGet($offset)
|
49 |
+
{
|
50 |
+
$offset = static::maybeLowercase($offset);
|
51 |
+
return isset($this->container[$offset]) ? $this->container[$offset] : null;
|
52 |
+
}
|
53 |
+
|
54 |
+
private static function maybeLowercase($v)
|
55 |
+
{
|
56 |
+
if (is_string($v)) {
|
57 |
+
return strtolower($v);
|
58 |
+
} else {
|
59 |
+
return $v;
|
60 |
+
}
|
61 |
+
}
|
62 |
+
}
|
includes/lib/Stripe/lib/Util/DefaultLogger.php
CHANGED
@@ -8,10 +8,10 @@ namespace Stripe\Util;
|
|
8 |
*/
|
9 |
class DefaultLogger implements LoggerInterface
|
10 |
{
|
11 |
-
public function error($message, array $context =
|
12 |
{
|
13 |
if (count($context) > 0) {
|
14 |
-
throw new Exception('DefaultLogger does not currently implement context. Please implement if you need it.');
|
15 |
}
|
16 |
error_log($message);
|
17 |
}
|
8 |
*/
|
9 |
class DefaultLogger implements LoggerInterface
|
10 |
{
|
11 |
+
public function error($message, array $context = [])
|
12 |
{
|
13 |
if (count($context) > 0) {
|
14 |
+
throw new \Exception('DefaultLogger does not currently implement context. Please implement if you need it.');
|
15 |
}
|
16 |
error_log($message);
|
17 |
}
|
includes/lib/Stripe/lib/Util/LoggerInterface.php
CHANGED
@@ -32,5 +32,5 @@ interface LoggerInterface
|
|
32 |
* @param array $context
|
33 |
* @return null
|
34 |
*/
|
35 |
-
public function error($message, array $context =
|
36 |
}
|
32 |
* @param array $context
|
33 |
* @return null
|
34 |
*/
|
35 |
+
public function error($message, array $context = []);
|
36 |
}
|
includes/lib/Stripe/lib/Util/RandomGenerator.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe\Util;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* A basic random generator. This is in a separate class so we the generator
|
7 |
+
* can be injected as a dependency and replaced with a mock in tests.
|
8 |
+
*/
|
9 |
+
class RandomGenerator
|
10 |
+
{
|
11 |
+
/**
|
12 |
+
* Returns a random value between 0 and $max.
|
13 |
+
*
|
14 |
+
* @param float $max (optional)
|
15 |
+
* @return float
|
16 |
+
*/
|
17 |
+
public function randFloat($max = 1.0)
|
18 |
+
{
|
19 |
+
return mt_rand() / mt_getrandmax() * $max;
|
20 |
+
}
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Returns a v4 UUID.
|
24 |
+
*
|
25 |
+
* @return string
|
26 |
+
*/
|
27 |
+
public function uuid()
|
28 |
+
{
|
29 |
+
$arr = array_values(unpack('N1a/n4b/N1c', openssl_random_pseudo_bytes(16)));
|
30 |
+
$arr[2] = ($arr[2] & 0x0fff) | 0x4000;
|
31 |
+
$arr[3] = ($arr[3] & 0x3fff) | 0x8000;
|
32 |
+
return vsprintf('%08x-%04x-%04x-%04x-%04x%08x', $arr);
|
33 |
+
}
|
34 |
+
}
|
includes/lib/Stripe/lib/Util/RequestOptions.php
CHANGED
@@ -6,13 +6,23 @@ use Stripe\Error;
|
|
6 |
|
7 |
class RequestOptions
|
8 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
public $headers;
|
10 |
public $apiKey;
|
|
|
11 |
|
12 |
-
public function __construct($key = null, $headers =
|
13 |
{
|
14 |
$this->apiKey = $key;
|
15 |
$this->headers = $headers;
|
|
|
16 |
}
|
17 |
|
18 |
/**
|
@@ -28,10 +38,25 @@ class RequestOptions
|
|
28 |
if ($other_options->apiKey === null) {
|
29 |
$other_options->apiKey = $this->apiKey;
|
30 |
}
|
|
|
|
|
|
|
31 |
$other_options->headers = array_merge($this->headers, $other_options->headers);
|
32 |
return $other_options;
|
33 |
}
|
34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
/**
|
36 |
* Unpacks an options array into an RequestOptions object
|
37 |
* @param array|string|null $options a key => value array
|
@@ -45,16 +70,17 @@ class RequestOptions
|
|
45 |
}
|
46 |
|
47 |
if (is_null($options)) {
|
48 |
-
return new RequestOptions(null,
|
49 |
}
|
50 |
|
51 |
if (is_string($options)) {
|
52 |
-
return new RequestOptions($options,
|
53 |
}
|
54 |
|
55 |
if (is_array($options)) {
|
56 |
-
$headers =
|
57 |
$key = null;
|
|
|
58 |
if (array_key_exists('api_key', $options)) {
|
59 |
$key = $options['api_key'];
|
60 |
}
|
@@ -67,7 +93,10 @@ class RequestOptions
|
|
67 |
if (array_key_exists('stripe_version', $options)) {
|
68 |
$headers['Stripe-Version'] = $options['stripe_version'];
|
69 |
}
|
70 |
-
|
|
|
|
|
|
|
71 |
}
|
72 |
|
73 |
$message = 'The second argument to Stripe API method calls is an '
|
6 |
|
7 |
class RequestOptions
|
8 |
{
|
9 |
+
/**
|
10 |
+
* @var array A list of headers that should be persisted across requests.
|
11 |
+
*/
|
12 |
+
public static $HEADERS_TO_PERSIST = [
|
13 |
+
'Stripe-Account',
|
14 |
+
'Stripe-Version',
|
15 |
+
];
|
16 |
+
|
17 |
public $headers;
|
18 |
public $apiKey;
|
19 |
+
public $apiBase;
|
20 |
|
21 |
+
public function __construct($key = null, $headers = [], $base = null)
|
22 |
{
|
23 |
$this->apiKey = $key;
|
24 |
$this->headers = $headers;
|
25 |
+
$this->apiBase = $base;
|
26 |
}
|
27 |
|
28 |
/**
|
38 |
if ($other_options->apiKey === null) {
|
39 |
$other_options->apiKey = $this->apiKey;
|
40 |
}
|
41 |
+
if ($other_options->apiBase === null) {
|
42 |
+
$other_options->apiBase = $this->apiBase;
|
43 |
+
}
|
44 |
$other_options->headers = array_merge($this->headers, $other_options->headers);
|
45 |
return $other_options;
|
46 |
}
|
47 |
|
48 |
+
/**
|
49 |
+
* Discards all headers that we don't want to persist across requests.
|
50 |
+
*/
|
51 |
+
public function discardNonPersistentHeaders()
|
52 |
+
{
|
53 |
+
foreach ($this->headers as $k => $v) {
|
54 |
+
if (!in_array($k, self::$HEADERS_TO_PERSIST)) {
|
55 |
+
unset($this->headers[$k]);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
/**
|
61 |
* Unpacks an options array into an RequestOptions object
|
62 |
* @param array|string|null $options a key => value array
|
70 |
}
|
71 |
|
72 |
if (is_null($options)) {
|
73 |
+
return new RequestOptions(null, [], null);
|
74 |
}
|
75 |
|
76 |
if (is_string($options)) {
|
77 |
+
return new RequestOptions($options, [], null);
|
78 |
}
|
79 |
|
80 |
if (is_array($options)) {
|
81 |
+
$headers = [];
|
82 |
$key = null;
|
83 |
+
$base = null;
|
84 |
if (array_key_exists('api_key', $options)) {
|
85 |
$key = $options['api_key'];
|
86 |
}
|
93 |
if (array_key_exists('stripe_version', $options)) {
|
94 |
$headers['Stripe-Version'] = $options['stripe_version'];
|
95 |
}
|
96 |
+
if (array_key_exists('api_base', $options)) {
|
97 |
+
$base = $options['api_base'];
|
98 |
+
}
|
99 |
+
return new RequestOptions($key, $headers, $base);
|
100 |
}
|
101 |
|
102 |
$message = 'The second argument to Stripe API method calls is an '
|
includes/lib/Stripe/lib/Util/Set.php
CHANGED
@@ -9,9 +9,9 @@ class Set implements IteratorAggregate
|
|
9 |
{
|
10 |
private $_elts;
|
11 |
|
12 |
-
public function __construct($members =
|
13 |
{
|
14 |
-
$this->_elts =
|
15 |
foreach ($members as $item) {
|
16 |
$this->_elts[$item] = true;
|
17 |
}
|
9 |
{
|
10 |
private $_elts;
|
11 |
|
12 |
+
public function __construct($members = [])
|
13 |
{
|
14 |
+
$this->_elts = [];
|
15 |
foreach ($members as $item) {
|
16 |
$this->_elts[$item] = true;
|
17 |
}
|
includes/lib/Stripe/lib/Util/Util.php
CHANGED
@@ -11,21 +11,22 @@ abstract class Util
|
|
11 |
|
12 |
/**
|
13 |
* Whether the provided array (or other) is a list rather than a dictionary.
|
|
|
|
|
14 |
*
|
15 |
* @param array|mixed $array
|
16 |
-
* @return boolean
|
17 |
*/
|
18 |
public static function isList($array)
|
19 |
{
|
20 |
if (!is_array($array)) {
|
21 |
return false;
|
22 |
}
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
}
|
29 |
}
|
30 |
return true;
|
31 |
}
|
@@ -38,7 +39,7 @@ abstract class Util
|
|
38 |
*/
|
39 |
public static function convertStripeObjectToArray($values)
|
40 |
{
|
41 |
-
$results =
|
42 |
foreach ($values as $k => $v) {
|
43 |
// FIXME: this is an encapsulation violation
|
44 |
if ($k[0] == '_') {
|
@@ -64,47 +65,93 @@ abstract class Util
|
|
64 |
*/
|
65 |
public static function convertToStripeObject($resp, $opts)
|
66 |
{
|
67 |
-
$types =
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
if (self::isList($resp)) {
|
107 |
-
$mapped =
|
108 |
foreach ($resp as $i) {
|
109 |
array_push($mapped, self::convertToStripeObject($i, $opts));
|
110 |
}
|
@@ -177,41 +224,138 @@ abstract class Util
|
|
177 |
}
|
178 |
|
179 |
/**
|
180 |
-
*
|
181 |
-
*
|
|
|
182 |
*
|
183 |
-
* @
|
|
|
184 |
*/
|
185 |
-
public static function
|
186 |
{
|
187 |
-
if (
|
188 |
-
return $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
}
|
|
|
190 |
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
203 |
}
|
|
|
204 |
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
} else {
|
211 |
-
$
|
212 |
}
|
213 |
}
|
214 |
|
215 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
}
|
217 |
}
|
11 |
|
12 |
/**
|
13 |
* Whether the provided array (or other) is a list rather than a dictionary.
|
14 |
+
* A list is defined as an array for which all the keys are consecutive
|
15 |
+
* integers starting at 0. Empty arrays are considered to be lists.
|
16 |
*
|
17 |
* @param array|mixed $array
|
18 |
+
* @return boolean true if the given object is a list.
|
19 |
*/
|
20 |
public static function isList($array)
|
21 |
{
|
22 |
if (!is_array($array)) {
|
23 |
return false;
|
24 |
}
|
25 |
+
if ($array === []) {
|
26 |
+
return true;
|
27 |
+
}
|
28 |
+
if (array_keys($array) !== range(0, count($array) - 1)) {
|
29 |
+
return false;
|
|
|
30 |
}
|
31 |
return true;
|
32 |
}
|
39 |
*/
|
40 |
public static function convertStripeObjectToArray($values)
|
41 |
{
|
42 |
+
$results = [];
|
43 |
foreach ($values as $k => $v) {
|
44 |
// FIXME: this is an encapsulation violation
|
45 |
if ($k[0] == '_') {
|
65 |
*/
|
66 |
public static function convertToStripeObject($resp, $opts)
|
67 |
{
|
68 |
+
$types = [
|
69 |
+
// data structures
|
70 |
+
\Stripe\Collection::OBJECT_NAME => 'Stripe\\Collection',
|
71 |
+
|
72 |
+
// business objects
|
73 |
+
\Stripe\Account::OBJECT_NAME => 'Stripe\\Account',
|
74 |
+
\Stripe\AccountLink::OBJECT_NAME => 'Stripe\\AccountLink',
|
75 |
+
\Stripe\AlipayAccount::OBJECT_NAME => 'Stripe\\AlipayAccount',
|
76 |
+
\Stripe\ApplePayDomain::OBJECT_NAME => 'Stripe\\ApplePayDomain',
|
77 |
+
\Stripe\ApplicationFee::OBJECT_NAME => 'Stripe\\ApplicationFee',
|
78 |
+
\Stripe\Balance::OBJECT_NAME => 'Stripe\\Balance',
|
79 |
+
\Stripe\BalanceTransaction::OBJECT_NAME => 'Stripe\\BalanceTransaction',
|
80 |
+
\Stripe\BankAccount::OBJECT_NAME => 'Stripe\\BankAccount',
|
81 |
+
\Stripe\BitcoinReceiver::OBJECT_NAME => 'Stripe\\BitcoinReceiver',
|
82 |
+
\Stripe\BitcoinTransaction::OBJECT_NAME => 'Stripe\\BitcoinTransaction',
|
83 |
+
\Stripe\Capability::OBJECT_NAME => 'Stripe\\Capability',
|
84 |
+
\Stripe\Card::OBJECT_NAME => 'Stripe\\Card',
|
85 |
+
\Stripe\Charge::OBJECT_NAME => 'Stripe\\Charge',
|
86 |
+
\Stripe\Checkout\Session::OBJECT_NAME => 'Stripe\\Checkout\\Session',
|
87 |
+
\Stripe\CountrySpec::OBJECT_NAME => 'Stripe\\CountrySpec',
|
88 |
+
\Stripe\Coupon::OBJECT_NAME => 'Stripe\\Coupon',
|
89 |
+
\Stripe\CreditNote::OBJECT_NAME => 'Stripe\\CreditNote',
|
90 |
+
\Stripe\Customer::OBJECT_NAME => 'Stripe\\Customer',
|
91 |
+
\Stripe\CustomerBalanceTransaction::OBJECT_NAME => 'Stripe\\CustomerBalanceTransaction',
|
92 |
+
\Stripe\Discount::OBJECT_NAME => 'Stripe\\Discount',
|
93 |
+
\Stripe\Dispute::OBJECT_NAME => 'Stripe\\Dispute',
|
94 |
+
\Stripe\EphemeralKey::OBJECT_NAME => 'Stripe\\EphemeralKey',
|
95 |
+
\Stripe\Event::OBJECT_NAME => 'Stripe\\Event',
|
96 |
+
\Stripe\ExchangeRate::OBJECT_NAME => 'Stripe\\ExchangeRate',
|
97 |
+
\Stripe\ApplicationFeeRefund::OBJECT_NAME => 'Stripe\\ApplicationFeeRefund',
|
98 |
+
\Stripe\File::OBJECT_NAME => 'Stripe\\File',
|
99 |
+
\Stripe\File::OBJECT_NAME_ALT => 'Stripe\\File',
|
100 |
+
\Stripe\FileLink::OBJECT_NAME => 'Stripe\\FileLink',
|
101 |
+
\Stripe\Invoice::OBJECT_NAME => 'Stripe\\Invoice',
|
102 |
+
\Stripe\InvoiceItem::OBJECT_NAME => 'Stripe\\InvoiceItem',
|
103 |
+
\Stripe\InvoiceLineItem::OBJECT_NAME => 'Stripe\\InvoiceLineItem',
|
104 |
+
\Stripe\IssuerFraudRecord::OBJECT_NAME => 'Stripe\\IssuerFraudRecord',
|
105 |
+
\Stripe\Issuing\Authorization::OBJECT_NAME => 'Stripe\\Issuing\\Authorization',
|
106 |
+
\Stripe\Issuing\Card::OBJECT_NAME => 'Stripe\\Issuing\\Card',
|
107 |
+
\Stripe\Issuing\CardDetails::OBJECT_NAME => 'Stripe\\Issuing\\CardDetails',
|
108 |
+
\Stripe\Issuing\Cardholder::OBJECT_NAME => 'Stripe\\Issuing\\Cardholder',
|
109 |
+
\Stripe\Issuing\Dispute::OBJECT_NAME => 'Stripe\\Issuing\\Dispute',
|
110 |
+
\Stripe\Issuing\Transaction::OBJECT_NAME => 'Stripe\\Issuing\\Transaction',
|
111 |
+
\Stripe\LoginLink::OBJECT_NAME => 'Stripe\\LoginLink',
|
112 |
+
\Stripe\Order::OBJECT_NAME => 'Stripe\\Order',
|
113 |
+
\Stripe\OrderItem::OBJECT_NAME => 'Stripe\\OrderItem',
|
114 |
+
\Stripe\OrderReturn::OBJECT_NAME => 'Stripe\\OrderReturn',
|
115 |
+
\Stripe\PaymentIntent::OBJECT_NAME => 'Stripe\\PaymentIntent',
|
116 |
+
\Stripe\PaymentMethod::OBJECT_NAME => 'Stripe\\PaymentMethod',
|
117 |
+
\Stripe\Payout::OBJECT_NAME => 'Stripe\\Payout',
|
118 |
+
\Stripe\Person::OBJECT_NAME => 'Stripe\\Person',
|
119 |
+
\Stripe\Plan::OBJECT_NAME => 'Stripe\\Plan',
|
120 |
+
\Stripe\Product::OBJECT_NAME => 'Stripe\\Product',
|
121 |
+
\Stripe\Radar\EarlyFraudWarning::OBJECT_NAME => 'Stripe\\Radar\\EarlyFraudWarning',
|
122 |
+
\Stripe\Radar\ValueList::OBJECT_NAME => 'Stripe\\Radar\\ValueList',
|
123 |
+
\Stripe\Radar\ValueListItem::OBJECT_NAME => 'Stripe\\Radar\\ValueListItem',
|
124 |
+
\Stripe\Recipient::OBJECT_NAME => 'Stripe\\Recipient',
|
125 |
+
\Stripe\RecipientTransfer::OBJECT_NAME => 'Stripe\\RecipientTransfer',
|
126 |
+
\Stripe\Refund::OBJECT_NAME => 'Stripe\\Refund',
|
127 |
+
\Stripe\Reporting\ReportRun::OBJECT_NAME => 'Stripe\\Reporting\\ReportRun',
|
128 |
+
\Stripe\Reporting\ReportType::OBJECT_NAME => 'Stripe\\Reporting\\ReportType',
|
129 |
+
\Stripe\Review::OBJECT_NAME => 'Stripe\\Review',
|
130 |
+
\Stripe\SetupIntent::OBJECT_NAME => 'Stripe\\SetupIntent',
|
131 |
+
\Stripe\SKU::OBJECT_NAME => 'Stripe\\SKU',
|
132 |
+
\Stripe\Sigma\ScheduledQueryRun::OBJECT_NAME => 'Stripe\\Sigma\\ScheduledQueryRun',
|
133 |
+
\Stripe\Source::OBJECT_NAME => 'Stripe\\Source',
|
134 |
+
\Stripe\SourceTransaction::OBJECT_NAME => 'Stripe\\SourceTransaction',
|
135 |
+
\Stripe\Subscription::OBJECT_NAME => 'Stripe\\Subscription',
|
136 |
+
\Stripe\SubscriptionItem::OBJECT_NAME => 'Stripe\\SubscriptionItem',
|
137 |
+
\Stripe\SubscriptionSchedule::OBJECT_NAME => 'Stripe\\SubscriptionSchedule',
|
138 |
+
\Stripe\SubscriptionScheduleRevision::OBJECT_NAME => 'Stripe\\SubscriptionScheduleRevision',
|
139 |
+
\Stripe\TaxId::OBJECT_NAME => 'Stripe\\TaxId',
|
140 |
+
\Stripe\TaxRate::OBJECT_NAME => 'Stripe\\TaxRate',
|
141 |
+
\Stripe\ThreeDSecure::OBJECT_NAME => 'Stripe\\ThreeDSecure',
|
142 |
+
\Stripe\Terminal\ConnectionToken::OBJECT_NAME => 'Stripe\\Terminal\\ConnectionToken',
|
143 |
+
\Stripe\Terminal\Location::OBJECT_NAME => 'Stripe\\Terminal\\Location',
|
144 |
+
\Stripe\Terminal\Reader::OBJECT_NAME => 'Stripe\\Terminal\\Reader',
|
145 |
+
\Stripe\Token::OBJECT_NAME => 'Stripe\\Token',
|
146 |
+
\Stripe\Topup::OBJECT_NAME => 'Stripe\\Topup',
|
147 |
+
\Stripe\Transfer::OBJECT_NAME => 'Stripe\\Transfer',
|
148 |
+
\Stripe\TransferReversal::OBJECT_NAME => 'Stripe\\TransferReversal',
|
149 |
+
\Stripe\UsageRecord::OBJECT_NAME => 'Stripe\\UsageRecord',
|
150 |
+
\Stripe\UsageRecordSummary::OBJECT_NAME => 'Stripe\\UsageRecordSummary',
|
151 |
+
\Stripe\WebhookEndpoint::OBJECT_NAME => 'Stripe\\WebhookEndpoint',
|
152 |
+
];
|
153 |
if (self::isList($resp)) {
|
154 |
+
$mapped = [];
|
155 |
foreach ($resp as $i) {
|
156 |
array_push($mapped, self::convertToStripeObject($i, $opts));
|
157 |
}
|
224 |
}
|
225 |
|
226 |
/**
|
227 |
+
* Recursively goes through an array of parameters. If a parameter is an instance of
|
228 |
+
* ApiResource, then it is replaced by the resource's ID.
|
229 |
+
* Also clears out null values.
|
230 |
*
|
231 |
+
* @param mixed $h
|
232 |
+
* @return mixed
|
233 |
*/
|
234 |
+
public static function objectsToIds($h)
|
235 |
{
|
236 |
+
if ($h instanceof \Stripe\ApiResource) {
|
237 |
+
return $h->id;
|
238 |
+
} elseif (static::isList($h)) {
|
239 |
+
$results = [];
|
240 |
+
foreach ($h as $v) {
|
241 |
+
array_push($results, static::objectsToIds($v));
|
242 |
+
}
|
243 |
+
return $results;
|
244 |
+
} elseif (is_array($h)) {
|
245 |
+
$results = [];
|
246 |
+
foreach ($h as $k => $v) {
|
247 |
+
if (is_null($v)) {
|
248 |
+
continue;
|
249 |
+
}
|
250 |
+
$results[$k] = static::objectsToIds($v);
|
251 |
+
}
|
252 |
+
return $results;
|
253 |
+
} else {
|
254 |
+
return $h;
|
255 |
}
|
256 |
+
}
|
257 |
|
258 |
+
/**
|
259 |
+
* @param array $params
|
260 |
+
*
|
261 |
+
* @return string
|
262 |
+
*/
|
263 |
+
public static function encodeParameters($params)
|
264 |
+
{
|
265 |
+
$flattenedParams = self::flattenParams($params);
|
266 |
+
$pieces = [];
|
267 |
+
foreach ($flattenedParams as $param) {
|
268 |
+
list($k, $v) = $param;
|
269 |
+
array_push($pieces, self::urlEncode($k) . '=' . self::urlEncode($v));
|
270 |
+
}
|
271 |
+
return implode('&', $pieces);
|
272 |
+
}
|
273 |
|
274 |
+
/**
|
275 |
+
* @param array $params
|
276 |
+
* @param string|null $parentKey
|
277 |
+
*
|
278 |
+
* @return array
|
279 |
+
*/
|
280 |
+
public static function flattenParams($params, $parentKey = null)
|
281 |
+
{
|
282 |
+
$result = [];
|
283 |
+
|
284 |
+
foreach ($params as $key => $value) {
|
285 |
+
$calculatedKey = $parentKey ? "{$parentKey}[{$key}]" : $key;
|
286 |
+
|
287 |
+
if (self::isList($value)) {
|
288 |
+
$result = array_merge($result, self::flattenParamsList($value, $calculatedKey));
|
289 |
+
} elseif (is_array($value)) {
|
290 |
+
$result = array_merge($result, self::flattenParams($value, $calculatedKey));
|
291 |
+
} else {
|
292 |
+
array_push($result, [$calculatedKey, $value]);
|
293 |
}
|
294 |
+
}
|
295 |
|
296 |
+
return $result;
|
297 |
+
}
|
298 |
+
|
299 |
+
/**
|
300 |
+
* @param array $value
|
301 |
+
* @param string $calculatedKey
|
302 |
+
*
|
303 |
+
* @return array
|
304 |
+
*/
|
305 |
+
public static function flattenParamsList($value, $calculatedKey)
|
306 |
+
{
|
307 |
+
$result = [];
|
308 |
+
|
309 |
+
foreach ($value as $i => $elem) {
|
310 |
+
if (self::isList($elem)) {
|
311 |
+
$result = array_merge($result, self::flattenParamsList($elem, $calculatedKey));
|
312 |
+
} elseif (is_array($elem)) {
|
313 |
+
$result = array_merge($result, self::flattenParams($elem, "{$calculatedKey}[{$i}]"));
|
314 |
} else {
|
315 |
+
array_push($result, ["{$calculatedKey}[{$i}]", $elem]);
|
316 |
}
|
317 |
}
|
318 |
|
319 |
+
return $result;
|
320 |
+
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* @param string $key A string to URL-encode.
|
324 |
+
*
|
325 |
+
* @return string The URL-encoded string.
|
326 |
+
*/
|
327 |
+
public static function urlEncode($key)
|
328 |
+
{
|
329 |
+
$s = urlencode($key);
|
330 |
+
|
331 |
+
// Don't use strict form encoding by changing the square bracket control
|
332 |
+
// characters back to their literals. This is fine by the server, and
|
333 |
+
// makes these parameter strings easier to read.
|
334 |
+
$s = str_replace('%5B', '[', $s);
|
335 |
+
$s = str_replace('%5D', ']', $s);
|
336 |
+
|
337 |
+
return $s;
|
338 |
+
}
|
339 |
+
|
340 |
+
public static function normalizeId($id)
|
341 |
+
{
|
342 |
+
if (is_array($id)) {
|
343 |
+
$params = $id;
|
344 |
+
$id = $params['id'];
|
345 |
+
unset($params['id']);
|
346 |
+
} else {
|
347 |
+
$params = [];
|
348 |
+
}
|
349 |
+
return [$id, $params];
|
350 |
+
}
|
351 |
+
|
352 |
+
/**
|
353 |
+
* Returns UNIX timestamp in milliseconds
|
354 |
+
*
|
355 |
+
* @return integer current time in millis
|
356 |
+
*/
|
357 |
+
public static function currentTimeMillis()
|
358 |
+
{
|
359 |
+
return (int) round(microtime(true) * 1000);
|
360 |
}
|
361 |
}
|
includes/lib/Stripe/lib/Webhook.php
CHANGED
@@ -20,10 +20,12 @@ abstract class Webhook
|
|
20 |
* timestamp and the current time
|
21 |
* @return \Stripe\Event the Event instance
|
22 |
* @throws \UnexpectedValueException if the payload is not valid JSON,
|
23 |
-
*
|
24 |
*/
|
25 |
public static function constructEvent($payload, $sigHeader, $secret, $tolerance = self::DEFAULT_TOLERANCE)
|
26 |
{
|
|
|
|
|
27 |
$data = json_decode($payload, true);
|
28 |
$jsonError = json_last_error();
|
29 |
if ($data === null && $jsonError !== JSON_ERROR_NONE) {
|
@@ -31,9 +33,7 @@ abstract class Webhook
|
|
31 |
. "(json_last_error() was $jsonError)";
|
32 |
throw new \UnexpectedValueException($msg);
|
33 |
}
|
34 |
-
$event = Event::constructFrom($data
|
35 |
-
|
36 |
-
WebhookSignature::verifyHeader($payload, $sigHeader, $secret, $tolerance);
|
37 |
|
38 |
return $event;
|
39 |
}
|
20 |
* timestamp and the current time
|
21 |
* @return \Stripe\Event the Event instance
|
22 |
* @throws \UnexpectedValueException if the payload is not valid JSON,
|
23 |
+
* @throws \Stripe\Error\SignatureVerification if the verification fails.
|
24 |
*/
|
25 |
public static function constructEvent($payload, $sigHeader, $secret, $tolerance = self::DEFAULT_TOLERANCE)
|
26 |
{
|
27 |
+
WebhookSignature::verifyHeader($payload, $sigHeader, $secret, $tolerance);
|
28 |
+
|
29 |
$data = json_decode($payload, true);
|
30 |
$jsonError = json_last_error();
|
31 |
if ($data === null && $jsonError !== JSON_ERROR_NONE) {
|
33 |
. "(json_last_error() was $jsonError)";
|
34 |
throw new \UnexpectedValueException($msg);
|
35 |
}
|
36 |
+
$event = Event::constructFrom($data);
|
|
|
|
|
37 |
|
38 |
return $event;
|
39 |
}
|
includes/lib/Stripe/lib/WebhookEndpoint.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Stripe;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class WebhookEndpoint
|
7 |
+
*
|
8 |
+
* @property string $id
|
9 |
+
* @property string $object
|
10 |
+
* @property int $created
|
11 |
+
* @property string[] $enabled_events
|
12 |
+
* @property bool $livemode
|
13 |
+
* @property string $secret
|
14 |
+
* @property string $status
|
15 |
+
* @property string $url
|
16 |
+
*
|
17 |
+
* @package Stripe
|
18 |
+
*/
|
19 |
+
class WebhookEndpoint extends ApiResource
|
20 |
+
{
|
21 |
+
|
22 |
+
const OBJECT_NAME = "webhook_endpoint";
|
23 |
+
|
24 |
+
use ApiOperations\All;
|
25 |
+
use ApiOperations\Create;
|
26 |
+
use ApiOperations\Delete;
|
27 |
+
use ApiOperations\Retrieve;
|
28 |
+
use ApiOperations\Update;
|
29 |
+
}
|
includes/lib/Stripe/lib/WebhookSignature.php
CHANGED
@@ -17,7 +17,8 @@ abstract class WebhookSignature
|
|
17 |
* @param string $secret secret used to generate the signature.
|
18 |
* @param int $tolerance maximum difference allowed between the header's
|
19 |
* timestamp and the current time
|
20 |
-
* @throws SignatureVerification if the verification fails.
|
|
|
21 |
*/
|
22 |
public static function verifyHeader($payload, $header, $secret, $tolerance = null)
|
23 |
{
|
@@ -59,7 +60,7 @@ abstract class WebhookSignature
|
|
59 |
}
|
60 |
|
61 |
// Check if timestamp is within tolerance
|
62 |
-
if (($tolerance > 0) && ((time() - $timestamp) > $tolerance)) {
|
63 |
throw new Error\SignatureVerification(
|
64 |
"Timestamp outside the tolerance zone",
|
65 |
$header,
|
@@ -103,7 +104,7 @@ abstract class WebhookSignature
|
|
103 |
*/
|
104 |
private static function getSignatures($header, $scheme)
|
105 |
{
|
106 |
-
$signatures =
|
107 |
$items = explode(",", $header);
|
108 |
|
109 |
foreach ($items as $item) {
|
17 |
* @param string $secret secret used to generate the signature.
|
18 |
* @param int $tolerance maximum difference allowed between the header's
|
19 |
* timestamp and the current time
|
20 |
+
* @throws \Stripe\Error\SignatureVerification if the verification fails.
|
21 |
+
* @return bool
|
22 |
*/
|
23 |
public static function verifyHeader($payload, $header, $secret, $tolerance = null)
|
24 |
{
|
60 |
}
|
61 |
|
62 |
// Check if timestamp is within tolerance
|
63 |
+
if (($tolerance > 0) && (abs(time() - $timestamp) > $tolerance)) {
|
64 |
throw new Error\SignatureVerification(
|
65 |
"Timestamp outside the tolerance zone",
|
66 |
$header,
|
104 |
*/
|
105 |
private static function getSignatures($header, $scheme)
|
106 |
{
|
107 |
+
$signatures = [];
|
108 |
$items = explode(",", $header);
|
109 |
|
110 |
foreach ($items as $item) {
|
includes/lib/php-jwt/BeforeValidException.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Firebase\JWT;
|
3 |
+
|
4 |
+
class BeforeValidException extends \UnexpectedValueException
|
5 |
+
{
|
6 |
+
|
7 |
+
}
|
includes/lib/php-jwt/ExpiredException.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Firebase\JWT;
|
3 |
+
|
4 |
+
class ExpiredException extends \UnexpectedValueException
|
5 |
+
{
|
6 |
+
|
7 |
+
}
|
includes/lib/php-jwt/JWT.php
ADDED
@@ -0,0 +1,379 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Added PMPro to namespace to avoid conflicts.
|
3 |
+
namespace PMPro\Firebase\JWT;
|
4 |
+
use \DomainException;
|
5 |
+
use \InvalidArgumentException;
|
6 |
+
use \UnexpectedValueException;
|
7 |
+
use \DateTime;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* JSON Web Token implementation, based on this spec:
|
11 |
+
* https://tools.ietf.org/html/rfc7519
|
12 |
+
*
|
13 |
+
* PHP version 5
|
14 |
+
*
|
15 |
+
* @category Authentication
|
16 |
+
* @package Authentication_JWT
|
17 |
+
* @author Neuman Vong <neuman@twilio.com>
|
18 |
+
* @author Anant Narayanan <anant@php.net>
|
19 |
+
* @license http://opensource.org/licenses/BSD-3-Clause 3-clause BSD
|
20 |
+
* @link https://github.com/firebase/php-jwt
|
21 |
+
*/
|
22 |
+
class JWT
|
23 |
+
{
|
24 |
+
|
25 |
+
/**
|
26 |
+
* When checking nbf, iat or expiration times,
|
27 |
+
* we want to provide some extra leeway time to
|
28 |
+
* account for clock skew.
|
29 |
+
*/
|
30 |
+
public static $leeway = 0;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Allow the current timestamp to be specified.
|
34 |
+
* Useful for fixing a value within unit testing.
|
35 |
+
*
|
36 |
+
* Will default to PHP time() value if null.
|
37 |
+
*/
|
38 |
+
public static $timestamp = null;
|
39 |
+
|
40 |
+
public static $supported_algs = array(
|
41 |
+
'HS256' => array('hash_hmac', 'SHA256'),
|
42 |
+
'HS512' => array('hash_hmac', 'SHA512'),
|
43 |
+
'HS384' => array('hash_hmac', 'SHA384'),
|
44 |
+
'RS256' => array('openssl', 'SHA256'),
|
45 |
+
'RS384' => array('openssl', 'SHA384'),
|
46 |
+
'RS512' => array('openssl', 'SHA512'),
|
47 |
+
);
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Decodes a JWT string into a PHP object.
|
51 |
+
*
|
52 |
+
* @param string $jwt The JWT
|
53 |
+
* @param string|array $key The key, or map of keys.
|
54 |
+
* If the algorithm used is asymmetric, this is the public key
|
55 |
+
* @param array $allowed_algs List of supported verification algorithms
|
56 |
+
* Supported algorithms are 'HS256', 'HS384', 'HS512' and 'RS256'
|
57 |
+
*
|
58 |
+
* @return object The JWT's payload as a PHP object
|
59 |
+
*
|
60 |
+
* @throws UnexpectedValueException Provided JWT was invalid
|
61 |
+
* @throws SignatureInvalidException Provided JWT was invalid because the signature verification failed
|
62 |
+
* @throws BeforeValidException Provided JWT is trying to be used before it's eligible as defined by 'nbf'
|
63 |
+
* @throws BeforeValidException Provided JWT is trying to be used before it's been created as defined by 'iat'
|
64 |
+
* @throws ExpiredException Provided JWT has since expired, as defined by the 'exp' claim
|
65 |
+
*
|
66 |
+
* @uses jsonDecode
|
67 |
+
* @uses urlsafeB64Decode
|
68 |
+
*/
|
69 |
+
public static function decode($jwt, $key, array $allowed_algs = array())
|
70 |
+
{
|
71 |
+
$timestamp = is_null(static::$timestamp) ? time() : static::$timestamp;
|
72 |
+
|
73 |
+
if (empty($key)) {
|
74 |
+
throw new InvalidArgumentException('Key may not be empty');
|
75 |
+
}
|
76 |
+
$tks = explode('.', $jwt);
|
77 |
+
if (count($tks) != 3) {
|
78 |
+
throw new UnexpectedValueException('Wrong number of segments');
|
79 |
+
}
|
80 |
+
list($headb64, $bodyb64, $cryptob64) = $tks;
|
81 |
+
if (null === ($header = static::jsonDecode(static::urlsafeB64Decode($headb64)))) {
|
82 |
+
throw new UnexpectedValueException('Invalid header encoding');
|
83 |
+
}
|
84 |
+
if (null === $payload = static::jsonDecode(static::urlsafeB64Decode($bodyb64))) {
|
85 |
+
throw new UnexpectedValueException('Invalid claims encoding');
|
86 |
+
}
|
87 |
+
if (false === ($sig = static::urlsafeB64Decode($cryptob64))) {
|
88 |
+
throw new UnexpectedValueException('Invalid signature encoding');
|
89 |
+
}
|
90 |
+
if (empty($header->alg)) {
|
91 |
+
throw new UnexpectedValueException('Empty algorithm');
|
92 |
+
}
|
93 |
+
if (empty(static::$supported_algs[$header->alg])) {
|
94 |
+
throw new UnexpectedValueException('Algorithm not supported');
|
95 |
+
}
|
96 |
+
if (!in_array($header->alg, $allowed_algs)) {
|
97 |
+
throw new UnexpectedValueException('Algorithm not allowed');
|
98 |
+
}
|
99 |
+
if (is_array($key) || $key instanceof \ArrayAccess) {
|
100 |
+
if (isset($header->kid)) {
|
101 |
+
if (!isset($key[$header->kid])) {
|
102 |
+
throw new UnexpectedValueException('"kid" invalid, unable to lookup correct key');
|
103 |
+
}
|
104 |
+
$key = $key[$header->kid];
|
105 |
+
} else {
|
106 |
+
throw new UnexpectedValueException('"kid" empty, unable to lookup correct key');
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
// Check the signature
|
111 |
+
if (!static::verify("$headb64.$bodyb64", $sig, $key, $header->alg)) {
|
112 |
+
throw new SignatureInvalidException('Signature verification failed');
|
113 |
+
}
|
114 |
+
|
115 |
+
// Check if the nbf if it is defined. This is the time that the
|
116 |
+
// token can actually be used. If it's not yet that time, abort.
|
117 |
+
if (isset($payload->nbf) && $payload->nbf > ($timestamp + static::$leeway)) {
|
118 |
+
throw new BeforeValidException(
|
119 |
+
'Cannot handle token prior to ' . date(DateTime::ISO8601, $payload->nbf)
|
120 |
+
);
|
121 |
+
}
|
122 |
+
|
123 |
+
// Check that this token has been created before 'now'. This prevents
|
124 |
+
// using tokens that have been created for later use (and haven't
|
125 |
+
// correctly used the nbf claim).
|
126 |
+
if (isset($payload->iat) && $payload->iat > ($timestamp + static::$leeway)) {
|
127 |
+
throw new BeforeValidException(
|
128 |
+
'Cannot handle token prior to ' . date(DateTime::ISO8601, $payload->iat)
|
129 |
+
);
|
130 |
+
}
|
131 |
+
|
132 |
+
// Check if this token has expired.
|
133 |
+
if (isset($payload->exp) && ($timestamp - static::$leeway) >= $payload->exp) {
|
134 |
+
throw new ExpiredException('Expired token');
|
135 |
+
}
|
136 |
+
|
137 |
+
return $payload;
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* Converts and signs a PHP object or array into a JWT string.
|
142 |
+
*
|
143 |
+
* @param object|array $payload PHP object or array
|
144 |
+
* @param string $key The secret key.
|
145 |
+
* If the algorithm used is asymmetric, this is the private key
|
146 |
+
* @param string $alg The signing algorithm.
|
147 |
+
* Supported algorithms are 'HS256', 'HS384', 'HS512' and 'RS256'
|
148 |
+
* @param mixed $keyId
|
149 |
+
* @param array $head An array with header elements to attach
|
150 |
+
*
|
151 |
+
* @return string A signed JWT
|
152 |
+
*
|
153 |
+
* @uses jsonEncode
|
154 |
+
* @uses urlsafeB64Encode
|
155 |
+
*/
|
156 |
+
public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $head = null)
|
157 |
+
{
|
158 |
+
$header = array('typ' => 'JWT', 'alg' => $alg);
|
159 |
+
if ($keyId !== null) {
|
160 |
+
$header['kid'] = $keyId;
|
161 |
+
}
|
162 |
+
if ( isset($head) && is_array($head) ) {
|
163 |
+
$header = array_merge($head, $header);
|
164 |
+
}
|
165 |
+
$segments = array();
|
166 |
+
$segments[] = static::urlsafeB64Encode(static::jsonEncode($header));
|
167 |
+
$segments[] = static::urlsafeB64Encode(static::jsonEncode($payload));
|
168 |
+
$signing_input = implode('.', $segments);
|
169 |
+
|
170 |
+
$signature = static::sign($signing_input, $key, $alg);
|
171 |
+
$segments[] = static::urlsafeB64Encode($signature);
|
172 |
+
|
173 |
+
return implode('.', $segments);
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Sign a string with a given key and algorithm.
|
178 |
+
*
|
179 |
+
* @param string $msg The message to sign
|
180 |
+
* @param string|resource $key The secret key
|
181 |
+
* @param string $alg The signing algorithm.
|
182 |
+
* Supported algorithms are 'HS256', 'HS384', 'HS512' and 'RS256'
|
183 |
+
*
|
184 |
+
* @return string An encrypted message
|
185 |
+
*
|
186 |
+
* @throws DomainException Unsupported algorithm was specified
|
187 |
+
*/
|
188 |
+
public static function sign($msg, $key, $alg = 'HS256')
|
189 |
+
{
|
190 |
+
if (empty(static::$supported_algs[$alg])) {
|
191 |
+
throw new DomainException('Algorithm not supported');
|
192 |
+
}
|
193 |
+
list($function, $algorithm) = static::$supported_algs[$alg];
|
194 |
+
switch($function) {
|
195 |
+
case 'hash_hmac':
|
196 |
+
return hash_hmac($algorithm, $msg, $key, true);
|
197 |
+
case 'openssl':
|
198 |
+
$signature = '';
|
199 |
+
$success = openssl_sign($msg, $signature, $key, $algorithm);
|
200 |
+
if (!$success) {
|
201 |
+
throw new DomainException("OpenSSL unable to sign data");
|
202 |
+
} else {
|
203 |
+
return $signature;
|
204 |
+
}
|
205 |
+
}
|
206 |
+
}
|
207 |
+
|
208 |
+
/**
|
209 |
+
* Verify a signature with the message, key and method. Not all methods
|
210 |
+
* are symmetric, so we must have a separate verify and sign method.
|
211 |
+
*
|
212 |
+
* @param string $msg The original message (header and body)
|
213 |
+
* @param string $signature The original signature
|
214 |
+
* @param string|resource $key For HS*, a string key works. for RS*, must be a resource of an openssl public key
|
215 |
+
* @param string $alg The algorithm
|
216 |
+
*
|
217 |
+
* @return bool
|
218 |
+
*
|
219 |
+
* @throws DomainException Invalid Algorithm or OpenSSL failure
|
220 |
+
*/
|
221 |
+
private static function verify($msg, $signature, $key, $alg)
|
222 |
+
{
|
223 |
+
if (empty(static::$supported_algs[$alg])) {
|
224 |
+
throw new DomainException('Algorithm not supported');
|
225 |
+
}
|
226 |
+
|
227 |
+
list($function, $algorithm) = static::$supported_algs[$alg];
|
228 |
+
switch($function) {
|
229 |
+
case 'openssl':
|
230 |
+
$success = openssl_verify($msg, $signature, $key, $algorithm);
|
231 |
+
if ($success === 1) {
|
232 |
+
return true;
|
233 |
+
} elseif ($success === 0) {
|
234 |
+
return false;
|
235 |
+
}
|
236 |
+
// returns 1 on success, 0 on failure, -1 on error.
|
237 |
+
throw new DomainException(
|
238 |
+
'OpenSSL error: ' . openssl_error_string()
|
239 |
+
);
|
240 |
+
case 'hash_hmac':
|
241 |
+
default:
|
242 |
+
$hash = hash_hmac($algorithm, $msg, $key, true);
|
243 |
+
if (function_exists('hash_equals')) {
|
244 |
+
return hash_equals($signature, $hash);
|
245 |
+
}
|
246 |
+
$len = min(static::safeStrlen($signature), static::safeStrlen($hash));
|
247 |
+
|
248 |
+
$status = 0;
|
249 |
+
for ($i = 0; $i < $len; $i++) {
|
250 |
+
$status |= (ord($signature[$i]) ^ ord($hash[$i]));
|
251 |
+
}
|
252 |
+
$status |= (static::safeStrlen($signature) ^ static::safeStrlen($hash));
|
253 |
+
|
254 |
+
return ($status === 0);
|
255 |
+
}
|
256 |
+
}
|
257 |
+
|
258 |
+
/**
|
259 |
+
* Decode a JSON string into a PHP object.
|
260 |
+
*
|
261 |
+
* @param string $input JSON string
|
262 |
+
*
|
263 |
+
* @return object Object representation of JSON string
|
264 |
+
*
|
265 |
+
* @throws DomainException Provided string was invalid JSON
|
266 |
+
*/
|
267 |
+
public static function jsonDecode($input)
|
268 |
+
{
|
269 |
+
if (version_compare(PHP_VERSION, '5.4.0', '>=') && !(defined('JSON_C_VERSION') && PHP_INT_SIZE > 4)) {
|
270 |
+
/** In PHP >=5.4.0, json_decode() accepts an options parameter, that allows you
|
271 |
+
* to specify that large ints (like Steam Transaction IDs) should be treated as
|
272 |
+
* strings, rather than the PHP default behaviour of converting them to floats.
|
273 |
+
*/
|
274 |
+
$obj = json_decode($input, false, 512, JSON_BIGINT_AS_STRING);
|
275 |
+
} else {
|
276 |
+
/** Not all servers will support that, however, so for older versions we must
|
277 |
+
* manually detect large ints in the JSON string and quote them (thus converting
|
278 |
+
*them to strings) before decoding, hence the preg_replace() call.
|
279 |
+
*/
|
280 |
+
$max_int_length = strlen((string) PHP_INT_MAX) - 1;
|
281 |
+
$json_without_bigints = preg_replace('/:\s*(-?\d{'.$max_int_length.',})/', ': "$1"', $input);
|
282 |
+
$obj = json_decode($json_without_bigints);
|
283 |
+
}
|
284 |
+
|
285 |
+
if (function_exists('json_last_error') && $errno = json_last_error()) {
|
286 |
+
static::handleJsonError($errno);
|
287 |
+
} elseif ($obj === null && $input !== 'null') {
|
288 |
+
throw new DomainException('Null result with non-null input');
|
289 |
+
}
|
290 |
+
return $obj;
|
291 |
+
}
|
292 |
+
|
293 |
+
/**
|
294 |
+
* Encode a PHP object into a JSON string.
|
295 |
+
*
|
296 |
+
* @param object|array $input A PHP object or array
|
297 |
+
*
|
298 |
+
* @return string JSON representation of the PHP object or array
|
299 |
+
*
|
300 |
+
* @throws DomainException Provided object could not be encoded to valid JSON
|
301 |
+
*/
|
302 |
+
public static function jsonEncode($input)
|
303 |
+
{
|
304 |
+
$json = json_encode($input);
|
305 |
+
if (function_exists('json_last_error') && $errno = json_last_error()) {
|
306 |
+
static::handleJsonError($errno);
|
307 |
+
} elseif ($json === 'null' && $input !== null) {
|
308 |
+
throw new DomainException('Null result with non-null input');
|
309 |
+
}
|
310 |
+
return $json;
|
311 |
+
}
|
312 |
+
|
313 |
+
/**
|
314 |
+
* Decode a string with URL-safe Base64.
|
315 |
+
*
|
316 |
+
* @param string $input A Base64 encoded string
|
317 |
+
*
|
318 |
+
* @return string A decoded string
|
319 |
+
*/
|
320 |
+
public static function urlsafeB64Decode($input)
|
321 |
+
{
|
322 |
+
$remainder = strlen($input) % 4;
|
323 |
+
if ($remainder) {
|
324 |
+
$padlen = 4 - $remainder;
|
325 |
+
$input .= str_repeat('=', $padlen);
|
326 |
+
}
|
327 |
+
return base64_decode(strtr($input, '-_', '+/'));
|
328 |
+
}
|
329 |
+
|
330 |
+
/**
|
331 |
+
* Encode a string with URL-safe Base64.
|
332 |
+
*
|
333 |
+
* @param string $input The string you want encoded
|
334 |
+
*
|
335 |
+
* @return string The base64 encode of what you passed in
|
336 |
+
*/
|
337 |
+
public static function urlsafeB64Encode($input)
|
338 |
+
{
|
339 |
+
return str_replace('=', '', strtr(base64_encode($input), '+/', '-_'));
|
340 |
+
}
|
341 |
+
|
342 |
+
/**
|
343 |
+
* Helper method to create a JSON error.
|
344 |
+
*
|
345 |
+
* @param int $errno An error number from json_last_error()
|
346 |
+
*
|
347 |
+
* @return void
|
348 |
+
*/
|
349 |
+
private static function handleJsonError($errno)
|
350 |
+
{
|
351 |
+
$messages = array(
|
352 |
+
JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',
|
353 |
+
JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON',
|
354 |
+
JSON_ERROR_CTRL_CHAR => 'Unexpected control character found',
|
355 |
+
JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON',
|
356 |
+
JSON_ERROR_UTF8 => 'Malformed UTF-8 characters' //PHP >= 5.3.3
|
357 |
+
);
|
358 |
+
throw new DomainException(
|
359 |
+
isset($messages[$errno])
|
360 |
+
? $messages[$errno]
|
361 |
+
: 'Unknown JSON error: ' . $errno
|
362 |
+
);
|
363 |
+
}
|
364 |
+
|
365 |
+
/**
|
366 |
+
* Get the number of bytes in cryptographic strings.
|
367 |
+
*
|
368 |
+
* @param string
|
369 |
+
*
|
370 |
+
* @return int
|
371 |
+
*/
|
372 |
+
private static function safeStrlen($str)
|
373 |
+
{
|
374 |
+
if (function_exists('mb_strlen')) {
|
375 |
+
return mb_strlen($str, '8bit');
|
376 |
+
}
|
377 |
+
return strlen($str);
|
378 |
+
}
|
379 |
+
}
|
includes/lib/php-jwt/SignatureInvalidException.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Firebase\JWT;
|
3 |
+
|
4 |
+
class SignatureInvalidException extends \UnexpectedValueException
|
5 |
+
{
|
6 |
+
|
7 |
+
}
|
includes/profile.php
CHANGED
@@ -9,11 +9,11 @@ function pmpro_membership_level_profile_fields($user)
|
|
9 |
|
10 |
$server_tz = date_default_timezone_get();
|
11 |
$wp_tz = get_option( 'timezone_string' );
|
12 |
-
|
13 |
//option "timezone_string" is empty if set to UTC+0
|
14 |
if(empty($wp_tz))
|
15 |
$wp_tz = 'UTC';
|
16 |
-
|
17 |
date_default_timezone_set($wp_tz);
|
18 |
|
19 |
$membership_level_capability = apply_filters("pmpro_edit_member_capability", "manage_options");
|
@@ -57,7 +57,7 @@ function pmpro_membership_level_profile_fields($user)
|
|
57 |
</select>
|
58 |
<span id="current_level_cost">
|
59 |
<?php
|
60 |
-
$membership_values = pmpro_getMembershipLevelForUser($user->ID);
|
61 |
|
62 |
//we tweak the initial payment here so the text here effectively shows the recurring amount
|
63 |
if(!empty($membership_values))
|
@@ -67,14 +67,14 @@ function pmpro_membership_level_profile_fields($user)
|
|
67 |
}
|
68 |
|
69 |
if(empty($membership_values) || pmpro_isLevelFree($membership_values))
|
70 |
-
{
|
71 |
if(!empty($membership_values->original_initial_payment) && $membership_values->original_initial_payment > 0)
|
72 |
-
echo
|
73 |
else
|
74 |
-
_e('Not paying.', 'paid-memberships-pro' );
|
75 |
-
}
|
76 |
else
|
77 |
-
{
|
78 |
echo pmpro_getLevelCost($membership_values, true, true);
|
79 |
}
|
80 |
?>
|
@@ -84,7 +84,7 @@ function pmpro_membership_level_profile_fields($user)
|
|
84 |
</tr>
|
85 |
<?php
|
86 |
}
|
87 |
-
|
88 |
$show_expiration = true;
|
89 |
$show_expiration = apply_filters("pmpro_profile_show_expiration", $show_expiration, $user);
|
90 |
if($show_expiration)
|
@@ -93,26 +93,26 @@ function pmpro_membership_level_profile_fields($user)
|
|
93 |
//is there an end date?
|
94 |
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
95 |
$end_date = (!empty($user->membership_level) && !empty($user->membership_level->enddate)); // Returned as UTC timestamp
|
96 |
-
|
97 |
// Convert UTC to local time
|
98 |
if ( $end_date ) {
|
99 |
$user->membership_level->enddate = strtotime( $wp_tz, $user->membership_level->enddate );
|
100 |
}
|
101 |
|
102 |
//some vars for the dates
|
103 |
-
$current_day = date_i18n("j", current_time('timestamp'));
|
104 |
if($end_date)
|
105 |
$selected_expires_day = date_i18n("j", $user->membership_level->enddate);
|
106 |
else
|
107 |
$selected_expires_day = $current_day;
|
108 |
-
|
109 |
-
$current_month = date_i18n("M", current_time('timestamp'));
|
110 |
if($end_date)
|
111 |
$selected_expires_month = date_i18n("m", $user->membership_level->enddate);
|
112 |
else
|
113 |
$selected_expires_month = date_i18n("m");
|
114 |
-
|
115 |
-
$current_year = date_i18n("Y", current_time('timestamp'));
|
116 |
if($end_date)
|
117 |
$selected_expires_year = date_i18n("Y", $user->membership_level->enddate);
|
118 |
else
|
@@ -128,7 +128,7 @@ function pmpro_membership_level_profile_fields($user)
|
|
128 |
<span id="expires_date" <?php if(!$end_date) { ?>style="display: none;"<?php } ?>>
|
129 |
on
|
130 |
<select name="expires_month">
|
131 |
-
<?php
|
132 |
for($i = 1; $i < 13; $i++)
|
133 |
{
|
134 |
?>
|
@@ -200,14 +200,14 @@ function pmpro_membership_level_profile_fields($user)
|
|
200 |
var $expires_month_select = jQuery("[name=expires_month]");
|
201 |
var $expires_day_text = jQuery("[name=expires_day]");
|
202 |
var $expires_year_text = jQuery("[name=expires_year]");
|
203 |
-
|
204 |
//note old data to check for changes
|
205 |
var old_level = $membership_level_select.val();
|
206 |
var old_expires = $expires_select.val();
|
207 |
var old_expires_month = $expires_month_select.val();
|
208 |
var old_expires_day = $expires_day_text.val();
|
209 |
var old_expires_year = $expires_year_text.val();
|
210 |
-
|
211 |
var current_level_cost = jQuery("#current_level_cost").text();
|
212 |
|
213 |
//hide by default
|
@@ -224,7 +224,7 @@ function pmpro_membership_level_profile_fields($user)
|
|
224 |
jQuery("#cancel_subscription").attr('checked', false);
|
225 |
jQuery("#current_level_cost").text(current_level_cost);
|
226 |
}
|
227 |
-
|
228 |
//did level or expiration change?
|
229 |
if(
|
230 |
$membership_level_select.val() != old_level ||
|
@@ -235,15 +235,15 @@ function pmpro_membership_level_profile_fields($user)
|
|
235 |
)
|
236 |
{
|
237 |
jQuery(".more_level_options").show();
|
238 |
-
jQuery("#cancel_description").show();
|
239 |
}
|
240 |
else
|
241 |
{
|
242 |
jQuery(".more_level_options").hide();
|
243 |
-
jQuery("#cancel_description").hide();
|
244 |
}
|
245 |
}
|
246 |
-
|
247 |
//run check when fields change
|
248 |
$membership_level_select.change(function() {
|
249 |
pmpro_checkForLevelChangeInProfile();
|
@@ -259,8 +259,8 @@ function pmpro_membership_level_profile_fields($user)
|
|
259 |
});
|
260 |
$expires_year_text.change(function() {
|
261 |
pmpro_checkForLevelChangeInProfile();
|
262 |
-
});
|
263 |
-
|
264 |
jQuery("#cancel_subscription").change(function() {
|
265 |
if(jQuery(this).attr('checked') == 'checked')
|
266 |
{
|
@@ -296,8 +296,8 @@ function pmpro_membership_level_profile_fields_update()
|
|
296 |
//get the user id
|
297 |
global $wpdb, $current_user, $user_ID;
|
298 |
wp_get_current_user();
|
299 |
-
|
300 |
-
if(!empty($_REQUEST['user_id']))
|
301 |
$user_ID = $_REQUEST['user_id'];
|
302 |
|
303 |
$membership_level_capability = apply_filters("pmpro_edit_member_capability", "manage_options");
|
@@ -316,10 +316,10 @@ function pmpro_membership_level_profile_fields_update()
|
|
316 |
else
|
317 |
$changed_or_cancelled = 'admin_changed';
|
318 |
|
319 |
-
//if the cancel at gateway box is not checked, don't cancel
|
320 |
if(empty($_REQUEST['cancel_subscription']))
|
321 |
add_filter('pmpro_cancel_previous_subscriptions', 'pmpro_cancel_previous_subscriptions_false');
|
322 |
-
|
323 |
//do the change
|
324 |
if(pmpro_changeMembershipLevel(intval($_REQUEST['membership_level']), $user_ID, $changed_or_cancelled))
|
325 |
{
|
@@ -331,22 +331,22 @@ function pmpro_membership_level_profile_fields_update()
|
|
331 |
//the level didn't change, but we were asked to cancel the subscription at the gateway, let's do that
|
332 |
$order = new MemberOrder();
|
333 |
$order->getLastMemberOrder($user_ID);
|
334 |
-
|
335 |
if(!empty($order) && !empty($order->id))
|
336 |
-
$r = $order->cancel();
|
337 |
}
|
338 |
-
|
339 |
-
//remove filter after ward
|
340 |
if(empty($_REQUEST['cancel_subscription']))
|
341 |
remove_filter('pmpro_cancel_previous_subscriptions', 'pmpro_cancel_previous_subscriptions_false');
|
342 |
}
|
343 |
-
|
344 |
//expiration change
|
345 |
if(!empty($_REQUEST['expires']))
|
346 |
{
|
347 |
//update the expiration date
|
348 |
$expiration_date = intval($_REQUEST['expires_year']) . "-" . str_pad(intval($_REQUEST['expires_month']), 2, "0", STR_PAD_LEFT) . "-" . str_pad(intval($_REQUEST['expires_day']), 2, "0", STR_PAD_LEFT);
|
349 |
-
$sqlQuery = "UPDATE $wpdb->pmpro_memberships_users SET enddate = '" . $expiration_date . "' WHERE status = 'active' AND membership_id = '" . intval($_REQUEST['membership_level']) . "' AND user_id = '" . $user_ID . "' LIMIT 1";
|
350 |
if($wpdb->query($sqlQuery))
|
351 |
$expiration_changed = true;
|
352 |
}
|
@@ -355,16 +355,16 @@ function pmpro_membership_level_profile_fields_update()
|
|
355 |
//already blank? have to check for null or '0000-00-00 00:00:00' or '' here.
|
356 |
$sqlQuery = "SELECT user_id FROM $wpdb->pmpro_memberships_users WHERE (enddate IS NULL OR enddate = '' OR enddate = '0000-00-00 00:00:00') AND status = 'active' AND user_id = '" . $user_ID . "' LIMIT 1";
|
357 |
$blank = $wpdb->get_var($sqlQuery);
|
358 |
-
|
359 |
if(empty($blank))
|
360 |
-
{
|
361 |
//null out the expiration
|
362 |
$sqlQuery = "UPDATE $wpdb->pmpro_memberships_users SET enddate = NULL WHERE status = 'active' AND membership_id = '" . intval($_REQUEST['membership_level']) . "' AND user_id = '" . $user_ID . "' LIMIT 1";
|
363 |
if($wpdb->query($sqlQuery))
|
364 |
$expiration_changed = true;
|
365 |
}
|
366 |
}
|
367 |
-
|
368 |
//emails if there was a change
|
369 |
if(!empty($level_changed) || !empty($expiration_changed))
|
370 |
{
|
@@ -373,7 +373,7 @@ function pmpro_membership_level_profile_fields_update()
|
|
373 |
if(!empty($expiration_changed))
|
374 |
$pmproemail->expiration_changed = true;
|
375 |
$pmproemail->sendAdminChangeAdminEmail(get_userdata($user_ID));
|
376 |
-
|
377 |
//send email
|
378 |
if(!empty($_REQUEST['send_admin_change_email']))
|
379 |
{
|
@@ -381,7 +381,7 @@ function pmpro_membership_level_profile_fields_update()
|
|
381 |
$pmproemail = new PMProEmail();
|
382 |
if(!empty($expiration_changed))
|
383 |
$pmproemail->expiration_changed = true;
|
384 |
-
$pmproemail->sendAdminChangeEmail(get_userdata($user_ID));
|
385 |
}
|
386 |
}
|
387 |
}
|
9 |
|
10 |
$server_tz = date_default_timezone_get();
|
11 |
$wp_tz = get_option( 'timezone_string' );
|
12 |
+
|
13 |
//option "timezone_string" is empty if set to UTC+0
|
14 |
if(empty($wp_tz))
|
15 |
$wp_tz = 'UTC';
|
16 |
+
|
17 |
date_default_timezone_set($wp_tz);
|
18 |
|
19 |
$membership_level_capability = apply_filters("pmpro_edit_member_capability", "manage_options");
|
57 |
</select>
|
58 |
<span id="current_level_cost">
|
59 |
<?php
|
60 |
+
$membership_values = pmpro_getMembershipLevelForUser($user->ID);
|
61 |
|
62 |
//we tweak the initial payment here so the text here effectively shows the recurring amount
|
63 |
if(!empty($membership_values))
|
67 |
}
|
68 |
|
69 |
if(empty($membership_values) || pmpro_isLevelFree($membership_values))
|
70 |
+
{
|
71 |
if(!empty($membership_values->original_initial_payment) && $membership_values->original_initial_payment > 0)
|
72 |
+
echo __('Paid', 'paid-memberships-pro' ) . pmpro_formatPrice($membership_values->original_initial_payment) . ".";
|
73 |
else
|
74 |
+
_e('Not paying.', 'paid-memberships-pro' );
|
75 |
+
}
|
76 |
else
|
77 |
+
{
|
78 |
echo pmpro_getLevelCost($membership_values, true, true);
|
79 |
}
|
80 |
?>
|
84 |
</tr>
|
85 |
<?php
|
86 |
}
|
87 |
+
|
88 |
$show_expiration = true;
|
89 |
$show_expiration = apply_filters("pmpro_profile_show_expiration", $show_expiration, $user);
|
90 |
if($show_expiration)
|
93 |
//is there an end date?
|
94 |
$user->membership_level = pmpro_getMembershipLevelForUser($user->ID);
|
95 |
$end_date = (!empty($user->membership_level) && !empty($user->membership_level->enddate)); // Returned as UTC timestamp
|
96 |
+
|
97 |
// Convert UTC to local time
|
98 |
if ( $end_date ) {
|
99 |
$user->membership_level->enddate = strtotime( $wp_tz, $user->membership_level->enddate );
|
100 |
}
|
101 |
|
102 |
//some vars for the dates
|
103 |
+
$current_day = date_i18n("j", current_time('timestamp'));
|
104 |
if($end_date)
|
105 |
$selected_expires_day = date_i18n("j", $user->membership_level->enddate);
|
106 |
else
|
107 |
$selected_expires_day = $current_day;
|
108 |
+
|
109 |
+
$current_month = date_i18n("M", current_time('timestamp'));
|
110 |
if($end_date)
|
111 |
$selected_expires_month = date_i18n("m", $user->membership_level->enddate);
|
112 |
else
|
113 |
$selected_expires_month = date_i18n("m");
|
114 |
+
|
115 |
+
$current_year = date_i18n("Y", current_time('timestamp'));
|
116 |
if($end_date)
|
117 |
$selected_expires_year = date_i18n("Y", $user->membership_level->enddate);
|
118 |
else
|
128 |
<span id="expires_date" <?php if(!$end_date) { ?>style="display: none;"<?php } ?>>
|
129 |
on
|
130 |
<select name="expires_month">
|
131 |
+
<?php
|
132 |
for($i = 1; $i < 13; $i++)
|
133 |
{
|
134 |
?>
|
200 |
var $expires_month_select = jQuery("[name=expires_month]");
|
201 |
var $expires_day_text = jQuery("[name=expires_day]");
|
202 |
var $expires_year_text = jQuery("[name=expires_year]");
|
203 |
+
|
204 |
//note old data to check for changes
|
205 |
var old_level = $membership_level_select.val();
|
206 |
var old_expires = $expires_select.val();
|
207 |
var old_expires_month = $expires_month_select.val();
|
208 |
var old_expires_day = $expires_day_text.val();
|
209 |
var old_expires_year = $expires_year_text.val();
|
210 |
+
|
211 |
var current_level_cost = jQuery("#current_level_cost").text();
|
212 |
|
213 |
//hide by default
|
224 |
jQuery("#cancel_subscription").attr('checked', false);
|
225 |
jQuery("#current_level_cost").text(current_level_cost);
|
226 |
}
|
227 |
+
|
228 |
//did level or expiration change?
|
229 |
if(
|
230 |
$membership_level_select.val() != old_level ||
|
235 |
)
|
236 |
{
|
237 |
jQuery(".more_level_options").show();
|
238 |
+
jQuery("#cancel_description").show();
|
239 |
}
|
240 |
else
|
241 |
{
|
242 |
jQuery(".more_level_options").hide();
|
243 |
+
jQuery("#cancel_description").hide();
|
244 |
}
|
245 |
}
|
246 |
+
|
247 |
//run check when fields change
|
248 |
$membership_level_select.change(function() {
|
249 |
pmpro_checkForLevelChangeInProfile();
|
259 |
});
|
260 |
$expires_year_text.change(function() {
|
261 |
pmpro_checkForLevelChangeInProfile();
|
262 |
+
});
|
263 |
+
|
264 |
jQuery("#cancel_subscription").change(function() {
|
265 |
if(jQuery(this).attr('checked') == 'checked')
|
266 |
{
|
296 |
//get the user id
|
297 |
global $wpdb, $current_user, $user_ID;
|
298 |
wp_get_current_user();
|
299 |
+
|
300 |
+
if(!empty($_REQUEST['user_id']))
|
301 |
$user_ID = $_REQUEST['user_id'];
|
302 |
|
303 |
$membership_level_capability = apply_filters("pmpro_edit_member_capability", "manage_options");
|
316 |
else
|
317 |
$changed_or_cancelled = 'admin_changed';
|
318 |
|
319 |
+
//if the cancel at gateway box is not checked, don't cancel
|
320 |
if(empty($_REQUEST['cancel_subscription']))
|
321 |
add_filter('pmpro_cancel_previous_subscriptions', 'pmpro_cancel_previous_subscriptions_false');
|
322 |
+
|
323 |
//do the change
|
324 |
if(pmpro_changeMembershipLevel(intval($_REQUEST['membership_level']), $user_ID, $changed_or_cancelled))
|
325 |
{
|
331 |
//the level didn't change, but we were asked to cancel the subscription at the gateway, let's do that
|
332 |
$order = new MemberOrder();
|
333 |
$order->getLastMemberOrder($user_ID);
|
334 |
+
|
335 |
if(!empty($order) && !empty($order->id))
|
336 |
+
$r = $order->cancel();
|
337 |
}
|
338 |
+
|
339 |
+
//remove filter after ward
|
340 |
if(empty($_REQUEST['cancel_subscription']))
|
341 |
remove_filter('pmpro_cancel_previous_subscriptions', 'pmpro_cancel_previous_subscriptions_false');
|
342 |
}
|
343 |
+
|
344 |
//expiration change
|
345 |
if(!empty($_REQUEST['expires']))
|
346 |
{
|
347 |
//update the expiration date
|
348 |
$expiration_date = intval($_REQUEST['expires_year']) . "-" . str_pad(intval($_REQUEST['expires_month']), 2, "0", STR_PAD_LEFT) . "-" . str_pad(intval($_REQUEST['expires_day']), 2, "0", STR_PAD_LEFT);
|
349 |
+
$sqlQuery = "UPDATE $wpdb->pmpro_memberships_users SET enddate = '" . $expiration_date . "' WHERE status = 'active' AND membership_id = '" . intval($_REQUEST['membership_level']) . "' AND user_id = '" . $user_ID . "' LIMIT 1";
|
350 |
if($wpdb->query($sqlQuery))
|
351 |
$expiration_changed = true;
|
352 |
}
|
355 |
//already blank? have to check for null or '0000-00-00 00:00:00' or '' here.
|
356 |
$sqlQuery = "SELECT user_id FROM $wpdb->pmpro_memberships_users WHERE (enddate IS NULL OR enddate = '' OR enddate = '0000-00-00 00:00:00') AND status = 'active' AND user_id = '" . $user_ID . "' LIMIT 1";
|
357 |
$blank = $wpdb->get_var($sqlQuery);
|
358 |
+
|
359 |
if(empty($blank))
|
360 |
+
{
|
361 |
//null out the expiration
|
362 |
$sqlQuery = "UPDATE $wpdb->pmpro_memberships_users SET enddate = NULL WHERE status = 'active' AND membership_id = '" . intval($_REQUEST['membership_level']) . "' AND user_id = '" . $user_ID . "' LIMIT 1";
|
363 |
if($wpdb->query($sqlQuery))
|
364 |
$expiration_changed = true;
|
365 |
}
|
366 |
}
|
367 |
+
|
368 |
//emails if there was a change
|
369 |
if(!empty($level_changed) || !empty($expiration_changed))
|
370 |
{
|
373 |
if(!empty($expiration_changed))
|
374 |
$pmproemail->expiration_changed = true;
|
375 |
$pmproemail->sendAdminChangeAdminEmail(get_userdata($user_ID));
|
376 |
+
|
377 |
//send email
|
378 |
if(!empty($_REQUEST['send_admin_change_email']))
|
379 |
{
|
381 |
$pmproemail = new PMProEmail();
|
382 |
if(!empty($expiration_changed))
|
383 |
$pmproemail->expiration_changed = true;
|
384 |
+
$pmproemail->sendAdminChangeEmail(get_userdata($user_ID));
|
385 |
}
|
386 |
}
|
387 |
}
|
includes/recaptcha.php
CHANGED
@@ -6,15 +6,21 @@ function pmpro_init_recaptcha() {
|
|
6 |
}
|
7 |
|
8 |
//use recaptcha?
|
9 |
-
global $recaptcha;
|
10 |
$recaptcha = pmpro_getOption( 'recaptcha' );
|
11 |
-
|
|
|
|
|
|
|
|
|
|
|
12 |
if($recaptcha) {
|
13 |
global $recaptcha_publickey, $recaptcha_privatekey;
|
14 |
|
15 |
require_once(PMPRO_DIR . '/includes/lib/recaptchalib.php' );
|
16 |
|
17 |
function pmpro_recaptcha_get_html ($pubkey, $error = null, $use_ssl = false) {
|
|
|
18 |
// Figure out language.
|
19 |
$locale = get_locale();
|
20 |
if(!empty($locale)) {
|
@@ -124,6 +130,7 @@ function pmpro_wp_ajax_validate_recaptcha() {
|
|
124 |
$resp = $reCaptcha->verifyResponse( $_SERVER['REMOTE_ADDR'], $_REQUEST['g-recaptcha-response'] );
|
125 |
|
126 |
if ( $resp->success ) {
|
|
|
127 |
echo "1";
|
128 |
} else {
|
129 |
echo "0";
|
@@ -133,3 +140,8 @@ function pmpro_wp_ajax_validate_recaptcha() {
|
|
133 |
}
|
134 |
add_action( 'wp_ajax_nopriv_pmpro_validate_recaptcha', 'pmpro_wp_ajax_validate_recaptcha' );
|
135 |
add_action( 'wp_ajax_pmpro_validate_recaptcha', 'pmpro_wp_ajax_validate_recaptcha' );
|
|
|
|
|
|
|
|
|
|
6 |
}
|
7 |
|
8 |
//use recaptcha?
|
9 |
+
global $recaptcha, $recaptcha_validated;
|
10 |
$recaptcha = pmpro_getOption( 'recaptcha' );
|
11 |
+
|
12 |
+
$recaptcha_validated = pmpro_get_session_var( 'pmpro_recaptcha_validated' );
|
13 |
+
if ( ! empty( $recaptcha_validated ) ) {
|
14 |
+
$recaptcha = false;
|
15 |
+
}
|
16 |
+
|
17 |
if($recaptcha) {
|
18 |
global $recaptcha_publickey, $recaptcha_privatekey;
|
19 |
|
20 |
require_once(PMPRO_DIR . '/includes/lib/recaptchalib.php' );
|
21 |
|
22 |
function pmpro_recaptcha_get_html ($pubkey, $error = null, $use_ssl = false) {
|
23 |
+
|
24 |
// Figure out language.
|
25 |
$locale = get_locale();
|
26 |
if(!empty($locale)) {
|
130 |
$resp = $reCaptcha->verifyResponse( $_SERVER['REMOTE_ADDR'], $_REQUEST['g-recaptcha-response'] );
|
131 |
|
132 |
if ( $resp->success ) {
|
133 |
+
pmpro_set_session_var( 'pmpro_recaptcha_validated', true );
|
134 |
echo "1";
|
135 |
} else {
|
136 |
echo "0";
|
140 |
}
|
141 |
add_action( 'wp_ajax_nopriv_pmpro_validate_recaptcha', 'pmpro_wp_ajax_validate_recaptcha' );
|
142 |
add_action( 'wp_ajax_pmpro_validate_recaptcha', 'pmpro_wp_ajax_validate_recaptcha' );
|
143 |
+
|
144 |
+
function pmpro_after_checkout_reset_recaptcha() {
|
145 |
+
pmpro_unset_session_var( 'pmpro_recaptcha_validated' );
|
146 |
+
}
|
147 |
+
add_action( 'pmpro_after_checkout', 'pmpro_after_checkout_reset_recaptcha' );
|
includes/rest-api.php
CHANGED
@@ -1,53 +1,58 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
array(
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
array(
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
//Ex:http://example.com/wp-json/wp/v2/users/2/pmpro_membership_level
|
24 |
-
function pmpro_rest_api_get_user_level($request) {
|
25 |
-
$params = $request->get_params();
|
26 |
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
function pmpro_rest_api_get_permissions_check($request) {
|
44 |
-
return current_user_can('edit_users');
|
45 |
}
|
46 |
-
}
|
47 |
|
48 |
-
function pmpro_rest_api_register_custom_routes() {
|
49 |
-
|
50 |
-
|
51 |
-
}
|
52 |
|
53 |
-
add_action( 'rest_api_init', 'pmpro_rest_api_register_custom_routes', 5 );
|
|
1 |
<?php
|
2 |
+
|
3 |
+
if ( class_exists( 'WP_REST_Controller' ) ) {
|
4 |
+
class PMPro_REST_API_Routes extends WP_REST_Controller {
|
5 |
+
public function pmpro_rest_api_register_routes() {
|
6 |
+
$namespace = 'wp/v2';
|
7 |
+
register_rest_route( $namespace, '/users/(?P<id>\d+)'.'/pmpro_membership_level' ,
|
8 |
array(
|
9 |
+
array(
|
10 |
+
'methods' => WP_REST_Server::READABLE,
|
11 |
+
'callback' => array( $this, 'pmpro_rest_api_get_user_level' ),
|
12 |
+
'permission_callback' => array( $this, 'pmpro_rest_api_get_permissions_check' ),
|
13 |
+
),));
|
14 |
+
|
15 |
+
register_rest_route( $namespace, '/posts/(?P<post_id>\d+)'.'/user_id/(?P<user_id>\d+)/pmpro_has_membership_access' ,
|
16 |
array(
|
17 |
+
array(
|
18 |
+
'methods' => WP_REST_Server::READABLE,
|
19 |
+
'callback' => array( $this, 'pmpro_rest_api_get_has_membership_access' ),
|
20 |
+
'permission_callback' => array( $this, 'pmpro_rest_api_get_permissions_check' ),
|
21 |
+
),));
|
22 |
+
}
|
|
|
|
|
|
|
23 |
|
24 |
+
//Ex:http://example.com/wp-json/wp/v2/users/2/pmpro_membership_level
|
25 |
+
function pmpro_rest_api_get_user_level($request) {
|
26 |
+
$params = $request->get_params();
|
27 |
+
|
28 |
+
$user_id = $params['id'];
|
29 |
+
|
30 |
+
$level = pmpro_getMembershipLevelForUser($user_id);
|
31 |
+
if ( ! empty( $level ) ) {
|
32 |
+
$level = (array)$level;
|
33 |
+
}
|
34 |
+
return new WP_REST_Response($level, 200 );
|
35 |
+
}
|
36 |
|
37 |
+
//Ex: http://example.com/wp-json/wp/v2/posts/58/user_id/2/pmpro_has_membership_access
|
38 |
+
function pmpro_rest_api_get_has_membership_access($request) {
|
39 |
+
$params = $request->get_params();
|
40 |
+
$post_id = $params['post_id'];
|
41 |
+
$user_id = $params['user_id'];
|
42 |
+
|
43 |
+
$has_access = pmpro_has_membership_access($post_id, $user_id);
|
44 |
+
return $has_access;
|
45 |
+
}
|
46 |
|
47 |
+
function pmpro_rest_api_get_permissions_check($request) {
|
48 |
+
return current_user_can('edit_users');
|
49 |
+
}
|
|
|
|
|
|
|
50 |
}
|
|
|
51 |
|
52 |
+
function pmpro_rest_api_register_custom_routes() {
|
53 |
+
$pmpro_rest_api_routes = new PMPro_REST_API_Routes;
|
54 |
+
$pmpro_rest_api_routes->pmpro_rest_api_register_routes();
|
55 |
+
}
|
56 |
|
57 |
+
add_action( 'rest_api_init', 'pmpro_rest_api_register_custom_routes', 5 );
|
58 |
+
}
|
includes/scripts.php
ADDED
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Enqueue frontend JavaScript and CSS
|
4 |
+
*/
|
5 |
+
function pmpro_enqueue_scripts() {
|
6 |
+
// Frontend styles.
|
7 |
+
$frontend_css_rtl = false;
|
8 |
+
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/frontend.css")) {
|
9 |
+
$frontend_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/frontend.css";
|
10 |
+
if( is_rtl() && file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/frontend-rtl.css") ) {
|
11 |
+
$frontend_css_rtl = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/frontend-rtl.css";
|
12 |
+
}
|
13 |
+
} elseif(file_exists(get_template_directory() . "/paid-memberships-pro/frontend.css")) {
|
14 |
+
$frontend_css = get_template_directory_uri() . "/paid-memberships-pro/frontend.css";
|
15 |
+
if( is_rtl() && file_exists(get_template_directory() . "/paid-memberships-pro/css/frontend-rtl.css") ) {
|
16 |
+
$frontend_css_rtl = get_template_directory_uri() . "/paid-memberships-pro/css/frontend-rtl.css";
|
17 |
+
}
|
18 |
+
} else {
|
19 |
+
$frontend_css = plugins_url('css/frontend.css',dirname(__FILE__) );
|
20 |
+
if( is_rtl() ) {
|
21 |
+
$frontend_css_rtl = plugins_url('css/frontend-rtl.css',dirname(__FILE__) );
|
22 |
+
}
|
23 |
+
}
|
24 |
+
wp_enqueue_style('pmpro_frontend', $frontend_css, array(), PMPRO_VERSION, "screen");
|
25 |
+
if( $frontend_css_rtl ) {
|
26 |
+
wp_enqueue_style('pmpro_frontend_rtl', $frontend_css_rtl, array(), PMPRO_VERSION, "screen");
|
27 |
+
}
|
28 |
+
|
29 |
+
// Print styles.
|
30 |
+
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/print.css"))
|
31 |
+
$print_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/print.css";
|
32 |
+
elseif(file_exists(get_template_directory() . "/paid-memberships-pro/print.css"))
|
33 |
+
$print_css = get_template_directory_uri() . "/paid-memberships-pro/print.css";
|
34 |
+
else
|
35 |
+
$print_css = plugins_url('css/print.css',dirname(__FILE__) );
|
36 |
+
wp_enqueue_style('pmpro_print', $print_css, array(), PMPRO_VERSION, "print");
|
37 |
+
|
38 |
+
// Checkout page JS
|
39 |
+
if ( pmpro_is_checkout() ) {
|
40 |
+
wp_register_script( 'pmpro_checkout',
|
41 |
+
plugins_url( 'js/pmpro-checkout.js', dirname(__FILE__) ),
|
42 |
+
array( 'jquery' ),
|
43 |
+
PMPRO_VERSION );
|
44 |
+
|
45 |
+
wp_localize_script( 'pmpro_checkout', 'pmpro', array(
|
46 |
+
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
47 |
+
'ajax_timeout' => apply_filters( 'pmpro_ajax_timeout', 5000, 'applydiscountcode' ),
|
48 |
+
'show_discount_code' => pmpro_show_discount_code(),
|
49 |
+
'discount_code_passed_in' => !empty( $_REQUEST['discount_code'] ),
|
50 |
+
));
|
51 |
+
wp_enqueue_script( 'pmpro_checkout' );
|
52 |
+
}
|
53 |
+
}
|
54 |
+
add_action( 'wp_enqueue_scripts', 'pmpro_enqueue_scripts' );
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Enqueue admin JavaScript and CSS
|
58 |
+
*/
|
59 |
+
function pmpro_admin_enqueue_scripts() {
|
60 |
+
// Admin JS
|
61 |
+
wp_register_script( 'pmpro_admin',
|
62 |
+
plugins_url( 'js/pmpro-admin.js', dirname(__FILE__) ),
|
63 |
+
array( 'jquery', 'jquery-ui-sortable' ),
|
64 |
+
PMPRO_VERSION );
|
65 |
+
$all_levels = pmpro_getAllLevels( true, true );
|
66 |
+
$all_level_values_and_labels = array();
|
67 |
+
foreach( $all_levels as $level ) {
|
68 |
+
$all_level_values_and_labels[] = array( 'value' => $level->id, 'label' => $level->name );
|
69 |
+
}
|
70 |
+
wp_localize_script( 'pmpro_admin', 'pmpro', array(
|
71 |
+
'all_levels' => $all_levels,
|
72 |
+
'all_level_values_and_labels' => $all_level_values_and_labels
|
73 |
+
));
|
74 |
+
wp_enqueue_script( 'pmpro_admin' );
|
75 |
+
|
76 |
+
// Admin CSS
|
77 |
+
$admin_css_rtl = false;
|
78 |
+
if(file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/admin.css")) {
|
79 |
+
$admin_css = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/admin.css";
|
80 |
+
if( is_rtl() && file_exists(get_stylesheet_directory() . "/paid-memberships-pro/css/admin-rtl.css") ) {
|
81 |
+
$admin_css_rtl = get_stylesheet_directory_uri() . "/paid-memberships-pro/css/admin-rtl.css";
|
82 |
+
}
|
83 |
+
} elseif(file_exists(get_template_directory() . "/paid-memberships-pro/admin.css")) {
|
84 |
+
$admin_css = get_template_directory_uri() . "/paid-memberships-pro/admin.css";
|
85 |
+
if( is_rtl() && file_exists(get_template_directory() . "/paid-memberships-pro/css/admin-rtl.css") ) {
|
86 |
+
$admin_css_rtl = get_template_directory_uri() . "/paid-memberships-pro/css/admin-rtl.css";
|
87 |
+
}
|
88 |
+
} else {
|
89 |
+
$admin_css = plugins_url('css/admin.css',dirname(__FILE__) );
|
90 |
+
if( is_rtl() ) {
|
91 |
+
$admin_css_rtl = plugins_url('css/admin-rtl.css',dirname(__FILE__) );
|
92 |
+
}
|
93 |
+
}
|
94 |
+
wp_enqueue_style('pmpro_admin', $admin_css, array(), PMPRO_VERSION, "screen");
|
95 |
+
if( $admin_css_rtl ) {
|
96 |
+
wp_enqueue_style('pmpro_admin_rtl', $admin_css_rtl, array(), PMPRO_VERSION, "screen");
|
97 |
+
}
|
98 |
+
}
|
99 |
+
add_action( 'admin_enqueue_scripts', 'pmpro_admin_enqueue_scripts' );
|
includes/sessions.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/*
|
3 |
Copyright 2011 Stranger Studios (email : jason@strangerstudios.com)
|
4 |
GPLv2 Full license details in license.txt
|
@@ -9,49 +10,93 @@
|
|
9 |
* A general function to start sessions for Paid Memberships Pro.
|
10 |
* @since 1.9.2
|
11 |
*/
|
12 |
-
function pmpro_start_session()
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
|
|
30 |
}
|
31 |
|
32 |
-
add_action(
|
33 |
|
34 |
/**
|
35 |
* Close the session object for new updates
|
36 |
* @since 1.9.2
|
37 |
*/
|
38 |
-
function pmpro_close_session()
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
}
|
55 |
}
|
56 |
|
57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
|
3 |
/*
|
4 |
Copyright 2011 Stranger Studios (email : jason@strangerstudios.com)
|
5 |
GPLv2 Full license details in license.txt
|
10 |
* A general function to start sessions for Paid Memberships Pro.
|
11 |
* @since 1.9.2
|
12 |
*/
|
13 |
+
function pmpro_start_session()
|
14 |
+
{
|
15 |
+
|
16 |
+
//if the session hasn't been started yet, start it (ignore if running from command line)
|
17 |
+
if (!defined('PMPRO_USE_SESSIONS') || PMPRO_USE_SESSIONS == true) {
|
18 |
+
if (defined('STDIN')) {
|
19 |
+
//command line
|
20 |
+
} else {
|
21 |
+
if (version_compare(phpversion(), '5.4.0', '>=')) {
|
22 |
+
if (session_status() == PHP_SESSION_NONE) {
|
23 |
+
session_start();
|
24 |
+
}
|
25 |
+
} else {
|
26 |
+
if (!session_id()) {
|
27 |
+
session_start();
|
28 |
+
}
|
29 |
+
}
|
30 |
+
}
|
31 |
+
}
|
32 |
}
|
33 |
|
34 |
+
add_action('pmpro_checkout_preheader_before_get_level_at_checkout', 'pmpro_start_session', -1);
|
35 |
|
36 |
/**
|
37 |
* Close the session object for new updates
|
38 |
* @since 1.9.2
|
39 |
*/
|
40 |
+
function pmpro_close_session()
|
41 |
+
{
|
42 |
+
|
43 |
+
if (!defined('PMPRO_USE_SESSIONS') || PMPRO_USE_SESSIONS == true) {
|
44 |
+
if (defined('STDIN')) {
|
45 |
+
//command line
|
46 |
+
} else {
|
47 |
+
if (version_compare(phpversion(), '5.4.0', '>=')) {
|
48 |
+
if (session_status() == PHP_SESSION_ACTIVE) {
|
49 |
+
session_write_close();
|
50 |
+
}
|
51 |
+
} else {
|
52 |
+
if (session_id()) {
|
53 |
+
session_write_close();
|
54 |
+
}
|
55 |
+
}
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
add_action('pmpro_after_checkout', 'pmpro_close_session', 32768);
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Set a session variable.
|
64 |
+
*
|
65 |
+
* @since 2.1.0
|
66 |
+
*
|
67 |
+
* TODO: Update docblock.
|
68 |
+
*/
|
69 |
+
function pmpro_set_session_var($key, $value)
|
70 |
+
{
|
71 |
+
pmpro_start_session();
|
72 |
+
$_SESSION[$key] = $value;
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Get a session variable.
|
77 |
+
*
|
78 |
+
* @since 2.1.0
|
79 |
+
*
|
80 |
+
* TODO: Update docblock.
|
81 |
+
*/
|
82 |
+
function pmpro_get_session_var( $key ) {
|
83 |
+
pmpro_start_session();
|
84 |
+
if ( array_key_exists( $key, $_SESSION ) ) {
|
85 |
+
return $_SESSION[$key] ;
|
86 |
+
} else {
|
87 |
+
return false;
|
88 |
}
|
89 |
}
|
90 |
|
91 |
+
/**
|
92 |
+
* Unset a session variable.
|
93 |
+
*
|
94 |
+
* @since 2.1.0
|
95 |
+
*
|
96 |
+
* TODO: Update docblock.
|
97 |
+
*/
|
98 |
+
function pmpro_unset_session_var($key)
|
99 |
+
{
|
100 |
+
pmpro_start_session();
|
101 |
+
unset($_SESSION[$key]);
|
102 |
+
}
|
includes/upgradecheck.php
CHANGED
@@ -225,6 +225,13 @@ function pmpro_checkForUpgrades()
|
|
225 |
$pmpro_db_version = '1.944';
|
226 |
pmpro_setOption('db_version', '1.944');
|
227 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
}
|
229 |
|
230 |
function pmpro_db_delta()
|
@@ -250,12 +257,12 @@ function pmpro_db_delta()
|
|
250 |
`name` varchar(255) NOT NULL,
|
251 |
`description` longtext NOT NULL,
|
252 |
`confirmation` longtext NOT NULL,
|
253 |
-
`initial_payment` decimal(
|
254 |
-
`billing_amount` decimal(
|
255 |
`cycle_number` int(11) NOT NULL DEFAULT '0',
|
256 |
`cycle_period` enum('Day','Week','Month','Year') DEFAULT 'Month',
|
257 |
`billing_limit` int(11) NOT NULL COMMENT 'After how many cycles should billing stop?',
|
258 |
-
`trial_amount` decimal(
|
259 |
`trial_limit` int(11) NOT NULL DEFAULT '0',
|
260 |
`allow_signups` tinyint(4) NOT NULL DEFAULT '1',
|
261 |
`expiration_number` int(10) unsigned NOT NULL,
|
@@ -354,12 +361,12 @@ function pmpro_db_delta()
|
|
354 |
`user_id` int(11) unsigned NOT NULL,
|
355 |
`membership_id` int(11) unsigned NOT NULL,
|
356 |
`code_id` int(11) unsigned NOT NULL,
|
357 |
-
`initial_payment` decimal(
|
358 |
-
`billing_amount` decimal(
|
359 |
`cycle_number` int(11) NOT NULL,
|
360 |
`cycle_period` enum('Day','Week','Month','Year') NOT NULL DEFAULT 'Month',
|
361 |
`billing_limit` int(11) NOT NULL,
|
362 |
-
`trial_amount` decimal(
|
363 |
`trial_limit` int(11) NOT NULL,
|
364 |
`status` varchar(20) NOT NULL DEFAULT 'active',
|
365 |
`startdate` datetime NOT NULL,
|
@@ -397,12 +404,12 @@ function pmpro_db_delta()
|
|
397 |
CREATE TABLE `" . $wpdb->pmpro_discount_codes_levels . "` (
|
398 |
`code_id` int(11) unsigned NOT NULL,
|
399 |
`level_id` int(11) unsigned NOT NULL,
|
400 |
-
`initial_payment` decimal(
|
401 |
-
`billing_amount` decimal(
|
402 |
`cycle_number` int(11) NOT NULL DEFAULT '0',
|
403 |
`cycle_period` enum('Day','Week','Month','Year') DEFAULT 'Month',
|
404 |
`billing_limit` int(11) NOT NULL COMMENT 'After how many cycles should billing stop?',
|
405 |
-
`trial_amount` decimal(
|
406 |
`trial_limit` int(11) NOT NULL DEFAULT '0',
|
407 |
`expiration_number` int(10) unsigned NOT NULL,
|
408 |
`expiration_period` enum('Day','Week','Month','Year') NOT NULL,
|
225 |
$pmpro_db_version = '1.944';
|
226 |
pmpro_setOption('db_version', '1.944');
|
227 |
}
|
228 |
+
|
229 |
+
if ( $pmpro_db_version < 2.1 ) {
|
230 |
+
pmpro_db_delta();
|
231 |
+
|
232 |
+
$pmpro_db_version = 2.1;
|
233 |
+
pmpro_setOption( 'db_version', '2.1' );
|
234 |
+
}
|
235 |
}
|
236 |
|
237 |
function pmpro_db_delta()
|
257 |
`name` varchar(255) NOT NULL,
|
258 |
`description` longtext NOT NULL,
|
259 |
`confirmation` longtext NOT NULL,
|
260 |
+
`initial_payment` decimal(18,8) NOT NULL DEFAULT '0.00',
|
261 |
+
`billing_amount` decimal(18,8) NOT NULL DEFAULT '0.00',
|
262 |
`cycle_number` int(11) NOT NULL DEFAULT '0',
|
263 |
`cycle_period` enum('Day','Week','Month','Year') DEFAULT 'Month',
|
264 |
`billing_limit` int(11) NOT NULL COMMENT 'After how many cycles should billing stop?',
|
265 |
+
`trial_amount` decimal(18,8) NOT NULL DEFAULT '0.00',
|
266 |
`trial_limit` int(11) NOT NULL DEFAULT '0',
|
267 |
`allow_signups` tinyint(4) NOT NULL DEFAULT '1',
|
268 |
`expiration_number` int(10) unsigned NOT NULL,
|
361 |
`user_id` int(11) unsigned NOT NULL,
|
362 |
`membership_id` int(11) unsigned NOT NULL,
|
363 |
`code_id` int(11) unsigned NOT NULL,
|
364 |
+
`initial_payment` decimal(18,8) NOT NULL,
|
365 |
+
`billing_amount` decimal(18,8) NOT NULL,
|
366 |
`cycle_number` int(11) NOT NULL,
|
367 |
`cycle_period` enum('Day','Week','Month','Year') NOT NULL DEFAULT 'Month',
|
368 |
`billing_limit` int(11) NOT NULL,
|
369 |
+
`trial_amount` decimal(18,8) NOT NULL,
|
370 |
`trial_limit` int(11) NOT NULL,
|
371 |
`status` varchar(20) NOT NULL DEFAULT 'active',
|
372 |
`startdate` datetime NOT NULL,
|
404 |
CREATE TABLE `" . $wpdb->pmpro_discount_codes_levels . "` (
|
405 |
`code_id` int(11) unsigned NOT NULL,
|
406 |
`level_id` int(11) unsigned NOT NULL,
|
407 |
+
`initial_payment` decimal(18,8) NOT NULL DEFAULT '0.00',
|
408 |
+
`billing_amount` decimal(18,8) NOT NULL DEFAULT '0.00',
|
409 |
`cycle_number` int(11) NOT NULL DEFAULT '0',
|
410 |
`cycle_period` enum('Day','Week','Month','Year') DEFAULT 'Month',
|
411 |
`billing_limit` int(11) NOT NULL COMMENT 'After how many cycles should billing stop?',
|
412 |
+
`trial_amount` decimal(18,8) NOT NULL DEFAULT '0.00',
|
413 |
`trial_limit` int(11) NOT NULL DEFAULT '0',
|
414 |
`expiration_number` int(10) unsigned NOT NULL,
|
415 |
`expiration_period` enum('Day','Week','Month','Year') NOT NULL,
|
js/pmpro-admin.js
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Show a system prompt before redirecting to a URL.
|
3 |
+
* Used for delete links/etc.
|
4 |
+
* @param text The prompt, i.e. are you sure?
|
5 |
+
* @param url The url to redirect to.
|
6 |
+
*/
|
7 |
+
function pmpro_askfirst( text, url ) {
|
8 |
+
var answer = window.confirm( text );
|
9 |
+
|
10 |
+
if ( answer ) {
|
11 |
+
window.location = url;
|
12 |
+
}
|
13 |
+
}
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Deprecated in v2.1
|
17 |
+
* In case add-ons/etc are expecting the non-prefixed version.
|
18 |
+
*/
|
19 |
+
if ( typeof askfirst !== 'function' ) {
|
20 |
+
function askfirst( text, url ) {
|
21 |
+
return pmpro_askfirst( text, url );
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
/*
|
26 |
+
* Toggle elements with a specific CSS class selector.
|
27 |
+
* Used to hide/show sub settings when a main setting is enabled.
|
28 |
+
* @since v2.1
|
29 |
+
*/
|
30 |
+
function pmpro_toggle_elements_by_selector( selector, checked ) {
|
31 |
+
if( checked === undefined ) {
|
32 |
+
jQuery( selector ).toggle();
|
33 |
+
} else if ( checked ) {
|
34 |
+
jQuery( selector ).show();
|
35 |
+
} else {
|
36 |
+
jQuery( selector ).hide();
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
/*
|
41 |
+
* Find inputs with a custom attribute pmpro_toggle_trigger_for,
|
42 |
+
* and bind change to toggle the specified elements.
|
43 |
+
* @since v2.1
|
44 |
+
*/
|
45 |
+
jQuery(document).ready(function() {
|
46 |
+
jQuery( 'input[pmpro_toggle_trigger_for]' ).change( function() {
|
47 |
+
pmpro_toggle_elements_by_selector( jQuery( this ).attr( 'pmpro_toggle_trigger_for' ), jQuery( this ).prop( 'checked' ) );
|
48 |
+
});
|
49 |
+
});
|
js/pmpro-braintree.js
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function() {
|
2 |
+
//set up braintree encryption
|
3 |
+
var braintree = Braintree.create( pmpro_braintree.encryptionkey );
|
4 |
+
braintree.onSubmitEncryptForm('pmpro_form');
|
5 |
+
|
6 |
+
//pass expiration dates in original format
|
7 |
+
function pmpro_updateBraintreeCardExp()
|
8 |
+
{
|
9 |
+
jQuery('#credit_card_exp').val(jQuery('#ExpirationMonth').val() + "/" + jQuery('#ExpirationYear').val());
|
10 |
+
}
|
11 |
+
jQuery('#ExpirationMonth, #ExpirationYear').change(function() {
|
12 |
+
pmpro_updateBraintreeCardExp();
|
13 |
+
});
|
14 |
+
pmpro_updateBraintreeCardExp();
|
15 |
+
|
16 |
+
//pass last 4 of credit card
|
17 |
+
function pmpro_updateBraintreeAccountNumber()
|
18 |
+
{
|
19 |
+
jQuery('#BraintreeAccountNumber').val('XXXXXXXXXXXXX' + jQuery('#AccountNumber').val().substr(jQuery('#AccountNumber').val().length - 4));
|
20 |
+
}
|
21 |
+
jQuery('#AccountNumber').change(function() {
|
22 |
+
pmpro_updateBraintreeAccountNumber();
|
23 |
+
});
|
24 |
+
pmpro_updateBraintreeAccountNumber();
|
25 |
+
});
|
js/pmpro-checkout.js
ADDED
@@ -0,0 +1,203 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function(){
|
2 |
+
// Discount code JS if we are showing discount codes.
|
3 |
+
if ( pmpro.show_discount_code ) {
|
4 |
+
//update discount code link to show field at top of form
|
5 |
+
jQuery('#other_discount_code_a').attr('href', 'javascript:void(0);');
|
6 |
+
jQuery('#other_discount_code_a').click(function() {
|
7 |
+
jQuery('#other_discount_code_tr').show();
|
8 |
+
jQuery('#other_discount_code_p').hide();
|
9 |
+
jQuery('#other_discount_code').focus();
|
10 |
+
});
|
11 |
+
|
12 |
+
//update real discount code field as the other discount code field is updated
|
13 |
+
jQuery('#other_discount_code').keyup(function() {
|
14 |
+
jQuery('#discount_code').val(jQuery('#other_discount_code').val());
|
15 |
+
});
|
16 |
+
jQuery('#other_discount_code').blur(function() {
|
17 |
+
jQuery('#discount_code').val(jQuery('#other_discount_code').val());
|
18 |
+
});
|
19 |
+
|
20 |
+
//update other discount code field as the real discount code field is updated
|
21 |
+
jQuery('#discount_code').keyup(function() {
|
22 |
+
jQuery('#other_discount_code').val(jQuery('#discount_code').val());
|
23 |
+
});
|
24 |
+
jQuery('#discount_code').blur(function() {
|
25 |
+
jQuery('#other_discount_code').val(jQuery('#discount_code').val());
|
26 |
+
});
|
27 |
+
|
28 |
+
// Top discount code field click handler.
|
29 |
+
jQuery('#other_discount_code_button').click(function() {
|
30 |
+
var code = jQuery('#other_discount_code').val();
|
31 |
+
var level_id = jQuery('#level').val();
|
32 |
+
|
33 |
+
if(code)
|
34 |
+
{
|
35 |
+
//hide any previous message
|
36 |
+
jQuery('.pmpro_discount_code_msg').hide();
|
37 |
+
|
38 |
+
//disable the apply button
|
39 |
+
jQuery('#other_discount_code_button').attr('disabled', 'disabled');
|
40 |
+
|
41 |
+
jQuery.ajax({
|
42 |
+
url: pmpro.ajaxurl, type:'GET',timeout: pmpro.ajax_timeout,
|
43 |
+
dataType: 'html',
|
44 |
+
data: "action=applydiscountcode&code=" + code + "&level=" + level_id + "&msgfield=pmpro_message",
|
45 |
+
error: function(xml){
|
46 |
+
alert('Error applying discount code [1]');
|
47 |
+
|
48 |
+
//enable apply button
|
49 |
+
jQuery('#other_discount_code_button').removeAttr('disabled');
|
50 |
+
},
|
51 |
+
success: function(responseHTML){
|
52 |
+
if (responseHTML == 'error')
|
53 |
+
{
|
54 |
+
alert('Error applying discount code [2]');
|
55 |
+
}
|
56 |
+
else
|
57 |
+
{
|
58 |
+
jQuery('#pmpro_message').html(responseHTML);
|
59 |
+
}
|
60 |
+
|
61 |
+
//enable invite button
|
62 |
+
jQuery('#other_discount_code_button').removeAttr('disabled');
|
63 |
+
}
|
64 |
+
});
|
65 |
+
}
|
66 |
+
});
|
67 |
+
|
68 |
+
// Bottom discount code field click handler.
|
69 |
+
jQuery('#discount_code_button').click(function() {
|
70 |
+
var code = jQuery('#discount_code').val();
|
71 |
+
var level_id = jQuery('#level').val();
|
72 |
+
|
73 |
+
if(code)
|
74 |
+
{
|
75 |
+
//hide any previous message
|
76 |
+
jQuery('.pmpro_discount_code_msg').hide();
|
77 |
+
|
78 |
+
//disable the apply button
|
79 |
+
jQuery('#discount_code_button').attr('disabled', 'disabled');
|
80 |
+
|
81 |
+
jQuery.ajax({
|
82 |
+
url: pmpro.ajaxurl,type:'GET',timeout: pmpro.ajax_timeout,
|
83 |
+
dataType: 'html',
|
84 |
+
data: "action=applydiscountcode&code=" + code + "&level=" + level_id + "&msgfield=discount_code_message",
|
85 |
+
error: function(xml){
|
86 |
+
alert('Error applying discount code [1]');
|
87 |
+
|
88 |
+
//enable apply button
|
89 |
+
jQuery('#discount_code_button').removeAttr('disabled');
|
90 |
+
},
|
91 |
+
success: function(responseHTML){
|
92 |
+
if (responseHTML == 'error')
|
93 |
+
{
|
94 |
+
alert('Error applying discount code [2]');
|
95 |
+
}
|
96 |
+
else
|
97 |
+
{
|
98 |
+
jQuery('#discount_code_message').html(responseHTML);
|
99 |
+
}
|
100 |
+
|
101 |
+
//enable invite button
|
102 |
+
jQuery('#discount_code_button').removeAttr('disabled');
|
103 |
+
}
|
104 |
+
});
|
105 |
+
}
|
106 |
+
});
|
107 |
+
}
|
108 |
+
|
109 |
+
// Validate credit card number and determine card type.
|
110 |
+
jQuery('#AccountNumber').validateCreditCard(function(result) {
|
111 |
+
var cardtypenames = {
|
112 |
+
"amex" : "American Express",
|
113 |
+
"diners_club_carte_blanche" : "Diners Club Carte Blanche",
|
114 |
+
"diners_club_international" : "Diners Club International",
|
115 |
+
"discover" : "Discover",
|
116 |
+
"jcb" : "JCB",
|
117 |
+
"laser" : "Laser",
|
118 |
+
"maestro" : "Maestro",
|
119 |
+
"mastercard" : "Mastercard",
|
120 |
+
"visa" : "Visa",
|
121 |
+
"visa_electron" : "Visa Electron"
|
122 |
+
};
|
123 |
+
|
124 |
+
if(result.card_type)
|
125 |
+
jQuery('#CardType').val(cardtypenames[result.card_type.name]);
|
126 |
+
else
|
127 |
+
jQuery('#CardType').val('Unknown Card Type');
|
128 |
+
});
|
129 |
+
|
130 |
+
// Find ALL <form> tags on your page
|
131 |
+
jQuery('form').submit(function(){
|
132 |
+
// On submit disable its submit button
|
133 |
+
jQuery('input[type=submit]', this).attr('disabled', 'disabled');
|
134 |
+
jQuery('input[type=image]', this).attr('disabled', 'disabled');
|
135 |
+
jQuery('#pmpro_processing_message').css('visibility', 'visible');
|
136 |
+
});
|
137 |
+
|
138 |
+
//iOS Safari fix (see: http://stackoverflow.com/questions/20210093/stop-safari-on-ios7-prompting-to-save-card-data)
|
139 |
+
var userAgent = window.navigator.userAgent;
|
140 |
+
if(userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) {
|
141 |
+
jQuery('input[type=submit]').click(function() {
|
142 |
+
try{
|
143 |
+
jQuery("input[type=password]").attr("type", "hidden");
|
144 |
+
} catch(ex){
|
145 |
+
try {
|
146 |
+
jQuery("input[type=password]").prop("type", "hidden");
|
147 |
+
} catch(ex) {}
|
148 |
+
}
|
149 |
+
});
|
150 |
+
}
|
151 |
+
|
152 |
+
//add required to required fields
|
153 |
+
if ( ! jQuery( '.pmpro_required' ).next().hasClass( "pmpro_asterisk" ) ) {
|
154 |
+
jQuery( '.pmpro_required' ).after( '<span class="pmpro_asterisk"> <abbr title="Required Field">*</abbr></span>' );
|
155 |
+
}
|
156 |
+
|
157 |
+
//unhighlight error fields when the user edits them
|
158 |
+
jQuery('.pmpro_error').bind("change keyup input", function() {
|
159 |
+
jQuery(this).removeClass('pmpro_error');
|
160 |
+
});
|
161 |
+
|
162 |
+
//click apply button on enter in discount code box
|
163 |
+
jQuery('#discount_code').keydown(function (e){
|
164 |
+
if(e.keyCode == 13){
|
165 |
+
e.preventDefault();
|
166 |
+
jQuery('#discount_code_button').click();
|
167 |
+
}
|
168 |
+
});
|
169 |
+
|
170 |
+
//hide apply button if a discount code was passed in
|
171 |
+
if( pmpro.discount_code_passed_in ) {
|
172 |
+
jQuery('#discount_code_button').hide();
|
173 |
+
jQuery('#discount_code').bind('change keyup', function() {
|
174 |
+
jQuery('#discount_code_button').show();
|
175 |
+
});
|
176 |
+
}
|
177 |
+
|
178 |
+
//click apply button on enter in *other* discount code box
|
179 |
+
jQuery('#other_discount_code').keydown(function (e){
|
180 |
+
if(e.keyCode == 13){
|
181 |
+
e.preventDefault();
|
182 |
+
jQuery('#other_discount_code_button').click();
|
183 |
+
}
|
184 |
+
});
|
185 |
+
|
186 |
+
//add javascriptok hidden field to checkout
|
187 |
+
jQuery("input[name=submit-checkout]").after('<input type="hidden" name="javascriptok" value="1" />');
|
188 |
+
|
189 |
+
// Keep bottom message box in sync with the top one.
|
190 |
+
jQuery('#pmpro_message').bind("DOMSubtreeModified",function(){
|
191 |
+
setTimeout( function(){ pmpro_copyMessageToBottom() }, 200);
|
192 |
+
});
|
193 |
+
|
194 |
+
function pmpro_copyMessageToBottom() {
|
195 |
+
jQuery('#pmpro_message_bottom').text(jQuery('#pmpro_message').text());
|
196 |
+
jQuery('#pmpro_message_bottom').attr('class', jQuery('#pmpro_message').attr('class'));
|
197 |
+
if(jQuery('#pmpro_message').is(":visible")) {
|
198 |
+
jQuery('#pmpro_message_bottom').show();
|
199 |
+
} else {
|
200 |
+
jQuery('#pmpro_message_bottom').hide();
|
201 |
+
}
|
202 |
+
}
|
203 |
+
});
|
js/pmpro-paypal.js
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Used by plugns that hide/show the billing fields.
|
2 |
+
pmpro_require_billing = true;
|
3 |
+
|
4 |
+
jQuery(document).ready(function() {
|
5 |
+
//choosing payment method
|
6 |
+
jQuery('input[name=gateway]').click(function() {
|
7 |
+
if(jQuery(this).val() == 'paypal') {
|
8 |
+
jQuery('#pmpro_paypalexpress_checkout').hide();
|
9 |
+
jQuery('#pmpro_billing_address_fields').show();
|
10 |
+
jQuery('#pmpro_payment_information_fields').show();
|
11 |
+
jQuery('#pmpro_submit_span').show();
|
12 |
+
} else {
|
13 |
+
jQuery('#pmpro_billing_address_fields').hide();
|
14 |
+
jQuery('#pmpro_payment_information_fields').hide();
|
15 |
+
jQuery('#pmpro_submit_span').hide();
|
16 |
+
jQuery('#pmpro_paypalexpress_checkout').show();
|
17 |
+
}
|
18 |
+
});
|
19 |
+
|
20 |
+
//select the radio button if the label is clicked on
|
21 |
+
jQuery('a.pmpro_radio').click(function() {
|
22 |
+
jQuery(this).prev().click();
|
23 |
+
});
|
24 |
+
});
|
js/pmpro-stripe.js
ADDED
@@ -0,0 +1,159 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Wire up the form for Stripe.
|
2 |
+
jQuery( document ).ready( function( $ ) {
|
3 |
+
|
4 |
+
var stripe, elements, cardNumber, cardExpiry, cardCvc;
|
5 |
+
|
6 |
+
// Identify with Stripe.
|
7 |
+
stripe = Stripe( pmproStripe.publishableKey );
|
8 |
+
elements = stripe.elements();
|
9 |
+
|
10 |
+
// Create Elements.
|
11 |
+
cardNumber = elements.create('cardNumber');
|
12 |
+
cardExpiry = elements.create('cardExpiry');
|
13 |
+
cardCvc = elements.create('cardCvc');
|
14 |
+
|
15 |
+
// Mount Elements.
|
16 |
+
cardNumber.mount('#AccountNumber');
|
17 |
+
cardExpiry.mount('#Expiry');
|
18 |
+
cardCvc.mount('#CVV');
|
19 |
+
|
20 |
+
// Handle authentication if required.
|
21 |
+
if ( 'undefined' !== typeof( pmproStripe.paymentIntent ) ) {
|
22 |
+
if ( 'requires_action' === pmproStripe.paymentIntent.status ) {
|
23 |
+
// On submit disable its submit button
|
24 |
+
$('input[type=submit]', this).attr('disabled', 'disabled');
|
25 |
+
$('input[type=image]', this).attr('disabled', 'disabled');
|
26 |
+
$('#pmpro_processing_message').css('visibility', 'visible');
|
27 |
+
stripe.handleCardAction( pmproStripe.paymentIntent.client_secret )
|
28 |
+
.then( stripeResponseHandler );
|
29 |
+
}
|
30 |
+
}
|
31 |
+
|
32 |
+
$( '.pmpro_form' ).submit( function( event ) {
|
33 |
+
var name, address;
|
34 |
+
|
35 |
+
// Prevent the form from submitting with the default action.
|
36 |
+
event.preventDefault();
|
37 |
+
|
38 |
+
// Double check in case a discount code made the level free.
|
39 |
+
if ( typeof pmpro_require_billing === 'undefined' || pmpro_require_billing ) {
|
40 |
+
|
41 |
+
if ( pmproStripe.verifyAddress ) {
|
42 |
+
address = {
|
43 |
+
line1: $( '#baddress1' ).val(),
|
44 |
+
line2: $( '#baddress2' ).val(),
|
45 |
+
city: $( '#bcity' ).val(),
|
46 |
+
state: $( '#bstate' ).val(),
|
47 |
+
postal_code: $( '#bzipcode' ).val(),
|
48 |
+
country: $( '#bcountry' ).val(),
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
//add first and last name if not blank
|
53 |
+
if ( $( '#bfirstname' ).length && $( '#blastname' ).length ) {
|
54 |
+
name = $.trim( $( '#bfirstname' ).val() + ' ' + $( '#blastname' ).val() );
|
55 |
+
}
|
56 |
+
|
57 |
+
stripe.createPaymentMethod( 'card', cardNumber, {
|
58 |
+
billing_details: {
|
59 |
+
address: address,
|
60 |
+
name: name,
|
61 |
+
}
|
62 |
+
}).then( stripeResponseHandler );
|
63 |
+
|
64 |
+
// Prevent the form from submitting with the default action.
|
65 |
+
return false;
|
66 |
+
} else {
|
67 |
+
this.submit();
|
68 |
+
return true; //not using Stripe anymore
|
69 |
+
}
|
70 |
+
});
|
71 |
+
|
72 |
+
// Handle the response from Stripe.
|
73 |
+
function stripeResponseHandler( response ) {
|
74 |
+
|
75 |
+
var form, data, card, paymentMethodId, customerId;
|
76 |
+
|
77 |
+
form = $('#pmpro_form, .pmpro_form');
|
78 |
+
|
79 |
+
if (response.error) {
|
80 |
+
|
81 |
+
// Re-enable the submit button.
|
82 |
+
$('.pmpro_btn-submit-checkout,.pmpro_btn-submit').removeAttr('disabled');
|
83 |
+
|
84 |
+
// Hide processing message.
|
85 |
+
$('#pmpro_processing_message').css('visibility', 'hidden');
|
86 |
+
|
87 |
+
// error message
|
88 |
+
$( '#pmpro_message' ).text( response.error.message ).addClass( 'pmpro_error' ).removeClass( 'pmpro_alert' ).removeClass( 'pmpro_success' ).show();
|
89 |
+
|
90 |
+
} else if ( response.paymentMethod ) {
|
91 |
+
|
92 |
+
paymentMethodId = response.paymentMethod.id;
|
93 |
+
card = response.paymentMethod.card;
|
94 |
+
|
95 |
+
// Insert the Source ID into the form so it gets submitted to the server.
|
96 |
+
form.append( '<input type="hidden" name="payment_method_id" value="' + paymentMethodId + '" />' );
|
97 |
+
|
98 |
+
// We need this for now to make sure user meta gets updated.
|
99 |
+
// Insert fields for other card fields.
|
100 |
+
if( $( '#CardType[name=CardType]' ).length ) {
|
101 |
+
$( '#CardType' ).val( card.brand );
|
102 |
+
} else {
|
103 |
+
form.append( '<input type="hidden" name="CardType" value="' + card.brand + '"/>' );
|
104 |
+
}
|
105 |
+
|
106 |
+
form.append( '<input type="hidden" name="AccountNumber" value="XXXXXXXXXXXX' + card.last4 + '"/>' );
|
107 |
+
form.append( '<input type="hidden" name="ExpirationMonth" value="' + ( '0' + card.exp_month ).slice( -2 ) + '"/>' );
|
108 |
+
form.append( '<input type="hidden" name="ExpirationYear" value="' + card.exp_year + '"/>' );
|
109 |
+
|
110 |
+
// and submit
|
111 |
+
form.get(0).submit();
|
112 |
+
|
113 |
+
} else if ( response.paymentIntent || response.setupIntent ) {
|
114 |
+
|
115 |
+
// success message
|
116 |
+
$( '#pmpro_message' ).text( pmproStripe.msgAuthenticationValidated ).addClass( 'pmpro_success' ).removeClass( 'pmpro_alert' ).removeClass( 'pmpro_error' ).show();
|
117 |
+
|
118 |
+
customerId = pmproStripe.paymentIntent
|
119 |
+
? pmproStripe.paymentIntent.customer
|
120 |
+
: pmproStripe.setupIntent.customer;
|
121 |
+
|
122 |
+
paymentMethodId = pmproStripe.paymentIntent
|
123 |
+
? pmproStripe.paymentIntent.payment_method.id
|
124 |
+
: pmproStripe.setupIntent.payment_method.id;
|
125 |
+
|
126 |
+
card = pmproStripe.paymentIntent
|
127 |
+
? pmproStripe.paymentIntent.payment_method.card
|
128 |
+
: pmproStripe.setupIntent.payment_method.card;
|
129 |
+
|
130 |
+
if ( pmproStripe.paymentIntent ) {
|
131 |
+
form.append( '<input type="hidden" name="payment_intent_id" value="' + pmproStripe.paymentIntent.id + '" />' );
|
132 |
+
}
|
133 |
+
if ( pmproStripe.setupIntent ) {
|
134 |
+
form.append( '<input type="hidden" name="setup_intent_id" value="' + pmproStripe.setupIntent.id + '" />' );
|
135 |
+
form.append( '<input type="hidden" name="subscription_id" value="' + pmproStripe.subscription.id + '" />' );
|
136 |
+
}
|
137 |
+
|
138 |
+
// Insert the Customer ID into the form so it gets submitted to the server.
|
139 |
+
form.append( '<input type="hidden" name="customer_id" value="' + customerId + '" />' );
|
140 |
+
|
141 |
+
// Insert the PaymentMethod ID into the form so it gets submitted to the server.
|
142 |
+
form.append( '<input type="hidden" name="payment_method_id" value="' + paymentMethodId + '" />' );
|
143 |
+
|
144 |
+
// We need this for now to make sure user meta gets updated.
|
145 |
+
// Insert fields for other card fields.
|
146 |
+
if( $( '#CardType[name=CardType]' ).length ) {
|
147 |
+
$( '#CardType' ).val( card.brand );
|
148 |
+
} else {
|
149 |
+
form.append( '<input type="hidden" name="CardType" value="' + card.brand + '"/>' );
|
150 |
+
}
|
151 |
+
|
152 |
+
form.append( '<input type="hidden" name="AccountNumber" value="XXXXXXXXXXXX' + card.last4 + '"/>' );
|
153 |
+
form.append( '<input type="hidden" name="ExpirationMonth" value="' + ( '0' + card.exp_month ).slice( -2 ) + '"/>' );
|
154 |
+
form.append( '<input type="hidden" name="ExpirationYear" value="' + card.exp_year + '"/>' );
|
155 |
+
form.get(0).submit();
|
156 |
+
return true;
|
157 |
+
}
|
158 |
+
}
|
159 |
+
});
|
languages/paid-memberships-pro.mo
CHANGED
Binary file
|
languages/paid-memberships-pro.po
CHANGED
@@ -6,7 +6,7 @@ msgid ""
|
|
6 |
msgstr ""
|
7 |
"Project-Id-Version: paid-memberships-pro\n"
|
8 |
"Report-Msgid-Bugs-To: info@paidmembershipspro.com\n"
|
9 |
-
"POT-Creation-Date: 2019-
|
10 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
11 |
"Last-Translator: \n"
|
12 |
"Language-Team: Stranger Studios <info@paidmembershipspro.com>\n"
|
@@ -59,7 +59,7 @@ msgstr ""
|
|
59 |
msgid "Check Again"
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: adminpages/addons.php:93 adminpages/orders.php:
|
63 |
#: adminpages/addons.php:79 adminpages/addons.php:92 adminpages/addons.php:93
|
64 |
#: adminpages/orders.php:605 adminpages/orders.php:712
|
65 |
#: adminpages/orders.php:741 adminpages/orders.php:850
|
@@ -103,7 +103,7 @@ msgstr ""
|
|
103 |
#: adminpages/addons.php:112 adminpages/membershiplevels.php:296
|
104 |
#: adminpages/membershiplevels.php:298 adminpages/membershiplevels.php:300
|
105 |
#: adminpages/membershiplevels.php:324 adminpages/membershiplevels.php:334
|
106 |
-
#: adminpages/membershiplevels.php:356
|
107 |
msgid "Description"
|
108 |
msgstr ""
|
109 |
|
@@ -171,9 +171,10 @@ msgstr ""
|
|
171 |
msgid "Activate %s"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: adminpages/addons.php:231 adminpages/
|
175 |
-
#: adminpages/
|
176 |
-
#: adminpages/addons.php:
|
|
|
177 |
msgid "Delete"
|
178 |
msgstr ""
|
179 |
|
@@ -208,8 +209,8 @@ msgstr ""
|
|
208 |
msgid "WordPress.org"
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: adminpages/addons.php:249 adminpages/orders.php:
|
212 |
-
#: adminpages/orders.php:
|
213 |
#: includes/profile.php:186 shortcodes/pmpro_account.php:158
|
214 |
#: adminpages/addons.php:231 adminpages/addons.php:234
|
215 |
#: adminpages/addons.php:247 adminpages/addons.php:249
|
@@ -349,7 +350,7 @@ msgid ""
|
|
349 |
msgstr ""
|
350 |
|
351 |
#: adminpages/admin_header.php:135
|
352 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
353 |
#: adminpages/admin_header.php:125 adminpages/admin_header.php:135
|
354 |
#: classes/gateways/class.pmprogateway_stripe.php:66
|
355 |
#: classes/gateways/class.pmprogateway_stripe.php:68
|
@@ -399,18 +400,18 @@ msgstr ""
|
|
399 |
msgid "Members"
|
400 |
msgstr ""
|
401 |
|
402 |
-
#: adminpages/admin_header.php:196 adminpages/
|
403 |
-
#:
|
404 |
-
#: adminpages
|
405 |
-
#: adminpages/orders.php:
|
406 |
-
#: adminpages/orders.php:
|
407 |
-
#: adminpages/orders.php:
|
408 |
-
#: adminpages/orders.php:
|
409 |
-
#:
|
410 |
-
#: includes/adminpages.php:
|
411 |
-
#: includes/adminpages.php:
|
412 |
-
#: includes/adminpages.php:
|
413 |
-
#: includes/adminpages.php:172
|
414 |
msgid "Orders"
|
415 |
msgstr ""
|
416 |
|
@@ -439,7 +440,7 @@ msgstr ""
|
|
439 |
msgid "Levels"
|
440 |
msgstr ""
|
441 |
|
442 |
-
#: adminpages/admin_header.php:215 adminpages/membershiplevels.php:
|
443 |
#: adminpages/pagesettings.php:85 includes/metaboxes.php:130
|
444 |
#: adminpages/admin_header.php:128 adminpages/admin_header.php:149
|
445 |
#: adminpages/admin_header.php:150 adminpages/admin_header.php:159
|
@@ -451,15 +452,15 @@ msgstr ""
|
|
451 |
#: adminpages/membershiplevels.php:609 adminpages/membershiplevels.php:618
|
452 |
#: adminpages/membershiplevels.php:619 adminpages/membershiplevels.php:631
|
453 |
#: adminpages/membershiplevels.php:641 adminpages/membershiplevels.php:700
|
454 |
-
#: adminpages/
|
455 |
-
#: adminpages/pagesettings.php:
|
456 |
-
#:
|
457 |
-
#: includes/adminpages.php:
|
458 |
-
#: includes/adminpages.php:
|
459 |
-
#: includes/adminpages.php:
|
460 |
-
#: includes/adminpages.php:
|
461 |
-
#: includes/metaboxes.php:
|
462 |
-
#: includes/metaboxes.php:132
|
463 |
msgid "Membership Levels"
|
464 |
msgstr ""
|
465 |
|
@@ -503,6 +504,7 @@ msgid "Payment Gateway & SSL Settings"
|
|
503 |
msgstr ""
|
504 |
|
505 |
#: adminpages/admin_header.php:231 adminpages/memberslist.php:168
|
|
|
506 |
#: shortcodes/pmpro_account.php:111 adminpages/admin_header.php:131
|
507 |
#: adminpages/admin_header.php:152 adminpages/admin_header.php:162
|
508 |
#: adminpages/admin_header.php:171 adminpages/admin_header.php:183
|
@@ -518,11 +520,12 @@ msgstr ""
|
|
518 |
#: adminpages/admin_header.php:231 adminpages/emailsettings.php:83
|
519 |
#: includes/adminpages.php:61 adminpages/admin_header.php:231
|
520 |
#: adminpages/emailsettings.php:60 adminpages/emailsettings.php:69
|
521 |
-
#: adminpages/emailsettings.php:79
|
522 |
-
#: includes/adminpages.php:
|
523 |
-
#: includes/adminpages.php:
|
524 |
-
#: includes/adminpages.php:
|
525 |
-
#: includes/adminpages.php:
|
|
|
526 |
msgid "Email Settings"
|
527 |
msgstr ""
|
528 |
|
@@ -537,11 +540,12 @@ msgstr ""
|
|
537 |
#: includes/adminpages.php:62 adminpages/admin_header.php:235
|
538 |
#: adminpages/advancedsettings.php:79 adminpages/advancedsettings.php:86
|
539 |
#: adminpages/advancedsettings.php:88 adminpages/advancedsettings.php:91
|
540 |
-
#: adminpages/advancedsettings.php:107
|
541 |
-
#: includes/adminpages.php:
|
542 |
-
#: includes/adminpages.php:
|
543 |
-
#: includes/adminpages.php:
|
544 |
-
#: includes/adminpages.php:
|
|
|
545 |
msgid "Advanced Settings"
|
546 |
msgstr ""
|
547 |
|
@@ -560,12 +564,13 @@ msgstr ""
|
|
560 |
#: adminpages/advancedsettings.php:61 adminpages/advancedsettings.php:35
|
561 |
#: adminpages/advancedsettings.php:42 adminpages/advancedsettings.php:43
|
562 |
#: adminpages/advancedsettings.php:46 adminpages/advancedsettings.php:60
|
|
|
563 |
msgid "Your advanced settings have been updated."
|
564 |
msgstr ""
|
565 |
|
566 |
#: adminpages/advancedsettings.php:87 adminpages/advancedsettings.php:66
|
567 |
#: adminpages/advancedsettings.php:68 adminpages/advancedsettings.php:71
|
568 |
-
#: adminpages/advancedsettings.php:85
|
569 |
#, php-format
|
570 |
msgid ""
|
571 |
"This content is for !!levels!! members only. <a href=\"%s\">Register here</"
|
@@ -574,7 +579,7 @@ msgstr ""
|
|
574 |
|
575 |
#: adminpages/advancedsettings.php:92 adminpages/advancedsettings.php:71
|
576 |
#: adminpages/advancedsettings.php:73 adminpages/advancedsettings.php:76
|
577 |
-
#: adminpages/advancedsettings.php:90
|
578 |
#, php-format
|
579 |
msgid ""
|
580 |
"Please <a href=\"%s\">login</a> to view this content. (<a href=\"%s"
|
@@ -583,7 +588,7 @@ msgstr ""
|
|
583 |
|
584 |
#: adminpages/advancedsettings.php:97 adminpages/advancedsettings.php:76
|
585 |
#: adminpages/advancedsettings.php:78 adminpages/advancedsettings.php:81
|
586 |
-
#: adminpages/advancedsettings.php:95
|
587 |
msgid ""
|
588 |
"This content is for members only. Visit the site and log in/register to read."
|
589 |
msgstr ""
|
@@ -591,12 +596,14 @@ msgstr ""
|
|
591 |
#: adminpages/advancedsettings.php:115 adminpages/advancedsettings.php:85
|
592 |
#: adminpages/advancedsettings.php:92 adminpages/advancedsettings.php:94
|
593 |
#: adminpages/advancedsettings.php:97 adminpages/advancedsettings.php:113
|
|
|
594 |
msgid "Message for Logged-in Non-members"
|
595 |
msgstr ""
|
596 |
|
597 |
#: adminpages/advancedsettings.php:119 adminpages/advancedsettings.php:89
|
598 |
#: adminpages/advancedsettings.php:96 adminpages/advancedsettings.php:98
|
599 |
#: adminpages/advancedsettings.php:101 adminpages/advancedsettings.php:117
|
|
|
600 |
msgid ""
|
601 |
"This message replaces the post content for non-members. Available variables"
|
602 |
msgstr ""
|
@@ -604,40 +611,47 @@ msgstr ""
|
|
604 |
#: adminpages/advancedsettings.php:124 adminpages/advancedsettings.php:94
|
605 |
#: adminpages/advancedsettings.php:101 adminpages/advancedsettings.php:103
|
606 |
#: adminpages/advancedsettings.php:106 adminpages/advancedsettings.php:122
|
|
|
607 |
msgid "Message for Logged-out Users"
|
608 |
msgstr ""
|
609 |
|
610 |
#: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:98
|
611 |
#: adminpages/advancedsettings.php:105 adminpages/advancedsettings.php:107
|
612 |
#: adminpages/advancedsettings.php:110 adminpages/advancedsettings.php:126
|
|
|
613 |
msgid "This message replaces the post content for logged-out visitors."
|
614 |
msgstr ""
|
615 |
|
616 |
#: adminpages/advancedsettings.php:133 adminpages/advancedsettings.php:103
|
617 |
#: adminpages/advancedsettings.php:110 adminpages/advancedsettings.php:112
|
618 |
#: adminpages/advancedsettings.php:115 adminpages/advancedsettings.php:131
|
|
|
619 |
msgid "Message for RSS Feed"
|
620 |
msgstr ""
|
621 |
|
622 |
#: adminpages/advancedsettings.php:137 adminpages/advancedsettings.php:107
|
623 |
#: adminpages/advancedsettings.php:114 adminpages/advancedsettings.php:116
|
624 |
#: adminpages/advancedsettings.php:119 adminpages/advancedsettings.php:135
|
|
|
625 |
msgid "This message replaces the post content in RSS feeds."
|
626 |
msgstr ""
|
627 |
|
628 |
#: adminpages/advancedsettings.php:143 adminpages/advancedsettings.php:122
|
629 |
#: adminpages/advancedsettings.php:125 adminpages/advancedsettings.php:141
|
|
|
630 |
msgid "Filter searches and archives?"
|
631 |
msgstr ""
|
632 |
|
633 |
#: adminpages/advancedsettings.php:147 adminpages/advancedsettings.php:126
|
634 |
#: adminpages/advancedsettings.php:129 adminpages/advancedsettings.php:145
|
|
|
635 |
msgid ""
|
636 |
"No - Non-members will see restricted posts/pages in searches and archives."
|
637 |
msgstr ""
|
638 |
|
639 |
#: adminpages/advancedsettings.php:148 adminpages/advancedsettings.php:127
|
640 |
#: adminpages/advancedsettings.php:130 adminpages/advancedsettings.php:146
|
|
|
641 |
msgid ""
|
642 |
"Yes - Only members will see restricted posts/pages in searches and archives."
|
643 |
msgstr ""
|
@@ -645,45 +659,51 @@ msgstr ""
|
|
645 |
#: adminpages/advancedsettings.php:154 adminpages/advancedsettings.php:113
|
646 |
#: adminpages/advancedsettings.php:120 adminpages/advancedsettings.php:133
|
647 |
#: adminpages/advancedsettings.php:136 adminpages/advancedsettings.php:152
|
|
|
648 |
msgid "Show Excerpts to Non-Members?"
|
649 |
msgstr ""
|
650 |
|
651 |
#: adminpages/advancedsettings.php:158 adminpages/advancedsettings.php:117
|
652 |
#: adminpages/advancedsettings.php:124 adminpages/advancedsettings.php:137
|
653 |
#: adminpages/advancedsettings.php:140 adminpages/advancedsettings.php:156
|
|
|
654 |
msgid "No - Hide excerpts."
|
655 |
msgstr ""
|
656 |
|
657 |
#: adminpages/advancedsettings.php:159 adminpages/advancedsettings.php:118
|
658 |
#: adminpages/advancedsettings.php:125 adminpages/advancedsettings.php:138
|
659 |
#: adminpages/advancedsettings.php:141 adminpages/advancedsettings.php:157
|
|
|
660 |
msgid "Yes - Show excerpts."
|
661 |
msgstr ""
|
662 |
|
663 |
#: adminpages/advancedsettings.php:165 adminpages/advancedsettings.php:144
|
664 |
#: adminpages/advancedsettings.php:147 adminpages/advancedsettings.php:163
|
|
|
665 |
msgid "Hide Ads From Members?"
|
666 |
msgstr ""
|
667 |
|
668 |
#: adminpages/advancedsettings.php:169 adminpages/advancedsettings.php:228
|
669 |
-
#: adminpages/advancedsettings.php:240 adminpages/membershiplevels.php:
|
670 |
-
#: adminpages/paymentsettings.php:
|
671 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
672 |
#: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:135
|
673 |
#: adminpages/advancedsettings.php:148 adminpages/advancedsettings.php:151
|
674 |
-
#: adminpages/advancedsettings.php:167 adminpages/advancedsettings.php:
|
675 |
-
#: adminpages/advancedsettings.php:
|
676 |
-
#: adminpages/advancedsettings.php:
|
677 |
-
#: adminpages/advancedsettings.php:
|
678 |
-
#: adminpages/advancedsettings.php:
|
679 |
-
#: adminpages/advancedsettings.php:
|
680 |
-
#: adminpages/
|
681 |
-
#: adminpages/membershiplevels.php:
|
682 |
-
#: adminpages/membershiplevels.php:
|
683 |
-
#: adminpages/membershiplevels.php:
|
684 |
-
#: adminpages/membershiplevels.php:
|
685 |
-
#: adminpages/membershiplevels.php:
|
686 |
-
#: adminpages/membershiplevels.php:
|
|
|
|
|
687 |
#: adminpages/paymentsettings.php:219 adminpages/paymentsettings.php:236
|
688 |
#: adminpages/paymentsettings.php:414 adminpages/paymentsettings.php:429
|
689 |
#: adminpages/paymentsettings.php:434 adminpages/paymentsettings.php:436
|
@@ -699,6 +719,7 @@ msgstr ""
|
|
699 |
#: classes/gateways/class.pmprogateway_stripe.php:222
|
700 |
#: classes/gateways/class.pmprogateway_stripe.php:249
|
701 |
#: classes/gateways/class.pmprogateway_stripe.php:281
|
|
|
702 |
#: classes/gateways/class.pmprogateway_stripe.php:289
|
703 |
#: classes/gateways/class.pmprogateway_stripe.php:291
|
704 |
#: classes/gateways/class.pmprogateway_stripe.php:297
|
@@ -711,58 +732,66 @@ msgstr ""
|
|
711 |
#: adminpages/advancedsettings.php:170 adminpages/advancedsettings.php:129
|
712 |
#: adminpages/advancedsettings.php:136 adminpages/advancedsettings.php:149
|
713 |
#: adminpages/advancedsettings.php:152 adminpages/advancedsettings.php:168
|
|
|
714 |
msgid "Hide Ads From All Members"
|
715 |
msgstr ""
|
716 |
|
717 |
#: adminpages/advancedsettings.php:171 adminpages/advancedsettings.php:130
|
718 |
#: adminpages/advancedsettings.php:137 adminpages/advancedsettings.php:150
|
719 |
#: adminpages/advancedsettings.php:153 adminpages/advancedsettings.php:169
|
|
|
720 |
msgid "Hide Ads From Certain Members"
|
721 |
msgstr ""
|
722 |
|
723 |
#: adminpages/advancedsettings.php:178 adminpages/advancedsettings.php:137
|
724 |
#: adminpages/advancedsettings.php:144 adminpages/advancedsettings.php:157
|
725 |
#: adminpages/advancedsettings.php:160 adminpages/advancedsettings.php:176
|
|
|
726 |
msgid "Ads from the following plugins will be automatically turned off"
|
727 |
msgstr ""
|
728 |
|
729 |
#: adminpages/advancedsettings.php:179 adminpages/advancedsettings.php:138
|
730 |
#: adminpages/advancedsettings.php:145 adminpages/advancedsettings.php:158
|
731 |
#: adminpages/advancedsettings.php:161 adminpages/advancedsettings.php:177
|
|
|
732 |
msgid "To hide ads in your template code, use code like the following"
|
733 |
msgstr ""
|
734 |
|
735 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:149
|
736 |
#: adminpages/advancedsettings.php:156 adminpages/advancedsettings.php:169
|
737 |
#: adminpages/advancedsettings.php:172 adminpages/advancedsettings.php:188
|
|
|
738 |
msgid "Choose Levels to Hide Ads From"
|
739 |
msgstr ""
|
740 |
|
741 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:183
|
742 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:203
|
743 |
#: adminpages/advancedsettings.php:206 adminpages/advancedsettings.php:222
|
|
|
744 |
msgid "Redirect all traffic from registration page to /susbcription/?"
|
745 |
msgstr ""
|
746 |
|
747 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:183
|
748 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:203
|
749 |
#: adminpages/advancedsettings.php:206 adminpages/advancedsettings.php:222
|
|
|
750 |
msgid "multisite only"
|
751 |
msgstr ""
|
752 |
|
753 |
-
#: adminpages/advancedsettings.php:229 adminpages/membershiplevels.php:
|
754 |
-
#: adminpages/paymentsettings.php:
|
755 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
756 |
#: adminpages/advancedsettings.php:188 adminpages/advancedsettings.php:195
|
757 |
#: adminpages/advancedsettings.php:208 adminpages/advancedsettings.php:211
|
758 |
-
#: adminpages/advancedsettings.php:227 adminpages/
|
759 |
-
#: adminpages/membershiplevels.php:
|
760 |
-
#: adminpages/membershiplevels.php:
|
761 |
-
#: adminpages/membershiplevels.php:
|
762 |
-
#: adminpages/membershiplevels.php:
|
763 |
-
#: adminpages/membershiplevels.php:
|
764 |
-
#: adminpages/membershiplevels.php:
|
765 |
-
#: adminpages/membershiplevels.php:
|
|
|
766 |
#: adminpages/paymentsettings.php:220 adminpages/paymentsettings.php:237
|
767 |
#: adminpages/paymentsettings.php:415 adminpages/paymentsettings.php:424
|
768 |
#: adminpages/paymentsettings.php:430 adminpages/paymentsettings.php:435
|
@@ -778,6 +807,7 @@ msgstr ""
|
|
778 |
#: classes/gateways/class.pmprogateway_stripe.php:223
|
779 |
#: classes/gateways/class.pmprogateway_stripe.php:250
|
780 |
#: classes/gateways/class.pmprogateway_stripe.php:282
|
|
|
781 |
#: classes/gateways/class.pmprogateway_stripe.php:290
|
782 |
#: classes/gateways/class.pmprogateway_stripe.php:292
|
783 |
#: classes/gateways/class.pmprogateway_stripe.php:298
|
@@ -790,83 +820,92 @@ msgstr ""
|
|
790 |
#: adminpages/advancedsettings.php:236 adminpages/advancedsettings.php:195
|
791 |
#: adminpages/advancedsettings.php:202 adminpages/advancedsettings.php:215
|
792 |
#: adminpages/advancedsettings.php:218 adminpages/advancedsettings.php:234
|
|
|
793 |
msgid "Use reCAPTCHA?"
|
794 |
msgstr ""
|
795 |
|
796 |
#: adminpages/advancedsettings.php:241 adminpages/advancedsettings.php:200
|
797 |
#: adminpages/advancedsettings.php:207 adminpages/advancedsettings.php:220
|
798 |
#: adminpages/advancedsettings.php:223 adminpages/advancedsettings.php:239
|
|
|
799 |
msgid "Yes - Free memberships only."
|
800 |
msgstr ""
|
801 |
|
802 |
#: adminpages/advancedsettings.php:242 adminpages/advancedsettings.php:201
|
803 |
#: adminpages/advancedsettings.php:208 adminpages/advancedsettings.php:221
|
804 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:240
|
|
|
805 |
msgid "Yes - All memberships."
|
806 |
msgstr ""
|
807 |
|
808 |
#: adminpages/advancedsettings.php:244 adminpages/advancedsettings.php:203
|
809 |
#: adminpages/advancedsettings.php:210 adminpages/advancedsettings.php:223
|
810 |
#: adminpages/advancedsettings.php:226 adminpages/advancedsettings.php:242
|
|
|
811 |
msgid "A free reCAPTCHA key is required."
|
812 |
msgstr ""
|
813 |
|
814 |
#: adminpages/advancedsettings.php:244 adminpages/advancedsettings.php:203
|
815 |
#: adminpages/advancedsettings.php:210 adminpages/advancedsettings.php:223
|
816 |
#: adminpages/advancedsettings.php:226 adminpages/advancedsettings.php:242
|
|
|
817 |
msgid "Click here to signup for reCAPTCHA"
|
818 |
msgstr ""
|
819 |
|
820 |
-
#: adminpages/advancedsettings.php:250
|
821 |
msgid "reCAPTCHA Version"
|
822 |
msgstr ""
|
823 |
|
824 |
-
#: adminpages/advancedsettings.php:252
|
825 |
msgid " v2 - Checkbox"
|
826 |
msgstr ""
|
827 |
|
828 |
-
#: adminpages/advancedsettings.php:253
|
829 |
msgid "v3 - Invisible"
|
830 |
msgstr ""
|
831 |
|
832 |
-
#: adminpages/advancedsettings.php:255
|
833 |
msgid "Changing your version will require new API keys."
|
834 |
msgstr ""
|
835 |
|
836 |
#: adminpages/advancedsettings.php:257 adminpages/advancedsettings.php:248
|
|
|
837 |
msgid "reCAPTCHA Site Key"
|
838 |
msgstr ""
|
839 |
|
840 |
#: adminpages/advancedsettings.php:260 adminpages/advancedsettings.php:251
|
|
|
841 |
msgid "reCAPTCHA Secret Key"
|
842 |
msgstr ""
|
843 |
|
844 |
#: adminpages/advancedsettings.php:266 adminpages/advancedsettings.php:218
|
845 |
#: adminpages/advancedsettings.php:225 adminpages/advancedsettings.php:238
|
846 |
#: adminpages/advancedsettings.php:241 adminpages/advancedsettings.php:257
|
|
|
847 |
msgid "Require Terms of Service on signups?"
|
848 |
msgstr ""
|
849 |
|
850 |
#: adminpages/advancedsettings.php:273 adminpages/advancedsettings.php:225
|
851 |
#: adminpages/advancedsettings.php:232 adminpages/advancedsettings.php:245
|
852 |
#: adminpages/advancedsettings.php:248 adminpages/advancedsettings.php:264
|
|
|
853 |
msgid ""
|
854 |
"If yes, create a WordPress page containing your TOS agreement and assign it "
|
855 |
"using the dropdown above."
|
856 |
msgstr ""
|
857 |
|
858 |
#: adminpages/advancedsettings.php:384 adminpages/pagesettings.php:315
|
859 |
-
#: adminpages/paymentsettings.php:
|
860 |
#: adminpages/advancedsettings.php:355 adminpages/advancedsettings.php:359
|
861 |
#: adminpages/advancedsettings.php:368 adminpages/advancedsettings.php:375
|
862 |
-
#: adminpages/
|
863 |
-
#: adminpages/pagesettings.php:
|
864 |
-
#: adminpages/pagesettings.php:
|
865 |
-
#: adminpages/pagesettings.php:
|
866 |
-
#: adminpages/
|
867 |
-
#: adminpages/paymentsettings.php:
|
868 |
-
#: adminpages/paymentsettings.php:
|
869 |
-
#: adminpages/paymentsettings.php:534
|
870 |
msgid "Save Settings"
|
871 |
msgstr ""
|
872 |
|
@@ -954,7 +993,7 @@ msgid ""
|
|
954 |
msgstr ""
|
955 |
|
956 |
#: adminpages/dashboard.php:215 adminpages/memberslist.php:165
|
957 |
-
#: pages/checkout.php:
|
958 |
#: adminpages/dashboard.php:215 adminpages/dashboard.php:223
|
959 |
#: adminpages/memberslist.php:112 adminpages/memberslist.php:145
|
960 |
#: adminpages/memberslist.php:155 adminpages/memberslist.php:165
|
@@ -1024,8 +1063,8 @@ msgid "No members found."
|
|
1024 |
msgstr ""
|
1025 |
|
1026 |
#: adminpages/dashboard.php:282 adminpages/discountcodes.php:447
|
1027 |
-
#: adminpages/discountcodes.php:747 adminpages/orders.php:
|
1028 |
-
#: adminpages/orders.php:
|
1029 |
#: adminpages/dashboard.php:290 adminpages/discountcodes.php:311
|
1030 |
#: adminpages/discountcodes.php:314 adminpages/discountcodes.php:315
|
1031 |
#: adminpages/discountcodes.php:316 adminpages/discountcodes.php:321
|
@@ -1048,7 +1087,7 @@ msgstr ""
|
|
1048 |
msgid "Code"
|
1049 |
msgstr ""
|
1050 |
|
1051 |
-
#: adminpages/dashboard.php:283 adminpages/orders.php:
|
1052 |
#: adminpages/reports/login.php:179
|
1053 |
#: classes/gateways/class.pmprogateway_payflowpro.php:116
|
1054 |
#: adminpages/dashboard.php:283 adminpages/dashboard.php:291
|
@@ -1065,7 +1104,7 @@ msgstr ""
|
|
1065 |
msgid "User"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
-
#: adminpages/dashboard.php:284 includes/privacy.php:241 pages/billing.php:
|
1069 |
#: pages/cancel.php:60 pages/invoice.php:103 pages/levels.php:35
|
1070 |
#: shortcodes/pmpro_account.php:44 shortcodes/pmpro_account.php:128
|
1071 |
#: adminpages/dashboard.php:284 adminpages/dashboard.php:292
|
@@ -1074,16 +1113,16 @@ msgstr ""
|
|
1074 |
#: pages/billing.php:27 pages/billing.php:28 pages/billing.php:30
|
1075 |
#: pages/billing.php:41 pages/billing.php:44 pages/billing.php:45
|
1076 |
#: pages/cancel.php:52 pages/cancel.php:60 pages/cancel.php:61
|
1077 |
-
#: pages/invoice.php:89 pages/invoice.php:102 pages/invoice.php:
|
1078 |
-
#: pages/
|
1079 |
-
#: shortcodes/pmpro_account.php:
|
1080 |
-
#: shortcodes/pmpro_account.php:
|
1081 |
-
#: shortcodes/pmpro_account.php:128
|
1082 |
msgid "Level"
|
1083 |
msgstr ""
|
1084 |
|
1085 |
-
#: adminpages/dashboard.php:285 adminpages/orders.php:
|
1086 |
-
#: adminpages/orders.php:
|
1087 |
#: adminpages/templates/orders-print.php:93 includes/privacy.php:285
|
1088 |
#: pages/confirmation.php:96 pages/invoice.php:79 adminpages/dashboard.php:285
|
1089 |
#: adminpages/dashboard.php:293 adminpages/orders.php:320
|
@@ -1098,13 +1137,13 @@ msgstr ""
|
|
1098 |
#: adminpages/orders.php:1236 adminpages/orders.php:1357
|
1099 |
#: adminpages/templates/orders-email.php:64
|
1100 |
#: adminpages/templates/orders-print.php:93 includes/privacy.php:285
|
1101 |
-
#: pages/confirmation.php:96 pages/invoice.php:78 pages/invoice.php:
|
1102 |
-
#: pages/invoice.php:84
|
1103 |
msgid "Total"
|
1104 |
msgstr ""
|
1105 |
|
1106 |
-
#: adminpages/dashboard.php:286 adminpages/orders.php:
|
1107 |
-
#: adminpages/orders.php:
|
1108 |
#: pages/invoice.php:29 shortcodes/pmpro_account.php:130
|
1109 |
#: adminpages/dashboard.php:286 adminpages/dashboard.php:294
|
1110 |
#: adminpages/orders.php:373 adminpages/orders.php:423
|
@@ -1117,12 +1156,12 @@ msgstr ""
|
|
1117 |
#: adminpages/orders.php:1112 adminpages/orders.php:1143
|
1118 |
#: adminpages/orders.php:1149 adminpages/orders.php:1240
|
1119 |
#: adminpages/orders.php:1361 includes/privacy.php:202 includes/privacy.php:309
|
1120 |
-
#: shortcodes/pmpro_account.php:130
|
1121 |
msgid "Status"
|
1122 |
msgstr ""
|
1123 |
|
1124 |
-
#: adminpages/dashboard.php:287 adminpages/orders.php:
|
1125 |
-
#: adminpages/orders.php:
|
1126 |
#: shortcodes/pmpro_account.php:127 adminpages/dashboard.php:287
|
1127 |
#: adminpages/dashboard.php:295 adminpages/orders.php:442
|
1128 |
#: adminpages/orders.php:492 adminpages/orders.php:493
|
@@ -1135,13 +1174,14 @@ msgstr ""
|
|
1135 |
#: adminpages/orders.php:1113 adminpages/orders.php:1144
|
1136 |
#: adminpages/orders.php:1150 adminpages/orders.php:1241
|
1137 |
#: adminpages/orders.php:1362 pages/account.php:91 pages/invoice.php:87
|
1138 |
-
#: pages/invoice.php:100 pages/invoice.php:
|
1139 |
-
#:
|
1140 |
-
#: shortcodes/pmpro_account.php:
|
|
|
1141 |
msgid "Date"
|
1142 |
msgstr ""
|
1143 |
|
1144 |
-
#: adminpages/dashboard.php:294 adminpages/orders.php:
|
1145 |
#: adminpages/dashboard.php:294 adminpages/dashboard.php:302
|
1146 |
#: adminpages/orders.php:674 adminpages/orders.php:977
|
1147 |
#: adminpages/orders.php:995 adminpages/orders.php:1005
|
@@ -1152,7 +1192,7 @@ msgstr ""
|
|
1152 |
msgid "No orders found."
|
1153 |
msgstr ""
|
1154 |
|
1155 |
-
#: adminpages/dashboard.php:311 adminpages/orders.php:
|
1156 |
#: adminpages/dashboard.php:311 adminpages/dashboard.php:319
|
1157 |
#: adminpages/orders.php:630 adminpages/orders.php:933
|
1158 |
#: adminpages/orders.php:943 adminpages/orders.php:972
|
@@ -1162,7 +1202,7 @@ msgstr ""
|
|
1162 |
msgid "deleted"
|
1163 |
msgstr ""
|
1164 |
|
1165 |
-
#: adminpages/dashboard.php:313 adminpages/orders.php:
|
1166 |
#: adminpages/dashboard.php:313 adminpages/dashboard.php:321
|
1167 |
#: adminpages/orders.php:1275 adminpages/orders.php:1397
|
1168 |
msgid "none"
|
@@ -1289,8 +1329,8 @@ msgid "Add New Discount Code"
|
|
1289 |
msgstr ""
|
1290 |
|
1291 |
#: adminpages/discountcodes.php:442 adminpages/discountcodes.php:746
|
1292 |
-
#: adminpages/membershiplevels.php:346 adminpages/membershiplevels.php:
|
1293 |
-
#: adminpages/memberslist.php:164 adminpages/orders.php:
|
1294 |
#: adminpages/reports/login.php:178 adminpages/templates/orders-email.php:46
|
1295 |
#: adminpages/templates/orders-print.php:75 adminpages/discountcodes.php:306
|
1296 |
#: adminpages/discountcodes.php:309 adminpages/discountcodes.php:310
|
@@ -1304,13 +1344,14 @@ msgstr ""
|
|
1304 |
#: adminpages/membershiplevels.php:284 adminpages/membershiplevels.php:286
|
1305 |
#: adminpages/membershiplevels.php:288 adminpages/membershiplevels.php:312
|
1306 |
#: adminpages/membershiplevels.php:322 adminpages/membershiplevels.php:344
|
1307 |
-
#: adminpages/membershiplevels.php:
|
1308 |
-
#: adminpages/membershiplevels.php:
|
1309 |
-
#: adminpages/membershiplevels.php:
|
1310 |
-
#: adminpages/membershiplevels.php:
|
1311 |
-
#: adminpages/membershiplevels.php:
|
1312 |
-
#: adminpages/membershiplevels.php:
|
1313 |
-
#: adminpages/membershiplevels.php:
|
|
|
1314 |
#: adminpages/memberslist.php:111 adminpages/memberslist.php:144
|
1315 |
#: adminpages/memberslist.php:154 adminpages/memberslist.php:164
|
1316 |
#: adminpages/orders.php:597 adminpages/orders.php:900
|
@@ -1325,7 +1366,7 @@ msgstr ""
|
|
1325 |
msgid "ID"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
-
#: adminpages/discountcodes.php:443 adminpages/orders.php:
|
1329 |
#: adminpages/discountcodes.php:307 adminpages/discountcodes.php:310
|
1330 |
#: adminpages/discountcodes.php:311 adminpages/discountcodes.php:312
|
1331 |
#: adminpages/discountcodes.php:317 adminpages/discountcodes.php:382
|
@@ -1348,9 +1389,9 @@ msgid "Start Date"
|
|
1348 |
msgstr ""
|
1349 |
|
1350 |
#: adminpages/discountcodes.php:503
|
1351 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
1352 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
1353 |
-
#: pages/checkout.php:
|
1354 |
#: adminpages/discountcodes.php:370 adminpages/discountcodes.php:371
|
1355 |
#: adminpages/discountcodes.php:372 adminpages/discountcodes.php:377
|
1356 |
#: adminpages/discountcodes.php:442 adminpages/discountcodes.php:483
|
@@ -1378,6 +1419,7 @@ msgstr ""
|
|
1378 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
1379 |
#: classes/gateways/class.pmprogateway_stripe.php:570
|
1380 |
#: classes/gateways/class.pmprogateway_stripe.php:597
|
|
|
1381 |
#: classes/gateways/class.pmprogateway_stripe.php:613
|
1382 |
#: classes/gateways/class.pmprogateway_stripe.php:621
|
1383 |
#: classes/gateways/class.pmprogateway_stripe.php:628
|
@@ -1430,9 +1472,10 @@ msgstr ""
|
|
1430 |
#: adminpages/membershiplevels.php:337 adminpages/membershiplevels.php:339
|
1431 |
#: adminpages/membershiplevels.php:341 adminpages/membershiplevels.php:342
|
1432 |
#: adminpages/membershiplevels.php:365 adminpages/membershiplevels.php:375
|
1433 |
-
#: adminpages/membershiplevels.php:398 adminpages/membershiplevels.php:
|
1434 |
-
#: adminpages/membershiplevels.php:
|
1435 |
-
#: adminpages/membershiplevels.php:
|
|
|
1436 |
msgid "Initial Payment"
|
1437 |
msgstr ""
|
1438 |
|
@@ -1445,7 +1488,7 @@ msgstr ""
|
|
1445 |
#: adminpages/membershiplevels.php:340 adminpages/membershiplevels.php:350
|
1446 |
#: adminpages/membershiplevels.php:352 adminpages/membershiplevels.php:353
|
1447 |
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:386
|
1448 |
-
#: adminpages/membershiplevels.php:409
|
1449 |
msgid "The initial amount collected at registration."
|
1450 |
msgstr ""
|
1451 |
|
@@ -1458,7 +1501,7 @@ msgstr ""
|
|
1458 |
#: adminpages/membershiplevels.php:344 adminpages/membershiplevels.php:354
|
1459 |
#: adminpages/membershiplevels.php:356 adminpages/membershiplevels.php:357
|
1460 |
#: adminpages/membershiplevels.php:380 adminpages/membershiplevels.php:390
|
1461 |
-
#: adminpages/membershiplevels.php:413
|
1462 |
msgid "Recurring Subscription"
|
1463 |
msgstr ""
|
1464 |
|
@@ -1471,7 +1514,7 @@ msgstr ""
|
|
1471 |
#: adminpages/membershiplevels.php:345 adminpages/membershiplevels.php:355
|
1472 |
#: adminpages/membershiplevels.php:357 adminpages/membershiplevels.php:358
|
1473 |
#: adminpages/membershiplevels.php:381 adminpages/membershiplevels.php:391
|
1474 |
-
#: adminpages/membershiplevels.php:414
|
1475 |
msgid "Check if this level has a recurring subscription payment."
|
1476 |
msgstr ""
|
1477 |
|
@@ -1484,12 +1527,13 @@ msgstr ""
|
|
1484 |
#: adminpages/membershiplevels.php:359 adminpages/membershiplevels.php:361
|
1485 |
#: adminpages/membershiplevels.php:362 adminpages/membershiplevels.php:385
|
1486 |
#: adminpages/membershiplevels.php:395 adminpages/membershiplevels.php:418
|
|
|
1487 |
msgid "Billing Amount"
|
1488 |
msgstr ""
|
1489 |
|
1490 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1491 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1492 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
1493 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1494 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1495 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
@@ -1502,10 +1546,11 @@ msgstr ""
|
|
1502 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1503 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1504 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1505 |
-
#: adminpages/membershiplevels.php:
|
1506 |
-
#: adminpages/membershiplevels.php:
|
1507 |
-
#: adminpages/membershiplevels.php:
|
1508 |
-
#: adminpages/membershiplevels.php:
|
|
|
1509 |
#: classes/gateways/class.pmprogateway_stripe.php:521
|
1510 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
1511 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
@@ -1517,6 +1562,7 @@ msgstr ""
|
|
1517 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
1518 |
#: classes/gateways/class.pmprogateway_stripe.php:599
|
1519 |
#: classes/gateways/class.pmprogateway_stripe.php:637
|
|
|
1520 |
#: classes/gateways/class.pmprogateway_stripe.php:664
|
1521 |
#: classes/gateways/class.pmprogateway_stripe.php:671
|
1522 |
#: classes/gateways/class.pmprogateway_stripe.php:679
|
@@ -1528,7 +1574,7 @@ msgstr ""
|
|
1528 |
|
1529 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1530 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1531 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
1532 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1533 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1534 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
@@ -1541,10 +1587,11 @@ msgstr ""
|
|
1541 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1542 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1543 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1544 |
-
#: adminpages/membershiplevels.php:
|
1545 |
-
#: adminpages/membershiplevels.php:
|
1546 |
-
#: adminpages/membershiplevels.php:
|
1547 |
-
#: adminpages/membershiplevels.php:
|
|
|
1548 |
#: classes/gateways/class.pmprogateway_stripe.php:521
|
1549 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
1550 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
@@ -1556,6 +1603,7 @@ msgstr ""
|
|
1556 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
1557 |
#: classes/gateways/class.pmprogateway_stripe.php:599
|
1558 |
#: classes/gateways/class.pmprogateway_stripe.php:637
|
|
|
1559 |
#: classes/gateways/class.pmprogateway_stripe.php:664
|
1560 |
#: classes/gateways/class.pmprogateway_stripe.php:671
|
1561 |
#: classes/gateways/class.pmprogateway_stripe.php:679
|
@@ -1567,7 +1615,7 @@ msgstr ""
|
|
1567 |
|
1568 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1569 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1570 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
1571 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1572 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1573 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
@@ -1580,10 +1628,11 @@ msgstr ""
|
|
1580 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1581 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1582 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1583 |
-
#: adminpages/membershiplevels.php:
|
1584 |
-
#: adminpages/membershiplevels.php:
|
1585 |
-
#: adminpages/membershiplevels.php:
|
1586 |
-
#: adminpages/membershiplevels.php:
|
|
|
1587 |
#: classes/gateways/class.pmprogateway_stripe.php:521
|
1588 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
1589 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
@@ -1595,6 +1644,7 @@ msgstr ""
|
|
1595 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
1596 |
#: classes/gateways/class.pmprogateway_stripe.php:599
|
1597 |
#: classes/gateways/class.pmprogateway_stripe.php:637
|
|
|
1598 |
#: classes/gateways/class.pmprogateway_stripe.php:664
|
1599 |
#: classes/gateways/class.pmprogateway_stripe.php:671
|
1600 |
#: classes/gateways/class.pmprogateway_stripe.php:679
|
@@ -1606,7 +1656,7 @@ msgstr ""
|
|
1606 |
|
1607 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1608 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1609 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
1610 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1611 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1612 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
@@ -1619,10 +1669,11 @@ msgstr ""
|
|
1619 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1620 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1621 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1622 |
-
#: adminpages/membershiplevels.php:
|
1623 |
-
#: adminpages/membershiplevels.php:
|
1624 |
-
#: adminpages/membershiplevels.php:
|
1625 |
-
#: adminpages/membershiplevels.php:
|
|
|
1626 |
#: classes/gateways/class.pmprogateway_stripe.php:521
|
1627 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
1628 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
@@ -1634,6 +1685,7 @@ msgstr ""
|
|
1634 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
1635 |
#: classes/gateways/class.pmprogateway_stripe.php:599
|
1636 |
#: classes/gateways/class.pmprogateway_stripe.php:637
|
|
|
1637 |
#: classes/gateways/class.pmprogateway_stripe.php:664
|
1638 |
#: classes/gateways/class.pmprogateway_stripe.php:671
|
1639 |
#: classes/gateways/class.pmprogateway_stripe.php:679
|
@@ -1652,7 +1704,7 @@ msgstr ""
|
|
1652 |
#: adminpages/membershiplevels.php:364 adminpages/membershiplevels.php:383
|
1653 |
#: adminpages/membershiplevels.php:385 adminpages/membershiplevels.php:386
|
1654 |
#: adminpages/membershiplevels.php:409 adminpages/membershiplevels.php:419
|
1655 |
-
#: adminpages/membershiplevels.php:442
|
1656 |
msgid "The amount to be billed one cycle after the initial payment."
|
1657 |
msgstr ""
|
1658 |
|
@@ -1666,6 +1718,7 @@ msgstr ""
|
|
1666 |
#: adminpages/membershiplevels.php:403 adminpages/membershiplevels.php:404
|
1667 |
#: adminpages/membershiplevels.php:425 adminpages/membershiplevels.php:435
|
1668 |
#: adminpages/membershiplevels.php:438 adminpages/membershiplevels.php:459
|
|
|
1669 |
msgid "Billing Cycle Limit"
|
1670 |
msgstr ""
|
1671 |
|
@@ -1679,6 +1732,7 @@ msgstr ""
|
|
1679 |
#: adminpages/membershiplevels.php:407 adminpages/membershiplevels.php:408
|
1680 |
#: adminpages/membershiplevels.php:429 adminpages/membershiplevels.php:439
|
1681 |
#: adminpages/membershiplevels.php:442 adminpages/membershiplevels.php:463
|
|
|
1682 |
msgid ""
|
1683 |
"The <strong>total</strong> number of recurring billing cycles for this "
|
1684 |
"level, including the trial period (if applicable) but not including the "
|
@@ -1694,7 +1748,7 @@ msgstr ""
|
|
1694 |
#: adminpages/membershiplevels.php:395 adminpages/membershiplevels.php:414
|
1695 |
#: adminpages/membershiplevels.php:416 adminpages/membershiplevels.php:417
|
1696 |
#: adminpages/membershiplevels.php:438 adminpages/membershiplevels.php:448
|
1697 |
-
#: adminpages/membershiplevels.php:472
|
1698 |
msgid "Custom Trial"
|
1699 |
msgstr ""
|
1700 |
|
@@ -1708,6 +1762,7 @@ msgstr ""
|
|
1708 |
#: adminpages/membershiplevels.php:416 adminpages/membershiplevels.php:418
|
1709 |
#: adminpages/membershiplevels.php:419 adminpages/membershiplevels.php:440
|
1710 |
#: adminpages/membershiplevels.php:450 adminpages/membershiplevels.php:474
|
|
|
1711 |
msgid "Check to add a custom trial period."
|
1712 |
msgstr ""
|
1713 |
|
@@ -1721,6 +1776,7 @@ msgstr ""
|
|
1721 |
#: adminpages/membershiplevels.php:425 adminpages/membershiplevels.php:427
|
1722 |
#: adminpages/membershiplevels.php:428 adminpages/membershiplevels.php:449
|
1723 |
#: adminpages/membershiplevels.php:459 adminpages/membershiplevels.php:483
|
|
|
1724 |
msgid "Trial Billing Amount"
|
1725 |
msgstr ""
|
1726 |
|
@@ -1734,6 +1790,7 @@ msgstr ""
|
|
1734 |
#: adminpages/membershiplevels.php:436 adminpages/membershiplevels.php:438
|
1735 |
#: adminpages/membershiplevels.php:439 adminpages/membershiplevels.php:460
|
1736 |
#: adminpages/membershiplevels.php:470 adminpages/membershiplevels.php:494
|
|
|
1737 |
msgid "for the first"
|
1738 |
msgstr ""
|
1739 |
|
@@ -1747,6 +1804,7 @@ msgstr ""
|
|
1747 |
#: adminpages/membershiplevels.php:438 adminpages/membershiplevels.php:440
|
1748 |
#: adminpages/membershiplevels.php:441 adminpages/membershiplevels.php:462
|
1749 |
#: adminpages/membershiplevels.php:472 adminpages/membershiplevels.php:496
|
|
|
1750 |
msgid "subscription payments"
|
1751 |
msgstr ""
|
1752 |
|
@@ -1760,7 +1818,7 @@ msgstr ""
|
|
1760 |
#: adminpages/membershiplevels.php:466 adminpages/membershiplevels.php:467
|
1761 |
#: adminpages/membershiplevels.php:469 adminpages/membershiplevels.php:470
|
1762 |
#: adminpages/membershiplevels.php:491 adminpages/membershiplevels.php:501
|
1763 |
-
#: adminpages/membershiplevels.php:525
|
1764 |
msgid "Membership Expiration"
|
1765 |
msgstr ""
|
1766 |
|
@@ -1774,6 +1832,7 @@ msgstr ""
|
|
1774 |
#: adminpages/membershiplevels.php:468 adminpages/membershiplevels.php:470
|
1775 |
#: adminpages/membershiplevels.php:471 adminpages/membershiplevels.php:492
|
1776 |
#: adminpages/membershiplevels.php:502 adminpages/membershiplevels.php:526
|
|
|
1777 |
msgid "Check this to set when membership access expires."
|
1778 |
msgstr ""
|
1779 |
|
@@ -1787,7 +1846,7 @@ msgstr ""
|
|
1787 |
#: adminpages/membershiplevels.php:471 adminpages/membershiplevels.php:472
|
1788 |
#: adminpages/membershiplevels.php:474 adminpages/membershiplevels.php:475
|
1789 |
#: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:506
|
1790 |
-
#: adminpages/membershiplevels.php:530
|
1791 |
msgid "Expires In"
|
1792 |
msgstr ""
|
1793 |
|
@@ -1801,6 +1860,7 @@ msgstr ""
|
|
1801 |
#: adminpages/membershiplevels.php:485 adminpages/membershiplevels.php:487
|
1802 |
#: adminpages/membershiplevels.php:488 adminpages/membershiplevels.php:509
|
1803 |
#: adminpages/membershiplevels.php:519 adminpages/membershiplevels.php:543
|
|
|
1804 |
msgid ""
|
1805 |
"Set the duration of membership access. Note that the any future payments "
|
1806 |
"(recurring subscription, if any) will be cancelled when the membership "
|
@@ -1853,49 +1913,17 @@ msgstr ""
|
|
1853 |
msgid "Starts"
|
1854 |
msgstr ""
|
1855 |
|
1856 |
-
#: adminpages/discountcodes.php:
|
1857 |
-
#: adminpages/orders.php:
|
1858 |
-
|
1859 |
-
#: adminpages/discountcodes.php:647 adminpages/discountcodes.php:648
|
1860 |
-
#: adminpages/discountcodes.php:649 adminpages/discountcodes.php:650
|
1861 |
-
#: adminpages/discountcodes.php:655 adminpages/discountcodes.php:735
|
1862 |
-
#: adminpages/discountcodes.php:789 adminpages/discountcodes.php:803
|
1863 |
-
#: adminpages/membershiplevels.php:564 adminpages/membershiplevels.php:570
|
1864 |
-
#: adminpages/membershiplevels.php:572 adminpages/membershiplevels.php:580
|
1865 |
-
#: adminpages/membershiplevels.php:599 adminpages/membershiplevels.php:660
|
1866 |
-
#: adminpages/membershiplevels.php:662 adminpages/membershiplevels.php:664
|
1867 |
-
#: adminpages/membershiplevels.php:669 adminpages/membershiplevels.php:670
|
1868 |
-
#: adminpages/membershiplevels.php:674 adminpages/membershiplevels.php:686
|
1869 |
-
#: adminpages/membershiplevels.php:696 adminpages/membershiplevels.php:746
|
1870 |
-
#: adminpages/orders.php:658 adminpages/orders.php:961
|
1871 |
-
#: adminpages/orders.php:979 adminpages/orders.php:989
|
1872 |
-
#: adminpages/orders.php:992 adminpages/orders.php:1021
|
1873 |
-
#: adminpages/orders.php:1050 adminpages/orders.php:1205
|
1874 |
-
#: adminpages/orders.php:1239 adminpages/orders.php:1245
|
1875 |
-
#: adminpages/orders.php:1360 adminpages/orders.php:1483
|
1876 |
-
#: adminpages/orders.php:1489
|
1877 |
-
msgid "edit"
|
1878 |
msgstr ""
|
1879 |
|
1880 |
-
#: adminpages/discountcodes.php:
|
1881 |
-
#: adminpages/orders.php:
|
1882 |
-
|
1883 |
-
#: adminpages/membershiplevels.php:573 adminpages/membershiplevels.php:580
|
1884 |
-
#: adminpages/membershiplevels.php:600 adminpages/membershiplevels.php:660
|
1885 |
-
#: adminpages/membershiplevels.php:662 adminpages/membershiplevels.php:664
|
1886 |
-
#: adminpages/membershiplevels.php:669 adminpages/membershiplevels.php:670
|
1887 |
-
#: adminpages/membershiplevels.php:674 adminpages/membershiplevels.php:686
|
1888 |
-
#: adminpages/membershiplevels.php:696 adminpages/membershiplevels.php:746
|
1889 |
-
#: adminpages/orders.php:661 adminpages/orders.php:964
|
1890 |
-
#: adminpages/orders.php:982 adminpages/orders.php:992
|
1891 |
-
#: adminpages/orders.php:995 adminpages/orders.php:1024
|
1892 |
-
#: adminpages/orders.php:1053 adminpages/orders.php:1208
|
1893 |
-
#: adminpages/orders.php:1242 adminpages/orders.php:1248
|
1894 |
-
#: adminpages/orders.php:1363 adminpages/orders.php:1492
|
1895 |
-
msgid "copy"
|
1896 |
msgstr ""
|
1897 |
|
1898 |
-
#: adminpages/discountcodes.php:
|
1899 |
#: adminpages/discountcodes.php:622 adminpages/discountcodes.php:650
|
1900 |
#: adminpages/discountcodes.php:651 adminpages/discountcodes.php:652
|
1901 |
#: adminpages/discountcodes.php:653 adminpages/discountcodes.php:658
|
@@ -1908,44 +1936,13 @@ msgid ""
|
|
1908 |
"code anymore."
|
1909 |
msgstr ""
|
1910 |
|
1911 |
-
#: adminpages/discountcodes.php:
|
1912 |
-
|
1913 |
-
#: adminpages/discountcodes.php:622 adminpages/discountcodes.php:650
|
1914 |
-
#: adminpages/discountcodes.php:651 adminpages/discountcodes.php:652
|
1915 |
-
#: adminpages/discountcodes.php:653 adminpages/discountcodes.php:658
|
1916 |
-
#: adminpages/discountcodes.php:738 adminpages/discountcodes.php:792
|
1917 |
-
#: adminpages/discountcodes.php:805 adminpages/membershiplevels.php:566
|
1918 |
-
#: adminpages/membershiplevels.php:572 adminpages/membershiplevels.php:574
|
1919 |
-
#: adminpages/membershiplevels.php:580 adminpages/membershiplevels.php:601
|
1920 |
-
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:662
|
1921 |
-
#: adminpages/membershiplevels.php:664 adminpages/membershiplevels.php:669
|
1922 |
-
#: adminpages/membershiplevels.php:670 adminpages/membershiplevels.php:674
|
1923 |
-
#: adminpages/membershiplevels.php:686 adminpages/membershiplevels.php:696
|
1924 |
-
#: adminpages/membershiplevels.php:746 adminpages/orders.php:664
|
1925 |
-
#: adminpages/orders.php:967 adminpages/orders.php:985
|
1926 |
-
#: adminpages/orders.php:995 adminpages/orders.php:998
|
1927 |
-
#: adminpages/orders.php:1027 adminpages/orders.php:1056
|
1928 |
-
#: adminpages/orders.php:1211 adminpages/orders.php:1245
|
1929 |
-
#: adminpages/orders.php:1251 adminpages/orders.php:1366
|
1930 |
-
#: adminpages/orders.php:1495
|
1931 |
-
msgid "delete"
|
1932 |
-
msgstr ""
|
1933 |
-
|
1934 |
-
#: adminpages/discountcodes.php:807 adminpages/discountcodes.php:809
|
1935 |
-
#: adminpages/discountcodes.php:807 adminpages/discountcodes.php:809
|
1936 |
-
msgid "orders"
|
1937 |
-
msgstr ""
|
1938 |
-
|
1939 |
-
#: adminpages/discountcodes.php:807 adminpages/discountcodes.php:807
|
1940 |
-
msgid "view orders"
|
1941 |
-
msgstr ""
|
1942 |
-
|
1943 |
-
#: adminpages/discountcodes.php:809 adminpages/discountcodes.php:809
|
1944 |
-
msgid "no orders"
|
1945 |
msgstr ""
|
1946 |
|
1947 |
#: adminpages/emailsettings.php:84 adminpages/emailsettings.php:61
|
1948 |
#: adminpages/emailsettings.php:70 adminpages/emailsettings.php:80
|
|
|
1949 |
msgid ""
|
1950 |
"By default, system generated emails are sent from "
|
1951 |
"<em><strong>wordpress@yourdomain.com</strong></em>. You can update this from "
|
@@ -1953,6 +1950,7 @@ msgid ""
|
|
1953 |
msgstr ""
|
1954 |
|
1955 |
#: adminpages/emailsettings.php:86 adminpages/emailsettings.php:82
|
|
|
1956 |
msgid ""
|
1957 |
"To modify the appearance of system generated emails, add the files "
|
1958 |
"<em>email_header.html</em> and <em>email_footer.html</em> to your theme's "
|
@@ -1966,21 +1964,23 @@ msgstr ""
|
|
1966 |
|
1967 |
#: adminpages/emailsettings.php:92 adminpages/emailsettings.php:69
|
1968 |
#: adminpages/emailsettings.php:78 adminpages/emailsettings.php:88
|
|
|
1969 |
msgid "From Email"
|
1970 |
msgstr ""
|
1971 |
|
1972 |
#: adminpages/emailsettings.php:100 adminpages/emailsettings.php:77
|
1973 |
#: adminpages/emailsettings.php:86 adminpages/emailsettings.php:96
|
|
|
1974 |
msgid "From Name"
|
1975 |
msgstr ""
|
1976 |
|
1977 |
#: adminpages/emailsettings.php:108 adminpages/emailsettings.php:94
|
1978 |
-
#: adminpages/emailsettings.php:104
|
1979 |
msgid "Only Filter PMPro Emails?"
|
1980 |
msgstr ""
|
1981 |
|
1982 |
#: adminpages/emailsettings.php:112 adminpages/emailsettings.php:98
|
1983 |
-
#: adminpages/emailsettings.php:108
|
1984 |
#, php-format
|
1985 |
msgid ""
|
1986 |
"If unchecked, all emails from \"WordPress <%s>\" will be filtered to "
|
@@ -1989,78 +1989,109 @@ msgstr ""
|
|
1989 |
|
1990 |
#: adminpages/emailsettings.php:129 adminpages/emailsettings.php:86
|
1991 |
#: adminpages/emailsettings.php:104 adminpages/emailsettings.php:115
|
1992 |
-
#: adminpages/emailsettings.php:125
|
1993 |
msgid "Send the site admin emails"
|
1994 |
msgstr ""
|
1995 |
|
1996 |
#: adminpages/emailsettings.php:135 adminpages/emailsettings.php:92
|
1997 |
#: adminpages/emailsettings.php:110 adminpages/emailsettings.php:121
|
1998 |
-
#: adminpages/emailsettings.php:131
|
1999 |
msgid "Checkout"
|
2000 |
msgstr ""
|
2001 |
|
2002 |
#: adminpages/emailsettings.php:139 adminpages/emailsettings.php:96
|
2003 |
#: adminpages/emailsettings.php:114 adminpages/emailsettings.php:125
|
2004 |
-
#: adminpages/emailsettings.php:135
|
2005 |
msgid "when a member checks out."
|
2006 |
msgstr ""
|
2007 |
|
2008 |
#: adminpages/emailsettings.php:144 adminpages/emailsettings.php:101
|
2009 |
#: adminpages/emailsettings.php:119 adminpages/emailsettings.php:130
|
2010 |
-
#: adminpages/emailsettings.php:140
|
2011 |
msgid "Admin Changes"
|
2012 |
msgstr ""
|
2013 |
|
2014 |
#: adminpages/emailsettings.php:148 adminpages/emailsettings.php:105
|
2015 |
#: adminpages/emailsettings.php:123 adminpages/emailsettings.php:134
|
2016 |
-
#: adminpages/emailsettings.php:144
|
2017 |
msgid "when an admin changes a user's membership level through the dashboard."
|
2018 |
msgstr ""
|
2019 |
|
2020 |
#: adminpages/emailsettings.php:153 adminpages/emailsettings.php:110
|
2021 |
#: adminpages/emailsettings.php:128 adminpages/emailsettings.php:139
|
2022 |
-
#: adminpages/emailsettings.php:149
|
2023 |
msgid "Cancellation"
|
2024 |
msgstr ""
|
2025 |
|
2026 |
#: adminpages/emailsettings.php:157 adminpages/emailsettings.php:114
|
2027 |
#: adminpages/emailsettings.php:132 adminpages/emailsettings.php:143
|
2028 |
-
#: adminpages/emailsettings.php:153
|
2029 |
msgid "when a user cancels his or her account."
|
2030 |
msgstr ""
|
2031 |
|
2032 |
#: adminpages/emailsettings.php:162 adminpages/emailsettings.php:119
|
2033 |
#: adminpages/emailsettings.php:137 adminpages/emailsettings.php:148
|
2034 |
-
#: adminpages/emailsettings.php:158
|
2035 |
msgid "Bill Updates"
|
2036 |
msgstr ""
|
2037 |
|
2038 |
#: adminpages/emailsettings.php:166 adminpages/emailsettings.php:123
|
2039 |
#: adminpages/emailsettings.php:141 adminpages/emailsettings.php:152
|
2040 |
-
#: adminpages/emailsettings.php:162
|
2041 |
msgid "when a user updates his or her billing information."
|
2042 |
msgstr ""
|
2043 |
|
2044 |
#: adminpages/emailsettings.php:172 adminpages/emailsettings.php:129
|
2045 |
#: adminpages/emailsettings.php:147 adminpages/emailsettings.php:158
|
2046 |
-
#: adminpages/emailsettings.php:168
|
2047 |
msgid "Send members emails"
|
2048 |
msgstr ""
|
2049 |
|
2050 |
#: adminpages/emailsettings.php:178 adminpages/emailsettings.php:135
|
2051 |
#: adminpages/emailsettings.php:153 adminpages/emailsettings.php:164
|
2052 |
-
#: adminpages/emailsettings.php:174
|
2053 |
msgid "New Users"
|
2054 |
msgstr ""
|
2055 |
|
2056 |
#: adminpages/emailsettings.php:182 adminpages/emailsettings.php:139
|
2057 |
#: adminpages/emailsettings.php:157 adminpages/emailsettings.php:168
|
2058 |
-
#: adminpages/emailsettings.php:178
|
2059 |
msgid ""
|
2060 |
"Default WP notification email. (Recommended: Leave unchecked. Members will "
|
2061 |
"still get an email confirmation from PMPro after checkout.)"
|
2062 |
msgstr ""
|
2063 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2064 |
#: adminpages/membershiplevels.php:150 adminpages/membershiplevels.php:137
|
2065 |
#: adminpages/membershiplevels.php:141 adminpages/membershiplevels.php:143
|
2066 |
#: adminpages/membershiplevels.php:146 adminpages/membershiplevels.php:150
|
@@ -2134,18 +2165,19 @@ msgstr ""
|
|
2134 |
msgid "Add New Membership Level"
|
2135 |
msgstr ""
|
2136 |
|
2137 |
-
#: adminpages/membershiplevels.php:353 adminpages/membershiplevels.php:
|
2138 |
#: adminpages/reports/login.php:180 adminpages/membershiplevels.php:291
|
2139 |
#: adminpages/membershiplevels.php:293 adminpages/membershiplevels.php:295
|
2140 |
#: adminpages/membershiplevels.php:319 adminpages/membershiplevels.php:329
|
2141 |
-
#: adminpages/membershiplevels.php:351 adminpages/membershiplevels.php:
|
2142 |
-
#: adminpages/membershiplevels.php:
|
2143 |
-
#: adminpages/membershiplevels.php:
|
2144 |
-
#: adminpages/membershiplevels.php:
|
2145 |
-
#: adminpages/membershiplevels.php:
|
2146 |
-
#: adminpages/membershiplevels.php:
|
2147 |
-
#: adminpages/membershiplevels.php:
|
2148 |
-
#: adminpages/membershiplevels.php:
|
|
|
2149 |
#: adminpages/reports/login.php:144 adminpages/reports/login.php:160
|
2150 |
#: adminpages/reports/login.php:164 adminpages/reports/login.php:180
|
2151 |
msgid "Name"
|
@@ -2154,33 +2186,36 @@ msgstr ""
|
|
2154 |
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:314
|
2155 |
#: adminpages/membershiplevels.php:316 adminpages/membershiplevels.php:318
|
2156 |
#: adminpages/membershiplevels.php:342 adminpages/membershiplevels.php:352
|
2157 |
-
#: adminpages/membershiplevels.php:374
|
2158 |
msgid "Confirmation Message"
|
2159 |
msgstr ""
|
2160 |
|
2161 |
#: adminpages/membershiplevels.php:390 adminpages/membershiplevels.php:388
|
|
|
2162 |
msgid "Check to include this message in the membership confirmation email."
|
2163 |
msgstr ""
|
2164 |
|
2165 |
-
#: adminpages/membershiplevels.php:396 adminpages/membershiplevels.php:
|
2166 |
#: adminpages/membershiplevels.php:333 adminpages/membershiplevels.php:335
|
2167 |
#: adminpages/membershiplevels.php:337 adminpages/membershiplevels.php:338
|
2168 |
#: adminpages/membershiplevels.php:361 adminpages/membershiplevels.php:371
|
2169 |
-
#: adminpages/membershiplevels.php:394 adminpages/membershiplevels.php:
|
2170 |
-
#: adminpages/membershiplevels.php:
|
2171 |
-
#: adminpages/membershiplevels.php:
|
2172 |
-
#: adminpages/membershiplevels.php:
|
2173 |
-
#: adminpages/membershiplevels.php:
|
2174 |
-
#: adminpages/membershiplevels.php:715
|
|
|
2175 |
msgid "Billing Details"
|
2176 |
msgstr ""
|
2177 |
|
2178 |
#: adminpages/membershiplevels.php:431
|
2179 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
2180 |
#: adminpages/membershiplevels.php:349 adminpages/membershiplevels.php:351
|
2181 |
#: adminpages/membershiplevels.php:370 adminpages/membershiplevels.php:372
|
2182 |
#: adminpages/membershiplevels.php:373 adminpages/membershiplevels.php:396
|
2183 |
#: adminpages/membershiplevels.php:406 adminpages/membershiplevels.php:429
|
|
|
2184 |
#: classes/gateways/class.pmprogateway_stripe.php:619
|
2185 |
#: classes/gateways/class.pmprogateway_stripe.php:620
|
2186 |
#: classes/gateways/class.pmprogateway_stripe.php:630
|
@@ -2192,6 +2227,7 @@ msgstr ""
|
|
2192 |
#: classes/gateways/class.pmprogateway_stripe.php:686
|
2193 |
#: classes/gateways/class.pmprogateway_stripe.php:697
|
2194 |
#: classes/gateways/class.pmprogateway_stripe.php:735
|
|
|
2195 |
#: classes/gateways/class.pmprogateway_stripe.php:762
|
2196 |
#: classes/gateways/class.pmprogateway_stripe.php:769
|
2197 |
#: classes/gateways/class.pmprogateway_stripe.php:777
|
@@ -2205,7 +2241,7 @@ msgstr ""
|
|
2205 |
#: adminpages/membershiplevels.php:368 adminpages/membershiplevels.php:387
|
2206 |
#: adminpages/membershiplevels.php:389 adminpages/membershiplevels.php:390
|
2207 |
#: adminpages/membershiplevels.php:413 adminpages/membershiplevels.php:423
|
2208 |
-
#: adminpages/membershiplevels.php:444
|
2209 |
msgid ""
|
2210 |
"Braintree integration currently only supports billing periods of \"Month\" "
|
2211 |
"or \"Year\"."
|
@@ -2215,7 +2251,7 @@ msgstr ""
|
|
2215 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:393
|
2216 |
#: adminpages/membershiplevels.php:395 adminpages/membershiplevels.php:396
|
2217 |
#: adminpages/membershiplevels.php:417 adminpages/membershiplevels.php:427
|
2218 |
-
#: adminpages/membershiplevels.php:448
|
2219 |
msgid ""
|
2220 |
"After saving this level, make note of the ID and create a \"Plan\" in your "
|
2221 |
"Braintree dashboard with the same settings and the \"Plan ID\" set to "
|
@@ -2223,8 +2259,8 @@ msgid ""
|
|
2223 |
msgstr ""
|
2224 |
|
2225 |
#: adminpages/membershiplevels.php:450 adminpages/membershiplevels.php:455
|
2226 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:
|
2227 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
2228 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:145
|
2229 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:137
|
2230 |
#: adminpages/membershiplevels.php:372 adminpages/membershiplevels.php:374
|
@@ -2234,7 +2270,8 @@ msgstr ""
|
|
2234 |
#: adminpages/membershiplevels.php:417 adminpages/membershiplevels.php:419
|
2235 |
#: adminpages/membershiplevels.php:427 adminpages/membershiplevels.php:429
|
2236 |
#: adminpages/membershiplevels.php:432 adminpages/membershiplevels.php:448
|
2237 |
-
#: adminpages/membershiplevels.php:
|
|
|
2238 |
#: adminpages/paymentsettings.php:174 adminpages/paymentsettings.php:179
|
2239 |
#: classes/gateways/class.pmprogateway_cybersource.php:101
|
2240 |
#: classes/gateways/class.pmprogateway_paypal.php:118
|
@@ -2248,7 +2285,7 @@ msgid "Note"
|
|
2248 |
msgstr ""
|
2249 |
|
2250 |
#: adminpages/membershiplevels.php:455 adminpages/membershiplevels.php:432
|
2251 |
-
#: adminpages/membershiplevels.php:453
|
2252 |
#, php-format
|
2253 |
msgid ""
|
2254 |
"You will need to create a \"Plan\" in your Braintree dashboard with the same "
|
@@ -2259,7 +2296,7 @@ msgstr ""
|
|
2259 |
#: adminpages/membershiplevels.php:388 adminpages/membershiplevels.php:407
|
2260 |
#: adminpages/membershiplevels.php:409 adminpages/membershiplevels.php:410
|
2261 |
#: adminpages/membershiplevels.php:431 adminpages/membershiplevels.php:441
|
2262 |
-
#: adminpages/membershiplevels.php:465
|
2263 |
msgid ""
|
2264 |
"Stripe integration currently does not support billing limits. You can still "
|
2265 |
"set an expiration date below."
|
@@ -2269,7 +2306,7 @@ msgstr ""
|
|
2269 |
#: adminpages/membershiplevels.php:400 adminpages/membershiplevels.php:419
|
2270 |
#: adminpages/membershiplevels.php:421 adminpages/membershiplevels.php:422
|
2271 |
#: adminpages/membershiplevels.php:443 adminpages/membershiplevels.php:453
|
2272 |
-
#: adminpages/membershiplevels.php:477
|
2273 |
msgid ""
|
2274 |
"2Checkout integration does not support custom trials. You can do one period "
|
2275 |
"trials by setting an initial payment different from the billing amount."
|
@@ -2280,6 +2317,7 @@ msgstr ""
|
|
2280 |
#: adminpages/membershiplevels.php:441 adminpages/membershiplevels.php:443
|
2281 |
#: adminpages/membershiplevels.php:444 adminpages/membershiplevels.php:465
|
2282 |
#: adminpages/membershiplevels.php:475 adminpages/membershiplevels.php:499
|
|
|
2283 |
msgid ""
|
2284 |
"Stripe integration currently does not support trial amounts greater than $0."
|
2285 |
msgstr ""
|
@@ -2289,6 +2327,7 @@ msgstr ""
|
|
2289 |
#: adminpages/membershiplevels.php:445 adminpages/membershiplevels.php:447
|
2290 |
#: adminpages/membershiplevels.php:448 adminpages/membershiplevels.php:469
|
2291 |
#: adminpages/membershiplevels.php:479 adminpages/membershiplevels.php:503
|
|
|
2292 |
msgid ""
|
2293 |
"Braintree integration currently does not support trial amounts greater than "
|
2294 |
"$0."
|
@@ -2299,6 +2338,7 @@ msgstr ""
|
|
2299 |
#: adminpages/membershiplevels.php:449 adminpages/membershiplevels.php:451
|
2300 |
#: adminpages/membershiplevels.php:452 adminpages/membershiplevels.php:473
|
2301 |
#: adminpages/membershiplevels.php:483 adminpages/membershiplevels.php:507
|
|
|
2302 |
msgid ""
|
2303 |
"Payflow integration currently does not support trial amounts greater than $0."
|
2304 |
msgstr ""
|
@@ -2308,7 +2348,7 @@ msgstr ""
|
|
2308 |
#: adminpages/membershiplevels.php:457 adminpages/membershiplevels.php:458
|
2309 |
#: adminpages/membershiplevels.php:460 adminpages/membershiplevels.php:461
|
2310 |
#: adminpages/membershiplevels.php:482 adminpages/membershiplevels.php:492
|
2311 |
-
#: adminpages/membershiplevels.php:516
|
2312 |
msgid "Other Settings"
|
2313 |
msgstr ""
|
2314 |
|
@@ -2317,7 +2357,7 @@ msgstr ""
|
|
2317 |
#: adminpages/membershiplevels.php:461 adminpages/membershiplevels.php:462
|
2318 |
#: adminpages/membershiplevels.php:464 adminpages/membershiplevels.php:465
|
2319 |
#: adminpages/membershiplevels.php:486 adminpages/membershiplevels.php:496
|
2320 |
-
#: adminpages/membershiplevels.php:520
|
2321 |
msgid "Disable New Signups"
|
2322 |
msgstr ""
|
2323 |
|
@@ -2326,13 +2366,14 @@ msgstr ""
|
|
2326 |
#: adminpages/membershiplevels.php:462 adminpages/membershiplevels.php:463
|
2327 |
#: adminpages/membershiplevels.php:465 adminpages/membershiplevels.php:466
|
2328 |
#: adminpages/membershiplevels.php:487 adminpages/membershiplevels.php:497
|
2329 |
-
#: adminpages/membershiplevels.php:521
|
2330 |
msgid ""
|
2331 |
"Check to hide this level from the membership levels page and disable "
|
2332 |
"registration."
|
2333 |
msgstr ""
|
2334 |
|
2335 |
#: adminpages/membershiplevels.php:548 adminpages/membershiplevels.php:546
|
|
|
2336 |
#, php-format
|
2337 |
msgid ""
|
2338 |
"WARNING: This level is set with both a recurring billing amount and an "
|
@@ -2346,48 +2387,72 @@ msgstr ""
|
|
2346 |
#: adminpages/membershiplevels.php:492 adminpages/membershiplevels.php:493
|
2347 |
#: adminpages/membershiplevels.php:495 adminpages/membershiplevels.php:496
|
2348 |
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:527
|
2349 |
-
#: adminpages/membershiplevels.php:570
|
2350 |
msgid "Content Settings"
|
2351 |
msgstr ""
|
2352 |
|
2353 |
-
#: adminpages/membershiplevels.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2354 |
#: adminpages/membershiplevels.php:467 adminpages/membershiplevels.php:469
|
2355 |
#: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:497
|
2356 |
#: adminpages/membershiplevels.php:499 adminpages/membershiplevels.php:500
|
2357 |
#: adminpages/membershiplevels.php:521 adminpages/membershiplevels.php:531
|
2358 |
-
#: adminpages/membershiplevels.php:574
|
2359 |
msgid "Categories"
|
2360 |
msgstr ""
|
2361 |
|
2362 |
-
#: adminpages/membershiplevels.php:
|
2363 |
#: adminpages/membershiplevels.php:507 adminpages/membershiplevels.php:516
|
2364 |
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:529
|
2365 |
#: adminpages/membershiplevels.php:539 adminpages/membershiplevels.php:582
|
|
|
2366 |
msgid "Save Level"
|
2367 |
msgstr ""
|
2368 |
|
2369 |
-
#: adminpages/membershiplevels.php:
|
2370 |
-
#: pages/billing.php:
|
2371 |
#: adminpages/membershiplevels.php:506 adminpages/membershiplevels.php:508
|
2372 |
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:518
|
2373 |
#: adminpages/membershiplevels.php:530 adminpages/membershiplevels.php:540
|
2374 |
-
#: adminpages/membershiplevels.php:583 adminpages/
|
2375 |
-
#: adminpages/orders.php:
|
2376 |
-
#: adminpages/orders.php:
|
2377 |
-
#: adminpages/orders.php:
|
2378 |
-
#: adminpages/orders.php:
|
2379 |
-
#:
|
2380 |
-
#: pages/billing.php:
|
2381 |
-
#: pages/billing.php:
|
2382 |
-
#: pages/billing.php:
|
2383 |
-
#: pages/billing.php:
|
2384 |
-
#: pages/
|
2385 |
-
#:
|
2386 |
-
#: shortcodes/pmpro_account.php:73
|
2387 |
msgid "Cancel"
|
2388 |
msgstr ""
|
2389 |
|
2390 |
-
#: adminpages/membershiplevels.php:
|
2391 |
#: adminpages/membershiplevels.php:493 adminpages/membershiplevels.php:496
|
2392 |
#: adminpages/membershiplevels.php:499 adminpages/membershiplevels.php:501
|
2393 |
#: adminpages/membershiplevels.php:502 adminpages/membershiplevels.php:504
|
@@ -2400,29 +2465,31 @@ msgstr ""
|
|
2400 |
#: adminpages/membershiplevels.php:624 adminpages/membershiplevels.php:625
|
2401 |
#: adminpages/membershiplevels.php:634 adminpages/membershiplevels.php:637
|
2402 |
#: adminpages/membershiplevels.php:644 adminpages/membershiplevels.php:647
|
2403 |
-
#: adminpages/membershiplevels.php:694 adminpages/membershiplevels.php:
|
|
|
2404 |
msgid "Search Levels"
|
2405 |
msgstr ""
|
2406 |
|
2407 |
-
#: adminpages/membershiplevels.php:
|
2408 |
#: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:498
|
2409 |
#: adminpages/membershiplevels.php:525 adminpages/membershiplevels.php:526
|
2410 |
#: adminpages/membershiplevels.php:569 adminpages/membershiplevels.php:607
|
2411 |
#: adminpages/membershiplevels.php:609 adminpages/membershiplevels.php:618
|
2412 |
#: adminpages/membershiplevels.php:619 adminpages/membershiplevels.php:631
|
2413 |
#: adminpages/membershiplevels.php:641 adminpages/membershiplevels.php:700
|
|
|
2414 |
msgid "Add New Level"
|
2415 |
msgstr ""
|
2416 |
|
2417 |
-
#: adminpages/membershiplevels.php:
|
2418 |
#: adminpages/membershiplevels.php:619 adminpages/membershiplevels.php:621
|
2419 |
#: adminpages/membershiplevels.php:630 adminpages/membershiplevels.php:631
|
2420 |
#: adminpages/membershiplevels.php:643 adminpages/membershiplevels.php:653
|
2421 |
-
#: adminpages/membershiplevels.php:703
|
2422 |
msgid "Drag and drop membership levels to reorder them on the Levels page."
|
2423 |
msgstr ""
|
2424 |
|
2425 |
-
#: adminpages/membershiplevels.php:
|
2426 |
#: pages/confirmation.php:81 pages/invoice.php:64
|
2427 |
#: shortcodes/pmpro_account.php:46 adminpages/membershiplevels.php:510
|
2428 |
#: adminpages/membershiplevels.php:516 adminpages/membershiplevels.php:518
|
@@ -2431,62 +2498,62 @@ msgstr ""
|
|
2431 |
#: adminpages/membershiplevels.php:634 adminpages/membershiplevels.php:639
|
2432 |
#: adminpages/membershiplevels.php:640 adminpages/membershiplevels.php:644
|
2433 |
#: adminpages/membershiplevels.php:656 adminpages/membershiplevels.php:666
|
2434 |
-
#: adminpages/membershiplevels.php:716
|
2435 |
-
#: pages/
|
2436 |
-
#: pages/confirmation.php:
|
2437 |
-
#: pages/confirmation.php:
|
2438 |
-
#: pages/invoice.php:
|
2439 |
-
#: shortcodes/pmpro_account.php:46
|
2440 |
msgid "Expiration"
|
2441 |
msgstr ""
|
2442 |
|
2443 |
-
#: adminpages/membershiplevels.php:
|
2444 |
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:519
|
2445 |
#: adminpages/membershiplevels.php:545 adminpages/membershiplevels.php:546
|
2446 |
#: adminpages/membershiplevels.php:587 adminpages/membershiplevels.php:633
|
2447 |
#: adminpages/membershiplevels.php:635 adminpages/membershiplevels.php:640
|
2448 |
#: adminpages/membershiplevels.php:641 adminpages/membershiplevels.php:645
|
2449 |
#: adminpages/membershiplevels.php:657 adminpages/membershiplevels.php:667
|
2450 |
-
#: adminpages/membershiplevels.php:717
|
2451 |
msgid "Allow Signups"
|
2452 |
msgstr ""
|
2453 |
|
2454 |
-
#: adminpages/membershiplevels.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2455 |
#: adminpages/membershiplevels.php:540 adminpages/membershiplevels.php:542
|
2456 |
#: adminpages/membershiplevels.php:566 adminpages/membershiplevels.php:569
|
2457 |
#: adminpages/membershiplevels.php:646 adminpages/membershiplevels.php:648
|
2458 |
#: adminpages/membershiplevels.php:650 adminpages/membershiplevels.php:655
|
2459 |
#: adminpages/membershiplevels.php:656 adminpages/membershiplevels.php:660
|
2460 |
#: adminpages/membershiplevels.php:672 adminpages/membershiplevels.php:682
|
2461 |
-
#: adminpages/membershiplevels.php:732
|
2462 |
msgid "FREE"
|
2463 |
msgstr ""
|
2464 |
|
2465 |
-
#: adminpages/membershiplevels.php:
|
2466 |
#: adminpages/membershiplevels.php:566 adminpages/membershiplevels.php:568
|
2467 |
#: adminpages/membershiplevels.php:575 adminpages/membershiplevels.php:595
|
2468 |
#: adminpages/membershiplevels.php:655 adminpages/membershiplevels.php:657
|
2469 |
#: adminpages/membershiplevels.php:659 adminpages/membershiplevels.php:664
|
2470 |
#: adminpages/membershiplevels.php:665 adminpages/membershiplevels.php:669
|
2471 |
#: adminpages/membershiplevels.php:681 adminpages/membershiplevels.php:691
|
2472 |
-
#: adminpages/membershiplevels.php:741
|
2473 |
msgid "After"
|
2474 |
msgstr ""
|
2475 |
|
2476 |
-
#: adminpages/membershiplevels.php:748 adminpages/membershiplevels.php:566
|
2477 |
-
#: adminpages/membershiplevels.php:572 adminpages/membershiplevels.php:574
|
2478 |
-
#: adminpages/membershiplevels.php:580 adminpages/membershiplevels.php:601
|
2479 |
-
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:662
|
2480 |
-
#: adminpages/membershiplevels.php:664 adminpages/membershiplevels.php:669
|
2481 |
-
#: adminpages/membershiplevels.php:670 adminpages/membershiplevels.php:674
|
2482 |
-
#: adminpages/membershiplevels.php:686 adminpages/membershiplevels.php:696
|
2483 |
-
#: adminpages/membershiplevels.php:746
|
2484 |
-
#, php-format
|
2485 |
-
msgid ""
|
2486 |
-
"Are you sure you want to delete membership level %s? All subscriptions will "
|
2487 |
-
"be cancelled."
|
2488 |
-
msgstr ""
|
2489 |
-
|
2490 |
#: adminpages/memberslist.php:25 adminpages/memberslist.php:25
|
2491 |
#: includes/adminpages.php:15 includes/adminpages.php:53
|
2492 |
#: includes/adminpages.php:54 includes/adminpages.php:74
|
@@ -2495,7 +2562,7 @@ msgstr ""
|
|
2495 |
msgid "Members List"
|
2496 |
msgstr ""
|
2497 |
|
2498 |
-
#: adminpages/memberslist.php:26 adminpages/orders.php:
|
2499 |
#: adminpages/memberslist.php:26 adminpages/orders.php:522
|
2500 |
#: adminpages/orders.php:591 adminpages/orders.php:698
|
2501 |
#: adminpages/orders.php:727 adminpages/orders.php:833
|
@@ -2504,7 +2571,7 @@ msgstr ""
|
|
2504 |
msgid "Export to CSV"
|
2505 |
msgstr ""
|
2506 |
|
2507 |
-
#: adminpages/memberslist.php:30 adminpages/orders.php:
|
2508 |
#: adminpages/reports/login.php:103 adminpages/reports/memberships.php:349
|
2509 |
#: adminpages/reports/sales.php:288 adminpages/memberslist.php:30
|
2510 |
#: adminpages/orders.php:603 adminpages/orders.php:710
|
@@ -2528,7 +2595,7 @@ msgstr ""
|
|
2528 |
|
2529 |
#: adminpages/memberslist.php:32 adminpages/reports/login.php:105
|
2530 |
#: adminpages/reports/memberships.php:373 adminpages/reports/sales.php:311
|
2531 |
-
#: classes/class.pmproemail.php:
|
2532 |
#: adminpages/memberslist.php:32 adminpages/reports/login.php:67
|
2533 |
#: adminpages/reports/login.php:69 adminpages/reports/login.php:85
|
2534 |
#: adminpages/reports/login.php:89 adminpages/reports/login.php:105
|
@@ -2590,7 +2657,7 @@ msgstr ""
|
|
2590 |
msgid "Last Name"
|
2591 |
msgstr ""
|
2592 |
|
2593 |
-
#: adminpages/memberslist.php:170 pages/billing.php:
|
2594 |
#: pages/confirmation.php:66 pages/invoice.php:49
|
2595 |
#: adminpages/memberslist.php:117 adminpages/memberslist.php:150
|
2596 |
#: adminpages/memberslist.php:160 adminpages/memberslist.php:170
|
@@ -2605,6 +2672,7 @@ msgstr ""
|
|
2605 |
#: pages/confirmation.php:59 pages/confirmation.php:61
|
2606 |
#: pages/confirmation.php:66 pages/confirmation.php:67
|
2607 |
#: pages/confirmation.php:69 pages/invoice.php:46 pages/invoice.php:48
|
|
|
2608 |
msgid "Billing Address"
|
2609 |
msgstr ""
|
2610 |
|
@@ -2648,29 +2716,19 @@ msgstr ""
|
|
2648 |
msgid "All Users"
|
2649 |
msgstr ""
|
2650 |
|
2651 |
-
#: adminpages/orders.php:
|
2652 |
-
#: adminpages/orders.php:155 adminpages/orders.php:158
|
2653 |
-
msgid "Invoice emailed successfully."
|
2654 |
-
msgstr ""
|
2655 |
-
|
2656 |
-
#: adminpages/orders.php:161 adminpages/orders.php:149
|
2657 |
-
#: adminpages/orders.php:160 adminpages/orders.php:161
|
2658 |
-
msgid "Error emailing invoice."
|
2659 |
-
msgstr ""
|
2660 |
-
|
2661 |
-
#: adminpages/orders.php:174 adminpages/orders.php:26 adminpages/orders.php:67
|
2662 |
#: adminpages/orders.php:162 adminpages/orders.php:174
|
2663 |
#: adminpages/orders.php:175
|
2664 |
msgid "Order deleted successfully."
|
2665 |
msgstr ""
|
2666 |
|
2667 |
-
#: adminpages/orders.php:
|
2668 |
#: adminpages/orders.php:165 adminpages/orders.php:177
|
2669 |
#: adminpages/orders.php:180
|
2670 |
msgid "Error deleting order."
|
2671 |
msgstr ""
|
2672 |
|
2673 |
-
#: adminpages/orders.php:
|
2674 |
#: adminpages/orders.php:169 adminpages/orders.php:270
|
2675 |
#: adminpages/orders.php:284 adminpages/orders.php:285
|
2676 |
#: adminpages/orders.php:295 adminpages/orders.php:297
|
@@ -2678,7 +2736,7 @@ msgstr ""
|
|
2678 |
msgid "Order saved successfully."
|
2679 |
msgstr ""
|
2680 |
|
2681 |
-
#: adminpages/orders.php:
|
2682 |
#: adminpages/orders.php:174 adminpages/orders.php:275
|
2683 |
#: adminpages/orders.php:287 adminpages/orders.php:288
|
2684 |
#: adminpages/orders.php:298 adminpages/orders.php:300
|
@@ -2686,7 +2744,7 @@ msgstr ""
|
|
2686 |
msgid "Error updating order timestamp."
|
2687 |
msgstr ""
|
2688 |
|
2689 |
-
#: adminpages/orders.php:
|
2690 |
#: adminpages/orders.php:180 adminpages/orders.php:281
|
2691 |
#: adminpages/orders.php:291 adminpages/orders.php:292
|
2692 |
#: adminpages/orders.php:302 adminpages/orders.php:304
|
@@ -2694,7 +2752,7 @@ msgstr ""
|
|
2694 |
msgid "Error saving order."
|
2695 |
msgstr ""
|
2696 |
|
2697 |
-
#: adminpages/orders.php:
|
2698 |
#: adminpages/orders.php:195 adminpages/orders.php:245
|
2699 |
#: adminpages/orders.php:317 adminpages/orders.php:321
|
2700 |
#: adminpages/orders.php:346 adminpages/orders.php:352
|
@@ -2705,7 +2763,13 @@ msgstr ""
|
|
2705 |
msgid "Order"
|
2706 |
msgstr ""
|
2707 |
|
2708 |
-
#: adminpages/orders.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
2709 |
#: adminpages/orders.php:247 adminpages/orders.php:319
|
2710 |
#: adminpages/orders.php:323 adminpages/orders.php:348
|
2711 |
#: adminpages/orders.php:354 adminpages/orders.php:364
|
@@ -2713,7 +2777,7 @@ msgstr ""
|
|
2713 |
msgid "New Order"
|
2714 |
msgstr ""
|
2715 |
|
2716 |
-
#: adminpages/orders.php:
|
2717 |
#: adminpages/orders.php:270 adminpages/orders.php:342
|
2718 |
#: adminpages/orders.php:359 adminpages/orders.php:371
|
2719 |
#: adminpages/orders.php:390 adminpages/orders.php:401
|
@@ -2721,7 +2785,7 @@ msgstr ""
|
|
2721 |
msgid "Randomly generated for you."
|
2722 |
msgstr ""
|
2723 |
|
2724 |
-
#: adminpages/orders.php:
|
2725 |
#: adminpages/orders.php:275 adminpages/orders.php:347
|
2726 |
#: adminpages/orders.php:364 adminpages/orders.php:376
|
2727 |
#: adminpages/orders.php:395 adminpages/orders.php:406
|
@@ -2729,7 +2793,7 @@ msgstr ""
|
|
2729 |
msgid "User ID"
|
2730 |
msgstr ""
|
2731 |
|
2732 |
-
#: adminpages/orders.php:
|
2733 |
#: adminpages/orders.php:284 adminpages/orders.php:356
|
2734 |
#: adminpages/orders.php:376 adminpages/orders.php:385
|
2735 |
#: adminpages/orders.php:407 adminpages/orders.php:418
|
@@ -2737,7 +2801,7 @@ msgstr ""
|
|
2737 |
msgid "Membership Level ID"
|
2738 |
msgstr ""
|
2739 |
|
2740 |
-
#: adminpages/orders.php:
|
2741 |
#: adminpages/orders.php:293 adminpages/orders.php:365
|
2742 |
#: adminpages/orders.php:389 adminpages/orders.php:394
|
2743 |
#: adminpages/orders.php:420 adminpages/orders.php:431
|
@@ -2745,7 +2809,7 @@ msgstr ""
|
|
2745 |
msgid "Billing Name"
|
2746 |
msgstr ""
|
2747 |
|
2748 |
-
#: adminpages/orders.php:
|
2749 |
#: adminpages/orders.php:301 adminpages/orders.php:373
|
2750 |
#: adminpages/orders.php:401 adminpages/orders.php:402
|
2751 |
#: adminpages/orders.php:432 adminpages/orders.php:443
|
@@ -2753,7 +2817,7 @@ msgstr ""
|
|
2753 |
msgid "Billing Street"
|
2754 |
msgstr ""
|
2755 |
|
2756 |
-
#: adminpages/orders.php:
|
2757 |
#: adminpages/orders.php:258 adminpages/orders.php:308
|
2758 |
#: adminpages/orders.php:380 adminpages/orders.php:409
|
2759 |
#: adminpages/orders.php:412 adminpages/orders.php:443
|
@@ -2762,7 +2826,7 @@ msgstr ""
|
|
2762 |
msgid "Billing City"
|
2763 |
msgstr ""
|
2764 |
|
2765 |
-
#: adminpages/orders.php:
|
2766 |
#: adminpages/orders.php:315 adminpages/orders.php:387
|
2767 |
#: adminpages/orders.php:416 adminpages/orders.php:423
|
2768 |
#: adminpages/orders.php:454 adminpages/orders.php:465
|
@@ -2770,7 +2834,7 @@ msgstr ""
|
|
2770 |
msgid "Billing State"
|
2771 |
msgstr ""
|
2772 |
|
2773 |
-
#: adminpages/orders.php:
|
2774 |
#: adminpages/orders.php:272 adminpages/orders.php:322
|
2775 |
#: adminpages/orders.php:394 adminpages/orders.php:423
|
2776 |
#: adminpages/orders.php:434 adminpages/orders.php:465
|
@@ -2779,7 +2843,7 @@ msgstr ""
|
|
2779 |
msgid "Billing Postal Code"
|
2780 |
msgstr ""
|
2781 |
|
2782 |
-
#: adminpages/orders.php:
|
2783 |
#: adminpages/orders.php:279 adminpages/orders.php:329
|
2784 |
#: adminpages/orders.php:401 adminpages/orders.php:430
|
2785 |
#: adminpages/orders.php:445 adminpages/orders.php:476
|
@@ -2788,7 +2852,7 @@ msgstr ""
|
|
2788 |
msgid "Billing Country"
|
2789 |
msgstr ""
|
2790 |
|
2791 |
-
#: adminpages/orders.php:
|
2792 |
#: adminpages/orders.php:337 adminpages/orders.php:409
|
2793 |
#: adminpages/orders.php:438 adminpages/orders.php:457
|
2794 |
#: adminpages/orders.php:488 adminpages/orders.php:499
|
@@ -2796,14 +2860,14 @@ msgstr ""
|
|
2796 |
msgid "Billing Phone"
|
2797 |
msgstr ""
|
2798 |
|
2799 |
-
#: adminpages/orders.php:
|
2800 |
-
#: classes/class.pmproemail.php:
|
2801 |
-
#: classes/class.pmproemail.php:
|
2802 |
-
#: classes/class.pmproemail.php:
|
2803 |
-
#: classes/class.pmproemail.php:
|
2804 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
2805 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
2806 |
-
#: pages/checkout.php:
|
2807 |
#: pages/invoice.php:34 adminpages/orders.php:575 adminpages/orders.php:1363
|
2808 |
#: classes/class.pmproemail.php:216 classes/class.pmproemail.php:218
|
2809 |
#: classes/class.pmproemail.php:225 classes/class.pmproemail.php:227
|
@@ -2816,22 +2880,24 @@ msgstr ""
|
|
2816 |
#: classes/class.pmproemail.php:278 classes/class.pmproemail.php:284
|
2817 |
#: classes/class.pmproemail.php:285 classes/class.pmproemail.php:287
|
2818 |
#: classes/class.pmproemail.php:293 classes/class.pmproemail.php:294
|
2819 |
-
#: classes/class.pmproemail.php:302 classes/class.pmproemail.php:
|
2820 |
-
#: classes/class.pmproemail.php:
|
2821 |
-
#: classes/class.pmproemail.php:
|
2822 |
-
#: classes/class.pmproemail.php:
|
2823 |
-
#: classes/class.pmproemail.php:
|
2824 |
-
#: classes/class.pmproemail.php:
|
2825 |
-
#: classes/class.pmproemail.php:
|
2826 |
-
#: classes/class.pmproemail.php:
|
2827 |
-
#: classes/class.pmproemail.php:
|
|
|
2828 |
#: classes/class.pmproemail.php:532 classes/class.pmproemail.php:580
|
2829 |
#: classes/class.pmproemail.php:645 classes/class.pmproemail.php:648
|
2830 |
#: classes/class.pmproemail.php:657 classes/class.pmproemail.php:659
|
2831 |
#: classes/class.pmproemail.php:679 classes/class.pmproemail.php:696
|
2832 |
#: classes/class.pmproemail.php:698 classes/class.pmproemail.php:703
|
2833 |
#: classes/class.pmproemail.php:705 classes/class.pmproemail.php:711
|
2834 |
-
#: classes/class.pmproemail.php:713
|
|
|
2835 |
#: classes/gateways/class.pmprogateway_braintree.php:349
|
2836 |
#: classes/gateways/class.pmprogateway_braintree.php:362
|
2837 |
#: classes/gateways/class.pmprogateway_braintree.php:364
|
@@ -2855,6 +2921,7 @@ msgstr ""
|
|
2855 |
#: classes/gateways/class.pmprogateway_stripe.php:562
|
2856 |
#: classes/gateways/class.pmprogateway_stripe.php:573
|
2857 |
#: classes/gateways/class.pmprogateway_stripe.php:611
|
|
|
2858 |
#: classes/gateways/class.pmprogateway_stripe.php:638
|
2859 |
#: classes/gateways/class.pmprogateway_stripe.php:644
|
2860 |
#: classes/gateways/class.pmprogateway_stripe.php:652
|
@@ -2871,23 +2938,24 @@ msgstr ""
|
|
2871 |
#: pages/checkout.php:612 pages/checkout.php:616 pages/checkout.php:617
|
2872 |
#: pages/checkout.php:619 pages/checkout.php:622 pages/confirmation.php:51
|
2873 |
#: pages/confirmation.php:52 pages/confirmation.php:58 pages/invoice.php:32
|
2874 |
-
#: pages/invoice.php:33
|
2875 |
msgid "Discount Code"
|
2876 |
msgstr ""
|
2877 |
|
2878 |
-
#: adminpages/orders.php:
|
2879 |
-
#: includes/init.php:
|
2880 |
#: classes/class.pmproemail.php:868 classes/class.pmproemail.php:876
|
2881 |
-
#:
|
2882 |
-
#: includes/init.php:
|
2883 |
-
#: includes/init.php:
|
2884 |
-
#: includes/init.php:
|
2885 |
-
#: includes/init.php:
|
2886 |
-
#: includes/profile.php:
|
|
|
2887 |
msgid "None"
|
2888 |
msgstr ""
|
2889 |
|
2890 |
-
#: adminpages/orders.php:
|
2891 |
#: adminpages/orders.php:346 adminpages/orders.php:418
|
2892 |
#: adminpages/orders.php:447 adminpages/orders.php:470
|
2893 |
#: adminpages/orders.php:501 adminpages/orders.php:512
|
@@ -2895,7 +2963,7 @@ msgstr ""
|
|
2895 |
msgid "Sub Total"
|
2896 |
msgstr ""
|
2897 |
|
2898 |
-
#: adminpages/orders.php:
|
2899 |
#: adminpages/templates/orders-print.php:89 includes/privacy.php:277
|
2900 |
#: pages/confirmation.php:92 pages/invoice.php:75 adminpages/orders.php:304
|
2901 |
#: adminpages/orders.php:354 adminpages/orders.php:426
|
@@ -2904,12 +2972,12 @@ msgstr ""
|
|
2904 |
#: adminpages/orders.php:555 adminpages/orders.php:610
|
2905 |
#: adminpages/templates/orders-email.php:60
|
2906 |
#: adminpages/templates/orders-print.php:89 includes/privacy.php:277
|
2907 |
-
#: pages/confirmation.php:92 pages/invoice.php:74 pages/invoice.php:
|
2908 |
-
#: pages/invoice.php:80
|
2909 |
msgid "Tax"
|
2910 |
msgstr ""
|
2911 |
|
2912 |
-
#: adminpages/orders.php:
|
2913 |
#: adminpages/orders.php:362 adminpages/orders.php:434
|
2914 |
#: adminpages/orders.php:463 adminpages/orders.php:492
|
2915 |
#: adminpages/orders.php:523 adminpages/orders.php:534
|
@@ -2917,7 +2985,7 @@ msgstr ""
|
|
2917 |
msgid "Coupon Amount"
|
2918 |
msgstr ""
|
2919 |
|
2920 |
-
#: adminpages/orders.php:
|
2921 |
#: adminpages/orders.php:375 adminpages/orders.php:447
|
2922 |
#: adminpages/orders.php:476 adminpages/orders.php:513
|
2923 |
#: adminpages/orders.php:544 adminpages/orders.php:555
|
@@ -2925,7 +2993,7 @@ msgstr ""
|
|
2925 |
msgid "Should be subtotal + tax - couponamount."
|
2926 |
msgstr ""
|
2927 |
|
2928 |
-
#: adminpages/orders.php:
|
2929 |
#: adminpages/orders.php:380 adminpages/orders.php:452
|
2930 |
#: adminpages/orders.php:481 adminpages/orders.php:518
|
2931 |
#: adminpages/orders.php:549 adminpages/orders.php:560
|
@@ -2933,7 +3001,7 @@ msgstr ""
|
|
2933 |
msgid "Payment Type"
|
2934 |
msgstr ""
|
2935 |
|
2936 |
-
#: adminpages/orders.php:
|
2937 |
#: adminpages/orders.php:385 adminpages/orders.php:457
|
2938 |
#: adminpages/orders.php:486 adminpages/orders.php:528
|
2939 |
#: adminpages/orders.php:559 adminpages/orders.php:570
|
@@ -2941,10 +3009,10 @@ msgstr ""
|
|
2941 |
msgid "e.g. PayPal Express, PayPal Standard, Credit Card."
|
2942 |
msgstr ""
|
2943 |
|
2944 |
-
#: adminpages/orders.php:
|
2945 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
2946 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
2947 |
-
#: pages/billing.php:
|
2948 |
#: adminpages/orders.php:389 adminpages/orders.php:461
|
2949 |
#: adminpages/orders.php:490 adminpages/orders.php:532
|
2950 |
#: adminpages/orders.php:563 adminpages/orders.php:574
|
@@ -2973,6 +3041,7 @@ msgstr ""
|
|
2973 |
#: classes/gateways/class.pmprogateway_stripe.php:484
|
2974 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
2975 |
#: classes/gateways/class.pmprogateway_stripe.php:549
|
|
|
2976 |
#: classes/gateways/class.pmprogateway_stripe.php:573
|
2977 |
#: classes/gateways/class.pmprogateway_stripe.php:581
|
2978 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
@@ -2989,7 +3058,7 @@ msgstr ""
|
|
2989 |
msgid "Card Type"
|
2990 |
msgstr ""
|
2991 |
|
2992 |
-
#: adminpages/orders.php:
|
2993 |
#: adminpages/orders.php:394 adminpages/orders.php:466
|
2994 |
#: adminpages/orders.php:495 adminpages/orders.php:540
|
2995 |
#: adminpages/orders.php:571 adminpages/orders.php:582
|
@@ -2997,7 +3066,7 @@ msgstr ""
|
|
2997 |
msgid "e.g. Visa, MasterCard, AMEX, etc"
|
2998 |
msgstr ""
|
2999 |
|
3000 |
-
#: adminpages/orders.php:
|
3001 |
#: classes/gateways/class.pmprogateway_twocheckout.php:137
|
3002 |
#: includes/privacy.php:297 adminpages/orders.php:348 adminpages/orders.php:398
|
3003 |
#: adminpages/orders.php:470 adminpages/orders.php:499
|
@@ -3012,7 +3081,7 @@ msgstr ""
|
|
3012 |
msgid "Account Number"
|
3013 |
msgstr ""
|
3014 |
|
3015 |
-
#: adminpages/orders.php:
|
3016 |
#: adminpages/orders.php:403 adminpages/orders.php:475
|
3017 |
#: adminpages/orders.php:504 adminpages/orders.php:553
|
3018 |
#: adminpages/orders.php:584 adminpages/orders.php:595
|
@@ -3020,7 +3089,7 @@ msgstr ""
|
|
3020 |
msgid "Obscure all but last 4 digits."
|
3021 |
msgstr ""
|
3022 |
|
3023 |
-
#: adminpages/orders.php:
|
3024 |
#: adminpages/orders.php:408 adminpages/orders.php:480
|
3025 |
#: adminpages/orders.php:509 adminpages/orders.php:561
|
3026 |
#: adminpages/orders.php:592 adminpages/orders.php:603
|
@@ -3028,7 +3097,7 @@ msgstr ""
|
|
3028 |
msgid "Expiration Month"
|
3029 |
msgstr ""
|
3030 |
|
3031 |
-
#: adminpages/orders.php:
|
3032 |
#: adminpages/orders.php:415 adminpages/orders.php:487
|
3033 |
#: adminpages/orders.php:516 adminpages/orders.php:569
|
3034 |
#: adminpages/orders.php:600 adminpages/orders.php:611
|
@@ -3036,7 +3105,7 @@ msgstr ""
|
|
3036 |
msgid "Expiration Year"
|
3037 |
msgstr ""
|
3038 |
|
3039 |
-
#: adminpages/orders.php:
|
3040 |
#: classes/class.memberorder.php:860 includes/privacy.php:313
|
3041 |
#: adminpages/orders.php:394 adminpages/orders.php:444
|
3042 |
#: adminpages/orders.php:516 adminpages/orders.php:545
|
@@ -3054,7 +3123,7 @@ msgstr ""
|
|
3054 |
msgid "Gateway"
|
3055 |
msgstr ""
|
3056 |
|
3057 |
-
#: adminpages/orders.php:
|
3058 |
#: includes/privacy.php:317 adminpages/orders.php:411 adminpages/orders.php:461
|
3059 |
#: adminpages/orders.php:462 adminpages/orders.php:534
|
3060 |
#: adminpages/orders.php:563 adminpages/orders.php:633
|
@@ -3066,7 +3135,7 @@ msgstr ""
|
|
3066 |
msgid "Gateway Environment"
|
3067 |
msgstr ""
|
3068 |
|
3069 |
-
#: adminpages/orders.php:
|
3070 |
#: adminpages/orders.php:415 adminpages/orders.php:465
|
3071 |
#: adminpages/orders.php:466 adminpages/orders.php:538
|
3072 |
#: adminpages/orders.php:567 adminpages/orders.php:640
|
@@ -3078,7 +3147,7 @@ msgstr ""
|
|
3078 |
msgid "Sandbox/Testing"
|
3079 |
msgstr ""
|
3080 |
|
3081 |
-
#: adminpages/orders.php:
|
3082 |
#: adminpages/orders.php:416 adminpages/orders.php:466
|
3083 |
#: adminpages/orders.php:467 adminpages/orders.php:539
|
3084 |
#: adminpages/orders.php:568 adminpages/orders.php:642
|
@@ -3090,7 +3159,7 @@ msgstr ""
|
|
3090 |
msgid "Live/Production"
|
3091 |
msgstr ""
|
3092 |
|
3093 |
-
#: adminpages/orders.php:
|
3094 |
#: adminpages/orders.php:473 adminpages/orders.php:474
|
3095 |
#: adminpages/orders.php:546 adminpages/orders.php:575
|
3096 |
#: adminpages/orders.php:650 adminpages/orders.php:681
|
@@ -3099,7 +3168,7 @@ msgstr ""
|
|
3099 |
msgid "Payment Transaction ID"
|
3100 |
msgstr ""
|
3101 |
|
3102 |
-
#: adminpages/orders.php:
|
3103 |
#: adminpages/orders.php:478 adminpages/orders.php:479
|
3104 |
#: adminpages/orders.php:551 adminpages/orders.php:580
|
3105 |
#: adminpages/orders.php:659 adminpages/orders.php:690
|
@@ -3108,7 +3177,7 @@ msgstr ""
|
|
3108 |
msgid "Generated by the gateway. Useful to cross reference orders."
|
3109 |
msgstr ""
|
3110 |
|
3111 |
-
#: adminpages/orders.php:
|
3112 |
#: includes/privacy.php:325 adminpages/orders.php:432 adminpages/orders.php:482
|
3113 |
#: adminpages/orders.php:483 adminpages/orders.php:555
|
3114 |
#: adminpages/orders.php:584 adminpages/orders.php:664
|
@@ -3120,7 +3189,7 @@ msgstr ""
|
|
3120 |
msgid "Subscription Transaction ID"
|
3121 |
msgstr ""
|
3122 |
|
3123 |
-
#: adminpages/orders.php:
|
3124 |
#: adminpages/orders.php:487 adminpages/orders.php:488
|
3125 |
#: adminpages/orders.php:560 adminpages/orders.php:589
|
3126 |
#: adminpages/orders.php:674 adminpages/orders.php:705
|
@@ -3129,7 +3198,7 @@ msgstr ""
|
|
3129 |
msgid "Generated by the gateway. Useful to cross reference subscriptions."
|
3130 |
msgstr ""
|
3131 |
|
3132 |
-
#: adminpages/orders.php:
|
3133 |
#: adminpages/orders.php:527 adminpages/orders.php:599
|
3134 |
#: adminpages/orders.php:628 adminpages/orders.php:716
|
3135 |
#: adminpages/orders.php:747 adminpages/orders.php:758
|
@@ -3137,7 +3206,7 @@ msgstr ""
|
|
3137 |
msgid "Affiliate ID"
|
3138 |
msgstr ""
|
3139 |
|
3140 |
-
#: adminpages/orders.php:
|
3141 |
#: adminpages/orders.php:535 adminpages/orders.php:607
|
3142 |
#: adminpages/orders.php:636 adminpages/orders.php:728
|
3143 |
#: adminpages/orders.php:759 adminpages/orders.php:770
|
@@ -3145,12 +3214,12 @@ msgstr ""
|
|
3145 |
msgid "Affiliate SubID"
|
3146 |
msgstr ""
|
3147 |
|
3148 |
-
#: adminpages/orders.php:
|
3149 |
#: adminpages/orders.php:903
|
3150 |
msgid "TOS Consent"
|
3151 |
msgstr ""
|
3152 |
|
3153 |
-
#: adminpages/orders.php:
|
3154 |
#: adminpages/orders.php:545 adminpages/orders.php:617
|
3155 |
#: adminpages/orders.php:646 adminpages/orders.php:742
|
3156 |
#: adminpages/orders.php:773 adminpages/orders.php:784
|
@@ -3158,7 +3227,7 @@ msgstr ""
|
|
3158 |
msgid "Notes"
|
3159 |
msgstr ""
|
3160 |
|
3161 |
-
#: adminpages/orders.php:
|
3162 |
#: adminpages/orders.php:560 adminpages/orders.php:632
|
3163 |
#: adminpages/orders.php:661 adminpages/orders.php:764
|
3164 |
#: adminpages/orders.php:795 adminpages/orders.php:806
|
@@ -3166,28 +3235,7 @@ msgstr ""
|
|
3166 |
msgid "Save Order"
|
3167 |
msgstr ""
|
3168 |
|
3169 |
-
#: adminpages/orders.php:
|
3170 |
-
#: adminpages/orders.php:696 adminpages/orders.php:800
|
3171 |
-
#: adminpages/orders.php:831 adminpages/orders.php:842
|
3172 |
-
#: adminpages/orders.php:929 adminpages/orders.php:984
|
3173 |
-
msgid "Email Invoice"
|
3174 |
-
msgstr ""
|
3175 |
-
|
3176 |
-
#: adminpages/orders.php:987 adminpages/orders.php:670
|
3177 |
-
#: adminpages/orders.php:699 adminpages/orders.php:803
|
3178 |
-
#: adminpages/orders.php:834 adminpages/orders.php:845
|
3179 |
-
#: adminpages/orders.php:932 adminpages/orders.php:987
|
3180 |
-
msgid "Send an invoice for this order to: "
|
3181 |
-
msgstr ""
|
3182 |
-
|
3183 |
-
#: adminpages/orders.php:989 adminpages/orders.php:672
|
3184 |
-
#: adminpages/orders.php:701 adminpages/orders.php:805
|
3185 |
-
#: adminpages/orders.php:836 adminpages/orders.php:847
|
3186 |
-
#: adminpages/orders.php:934 adminpages/orders.php:989
|
3187 |
-
msgid "Send Email"
|
3188 |
-
msgstr ""
|
3189 |
-
|
3190 |
-
#: adminpages/orders.php:996 adminpages/orders.php:521
|
3191 |
#: adminpages/orders.php:571 adminpages/orders.php:678
|
3192 |
#: adminpages/orders.php:707 adminpages/orders.php:812
|
3193 |
#: adminpages/orders.php:843 adminpages/orders.php:854
|
@@ -3195,7 +3243,7 @@ msgstr ""
|
|
3195 |
msgid "Add New Order"
|
3196 |
msgstr ""
|
3197 |
|
3198 |
-
#: adminpages/orders.php:
|
3199 |
#: adminpages/orders.php:713 adminpages/orders.php:742
|
3200 |
#: adminpages/orders.php:852 adminpages/orders.php:883
|
3201 |
#: adminpages/orders.php:894 adminpages/orders.php:985
|
@@ -3203,7 +3251,7 @@ msgstr ""
|
|
3203 |
msgid "Within a Date Range"
|
3204 |
msgstr ""
|
3205 |
|
3206 |
-
#: adminpages/orders.php:
|
3207 |
#: adminpages/orders.php:714 adminpages/orders.php:743
|
3208 |
#: adminpages/orders.php:854 adminpages/orders.php:885
|
3209 |
#: adminpages/orders.php:896 adminpages/orders.php:987
|
@@ -3211,7 +3259,7 @@ msgstr ""
|
|
3211 |
msgid "Predefined Date Range"
|
3212 |
msgstr ""
|
3213 |
|
3214 |
-
#: adminpages/orders.php:
|
3215 |
#: adminpages/orders.php:715 adminpages/orders.php:744
|
3216 |
#: adminpages/orders.php:856 adminpages/orders.php:887
|
3217 |
#: adminpages/orders.php:898 adminpages/orders.php:989
|
@@ -3219,11 +3267,11 @@ msgstr ""
|
|
3219 |
msgid "Within a Level"
|
3220 |
msgstr ""
|
3221 |
|
3222 |
-
#: adminpages/orders.php:
|
3223 |
msgid "With a Discount Code"
|
3224 |
msgstr ""
|
3225 |
|
3226 |
-
#: adminpages/orders.php:
|
3227 |
#: adminpages/orders.php:716 adminpages/orders.php:745
|
3228 |
#: adminpages/orders.php:858 adminpages/orders.php:889
|
3229 |
#: adminpages/orders.php:900 adminpages/orders.php:991
|
@@ -3231,15 +3279,15 @@ msgstr ""
|
|
3231 |
msgid "Within a Status"
|
3232 |
msgstr ""
|
3233 |
|
3234 |
-
#: adminpages/orders.php:
|
3235 |
msgid "Only Paid Orders"
|
3236 |
msgstr ""
|
3237 |
|
3238 |
-
#: adminpages/orders.php:
|
3239 |
msgid "Only Free Orders"
|
3240 |
msgstr ""
|
3241 |
|
3242 |
-
#: adminpages/orders.php:
|
3243 |
#: adminpages/orders.php:719 adminpages/orders.php:748
|
3244 |
#: adminpages/orders.php:861 adminpages/orders.php:892
|
3245 |
#: adminpages/orders.php:903 adminpages/orders.php:994
|
@@ -3247,7 +3295,7 @@ msgstr ""
|
|
3247 |
msgid "From"
|
3248 |
msgstr ""
|
3249 |
|
3250 |
-
#: adminpages/orders.php:
|
3251 |
#: adminpages/orders.php:731 adminpages/orders.php:760
|
3252 |
#: adminpages/orders.php:876 adminpages/orders.php:907
|
3253 |
#: adminpages/orders.php:918 adminpages/orders.php:1009
|
@@ -3255,7 +3303,7 @@ msgstr ""
|
|
3255 |
msgid "To"
|
3256 |
msgstr ""
|
3257 |
|
3258 |
-
#: adminpages/orders.php:
|
3259 |
#: adminpages/orders.php:743 adminpages/orders.php:772
|
3260 |
#: adminpages/orders.php:889 adminpages/orders.php:920
|
3261 |
#: adminpages/orders.php:931 adminpages/orders.php:1022
|
@@ -3263,7 +3311,7 @@ msgstr ""
|
|
3263 |
msgid "filter by "
|
3264 |
msgstr ""
|
3265 |
|
3266 |
-
#: adminpages/orders.php:
|
3267 |
#: adminpages/orders.php:780 adminpages/orders.php:809
|
3268 |
#: adminpages/orders.php:932 adminpages/orders.php:963
|
3269 |
#: adminpages/orders.php:969 adminpages/orders.php:1060
|
@@ -3271,7 +3319,7 @@ msgstr ""
|
|
3271 |
msgid "Filter"
|
3272 |
msgstr ""
|
3273 |
|
3274 |
-
#: adminpages/orders.php:
|
3275 |
#: adminpages/orders.php:535 adminpages/orders.php:538
|
3276 |
#: adminpages/orders.php:777 adminpages/orders.php:780
|
3277 |
#: adminpages/orders.php:883 adminpages/orders.php:886
|
@@ -3284,7 +3332,7 @@ msgstr ""
|
|
3284 |
msgid "Search Orders"
|
3285 |
msgstr ""
|
3286 |
|
3287 |
-
#: adminpages/orders.php:
|
3288 |
#: adminpages/orders.php:893 adminpages/orders.php:903
|
3289 |
#: adminpages/orders.php:930 adminpages/orders.php:959
|
3290 |
#: adminpages/orders.php:1096 adminpages/orders.php:1127
|
@@ -3294,8 +3342,8 @@ msgstr ""
|
|
3294 |
msgid "%d orders found."
|
3295 |
msgstr ""
|
3296 |
|
3297 |
-
#: adminpages/orders.php:
|
3298 |
-
#: pages/checkout.php:
|
3299 |
#: pages/invoice.php:28 adminpages/orders.php:601 adminpages/orders.php:904
|
3300 |
#: adminpages/orders.php:914 adminpages/orders.php:941
|
3301 |
#: adminpages/orders.php:970 adminpages/orders.php:1107
|
@@ -3303,22 +3351,23 @@ msgstr ""
|
|
3303 |
#: adminpages/orders.php:1235 adminpages/orders.php:1356 includes/init.php:214
|
3304 |
#: includes/init.php:217 includes/init.php:218 includes/init.php:220
|
3305 |
#: includes/init.php:222 includes/init.php:230 includes/init.php:238
|
3306 |
-
#: includes/init.php:
|
3307 |
-
#: includes/init.php:
|
3308 |
-
#: includes/profile.php:
|
3309 |
-
#: pages/checkout.php:
|
3310 |
-
#: pages/checkout.php:
|
3311 |
-
#: pages/confirmation.php:
|
3312 |
-
#: pages/confirmation.php:
|
3313 |
-
#: pages/confirmation.php:
|
3314 |
-
#: pages/confirmation.php:
|
3315 |
-
#: pages/confirmation.php:
|
3316 |
-
#: pages/confirmation.php:
|
3317 |
-
#: pages/invoice.php:
|
|
|
3318 |
msgid "Membership Level"
|
3319 |
msgstr ""
|
3320 |
|
3321 |
-
#: adminpages/orders.php:
|
3322 |
#: adminpages/orders.php:603 adminpages/orders.php:651
|
3323 |
#: adminpages/orders.php:906 adminpages/orders.php:916
|
3324 |
#: adminpages/orders.php:943 adminpages/orders.php:954
|
@@ -3332,7 +3381,7 @@ msgstr ""
|
|
3332 |
msgid "Payment"
|
3333 |
msgstr ""
|
3334 |
|
3335 |
-
#: adminpages/orders.php:
|
3336 |
#: adminpages/orders.php:908 adminpages/orders.php:918
|
3337 |
#: adminpages/orders.php:945 adminpages/orders.php:974
|
3338 |
#: adminpages/orders.php:1111 adminpages/orders.php:1142
|
@@ -3341,16 +3390,7 @@ msgstr ""
|
|
3341 |
msgid "Transaction IDs"
|
3342 |
msgstr ""
|
3343 |
|
3344 |
-
#: adminpages/orders.php:
|
3345 |
-
#: adminpages/orders.php:956 adminpages/orders.php:974
|
3346 |
-
#: adminpages/orders.php:984 adminpages/orders.php:1013
|
3347 |
-
#: adminpages/orders.php:1042 adminpages/orders.php:1192
|
3348 |
-
#: adminpages/orders.php:1226 adminpages/orders.php:1232
|
3349 |
-
#: adminpages/orders.php:1344 adminpages/orders.php:1466
|
3350 |
-
msgid "Subscription"
|
3351 |
-
msgstr ""
|
3352 |
-
|
3353 |
-
#: adminpages/orders.php:1495 adminpages/orders.php:664
|
3354 |
#: adminpages/orders.php:967 adminpages/orders.php:985
|
3355 |
#: adminpages/orders.php:995 adminpages/orders.php:998
|
3356 |
#: adminpages/orders.php:1027 adminpages/orders.php:1056
|
@@ -3363,18 +3403,36 @@ msgid ""
|
|
3363 |
"want to delete order %s?"
|
3364 |
msgstr ""
|
3365 |
|
3366 |
-
#: adminpages/orders.php:
|
3367 |
-
#: adminpages/orders.php:
|
3368 |
-
#: adminpages/orders.php:
|
3369 |
-
#: adminpages/orders.php:
|
3370 |
-
|
|
|
|
|
3371 |
msgstr ""
|
3372 |
|
3373 |
-
#: adminpages/orders.php:
|
3374 |
-
#: adminpages/
|
3375 |
-
#: adminpages/
|
3376 |
-
#: adminpages/
|
3377 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3378 |
msgstr ""
|
3379 |
|
3380 |
#: adminpages/pagesettings.php:62 adminpages/pagesettings.php:54
|
@@ -3645,7 +3703,7 @@ msgstr ""
|
|
3645 |
msgid "Payment Gateway"
|
3646 |
msgstr ""
|
3647 |
|
3648 |
-
#: adminpages/paymentsettings.php:110 adminpages/paymentsettings.php:
|
3649 |
#: adminpages/paymentsettings.php:93 adminpages/paymentsettings.php:110
|
3650 |
#: adminpages/paymentsettings.php:144 adminpages/paymentsettings.php:146
|
3651 |
#: adminpages/paymentsettings.php:201 adminpages/paymentsettings.php:218
|
@@ -3667,19 +3725,30 @@ msgstr ""
|
|
3667 |
msgid "Choose a Gateway"
|
3668 |
msgstr ""
|
3669 |
|
3670 |
-
#: adminpages/paymentsettings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3671 |
#: adminpages/paymentsettings.php:165
|
3672 |
msgid "Currency and Tax Settings"
|
3673 |
msgstr ""
|
3674 |
|
3675 |
-
#: adminpages/paymentsettings.php:
|
3676 |
#: adminpages/paymentsettings.php:170 adminpages/paymentsettings.php:327
|
3677 |
#: adminpages/paymentsettings.php:337 adminpages/paymentsettings.php:356
|
3678 |
#: adminpages/paymentsettings.php:381 adminpages/paymentsettings.php:386
|
3679 |
msgid "Currency"
|
3680 |
msgstr ""
|
3681 |
|
3682 |
-
#: adminpages/paymentsettings.php:
|
3683 |
#: adminpages/paymentsettings.php:186 adminpages/paymentsettings.php:400
|
3684 |
#: adminpages/paymentsettings.php:402
|
3685 |
msgid ""
|
@@ -3687,21 +3756,21 @@ msgid ""
|
|
3687 |
"your gateway."
|
3688 |
msgstr ""
|
3689 |
|
3690 |
-
#: adminpages/paymentsettings.php:
|
3691 |
#: adminpages/paymentsettings.php:191 adminpages/paymentsettings.php:375
|
3692 |
#: adminpages/paymentsettings.php:401 adminpages/paymentsettings.php:406
|
3693 |
#: adminpages/paymentsettings.php:408
|
3694 |
msgid "Accepted Credit Card Types"
|
3695 |
msgstr ""
|
3696 |
|
3697 |
-
#: adminpages/paymentsettings.php:
|
3698 |
#: adminpages/paymentsettings.php:205 adminpages/paymentsettings.php:398
|
3699 |
#: adminpages/paymentsettings.php:438 adminpages/paymentsettings.php:443
|
3700 |
#: adminpages/paymentsettings.php:445
|
3701 |
msgid "Sales Tax"
|
3702 |
msgstr ""
|
3703 |
|
3704 |
-
#: adminpages/paymentsettings.php:
|
3705 |
#: adminpages/paymentsettings.php:188 adminpages/paymentsettings.php:205
|
3706 |
#: adminpages/paymentsettings.php:398 adminpages/paymentsettings.php:438
|
3707 |
#: adminpages/paymentsettings.php:443 adminpages/paymentsettings.php:445
|
@@ -3712,33 +3781,33 @@ msgstr ""
|
|
3712 |
msgid "optional"
|
3713 |
msgstr ""
|
3714 |
|
3715 |
-
#: adminpages/paymentsettings.php:
|
3716 |
#: adminpages/paymentsettings.php:208 adminpages/paymentsettings.php:401
|
3717 |
#: adminpages/paymentsettings.php:441 adminpages/paymentsettings.php:446
|
3718 |
#: adminpages/paymentsettings.php:448
|
3719 |
msgid "Tax State"
|
3720 |
msgstr ""
|
3721 |
|
3722 |
-
#: adminpages/paymentsettings.php:
|
3723 |
#: adminpages/paymentsettings.php:209 adminpages/paymentsettings.php:402
|
3724 |
#: adminpages/paymentsettings.php:442 adminpages/paymentsettings.php:447
|
3725 |
#: adminpages/paymentsettings.php:449
|
3726 |
msgid "abbreviation, e.g. \"PA\""
|
3727 |
msgstr ""
|
3728 |
|
3729 |
-
#: adminpages/paymentsettings.php:
|
3730 |
#: adminpages/paymentsettings.php:210
|
3731 |
msgid "Tax Rate"
|
3732 |
msgstr ""
|
3733 |
|
3734 |
-
#: adminpages/paymentsettings.php:
|
3735 |
#: adminpages/paymentsettings.php:211 adminpages/paymentsettings.php:404
|
3736 |
#: adminpages/paymentsettings.php:444 adminpages/paymentsettings.php:449
|
3737 |
#: adminpages/paymentsettings.php:451
|
3738 |
msgid "decimal, e.g. \"0.06\""
|
3739 |
msgstr ""
|
3740 |
|
3741 |
-
#: adminpages/paymentsettings.php:
|
3742 |
msgid ""
|
3743 |
"US only. If values are given, tax will be applied for any members ordering "
|
3744 |
"from the selected state.<br />For non-US or more complex tax rules, use the "
|
@@ -3748,41 +3817,41 @@ msgid ""
|
|
3748 |
"\">pmpro_tax filter</a>."
|
3749 |
msgstr ""
|
3750 |
|
3751 |
-
#: adminpages/paymentsettings.php:
|
3752 |
#: adminpages/paymentsettings.php:223 adminpages/paymentsettings.php:450
|
3753 |
#: adminpages/paymentsettings.php:455 adminpages/paymentsettings.php:457
|
3754 |
msgid "Force SSL"
|
3755 |
msgstr ""
|
3756 |
|
3757 |
-
#: adminpages/paymentsettings.php:
|
3758 |
#: adminpages/paymentsettings.php:230
|
3759 |
msgid ""
|
3760 |
"Your Site URL starts with https:// and so PMPro will allow your entire site "
|
3761 |
"to be served over HTTPS."
|
3762 |
msgstr ""
|
3763 |
|
3764 |
-
#: adminpages/paymentsettings.php:
|
3765 |
#: adminpages/paymentsettings.php:221 adminpages/paymentsettings.php:238
|
3766 |
#: adminpages/paymentsettings.php:456 adminpages/paymentsettings.php:461
|
3767 |
#: adminpages/paymentsettings.php:463
|
3768 |
msgid "Yes (with JavaScript redirects)"
|
3769 |
msgstr ""
|
3770 |
|
3771 |
-
#: adminpages/paymentsettings.php:
|
3772 |
#: adminpages/paymentsettings.php:223 adminpages/paymentsettings.php:240
|
3773 |
msgid ""
|
3774 |
"Recommended: Yes. Try the JavaScript redirects setting if you are having "
|
3775 |
"issues with infinite redirect loops."
|
3776 |
msgstr ""
|
3777 |
|
3778 |
-
#: adminpages/paymentsettings.php:
|
3779 |
#: adminpages/paymentsettings.php:231 adminpages/paymentsettings.php:248
|
3780 |
#: adminpages/paymentsettings.php:430 adminpages/paymentsettings.php:463
|
3781 |
#: adminpages/paymentsettings.php:468 adminpages/paymentsettings.php:470
|
3782 |
msgid "SSL Seal Code"
|
3783 |
msgstr ""
|
3784 |
|
3785 |
-
#: adminpages/paymentsettings.php:
|
3786 |
msgid ""
|
3787 |
"Your <strong><a target=\"_blank\" href=\"http://www.paidmembershipspro.com/"
|
3788 |
"documentation/initial-plugin-setup/ssl/?"
|
@@ -3792,12 +3861,12 @@ msgid ""
|
|
3792 |
"can be pasted here."
|
3793 |
msgstr ""
|
3794 |
|
3795 |
-
#: adminpages/paymentsettings.php:
|
3796 |
#: adminpages/paymentsettings.php:240 adminpages/paymentsettings.php:257
|
3797 |
msgid "Extra HTTPS URL Filter"
|
3798 |
msgstr ""
|
3799 |
|
3800 |
-
#: adminpages/paymentsettings.php:
|
3801 |
#: adminpages/paymentsettings.php:243 adminpages/paymentsettings.php:260
|
3802 |
msgid ""
|
3803 |
"Pass all generated HTML through a URL filter to add HTTPS to URLs used on "
|
@@ -4169,7 +4238,8 @@ msgstr ""
|
|
4169 |
#: adminpages/templates/orders-print.php:85 pages/confirmation.php:91
|
4170 |
#: pages/invoice.php:74 adminpages/templates/orders-email.php:56
|
4171 |
#: adminpages/templates/orders-print.php:85 pages/confirmation.php:91
|
4172 |
-
#: pages/invoice.php:73 pages/invoice.php:
|
|
|
4173 |
msgid "Subtotal"
|
4174 |
msgstr ""
|
4175 |
|
@@ -4239,7 +4309,7 @@ msgstr ""
|
|
4239 |
msgid "An Email From %s"
|
4240 |
msgstr ""
|
4241 |
|
4242 |
-
#: classes/class.pmproemail.php:
|
4243 |
#: classes/class.pmproemail.php:122 classes/class.pmproemail.php:125
|
4244 |
#: classes/class.pmproemail.php:134 classes/class.pmproemail.php:136
|
4245 |
#: classes/class.pmproemail.php:143
|
@@ -4247,7 +4317,7 @@ msgstr ""
|
|
4247 |
msgid "Your membership at %s has been CANCELLED"
|
4248 |
msgstr ""
|
4249 |
|
4250 |
-
#: classes/class.pmproemail.php:
|
4251 |
#: classes/class.pmproemail.php:144 classes/class.pmproemail.php:147
|
4252 |
#: classes/class.pmproemail.php:156 classes/class.pmproemail.php:166
|
4253 |
#: classes/class.pmproemail.php:169 classes/class.pmproemail.php:176
|
@@ -4255,7 +4325,7 @@ msgstr ""
|
|
4255 |
msgid "Membership for %s at %s has been CANCELLED"
|
4256 |
msgstr ""
|
4257 |
|
4258 |
-
#: classes/class.pmproemail.php:
|
4259 |
#: classes/class.pmproemail.php:173 classes/class.pmproemail.php:175
|
4260 |
#: classes/class.pmproemail.php:178 classes/class.pmproemail.php:187
|
4261 |
#: classes/class.pmproemail.php:207 classes/class.pmproemail.php:212
|
@@ -4264,149 +4334,156 @@ msgstr ""
|
|
4264 |
msgid "Your membership confirmation for %s"
|
4265 |
msgstr ""
|
4266 |
|
4267 |
-
#: classes/class.pmproemail.php:
|
4268 |
-
#: classes/class.pmproemail.php:
|
4269 |
#: classes/class.pmproemail.php:243 classes/class.pmproemail.php:253
|
4270 |
#: classes/class.pmproemail.php:256 classes/class.pmproemail.php:265
|
4271 |
#: classes/class.pmproemail.php:285 classes/class.pmproemail.php:294
|
4272 |
#: classes/class.pmproemail.php:301 classes/class.pmproemail.php:309
|
4273 |
-
#: classes/class.pmproemail.php:
|
4274 |
-
#: classes/class.pmproemail.php:
|
4275 |
-
#: classes/class.pmproemail.php:
|
4276 |
-
#: classes/class.pmproemail.php:
|
4277 |
-
#: classes/class.pmproemail.php:
|
|
|
4278 |
#: classes/class.pmproemail.php:586 classes/class.pmproemail.php:651
|
4279 |
#: classes/class.pmproemail.php:654 classes/class.pmproemail.php:663
|
4280 |
#: classes/class.pmproemail.php:665 classes/class.pmproemail.php:685
|
4281 |
#: classes/class.pmproemail.php:705 classes/class.pmproemail.php:712
|
4282 |
-
#: classes/class.pmproemail.php:720
|
4283 |
#, php-format
|
4284 |
msgid "This membership will expire on %s."
|
4285 |
msgstr ""
|
4286 |
|
4287 |
-
#: classes/class.pmproemail.php:
|
4288 |
#: classes/class.pmproemail.php:265 classes/class.pmproemail.php:275
|
4289 |
#: classes/class.pmproemail.php:278 classes/class.pmproemail.php:287
|
4290 |
#: classes/class.pmproemail.php:307 classes/class.pmproemail.php:316
|
4291 |
#: classes/class.pmproemail.php:323 classes/class.pmproemail.php:331
|
|
|
4292 |
#, php-format
|
4293 |
msgid "Member Checkout for %s at %s"
|
4294 |
msgstr ""
|
4295 |
|
4296 |
-
#: classes/class.pmproemail.php:
|
4297 |
#: classes/class.pmproemail.php:395 classes/class.pmproemail.php:407
|
4298 |
#: classes/class.pmproemail.php:414 classes/class.pmproemail.php:422
|
|
|
4299 |
#, php-format
|
4300 |
msgid "Your billing information has been updated at %s"
|
4301 |
msgstr ""
|
4302 |
|
4303 |
-
#: classes/class.pmproemail.php:
|
4304 |
#: classes/class.pmproemail.php:448 classes/class.pmproemail.php:461
|
4305 |
#: classes/class.pmproemail.php:468 classes/class.pmproemail.php:476
|
|
|
4306 |
#, php-format
|
4307 |
msgid "Billing information has been updated for %s at %s"
|
4308 |
msgstr ""
|
4309 |
|
4310 |
-
#: classes/class.pmproemail.php:
|
4311 |
#: classes/class.pmproemail.php:430 classes/class.pmproemail.php:464
|
4312 |
#: classes/class.pmproemail.php:467 classes/class.pmproemail.php:476
|
4313 |
#: classes/class.pmproemail.php:496 classes/class.pmproemail.php:510
|
4314 |
#: classes/class.pmproemail.php:517 classes/class.pmproemail.php:525
|
|
|
4315 |
#, php-format
|
4316 |
msgid "Membership Payment Failed at %s"
|
4317 |
msgstr ""
|
4318 |
|
4319 |
-
#: classes/class.pmproemail.php:
|
4320 |
#: classes/class.pmproemail.php:468 classes/class.pmproemail.php:510
|
4321 |
#: classes/class.pmproemail.php:513 classes/class.pmproemail.php:522
|
4322 |
#: classes/class.pmproemail.php:542 classes/class.pmproemail.php:557
|
4323 |
#: classes/class.pmproemail.php:564 classes/class.pmproemail.php:572
|
|
|
4324 |
#, php-format
|
4325 |
msgid "Membership Payment Failed For %s at %s"
|
4326 |
msgstr ""
|
4327 |
|
4328 |
-
#: classes/class.pmproemail.php:
|
4329 |
#: classes/class.pmproemail.php:557 classes/class.pmproemail.php:560
|
4330 |
#: classes/class.pmproemail.php:569 classes/class.pmproemail.php:589
|
4331 |
#: classes/class.pmproemail.php:605 classes/class.pmproemail.php:612
|
4332 |
-
#: classes/class.pmproemail.php:620
|
4333 |
#, php-format
|
4334 |
msgid "Credit Card on File Expiring Soon at %s"
|
4335 |
msgstr ""
|
4336 |
|
4337 |
-
#: classes/class.pmproemail.php:
|
4338 |
#: classes/class.pmproemail.php:548 classes/class.pmproemail.php:605
|
4339 |
#: classes/class.pmproemail.php:608 classes/class.pmproemail.php:617
|
4340 |
#: classes/class.pmproemail.php:619 classes/class.pmproemail.php:639
|
4341 |
#: classes/class.pmproemail.php:656 classes/class.pmproemail.php:663
|
4342 |
-
#: classes/class.pmproemail.php:671
|
4343 |
#, php-format
|
4344 |
msgid "INVOICE for %s membership"
|
4345 |
msgstr ""
|
4346 |
|
4347 |
-
#: classes/class.pmproemail.php:
|
4348 |
#: classes/class.pmproemail.php:611 classes/class.pmproemail.php:676
|
4349 |
#: classes/class.pmproemail.php:679 classes/class.pmproemail.php:688
|
4350 |
#: classes/class.pmproemail.php:690 classes/class.pmproemail.php:710
|
4351 |
#: classes/class.pmproemail.php:733 classes/class.pmproemail.php:740
|
4352 |
-
#: classes/class.pmproemail.php:748
|
4353 |
#, php-format
|
4354 |
msgid "Your trial at %s is ending soon"
|
4355 |
msgstr ""
|
4356 |
|
4357 |
-
#: classes/class.pmproemail.php:
|
4358 |
#: classes/class.pmproemail.php:645 classes/class.pmproemail.php:710
|
4359 |
#: classes/class.pmproemail.php:713 classes/class.pmproemail.php:722
|
4360 |
#: classes/class.pmproemail.php:724 classes/class.pmproemail.php:744
|
4361 |
#: classes/class.pmproemail.php:769 classes/class.pmproemail.php:776
|
4362 |
-
#: classes/class.pmproemail.php:784
|
4363 |
#, php-format
|
4364 |
msgid "Your membership at %s has ended"
|
4365 |
msgstr ""
|
4366 |
|
4367 |
-
#: classes/class.pmproemail.php:
|
4368 |
#: classes/class.pmproemail.php:670 classes/class.pmproemail.php:735
|
4369 |
#: classes/class.pmproemail.php:738 classes/class.pmproemail.php:747
|
4370 |
#: classes/class.pmproemail.php:749 classes/class.pmproemail.php:769
|
4371 |
#: classes/class.pmproemail.php:796 classes/class.pmproemail.php:803
|
4372 |
-
#: classes/class.pmproemail.php:811
|
4373 |
#, php-format
|
4374 |
msgid "Your membership at %s will end soon"
|
4375 |
msgstr ""
|
4376 |
|
4377 |
-
#: classes/class.pmproemail.php:
|
4378 |
#: classes/class.pmproemail.php:690 classes/class.pmproemail.php:755
|
4379 |
#: classes/class.pmproemail.php:758 classes/class.pmproemail.php:767
|
4380 |
#: classes/class.pmproemail.php:769 classes/class.pmproemail.php:789
|
4381 |
#: classes/class.pmproemail.php:818 classes/class.pmproemail.php:825
|
4382 |
-
#: classes/class.pmproemail.php:833
|
4383 |
#, php-format
|
4384 |
msgid "Your membership at %s has been changed"
|
4385 |
msgstr ""
|
4386 |
|
4387 |
-
#: classes/class.pmproemail.php:
|
4388 |
#: classes/class.pmproemail.php:759 classes/class.pmproemail.php:762
|
4389 |
#: classes/class.pmproemail.php:771 classes/class.pmproemail.php:773
|
4390 |
#: classes/class.pmproemail.php:793 classes/class.pmproemail.php:800
|
4391 |
#: classes/class.pmproemail.php:809 classes/class.pmproemail.php:810
|
4392 |
#: classes/class.pmproemail.php:811 classes/class.pmproemail.php:823
|
4393 |
#: classes/class.pmproemail.php:830 classes/class.pmproemail.php:838
|
4394 |
-
#: classes/class.pmproemail.php:
|
4395 |
-
#: classes/class.pmproemail.php:
|
|
|
4396 |
#, php-format
|
4397 |
msgid "The new level is %s"
|
4398 |
msgstr ""
|
4399 |
|
4400 |
-
#: classes/class.pmproemail.php:
|
4401 |
#: classes/class.pmproemail.php:696 classes/class.pmproemail.php:761
|
4402 |
#: classes/class.pmproemail.php:764 classes/class.pmproemail.php:773
|
4403 |
#: classes/class.pmproemail.php:775 classes/class.pmproemail.php:795
|
4404 |
#: classes/class.pmproemail.php:825 classes/class.pmproemail.php:832
|
4405 |
-
#: classes/class.pmproemail.php:840
|
4406 |
msgid "Your membership has been cancelled"
|
4407 |
msgstr ""
|
4408 |
|
4409 |
-
#: classes/class.pmproemail.php:
|
4410 |
#: classes/class.pmproemail.php:651 classes/class.pmproemail.php:689
|
4411 |
#: classes/class.pmproemail.php:700 classes/class.pmproemail.php:738
|
4412 |
#: classes/class.pmproemail.php:765 classes/class.pmproemail.php:768
|
@@ -4416,13 +4493,14 @@ msgstr ""
|
|
4416 |
#: classes/class.pmproemail.php:815 classes/class.pmproemail.php:816
|
4417 |
#: classes/class.pmproemail.php:817 classes/class.pmproemail.php:829
|
4418 |
#: classes/class.pmproemail.php:836 classes/class.pmproemail.php:844
|
4419 |
-
#: classes/class.pmproemail.php:
|
4420 |
-
#: classes/class.pmproemail.php:
|
|
|
4421 |
#, php-format
|
4422 |
msgid "This membership will expire on %s"
|
4423 |
msgstr ""
|
4424 |
|
4425 |
-
#: classes/class.pmproemail.php:
|
4426 |
#: classes/class.pmproemail.php:655 classes/class.pmproemail.php:693
|
4427 |
#: classes/class.pmproemail.php:704 classes/class.pmproemail.php:742
|
4428 |
#: classes/class.pmproemail.php:769 classes/class.pmproemail.php:772
|
@@ -4432,42 +4510,53 @@ msgstr ""
|
|
4432 |
#: classes/class.pmproemail.php:819 classes/class.pmproemail.php:820
|
4433 |
#: classes/class.pmproemail.php:821 classes/class.pmproemail.php:833
|
4434 |
#: classes/class.pmproemail.php:840 classes/class.pmproemail.php:848
|
4435 |
-
#: classes/class.pmproemail.php:
|
4436 |
-
#: classes/class.pmproemail.php:
|
|
|
4437 |
msgid "This membership does not expire"
|
4438 |
msgstr ""
|
4439 |
|
4440 |
-
#: classes/class.pmproemail.php:
|
4441 |
#: classes/class.pmproemail.php:728 classes/class.pmproemail.php:793
|
4442 |
#: classes/class.pmproemail.php:796 classes/class.pmproemail.php:805
|
4443 |
#: classes/class.pmproemail.php:806 classes/class.pmproemail.php:807
|
4444 |
#: classes/class.pmproemail.php:826 classes/class.pmproemail.php:859
|
4445 |
#: classes/class.pmproemail.php:866 classes/class.pmproemail.php:872
|
4446 |
-
#: classes/class.pmproemail.php:880
|
4447 |
#, php-format
|
4448 |
msgid "Membership for %s at %s has been changed"
|
4449 |
msgstr ""
|
4450 |
|
4451 |
-
#: classes/class.pmproemail.php:
|
4452 |
#: classes/class.pmproemail.php:802 classes/class.pmproemail.php:811
|
4453 |
#: classes/class.pmproemail.php:812 classes/class.pmproemail.php:813
|
4454 |
#: classes/class.pmproemail.php:832 classes/class.pmproemail.php:865
|
4455 |
#: classes/class.pmproemail.php:872 classes/class.pmproemail.php:879
|
4456 |
-
#: classes/class.pmproemail.php:887
|
4457 |
msgid "Membership has been cancelled"
|
4458 |
msgstr ""
|
4459 |
|
4460 |
-
#: classes/class.pmproemail.php:
|
4461 |
#: classes/class.pmproemail.php:849 classes/class.pmproemail.php:850
|
4462 |
#: classes/class.pmproemail.php:869 classes/class.pmproemail.php:904
|
4463 |
#: classes/class.pmproemail.php:911 classes/class.pmproemail.php:919
|
4464 |
-
#: classes/class.pmproemail.php:927
|
4465 |
msgid "Invoice for Order #: "
|
4466 |
msgstr ""
|
4467 |
|
4468 |
-
#: classes/class.pmproemail.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4469 |
#: classes/class.pmproemail.php:955 classes/class.pmproemail.php:963
|
4470 |
-
#: classes/class.pmproemail.php:971
|
4471 |
msgid ""
|
4472 |
"<p>An administrator at !!sitename!! has changed your membership level.</p>\n"
|
4473 |
"\n"
|
@@ -4482,9 +4571,9 @@ msgstr ""
|
|
4482 |
#: classes/gateways/class.pmprogateway.php:55
|
4483 |
#: classes/gateways/class.pmprogateway_authorizenet.php:171
|
4484 |
#: classes/gateways/class.pmprogateway_check.php:210
|
4485 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:
|
4486 |
#: classes/gateways/class.pmprogateway_payflowpro.php:164
|
4487 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
4488 |
#: classes/gateways/class.pmprogateway.php:55
|
4489 |
#: classes/gateways/class.pmprogateway_authorizenet.php:55
|
4490 |
#: classes/gateways/class.pmprogateway_authorizenet.php:171
|
@@ -4511,12 +4600,12 @@ msgstr ""
|
|
4511 |
#: classes/gateways/class.pmprogateway_check.php:262
|
4512 |
#: classes/gateways/class.pmprogateway_check.php:267
|
4513 |
#: classes/gateways/class.pmprogateway_check.php:285
|
4514 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:
|
4515 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:
|
4516 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:
|
4517 |
#: classes/gateways/class.pmprogateway_payflowpro.php:187
|
4518 |
#: classes/gateways/class.pmprogateway_payflowpro.php:192
|
4519 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
4520 |
#: classes/gateways/class.pmprogateway.php:106
|
4521 |
#: classes/gateways/class.pmprogateway.php:111
|
4522 |
#: classes/gateways/class.pmprogateway.php:129
|
@@ -4557,7 +4646,7 @@ msgstr ""
|
|
4557 |
#: classes/gateways/class.pmprogateway.php:113
|
4558 |
#: classes/gateways/class.pmprogateway_authorizenet.php:228
|
4559 |
#: classes/gateways/class.pmprogateway_check.php:269
|
4560 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:
|
4561 |
#: classes/gateways/class.pmprogateway.php:113
|
4562 |
#: classes/gateways/class.pmprogateway_authorizenet.php:112
|
4563 |
#: classes/gateways/class.pmprogateway_authorizenet.php:228
|
@@ -4573,7 +4662,7 @@ msgid ""
|
|
4573 |
msgstr ""
|
4574 |
|
4575 |
#: classes/gateways/class.pmprogateway_authorizenet.php:39
|
4576 |
-
#: paid-memberships-pro.php:
|
4577 |
#: classes/gateways/class.pmprogateway_authorizenet.php:39
|
4578 |
#: paid-memberships-pro.php:122 paid-memberships-pro.php:123
|
4579 |
#: paid-memberships-pro.php:130 paid-memberships-pro.php:131
|
@@ -4581,6 +4670,7 @@ msgstr ""
|
|
4581 |
#: paid-memberships-pro.php:134 paid-memberships-pro.php:135
|
4582 |
#: paid-memberships-pro.php:136 paid-memberships-pro.php:137
|
4583 |
#: paid-memberships-pro.php:142 paid-memberships-pro.php:147
|
|
|
4584 |
msgid "Authorize.net"
|
4585 |
msgstr ""
|
4586 |
|
@@ -4639,7 +4729,7 @@ msgid "Attempting to load Braintree gateway: %s"
|
|
4639 |
msgstr ""
|
4640 |
|
4641 |
#: classes/gateways/class.pmprogateway_braintree.php:87
|
4642 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
4643 |
#: classes/gateways/class.pmprogateway_braintree.php:49
|
4644 |
#: classes/gateways/class.pmprogateway_braintree.php:62
|
4645 |
#: classes/gateways/class.pmprogateway_braintree.php:84
|
@@ -4670,8 +4760,8 @@ msgid ""
|
|
4670 |
"Settings (Keys, etc)."
|
4671 |
msgstr ""
|
4672 |
|
4673 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4674 |
-
#: paid-memberships-pro.php:
|
4675 |
#: classes/gateways/class.pmprogateway_braintree.php:63
|
4676 |
#: classes/gateways/class.pmprogateway_braintree.php:76
|
4677 |
#: classes/gateways/class.pmprogateway_braintree.php:77
|
@@ -4687,10 +4777,11 @@ msgstr ""
|
|
4687 |
#: paid-memberships-pro.php:135 paid-memberships-pro.php:136
|
4688 |
#: paid-memberships-pro.php:137 paid-memberships-pro.php:138
|
4689 |
#: paid-memberships-pro.php:143 paid-memberships-pro.php:148
|
|
|
4690 |
msgid "Braintree Payments"
|
4691 |
msgstr ""
|
4692 |
|
4693 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4694 |
#: classes/gateways/class.pmprogateway_braintree.php:119
|
4695 |
#: classes/gateways/class.pmprogateway_braintree.php:132
|
4696 |
#: classes/gateways/class.pmprogateway_braintree.php:133
|
@@ -4703,8 +4794,8 @@ msgstr ""
|
|
4703 |
msgid "Braintree Settings"
|
4704 |
msgstr ""
|
4705 |
|
4706 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4707 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:
|
4708 |
#: adminpages/paymentsettings.php:294 adminpages/paymentsettings.php:298
|
4709 |
#: adminpages/paymentsettings.php:303 adminpages/paymentsettings.php:364
|
4710 |
#: adminpages/paymentsettings.php:369
|
@@ -4721,7 +4812,7 @@ msgstr ""
|
|
4721 |
msgid "Merchant ID"
|
4722 |
msgstr ""
|
4723 |
|
4724 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4725 |
#: adminpages/paymentsettings.php:302 adminpages/paymentsettings.php:306
|
4726 |
#: adminpages/paymentsettings.php:311
|
4727 |
#: classes/gateways/class.pmprogateway_braintree.php:132
|
@@ -4736,7 +4827,7 @@ msgstr ""
|
|
4736 |
msgid "Public Key"
|
4737 |
msgstr ""
|
4738 |
|
4739 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4740 |
#: adminpages/paymentsettings.php:310 adminpages/paymentsettings.php:314
|
4741 |
#: adminpages/paymentsettings.php:319
|
4742 |
#: classes/gateways/class.pmprogateway_braintree.php:140
|
@@ -4751,7 +4842,7 @@ msgstr ""
|
|
4751 |
msgid "Private Key"
|
4752 |
msgstr ""
|
4753 |
|
4754 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4755 |
#: adminpages/paymentsettings.php:318 adminpages/paymentsettings.php:322
|
4756 |
#: adminpages/paymentsettings.php:327
|
4757 |
#: classes/gateways/class.pmprogateway_braintree.php:148
|
@@ -4766,8 +4857,8 @@ msgstr ""
|
|
4766 |
msgid "Client-Side Encryption Key"
|
4767 |
msgstr ""
|
4768 |
|
4769 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4770 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
4771 |
#: adminpages/paymentsettings.php:462 adminpages/paymentsettings.php:470
|
4772 |
#: adminpages/paymentsettings.php:503 adminpages/paymentsettings.php:509
|
4773 |
#: adminpages/paymentsettings.php:511 adminpages/paymentsettings.php:517
|
@@ -4791,6 +4882,7 @@ msgstr ""
|
|
4791 |
#: classes/gateways/class.pmprogateway_stripe.php:230
|
4792 |
#: classes/gateways/class.pmprogateway_stripe.php:257
|
4793 |
#: classes/gateways/class.pmprogateway_stripe.php:289
|
|
|
4794 |
#: classes/gateways/class.pmprogateway_stripe.php:297
|
4795 |
#: classes/gateways/class.pmprogateway_stripe.php:299
|
4796 |
#: classes/gateways/class.pmprogateway_stripe.php:305
|
@@ -4798,7 +4890,7 @@ msgstr ""
|
|
4798 |
msgid "Web Hook URL"
|
4799 |
msgstr ""
|
4800 |
|
4801 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4802 |
#: adminpages/paymentsettings.php:474 adminpages/paymentsettings.php:515
|
4803 |
#: adminpages/paymentsettings.php:521 adminpages/paymentsettings.php:523
|
4804 |
#: classes/gateways/class.pmprogateway_braintree.php:160
|
@@ -4813,8 +4905,8 @@ msgstr ""
|
|
4813 |
msgid "To fully integrate with Braintree, be sure to set your Web Hook URL to"
|
4814 |
msgstr ""
|
4815 |
|
4816 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4817 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
4818 |
#: classes/gateways/class.pmprogateway_braintree.php:270
|
4819 |
#: classes/gateways/class.pmprogateway_braintree.php:283
|
4820 |
#: classes/gateways/class.pmprogateway_braintree.php:285
|
@@ -4839,6 +4931,7 @@ msgstr ""
|
|
4839 |
#: classes/gateways/class.pmprogateway_stripe.php:461
|
4840 |
#: classes/gateways/class.pmprogateway_stripe.php:499
|
4841 |
#: classes/gateways/class.pmprogateway_stripe.php:526
|
|
|
4842 |
#: classes/gateways/class.pmprogateway_stripe.php:561
|
4843 |
#: classes/gateways/class.pmprogateway_stripe.php:569
|
4844 |
#: classes/gateways/class.pmprogateway_stripe.php:576
|
@@ -4851,8 +4944,8 @@ msgstr ""
|
|
4851 |
msgid "Payment Information"
|
4852 |
msgstr ""
|
4853 |
|
4854 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4855 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
4856 |
#: classes/gateways/class.pmprogateway_braintree.php:270
|
4857 |
#: classes/gateways/class.pmprogateway_braintree.php:283
|
4858 |
#: classes/gateways/class.pmprogateway_braintree.php:285
|
@@ -4877,6 +4970,7 @@ msgstr ""
|
|
4877 |
#: classes/gateways/class.pmprogateway_stripe.php:462
|
4878 |
#: classes/gateways/class.pmprogateway_stripe.php:500
|
4879 |
#: classes/gateways/class.pmprogateway_stripe.php:527
|
|
|
4880 |
#: classes/gateways/class.pmprogateway_stripe.php:562
|
4881 |
#: classes/gateways/class.pmprogateway_stripe.php:570
|
4882 |
#: classes/gateways/class.pmprogateway_stripe.php:577
|
@@ -4890,9 +4984,9 @@ msgstr ""
|
|
4890 |
msgid "We Accept %s"
|
4891 |
msgstr ""
|
4892 |
|
4893 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4894 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
4895 |
-
#: pages/checkout.php:
|
4896 |
#: classes/gateways/class.pmprogateway_braintree.php:316
|
4897 |
#: classes/gateways/class.pmprogateway_braintree.php:318
|
4898 |
#: classes/gateways/class.pmprogateway_braintree.php:321
|
@@ -4915,6 +5009,7 @@ msgstr ""
|
|
4915 |
#: classes/gateways/class.pmprogateway_stripe.php:527
|
4916 |
#: classes/gateways/class.pmprogateway_stripe.php:565
|
4917 |
#: classes/gateways/class.pmprogateway_stripe.php:592
|
|
|
4918 |
#: classes/gateways/class.pmprogateway_stripe.php:609
|
4919 |
#: classes/gateways/class.pmprogateway_stripe.php:617
|
4920 |
#: classes/gateways/class.pmprogateway_stripe.php:624
|
@@ -4931,7 +5026,7 @@ msgstr ""
|
|
4931 |
msgid "Card Number"
|
4932 |
msgstr ""
|
4933 |
|
4934 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4935 |
#: classes/gateways/class.pmprogateway_braintree.php:340
|
4936 |
#: classes/gateways/class.pmprogateway_braintree.php:353
|
4937 |
#: classes/gateways/class.pmprogateway_braintree.php:355
|
@@ -4966,9 +5061,8 @@ msgstr ""
|
|
4966 |
msgid "CVV"
|
4967 |
msgstr ""
|
4968 |
|
4969 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
4970 |
-
#: classes/gateways/class.
|
4971 |
-
#: pages/checkout.php:501 classes/gateways/class.pmprogateway_braintree.php:341
|
4972 |
#: classes/gateways/class.pmprogateway_braintree.php:354
|
4973 |
#: classes/gateways/class.pmprogateway_braintree.php:356
|
4974 |
#: classes/gateways/class.pmprogateway_braintree.php:359
|
@@ -4990,6 +5084,7 @@ msgstr ""
|
|
4990 |
#: classes/gateways/class.pmprogateway_stripe.php:554
|
4991 |
#: classes/gateways/class.pmprogateway_stripe.php:565
|
4992 |
#: classes/gateways/class.pmprogateway_stripe.php:603
|
|
|
4993 |
#: classes/gateways/class.pmprogateway_stripe.php:630
|
4994 |
#: classes/gateways/class.pmprogateway_stripe.php:639
|
4995 |
#: classes/gateways/class.pmprogateway_stripe.php:647
|
@@ -5008,9 +5103,9 @@ msgstr ""
|
|
5008 |
msgid "what's this?"
|
5009 |
msgstr ""
|
5010 |
|
5011 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5012 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5013 |
-
#: pages/checkout.php:
|
5014 |
#: classes/gateways/class.pmprogateway_braintree.php:364
|
5015 |
#: classes/gateways/class.pmprogateway_braintree.php:366
|
5016 |
#: classes/gateways/class.pmprogateway_braintree.php:369
|
@@ -5033,6 +5128,7 @@ msgstr ""
|
|
5033 |
#: classes/gateways/class.pmprogateway_stripe.php:564
|
5034 |
#: classes/gateways/class.pmprogateway_stripe.php:575
|
5035 |
#: classes/gateways/class.pmprogateway_stripe.php:613
|
|
|
5036 |
#: classes/gateways/class.pmprogateway_stripe.php:640
|
5037 |
#: classes/gateways/class.pmprogateway_stripe.php:646
|
5038 |
#: classes/gateways/class.pmprogateway_stripe.php:654
|
@@ -5049,12 +5145,12 @@ msgstr ""
|
|
5049 |
msgid "Apply"
|
5050 |
msgstr ""
|
5051 |
|
5052 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5053 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5054 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5055 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5056 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5057 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5058 |
#: classes/gateways/class.pmprogateway_braintree.php:509
|
5059 |
#: classes/gateways/class.pmprogateway_braintree.php:524
|
5060 |
#: classes/gateways/class.pmprogateway_braintree.php:526
|
@@ -5088,8 +5184,7 @@ msgstr ""
|
|
5088 |
msgid "Payment error: Please contact the webmaster (braintree-load-error)"
|
5089 |
msgstr ""
|
5090 |
|
5091 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5092 |
-
#: classes/gateways/class.pmprogateway_stripe.php:1094
|
5093 |
#: classes/gateways/class.pmprogateway_braintree.php:61
|
5094 |
#: classes/gateways/class.pmprogateway_braintree.php:406
|
5095 |
#: classes/gateways/class.pmprogateway_braintree.php:419
|
@@ -5126,7 +5221,7 @@ msgstr ""
|
|
5126 |
msgid "Unknown error: Initial payment failed."
|
5127 |
msgstr ""
|
5128 |
|
5129 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5130 |
#: classes/gateways/class.pmprogateway_braintree.php:120
|
5131 |
#: classes/gateways/class.pmprogateway_braintree.php:465
|
5132 |
#: classes/gateways/class.pmprogateway_braintree.php:478
|
@@ -5143,7 +5238,7 @@ msgstr ""
|
|
5143 |
msgid "Error during settlement:"
|
5144 |
msgstr ""
|
5145 |
|
5146 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5147 |
#: classes/gateways/class.pmprogateway_braintree.php:129
|
5148 |
#: classes/gateways/class.pmprogateway_braintree.php:474
|
5149 |
#: classes/gateways/class.pmprogateway_braintree.php:487
|
@@ -5160,7 +5255,7 @@ msgstr ""
|
|
5160 |
msgid "Error during charge:"
|
5161 |
msgstr ""
|
5162 |
|
5163 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5164 |
#: classes/gateways/class.pmprogateway_braintree.php:690
|
5165 |
#: classes/gateways/class.pmprogateway_braintree.php:731
|
5166 |
#: classes/gateways/class.pmprogateway_braintree.php:757
|
@@ -5169,7 +5264,7 @@ msgstr ""
|
|
5169 |
msgid "Failed to update customer: %s"
|
5170 |
msgstr ""
|
5171 |
|
5172 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5173 |
#: classes/gateways/class.pmprogateway_braintree.php:198
|
5174 |
#: classes/gateways/class.pmprogateway_braintree.php:221
|
5175 |
#: classes/gateways/class.pmprogateway_braintree.php:566
|
@@ -5187,7 +5282,7 @@ msgstr ""
|
|
5187 |
msgid "Failed to update customer."
|
5188 |
msgstr ""
|
5189 |
|
5190 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5191 |
#: classes/gateways/class.pmprogateway_braintree.php:246
|
5192 |
#: classes/gateways/class.pmprogateway_braintree.php:269
|
5193 |
#: classes/gateways/class.pmprogateway_braintree.php:614
|
@@ -5205,7 +5300,7 @@ msgstr ""
|
|
5205 |
msgid "Failed to create customer."
|
5206 |
msgstr ""
|
5207 |
|
5208 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5209 |
#: classes/gateways/class.pmprogateway_braintree.php:253
|
5210 |
#: classes/gateways/class.pmprogateway_braintree.php:276
|
5211 |
#: classes/gateways/class.pmprogateway_braintree.php:621
|
@@ -5223,27 +5318,27 @@ msgstr ""
|
|
5223 |
msgid "Error creating customer record with Braintree:"
|
5224 |
msgstr ""
|
5225 |
|
5226 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5227 |
#: classes/gateways/class.pmprogateway_braintree.php:940
|
5228 |
#, php-format
|
5229 |
msgid "Error subscribing customer to plan with Braintree: %s (%s)"
|
5230 |
msgstr ""
|
5231 |
|
5232 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5233 |
#: classes/gateways/class.pmprogateway_braintree.php:955
|
5234 |
#, php-format
|
5235 |
msgid "Failed to subscribe with Braintree: %s"
|
5236 |
msgstr ""
|
5237 |
|
5238 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5239 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5240 |
#: classes/gateways/class.pmprogateway_braintree.php:1026
|
5241 |
#: classes/gateways/class.pmprogateway_braintree.php:1037
|
5242 |
#, php-format
|
5243 |
msgid "Could not find the subscription. %s"
|
5244 |
msgstr ""
|
5245 |
|
5246 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
5247 |
#: classes/gateways/class.pmprogateway_braintree.php:397
|
5248 |
#: classes/gateways/class.pmprogateway_braintree.php:398
|
5249 |
#: classes/gateways/class.pmprogateway_braintree.php:410
|
@@ -5298,69 +5393,367 @@ msgstr ""
|
|
5298 |
msgid "Could not find the subscription."
|
5299 |
msgstr ""
|
5300 |
|
5301 |
-
#: classes/gateways/class.pmprogateway_check.php:49
|
5302 |
-
#: paid-memberships-pro.php:
|
5303 |
-
#: adminpages/orders.php:449 adminpages/paymentsettings.php:157
|
5304 |
-
#: adminpages/paymentsettings.php:159
|
5305 |
-
#: classes/gateways/class.pmprogateway_check.php:48
|
5306 |
-
#: classes/gateways/class.pmprogateway_check.php:49
|
5307 |
-
#: paid-memberships-pro.php:116 paid-memberships-pro.php:117
|
5308 |
-
#: paid-memberships-pro.php:124 paid-memberships-pro.php:125
|
5309 |
-
#: paid-memberships-pro.php:126 paid-memberships-pro.php:127
|
5310 |
-
#: paid-memberships-pro.php:128 paid-memberships-pro.php:129
|
5311 |
-
#: paid-memberships-pro.php:130 paid-memberships-pro.php:131
|
5312 |
-
#: paid-memberships-pro.php:136 paid-memberships-pro.php:141
|
5313 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5314 |
msgstr ""
|
5315 |
|
5316 |
-
#: classes/gateways/class.
|
5317 |
-
|
5318 |
-
|
5319 |
-
|
5320 |
msgstr ""
|
5321 |
|
5322 |
-
#: classes/gateways/class.
|
5323 |
-
|
5324 |
-
|
5325 |
-
#: classes/gateways/class.pmprogateway_check.php:105
|
5326 |
-
#: classes/gateways/class.pmprogateway_check.php:106
|
5327 |
-
msgid "Instructions"
|
5328 |
msgstr ""
|
5329 |
|
5330 |
-
#: classes/gateways/class.
|
5331 |
-
#: adminpages/paymentsettings.php:393 adminpages/paymentsettings.php:419
|
5332 |
-
#: adminpages/paymentsettings.php:424 adminpages/paymentsettings.php:426
|
5333 |
-
#: classes/gateways/class.pmprogateway_check.php:109
|
5334 |
-
#: classes/gateways/class.pmprogateway_check.php:110
|
5335 |
msgid ""
|
5336 |
-
"
|
5337 |
-
"
|
5338 |
msgstr ""
|
5339 |
|
5340 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:
|
5341 |
-
|
5342 |
-
|
|
|
5343 |
msgstr ""
|
5344 |
|
5345 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:
|
5346 |
-
|
5347 |
-
msgid "CyberSource Settings"
|
5348 |
msgstr ""
|
5349 |
|
5350 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:
|
5351 |
-
#: adminpages/paymentsettings.php:174
|
5352 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:101
|
5353 |
msgid ""
|
5354 |
-
"
|
5355 |
-
"
|
5356 |
-
"<strong>Please be sure to upgrade Paid Memberships Pro to the latest "
|
5357 |
-
"versions when available.</strong>"
|
5358 |
msgstr ""
|
5359 |
|
5360 |
-
#: classes/gateways/class.pmprogateway_cybersource.php:
|
5361 |
-
|
5362 |
-
|
5363 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5364 |
msgstr ""
|
5365 |
|
5366 |
#: classes/gateways/class.pmprogateway_payflowpro.php:39
|
@@ -5388,7 +5781,7 @@ msgid "Vendor"
|
|
5388 |
msgstr ""
|
5389 |
|
5390 |
#: classes/gateways/class.pmprogateway_payflowpro.php:124
|
5391 |
-
#: pages/checkout.php:
|
5392 |
#: adminpages/paymentsettings.php:223 adminpages/paymentsettings.php:228
|
5393 |
#: classes/gateways/class.pmprogateway_payflowpro.php:124
|
5394 |
#: pages/checkout.php:176 pages/checkout.php:177 pages/checkout.php:180
|
@@ -5412,7 +5805,7 @@ msgid ""
|
|
5412 |
msgstr ""
|
5413 |
|
5414 |
#: classes/gateways/class.pmprogateway_payflowpro.php:194
|
5415 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5416 |
#: classes/gateways/class.pmprogateway_payflowpro.php:57
|
5417 |
#: classes/gateways/class.pmprogateway_payflowpro.php:194
|
5418 |
#: classes/gateways/class.pmprogateway_paypal.php:57
|
@@ -5425,7 +5818,7 @@ msgid ""
|
|
5425 |
msgstr ""
|
5426 |
|
5427 |
#: classes/gateways/class.pmprogateway_paypal.php:68
|
5428 |
-
#: paid-memberships-pro.php:
|
5429 |
#: classes/gateways/class.pmprogateway_paypal.php:57
|
5430 |
#: classes/gateways/class.pmprogateway_paypal.php:68
|
5431 |
#: paid-memberships-pro.php:119 paid-memberships-pro.php:120
|
@@ -5434,10 +5827,11 @@ msgstr ""
|
|
5434 |
#: paid-memberships-pro.php:131 paid-memberships-pro.php:132
|
5435 |
#: paid-memberships-pro.php:133 paid-memberships-pro.php:134
|
5436 |
#: paid-memberships-pro.php:139 paid-memberships-pro.php:144
|
|
|
5437 |
msgid "PayPal Website Payments Pro"
|
5438 |
msgstr ""
|
5439 |
|
5440 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5441 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:140
|
5442 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:132
|
5443 |
#: classes/gateways/class.pmprogateway_paypal.php:113
|
@@ -5450,7 +5844,7 @@ msgstr ""
|
|
5450 |
msgid "PayPal Settings"
|
5451 |
msgstr ""
|
5452 |
|
5453 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5454 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:145
|
5455 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:137
|
5456 |
#: adminpages/paymentsettings.php:179
|
@@ -5469,7 +5863,7 @@ msgid ""
|
|
5469 |
"here.</a>"
|
5470 |
msgstr ""
|
5471 |
|
5472 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5473 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:150
|
5474 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:142
|
5475 |
#: adminpages/paymentsettings.php:227 adminpages/paymentsettings.php:231
|
@@ -5484,7 +5878,7 @@ msgstr ""
|
|
5484 |
msgid "Gateway Account Email"
|
5485 |
msgstr ""
|
5486 |
|
5487 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5488 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:158
|
5489 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:150
|
5490 |
#: classes/gateways/class.pmprogateway_twocheckout.php:119
|
@@ -5504,7 +5898,7 @@ msgstr ""
|
|
5504 |
msgid "API Username"
|
5505 |
msgstr ""
|
5506 |
|
5507 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5508 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:166
|
5509 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:158
|
5510 |
#: classes/gateways/class.pmprogateway_twocheckout.php:128
|
@@ -5524,7 +5918,7 @@ msgstr ""
|
|
5524 |
msgid "API Password"
|
5525 |
msgstr ""
|
5526 |
|
5527 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5528 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:174
|
5529 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:166
|
5530 |
#: adminpages/paymentsettings.php:251 adminpages/paymentsettings.php:255
|
@@ -5539,14 +5933,14 @@ msgstr ""
|
|
5539 |
msgid "API Signature"
|
5540 |
msgstr ""
|
5541 |
|
5542 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5543 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:182
|
5544 |
#: classes/gateways/class.pmprogateway_paypal.php:167
|
5545 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:182
|
5546 |
msgid "Confirmation Step"
|
5547 |
msgstr ""
|
5548 |
|
5549 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5550 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:193
|
5551 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:174
|
5552 |
#: adminpages/paymentsettings.php:446 adminpages/paymentsettings.php:479
|
@@ -5561,7 +5955,7 @@ msgstr ""
|
|
5561 |
msgid "IPN Handler URL"
|
5562 |
msgstr ""
|
5563 |
|
5564 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5565 |
#: classes/gateways/class.pmprogateway_paypal.php:158
|
5566 |
#: classes/gateways/class.pmprogateway_paypal.php:181
|
5567 |
msgid ""
|
@@ -5569,10 +5963,10 @@ msgid ""
|
|
5569 |
"SHOULD NOT set this in your PayPal account settings."
|
5570 |
msgstr ""
|
5571 |
|
5572 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5573 |
-
#: classes/gateways/class.pmprogateway_paypalexpress.php:
|
5574 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:229
|
5575 |
-
#: pages/checkout.php:
|
5576 |
#: classes/gateways/class.pmprogateway_paypal.php:201
|
5577 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:402
|
5578 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:412
|
@@ -5590,10 +5984,10 @@ msgstr ""
|
|
5590 |
msgid "Check Out with PayPal"
|
5591 |
msgstr ""
|
5592 |
|
5593 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5594 |
-
#: classes/gateways/class.pmprogateway_paypalexpress.php:
|
5595 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:234
|
5596 |
-
#: pages/checkout.php:
|
5597 |
#: classes/gateways/class.pmprogateway_paypal.php:207
|
5598 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:408
|
5599 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:418
|
@@ -5611,11 +6005,11 @@ msgstr ""
|
|
5611 |
msgid "Submit and Check Out"
|
5612 |
msgstr ""
|
5613 |
|
5614 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5615 |
-
#: classes/gateways/class.pmprogateway_paypalexpress.php:
|
5616 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:234
|
5617 |
#: classes/gateways/class.pmprogateway_twocheckout.php:203
|
5618 |
-
#: pages/checkout.php:
|
5619 |
#: classes/gateways/class.pmprogateway_paypal.php:207
|
5620 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:408
|
5621 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:418
|
@@ -5636,8 +6030,8 @@ msgstr ""
|
|
5636 |
msgid "Submit and Confirm"
|
5637 |
msgstr ""
|
5638 |
|
5639 |
-
#: classes/gateways/class.pmprogateway_paypal.php:
|
5640 |
-
#: classes/gateways/class.pmprogateway_paypalexpress.php:
|
5641 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:575
|
5642 |
#: classes/gateways/class.pmprogateway_paypal.php:385
|
5643 |
#: classes/gateways/class.pmprogateway_paypal.php:605
|
@@ -5668,7 +6062,7 @@ msgid ""
|
|
5668 |
msgstr ""
|
5669 |
|
5670 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:84
|
5671 |
-
#: paid-memberships-pro.php:
|
5672 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:63
|
5673 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:73
|
5674 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:84
|
@@ -5678,6 +6072,7 @@ msgstr ""
|
|
5678 |
#: paid-memberships-pro.php:130 paid-memberships-pro.php:131
|
5679 |
#: paid-memberships-pro.php:132 paid-memberships-pro.php:133
|
5680 |
#: paid-memberships-pro.php:138 paid-memberships-pro.php:143
|
|
|
5681 |
msgid "PayPal Express"
|
5682 |
msgstr ""
|
5683 |
|
@@ -5690,8 +6085,8 @@ msgstr ""
|
|
5690 |
msgid "To fully integrate with PayPal, be sure to set your IPN Handler URL to "
|
5691 |
msgstr ""
|
5692 |
|
5693 |
-
#: classes/gateways/class.pmprogateway_paypalexpress.php:
|
5694 |
-
#: classes/gateways/class.pmprogateway_paypalexpress.php:
|
5695 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:268
|
5696 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:278
|
5697 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:301
|
@@ -5711,7 +6106,7 @@ msgid "The PayPal Token was lost."
|
|
5711 |
msgstr ""
|
5712 |
|
5713 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:71
|
5714 |
-
#: paid-memberships-pro.php:
|
5715 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:60
|
5716 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:71
|
5717 |
#: paid-memberships-pro.php:121 paid-memberships-pro.php:122
|
@@ -5720,6 +6115,7 @@ msgstr ""
|
|
5720 |
#: paid-memberships-pro.php:133 paid-memberships-pro.php:134
|
5721 |
#: paid-memberships-pro.php:135 paid-memberships-pro.php:136
|
5722 |
#: paid-memberships-pro.php:141 paid-memberships-pro.php:146
|
|
|
5723 |
msgid "PayPal Standard"
|
5724 |
msgstr ""
|
5725 |
|
@@ -5736,8 +6132,8 @@ msgstr ""
|
|
5736 |
msgid "User requested cancellation"
|
5737 |
msgstr ""
|
5738 |
|
5739 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5740 |
-
#: paid-memberships-pro.php:
|
5741 |
#: classes/gateways/class.pmprogateway_stripe.php:93
|
5742 |
#: classes/gateways/class.pmprogateway_stripe.php:94
|
5743 |
#: classes/gateways/class.pmprogateway_stripe.php:104
|
@@ -5747,6 +6143,7 @@ msgstr ""
|
|
5747 |
#: classes/gateways/class.pmprogateway_stripe.php:140
|
5748 |
#: classes/gateways/class.pmprogateway_stripe.php:142
|
5749 |
#: classes/gateways/class.pmprogateway_stripe.php:169
|
|
|
5750 |
#: classes/gateways/class.pmprogateway_stripe.php:201
|
5751 |
#: classes/gateways/class.pmprogateway_stripe.php:203
|
5752 |
#: paid-memberships-pro.php:117 paid-memberships-pro.php:118
|
@@ -5755,10 +6152,11 @@ msgstr ""
|
|
5755 |
#: paid-memberships-pro.php:129 paid-memberships-pro.php:130
|
5756 |
#: paid-memberships-pro.php:131 paid-memberships-pro.php:132
|
5757 |
#: paid-memberships-pro.php:137 paid-memberships-pro.php:142
|
|
|
5758 |
msgid "Stripe"
|
5759 |
msgstr ""
|
5760 |
|
5761 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5762 |
#: classes/gateways/class.pmprogateway_stripe.php:148
|
5763 |
#: classes/gateways/class.pmprogateway_stripe.php:149
|
5764 |
#: classes/gateways/class.pmprogateway_stripe.php:159
|
@@ -5768,12 +6166,13 @@ msgstr ""
|
|
5768 |
#: classes/gateways/class.pmprogateway_stripe.php:195
|
5769 |
#: classes/gateways/class.pmprogateway_stripe.php:197
|
5770 |
#: classes/gateways/class.pmprogateway_stripe.php:224
|
|
|
5771 |
#: classes/gateways/class.pmprogateway_stripe.php:256
|
5772 |
#: classes/gateways/class.pmprogateway_stripe.php:258
|
5773 |
msgid "Stripe Settings"
|
5774 |
msgstr ""
|
5775 |
|
5776 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5777 |
#: adminpages/paymentsettings.php:285 adminpages/paymentsettings.php:289
|
5778 |
#: adminpages/paymentsettings.php:294
|
5779 |
#: classes/gateways/class.pmprogateway_stripe.php:161
|
@@ -5785,19 +6184,21 @@ msgstr ""
|
|
5785 |
#: classes/gateways/class.pmprogateway_stripe.php:208
|
5786 |
#: classes/gateways/class.pmprogateway_stripe.php:210
|
5787 |
#: classes/gateways/class.pmprogateway_stripe.php:237
|
|
|
5788 |
#: classes/gateways/class.pmprogateway_stripe.php:261
|
5789 |
#: classes/gateways/class.pmprogateway_stripe.php:263
|
5790 |
#: classes/gateways/class.pmprogateway_stripe.php:269
|
5791 |
msgid "Publishable Key"
|
5792 |
msgstr ""
|
5793 |
|
|
|
5794 |
#: classes/gateways/class.pmprogateway_stripe.php:263
|
5795 |
#: classes/gateways/class.pmprogateway_stripe.php:269
|
5796 |
#: classes/gateways/class.pmprogateway_stripe.php:271
|
5797 |
msgid "Your Publishable Key appears incorrect."
|
5798 |
msgstr ""
|
5799 |
|
5800 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5801 |
#: adminpages/paymentsettings.php:277 adminpages/paymentsettings.php:281
|
5802 |
#: adminpages/paymentsettings.php:286
|
5803 |
#: classes/gateways/class.pmprogateway_stripe.php:153
|
@@ -5810,12 +6211,13 @@ msgstr ""
|
|
5810 |
#: classes/gateways/class.pmprogateway_stripe.php:202
|
5811 |
#: classes/gateways/class.pmprogateway_stripe.php:229
|
5812 |
#: classes/gateways/class.pmprogateway_stripe.php:261
|
|
|
5813 |
#: classes/gateways/class.pmprogateway_stripe.php:277
|
5814 |
#: classes/gateways/class.pmprogateway_stripe.php:279
|
5815 |
msgid "Secret Key"
|
5816 |
msgstr ""
|
5817 |
|
5818 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5819 |
#: adminpages/paymentsettings.php:425 adminpages/paymentsettings.php:430
|
5820 |
#: adminpages/paymentsettings.php:432
|
5821 |
#: classes/gateways/class.pmprogateway_stripe.php:169
|
@@ -5828,6 +6230,7 @@ msgstr ""
|
|
5828 |
#: classes/gateways/class.pmprogateway_stripe.php:218
|
5829 |
#: classes/gateways/class.pmprogateway_stripe.php:245
|
5830 |
#: classes/gateways/class.pmprogateway_stripe.php:277
|
|
|
5831 |
#: classes/gateways/class.pmprogateway_stripe.php:285
|
5832 |
#: classes/gateways/class.pmprogateway_stripe.php:287
|
5833 |
#: classes/gateways/class.pmprogateway_stripe.php:293
|
@@ -5835,7 +6238,7 @@ msgstr ""
|
|
5835 |
msgid "Show Billing Address Fields"
|
5836 |
msgstr ""
|
5837 |
|
5838 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5839 |
#: adminpages/paymentsettings.php:437 adminpages/paymentsettings.php:439
|
5840 |
#: classes/gateways/class.pmprogateway_stripe.php:176
|
5841 |
#: classes/gateways/class.pmprogateway_stripe.php:177
|
@@ -5847,6 +6250,7 @@ msgstr ""
|
|
5847 |
#: classes/gateways/class.pmprogateway_stripe.php:225
|
5848 |
#: classes/gateways/class.pmprogateway_stripe.php:252
|
5849 |
#: classes/gateways/class.pmprogateway_stripe.php:284
|
|
|
5850 |
#: classes/gateways/class.pmprogateway_stripe.php:292
|
5851 |
#: classes/gateways/class.pmprogateway_stripe.php:294
|
5852 |
#: classes/gateways/class.pmprogateway_stripe.php:300
|
@@ -5857,7 +6261,7 @@ msgid ""
|
|
5857 |
"verification in the Stripe dashboard settings.</strong>"
|
5858 |
msgstr ""
|
5859 |
|
5860 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5861 |
#: adminpages/paymentsettings.php:465 adminpages/paymentsettings.php:506
|
5862 |
#: adminpages/paymentsettings.php:512 adminpages/paymentsettings.php:514
|
5863 |
#: classes/gateways/class.pmprogateway_stripe.php:184
|
@@ -5870,6 +6274,7 @@ msgstr ""
|
|
5870 |
#: classes/gateways/class.pmprogateway_stripe.php:233
|
5871 |
#: classes/gateways/class.pmprogateway_stripe.php:260
|
5872 |
#: classes/gateways/class.pmprogateway_stripe.php:292
|
|
|
5873 |
#: classes/gateways/class.pmprogateway_stripe.php:300
|
5874 |
#: classes/gateways/class.pmprogateway_stripe.php:302
|
5875 |
#: classes/gateways/class.pmprogateway_stripe.php:308
|
@@ -5877,21 +6282,21 @@ msgstr ""
|
|
5877 |
msgid "To fully integrate with Stripe, be sure to set your Web Hook URL to"
|
5878 |
msgstr ""
|
5879 |
|
|
|
5880 |
#: classes/gateways/class.pmprogateway_stripe.php:299
|
5881 |
#: classes/gateways/class.pmprogateway_stripe.php:307
|
5882 |
msgid "Stripe API Version"
|
5883 |
msgstr ""
|
5884 |
|
5885 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5886 |
-
|
5887 |
-
#: classes/gateways/class.pmprogateway_stripe.php:646
|
5888 |
-
#: classes/gateways/class.pmprogateway_stripe.php:653
|
5889 |
-
#: classes/gateways/class.pmprogateway_stripe.php:654
|
5890 |
-
#: classes/gateways/class.pmprogateway_stripe.php:655 pages/checkout.php:492
|
5891 |
-
#: pages/checkout.php:500
|
5892 |
-
msgid "Security Code (CVC)"
|
5893 |
msgstr ""
|
5894 |
|
|
|
|
|
|
|
|
|
|
|
5895 |
#: classes/gateways/class.pmprogateway_stripe.php:693
|
5896 |
#: classes/gateways/class.pmprogateway_stripe.php:703
|
5897 |
#: classes/gateways/class.pmprogateway_stripe.php:710
|
@@ -5905,7 +6310,7 @@ msgid ""
|
|
5905 |
"have been deleted."
|
5906 |
msgstr ""
|
5907 |
|
5908 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5909 |
#: classes/gateways/class.pmprogateway_stripe.php:567
|
5910 |
#: classes/gateways/class.pmprogateway_stripe.php:568
|
5911 |
#: classes/gateways/class.pmprogateway_stripe.php:578
|
@@ -5917,6 +6322,7 @@ msgstr ""
|
|
5917 |
#: classes/gateways/class.pmprogateway_stripe.php:634
|
5918 |
#: classes/gateways/class.pmprogateway_stripe.php:645
|
5919 |
#: classes/gateways/class.pmprogateway_stripe.php:683
|
|
|
5920 |
#: classes/gateways/class.pmprogateway_stripe.php:710
|
5921 |
#: classes/gateways/class.pmprogateway_stripe.php:717
|
5922 |
#: classes/gateways/class.pmprogateway_stripe.php:725
|
@@ -5926,7 +6332,7 @@ msgstr ""
|
|
5926 |
msgid "Subscription Updates"
|
5927 |
msgstr ""
|
5928 |
|
5929 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5930 |
#: classes/gateways/class.pmprogateway_stripe.php:571
|
5931 |
#: classes/gateways/class.pmprogateway_stripe.php:572
|
5932 |
#: classes/gateways/class.pmprogateway_stripe.php:582
|
@@ -5938,6 +6344,7 @@ msgstr ""
|
|
5938 |
#: classes/gateways/class.pmprogateway_stripe.php:638
|
5939 |
#: classes/gateways/class.pmprogateway_stripe.php:649
|
5940 |
#: classes/gateways/class.pmprogateway_stripe.php:687
|
|
|
5941 |
#: classes/gateways/class.pmprogateway_stripe.php:714
|
5942 |
#: classes/gateways/class.pmprogateway_stripe.php:721
|
5943 |
#: classes/gateways/class.pmprogateway_stripe.php:729
|
@@ -5949,7 +6356,7 @@ msgid ""
|
|
5949 |
"at predefined times. Be sure to click Update Profile after making changes."
|
5950 |
msgstr ""
|
5951 |
|
5952 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5953 |
#: classes/gateways/class.pmprogateway_stripe.php:573
|
5954 |
#: classes/gateways/class.pmprogateway_stripe.php:574
|
5955 |
#: classes/gateways/class.pmprogateway_stripe.php:584
|
@@ -5961,6 +6368,7 @@ msgstr ""
|
|
5961 |
#: classes/gateways/class.pmprogateway_stripe.php:640
|
5962 |
#: classes/gateways/class.pmprogateway_stripe.php:651
|
5963 |
#: classes/gateways/class.pmprogateway_stripe.php:689
|
|
|
5964 |
#: classes/gateways/class.pmprogateway_stripe.php:716
|
5965 |
#: classes/gateways/class.pmprogateway_stripe.php:723
|
5966 |
#: classes/gateways/class.pmprogateway_stripe.php:731
|
@@ -5972,7 +6380,7 @@ msgid ""
|
|
5972 |
"at predefined times. Be sure to click Update User after making changes."
|
5973 |
msgstr ""
|
5974 |
|
5975 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
5976 |
#: classes/gateways/class.pmprogateway_stripe.php:578
|
5977 |
#: classes/gateways/class.pmprogateway_stripe.php:579
|
5978 |
#: classes/gateways/class.pmprogateway_stripe.php:589
|
@@ -5984,6 +6392,7 @@ msgstr ""
|
|
5984 |
#: classes/gateways/class.pmprogateway_stripe.php:645
|
5985 |
#: classes/gateways/class.pmprogateway_stripe.php:656
|
5986 |
#: classes/gateways/class.pmprogateway_stripe.php:694
|
|
|
5987 |
#: classes/gateways/class.pmprogateway_stripe.php:721
|
5988 |
#: classes/gateways/class.pmprogateway_stripe.php:728
|
5989 |
#: classes/gateways/class.pmprogateway_stripe.php:736
|
@@ -5998,17 +6407,8 @@ msgstr ""
|
|
5998 |
msgid "Update"
|
5999 |
msgstr ""
|
6000 |
|
6001 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
6002 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
6003 |
-
#: classes/gateways/class.pmprogateway_stripe.php:1127
|
6004 |
-
#: classes/gateways/class.pmprogateway_stripe.php:1134
|
6005 |
-
#: classes/gateways/class.pmprogateway_stripe.php:1135
|
6006 |
-
#: classes/gateways/class.pmprogateway_stripe.php:1136
|
6007 |
-
#: classes/gateways/class.pmprogateway_stripe.php:1142
|
6008 |
-
#: classes/gateways/class.pmprogateway_stripe.php:1172
|
6009 |
-
msgid "Payment error: Please contact the webmaster (stripe-load-error)"
|
6010 |
-
msgstr ""
|
6011 |
-
|
6012 |
#: classes/gateways/class.pmprogateway_stripe.php:1236
|
6013 |
#: classes/gateways/class.pmprogateway_stripe.php:1247
|
6014 |
#: classes/gateways/class.pmprogateway_stripe.php:1289
|
@@ -6019,7 +6419,7 @@ msgstr ""
|
|
6019 |
msgid "Error: %s"
|
6020 |
msgstr ""
|
6021 |
|
6022 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
6023 |
#: classes/gateways/class.pmprogateway_stripe.php:190
|
6024 |
#: classes/gateways/class.pmprogateway_stripe.php:192
|
6025 |
#: classes/gateways/class.pmprogateway_stripe.php:199
|
@@ -6036,6 +6436,7 @@ msgstr ""
|
|
6036 |
#: classes/gateways/class.pmprogateway_stripe.php:1260
|
6037 |
#: classes/gateways/class.pmprogateway_stripe.php:1300
|
6038 |
#: classes/gateways/class.pmprogateway_stripe.php:1303
|
|
|
6039 |
#: classes/gateways/class.pmprogateway_stripe.php:1325
|
6040 |
#: classes/gateways/class.pmprogateway_stripe.php:1326
|
6041 |
#: classes/gateways/class.pmprogateway_stripe.php:1336
|
@@ -6049,13 +6450,14 @@ msgstr ""
|
|
6049 |
msgid "Error creating customer record with Stripe:"
|
6050 |
msgstr ""
|
6051 |
|
6052 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
6053 |
#: classes/gateways/class.pmprogateway_stripe.php:1275
|
6054 |
#: classes/gateways/class.pmprogateway_stripe.php:1303
|
6055 |
#: classes/gateways/class.pmprogateway_stripe.php:1313
|
6056 |
#: classes/gateways/class.pmprogateway_stripe.php:1317
|
6057 |
#: classes/gateways/class.pmprogateway_stripe.php:1357
|
6058 |
#: classes/gateways/class.pmprogateway_stripe.php:1360
|
|
|
6059 |
#: classes/gateways/class.pmprogateway_stripe.php:1384
|
6060 |
#: classes/gateways/class.pmprogateway_stripe.php:1385
|
6061 |
#: classes/gateways/class.pmprogateway_stripe.php:1395
|
@@ -6069,7 +6471,7 @@ msgstr ""
|
|
6069 |
msgid "Error getting subscription with Stripe:"
|
6070 |
msgstr ""
|
6071 |
|
6072 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
6073 |
#: classes/gateways/class.pmprogateway_stripe.php:278
|
6074 |
#: classes/gateways/class.pmprogateway_stripe.php:279
|
6075 |
#: classes/gateways/class.pmprogateway_stripe.php:286
|
@@ -6094,6 +6496,7 @@ msgstr ""
|
|
6094 |
#: classes/gateways/class.pmprogateway_stripe.php:1467
|
6095 |
#: classes/gateways/class.pmprogateway_stripe.php:1507
|
6096 |
#: classes/gateways/class.pmprogateway_stripe.php:1510
|
|
|
6097 |
#: classes/gateways/class.pmprogateway_stripe.php:1540
|
6098 |
#: classes/gateways/class.pmprogateway_stripe.php:1541
|
6099 |
#: classes/gateways/class.pmprogateway_stripe.php:1551
|
@@ -6107,7 +6510,7 @@ msgstr ""
|
|
6107 |
msgid "Error creating plan with Stripe:"
|
6108 |
msgstr ""
|
6109 |
|
6110 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
6111 |
#: classes/gateways/class.pmprogateway_stripe.php:294
|
6112 |
#: classes/gateways/class.pmprogateway_stripe.php:295
|
6113 |
#: classes/gateways/class.pmprogateway_stripe.php:302
|
@@ -6127,6 +6530,7 @@ msgstr ""
|
|
6127 |
#: classes/gateways/class.pmprogateway_stripe.php:1498
|
6128 |
#: classes/gateways/class.pmprogateway_stripe.php:1538
|
6129 |
#: classes/gateways/class.pmprogateway_stripe.php:1541
|
|
|
6130 |
#: classes/gateways/class.pmprogateway_stripe.php:1571
|
6131 |
#: classes/gateways/class.pmprogateway_stripe.php:1572
|
6132 |
#: classes/gateways/class.pmprogateway_stripe.php:1582
|
@@ -6140,7 +6544,7 @@ msgstr ""
|
|
6140 |
msgid "Error subscribing customer to plan with Stripe:"
|
6141 |
msgstr ""
|
6142 |
|
6143 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
6144 |
#: classes/gateways/class.pmprogateway_stripe.php:769
|
6145 |
#: classes/gateways/class.pmprogateway_stripe.php:770
|
6146 |
#: classes/gateways/class.pmprogateway_stripe.php:780
|
@@ -6153,6 +6557,7 @@ msgstr ""
|
|
6153 |
#: classes/gateways/class.pmprogateway_stripe.php:849
|
6154 |
#: classes/gateways/class.pmprogateway_stripe.php:887
|
6155 |
#: classes/gateways/class.pmprogateway_stripe.php:914
|
|
|
6156 |
#: classes/gateways/class.pmprogateway_stripe.php:1698
|
6157 |
#: classes/gateways/class.pmprogateway_stripe.php:1706
|
6158 |
#: classes/gateways/class.pmprogateway_stripe.php:1714
|
@@ -6162,7 +6567,7 @@ msgstr ""
|
|
6162 |
msgid "Could not cancel the old subscription. Updates have not been processed."
|
6163 |
msgstr ""
|
6164 |
|
6165 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
6166 |
#: classes/gateways/class.pmprogateway_stripe.php:383
|
6167 |
#: classes/gateways/class.pmprogateway_stripe.php:389
|
6168 |
#: classes/gateways/class.pmprogateway_stripe.php:410
|
@@ -6183,6 +6588,7 @@ msgstr ""
|
|
6183 |
#: classes/gateways/class.pmprogateway_stripe.php:1668
|
6184 |
#: classes/gateways/class.pmprogateway_stripe.php:1678
|
6185 |
#: classes/gateways/class.pmprogateway_stripe.php:1716
|
|
|
6186 |
#: classes/gateways/class.pmprogateway_stripe.php:1752
|
6187 |
#: classes/gateways/class.pmprogateway_stripe.php:1801
|
6188 |
#: classes/gateways/class.pmprogateway_stripe.php:1809
|
@@ -6193,7 +6599,7 @@ msgstr ""
|
|
6193 |
msgid "Could not cancel old subscription."
|
6194 |
msgstr ""
|
6195 |
|
6196 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
6197 |
#: classes/gateways/class.pmprogateway_stripe.php:1533
|
6198 |
#: classes/gateways/class.pmprogateway_stripe.php:1534
|
6199 |
#: classes/gateways/class.pmprogateway_stripe.php:1535
|
@@ -6211,6 +6617,7 @@ msgstr ""
|
|
6211 |
#: classes/gateways/class.pmprogateway_stripe.php:1685
|
6212 |
#: classes/gateways/class.pmprogateway_stripe.php:1695
|
6213 |
#: classes/gateways/class.pmprogateway_stripe.php:1733
|
|
|
6214 |
#: classes/gateways/class.pmprogateway_stripe.php:1769
|
6215 |
#: classes/gateways/class.pmprogateway_stripe.php:1818
|
6216 |
#: classes/gateways/class.pmprogateway_stripe.php:1826
|
@@ -6221,11 +6628,12 @@ msgstr ""
|
|
6221 |
msgid "Could not find the customer."
|
6222 |
msgstr ""
|
6223 |
|
6224 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
6225 |
#: classes/gateways/class.pmprogateway_stripe.php:1836
|
6226 |
#: classes/gateways/class.pmprogateway_stripe.php:1837
|
6227 |
#: classes/gateways/class.pmprogateway_stripe.php:1847
|
6228 |
#: classes/gateways/class.pmprogateway_stripe.php:1885
|
|
|
6229 |
#: classes/gateways/class.pmprogateway_stripe.php:1921
|
6230 |
#: classes/gateways/class.pmprogateway_stripe.php:1978
|
6231 |
#: classes/gateways/class.pmprogateway_stripe.php:1986
|
@@ -6236,11 +6644,12 @@ msgstr ""
|
|
6236 |
msgid "Error: "
|
6237 |
msgstr ""
|
6238 |
|
6239 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
6240 |
#: classes/gateways/class.pmprogateway_stripe.php:1849
|
6241 |
#: classes/gateways/class.pmprogateway_stripe.php:1850
|
6242 |
#: classes/gateways/class.pmprogateway_stripe.php:1860
|
6243 |
#: classes/gateways/class.pmprogateway_stripe.php:1898
|
|
|
6244 |
#: classes/gateways/class.pmprogateway_stripe.php:1934
|
6245 |
#: classes/gateways/class.pmprogateway_stripe.php:1991
|
6246 |
#: classes/gateways/class.pmprogateway_stripe.php:1999
|
@@ -6252,8 +6661,20 @@ msgstr ""
|
|
6252 |
msgid "Error: Unkown error while refunding charge #%s"
|
6253 |
msgstr ""
|
6254 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6255 |
#: classes/gateways/class.pmprogateway_twocheckout.php:59
|
6256 |
-
#: paid-memberships-pro.php:
|
6257 |
#: classes/gateways/class.pmprogateway_twocheckout.php:53
|
6258 |
#: classes/gateways/class.pmprogateway_twocheckout.php:59
|
6259 |
#: classes/gateways/class.pmprogateway_twocheckout.php:60
|
@@ -6263,6 +6684,7 @@ msgstr ""
|
|
6263 |
#: paid-memberships-pro.php:136 paid-memberships-pro.php:137
|
6264 |
#: paid-memberships-pro.php:138 paid-memberships-pro.php:139
|
6265 |
#: paid-memberships-pro.php:144 paid-memberships-pro.php:149
|
|
|
6266 |
msgid "2Checkout"
|
6267 |
msgstr ""
|
6268 |
|
@@ -6462,6 +6884,20 @@ msgstr ""
|
|
6462 |
msgid "Visit Customer Support Forum"
|
6463 |
msgstr ""
|
6464 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6465 |
#: includes/countries.php:7 includes/countries.php:7
|
6466 |
msgid "Andorra"
|
6467 |
msgstr ""
|
@@ -7451,8 +7887,8 @@ msgstr ""
|
|
7451 |
msgid "US Armed Forces"
|
7452 |
msgstr ""
|
7453 |
|
7454 |
-
#: includes/currencies.php:7 includes/currencies.php:
|
7455 |
-
#: includes/currencies.php:
|
7456 |
#: includes/currencies.php:17 includes/currencies.php:37
|
7457 |
#: includes/currencies.php:44 includes/currencies.php:64
|
7458 |
#: includes/currencies.php:68 includes/currencies.php:75
|
@@ -7463,7 +7899,7 @@ msgstr ""
|
|
7463 |
msgid "US Dollars ($)"
|
7464 |
msgstr ""
|
7465 |
|
7466 |
-
#: includes/currencies.php:9 includes/currencies.php:
|
7467 |
#: includes/currencies.php:8 includes/currencies.php:9
|
7468 |
#: includes/currencies.php:19 includes/currencies.php:40
|
7469 |
#: includes/currencies.php:47 includes/currencies.php:67
|
@@ -7474,7 +7910,7 @@ msgstr ""
|
|
7474 |
msgid "Euros (€)"
|
7475 |
msgstr ""
|
7476 |
|
7477 |
-
#: includes/currencies.php:14 includes/currencies.php:
|
7478 |
#: includes/currencies.php:9 includes/currencies.php:14
|
7479 |
#: includes/currencies.php:24 includes/currencies.php:39
|
7480 |
#: includes/currencies.php:46 includes/currencies.php:66
|
@@ -7502,7 +7938,7 @@ msgstr ""
|
|
7502 |
msgid "Brazilian Real (R$)"
|
7503 |
msgstr ""
|
7504 |
|
7505 |
-
#: includes/currencies.php:25 includes/currencies.php:
|
7506 |
#: includes/currencies.php:12 includes/currencies.php:24
|
7507 |
#: includes/currencies.php:25 includes/currencies.php:34
|
7508 |
#: includes/currencies.php:35 includes/currencies.php:38
|
@@ -7645,7 +8081,7 @@ msgstr ""
|
|
7645 |
msgid "Russian Ruble (₽)"
|
7646 |
msgstr ""
|
7647 |
|
7648 |
-
#: includes/currencies.php:
|
7649 |
#: includes/currencies.php:28 includes/currencies.php:45
|
7650 |
#: includes/currencies.php:52 includes/currencies.php:62
|
7651 |
#: includes/currencies.php:64 includes/currencies.php:65
|
@@ -7654,7 +8090,7 @@ msgstr ""
|
|
7654 |
msgid "Singapore Dollar ($)"
|
7655 |
msgstr ""
|
7656 |
|
7657 |
-
#: includes/currencies.php:
|
7658 |
#: includes/currencies.php:57 includes/currencies.php:67
|
7659 |
#: includes/currencies.php:69 includes/currencies.php:70
|
7660 |
#: includes/currencies.php:73 includes/currencies.php:75
|
@@ -7662,7 +8098,7 @@ msgstr ""
|
|
7662 |
msgid "South African Rand (R)"
|
7663 |
msgstr ""
|
7664 |
|
7665 |
-
#: includes/currencies.php:
|
7666 |
#: includes/currencies.php:50 includes/currencies.php:54
|
7667 |
#: includes/currencies.php:61 includes/currencies.php:71
|
7668 |
#: includes/currencies.php:73 includes/currencies.php:75
|
@@ -7671,7 +8107,7 @@ msgstr ""
|
|
7671 |
msgid "South Korean Won"
|
7672 |
msgstr ""
|
7673 |
|
7674 |
-
#: includes/currencies.php:
|
7675 |
#: includes/currencies.php:31 includes/currencies.php:51
|
7676 |
#: includes/currencies.php:55 includes/currencies.php:62
|
7677 |
#: includes/currencies.php:72 includes/currencies.php:74
|
@@ -7680,7 +8116,7 @@ msgstr ""
|
|
7680 |
msgid "Swedish Krona"
|
7681 |
msgstr ""
|
7682 |
|
7683 |
-
#: includes/currencies.php:
|
7684 |
#: includes/currencies.php:32 includes/currencies.php:52
|
7685 |
#: includes/currencies.php:56 includes/currencies.php:63
|
7686 |
#: includes/currencies.php:73 includes/currencies.php:75
|
@@ -7689,7 +8125,7 @@ msgstr ""
|
|
7689 |
msgid "Swiss Franc"
|
7690 |
msgstr ""
|
7691 |
|
7692 |
-
#: includes/currencies.php:
|
7693 |
#: includes/currencies.php:33 includes/currencies.php:53
|
7694 |
#: includes/currencies.php:57 includes/currencies.php:64
|
7695 |
#: includes/currencies.php:74 includes/currencies.php:76
|
@@ -7698,7 +8134,7 @@ msgstr ""
|
|
7698 |
msgid "Taiwan New Dollars"
|
7699 |
msgstr ""
|
7700 |
|
7701 |
-
#: includes/currencies.php:
|
7702 |
#: includes/currencies.php:34 includes/currencies.php:54
|
7703 |
#: includes/currencies.php:58 includes/currencies.php:65
|
7704 |
#: includes/currencies.php:75 includes/currencies.php:77
|
@@ -7707,7 +8143,7 @@ msgstr ""
|
|
7707 |
msgid "Thai Baht"
|
7708 |
msgstr ""
|
7709 |
|
7710 |
-
#: includes/currencies.php:
|
7711 |
#: includes/currencies.php:55 includes/currencies.php:59
|
7712 |
#: includes/currencies.php:66 includes/currencies.php:76
|
7713 |
#: includes/currencies.php:78 includes/currencies.php:82
|
@@ -7716,7 +8152,7 @@ msgstr ""
|
|
7716 |
msgid "Turkish Lira"
|
7717 |
msgstr ""
|
7718 |
|
7719 |
-
#: includes/currencies.php:
|
7720 |
#: includes/currencies.php:56 includes/currencies.php:60
|
7721 |
#: includes/currencies.php:67 includes/currencies.php:77
|
7722 |
#: includes/currencies.php:79 includes/currencies.php:84
|
@@ -7755,7 +8191,7 @@ msgstr ""
|
|
7755 |
msgid "Profile Start Date Issue Detected and Fixed at %s"
|
7756 |
msgstr ""
|
7757 |
|
7758 |
-
#: includes/functions.php:
|
7759 |
#: includes/functions.php:160 includes/functions.php:196
|
7760 |
#: includes/functions.php:200 includes/functions.php:202
|
7761 |
#: includes/functions.php:203 includes/functions.php:204
|
@@ -7768,7 +8204,7 @@ msgstr ""
|
|
7768 |
msgid "The price for membership is <strong>%s</strong> now"
|
7769 |
msgstr ""
|
7770 |
|
7771 |
-
#: includes/functions.php:
|
7772 |
#: includes/functions.php:202 includes/functions.php:204
|
7773 |
#: includes/functions.php:205 includes/functions.php:206
|
7774 |
#: includes/functions.php:209 includes/functions.php:245
|
@@ -7780,52 +8216,52 @@ msgstr ""
|
|
7780 |
msgid "<strong>%s</strong> now"
|
7781 |
msgstr ""
|
7782 |
|
7783 |
-
#: includes/functions.php:
|
7784 |
#, php-format
|
7785 |
msgid " and then <strong>%1$s per %2$s for %3$d more %4$s</strong>."
|
7786 |
msgstr ""
|
7787 |
|
7788 |
-
#: includes/functions.php:
|
7789 |
#, php-format
|
7790 |
msgid " and then <strong>%1$s every %2$d %3$s for %4$d more payments</strong>."
|
7791 |
msgstr ""
|
7792 |
|
7793 |
-
#: includes/functions.php:
|
7794 |
#, php-format
|
7795 |
msgid " and then <strong>%1$s after %2$d %3$s</strong>."
|
7796 |
msgstr ""
|
7797 |
|
7798 |
-
#: includes/functions.php:
|
7799 |
#, php-format
|
7800 |
msgid "The price for membership is <strong>%1$s per %2$s</strong>."
|
7801 |
msgstr ""
|
7802 |
|
7803 |
-
#: includes/functions.php:
|
7804 |
#, php-format
|
7805 |
msgid "<strong>%1$s per %2$s</strong>."
|
7806 |
msgstr ""
|
7807 |
|
7808 |
-
#: includes/functions.php:
|
7809 |
#, php-format
|
7810 |
msgid "The price for membership is <strong>%1$s every %2$d %3$s</strong>."
|
7811 |
msgstr ""
|
7812 |
|
7813 |
-
#: includes/functions.php:
|
7814 |
#, php-format
|
7815 |
msgid "<strong>%1$s every %2$d %3$s</strong>."
|
7816 |
msgstr ""
|
7817 |
|
7818 |
-
#: includes/functions.php:
|
7819 |
#, php-format
|
7820 |
msgid " and then <strong>%1$s per %2$s</strong>."
|
7821 |
msgstr ""
|
7822 |
|
7823 |
-
#: includes/functions.php:
|
7824 |
#, php-format
|
7825 |
msgid " and then <strong>%1$s every %2$d %3$s</strong>."
|
7826 |
msgstr ""
|
7827 |
|
7828 |
-
#: includes/functions.php:
|
7829 |
#: includes/functions.php:238 includes/functions.php:249
|
7830 |
#: includes/functions.php:260 includes/functions.php:261
|
7831 |
#: includes/functions.php:262 includes/functions.php:264
|
@@ -7836,7 +8272,7 @@ msgstr ""
|
|
7836 |
msgid "After your initial payment, your first payment is Free."
|
7837 |
msgstr ""
|
7838 |
|
7839 |
-
#: includes/functions.php:
|
7840 |
#: includes/functions.php:242 includes/functions.php:253
|
7841 |
#: includes/functions.php:264 includes/functions.php:265
|
7842 |
#: includes/functions.php:266 includes/functions.php:268
|
@@ -7848,7 +8284,7 @@ msgstr ""
|
|
7848 |
msgid "After your initial payment, your first %d payments are Free."
|
7849 |
msgstr ""
|
7850 |
|
7851 |
-
#: includes/functions.php:
|
7852 |
#: includes/functions.php:249 includes/functions.php:260
|
7853 |
#: includes/functions.php:271 includes/functions.php:272
|
7854 |
#: includes/functions.php:273 includes/functions.php:275
|
@@ -7860,64 +8296,64 @@ msgstr ""
|
|
7860 |
msgid "After your initial payment, your first payment will cost %s."
|
7861 |
msgstr ""
|
7862 |
|
7863 |
-
#: includes/functions.php:
|
7864 |
#, php-format
|
7865 |
msgid "After your initial payment, your first %1$d payments will cost %2$s."
|
7866 |
msgstr ""
|
7867 |
|
7868 |
-
#: includes/functions.php:
|
7869 |
#: includes/functions.php:388 includes/functions.php:489
|
7870 |
#, php-format
|
7871 |
msgid "Customers in %1$s will be charged %2$s%% tax."
|
7872 |
msgstr ""
|
7873 |
|
7874 |
-
#: includes/functions.php:
|
7875 |
#, php-format
|
7876 |
msgid "<strong>%1$s per %2$s for %3$d more %4$s</strong>"
|
7877 |
msgstr ""
|
7878 |
|
7879 |
-
#: includes/functions.php:
|
7880 |
#, php-format
|
7881 |
msgid "<strong>%1$s every %2$d %3$s for %4$d more payments</strong>"
|
7882 |
msgstr ""
|
7883 |
|
7884 |
-
#: includes/functions.php:
|
7885 |
#, php-format
|
7886 |
msgid "<strong>%1$s after %2$d %3$s</strong>"
|
7887 |
msgstr ""
|
7888 |
|
7889 |
-
#: includes/functions.php:
|
7890 |
#, php-format
|
7891 |
msgid "<strong>%1$s every %2$s</strong>"
|
7892 |
msgstr ""
|
7893 |
|
7894 |
-
#: includes/functions.php:
|
7895 |
#, php-format
|
7896 |
msgid "<strong>%1$s every %2$d %3$s</strong>"
|
7897 |
msgstr ""
|
7898 |
|
7899 |
-
#: includes/functions.php:
|
7900 |
#: includes/functions.php:511 includes/functions.php:520
|
7901 |
msgid "Trial pricing has been applied to the first payment."
|
7902 |
msgstr ""
|
7903 |
|
7904 |
-
#: includes/functions.php:
|
7905 |
#: includes/functions.php:513 includes/functions.php:522
|
7906 |
#, php-format
|
7907 |
msgid "Trial pricing has been applied to the first %d payments."
|
7908 |
msgstr ""
|
7909 |
|
7910 |
-
#: includes/functions.php:
|
7911 |
#, php-format
|
7912 |
msgid "Membership expires after %1$d %2$s."
|
7913 |
msgstr ""
|
7914 |
|
7915 |
-
#: includes/functions.php:
|
7916 |
#, php-format
|
7917 |
msgid "%1$s membership expires after %2$d %3$s"
|
7918 |
msgstr ""
|
7919 |
|
7920 |
-
#: includes/functions.php:
|
7921 |
#: includes/functions.php:514 includes/functions.php:525
|
7922 |
#: includes/functions.php:536 includes/functions.php:537
|
7923 |
#: includes/functions.php:538 includes/functions.php:545
|
@@ -7926,17 +8362,17 @@ msgstr ""
|
|
7926 |
#: includes/functions.php:615 includes/functions.php:694
|
7927 |
#: includes/functions.php:760 includes/functions.php:766
|
7928 |
#: includes/functions.php:874 includes/functions.php:877
|
7929 |
-
#: includes/functions.php:
|
7930 |
-
#: includes/functions.php:956
|
7931 |
msgid "User ID not found."
|
7932 |
msgstr ""
|
7933 |
|
7934 |
-
#: includes/functions.php:
|
7935 |
-
#: includes/functions.php:889
|
7936 |
msgid "No membership_id specified in pmpro_changeMembershipLevel."
|
7937 |
msgstr ""
|
7938 |
|
7939 |
-
#: includes/functions.php:
|
7940 |
#: includes/functions.php:508 includes/functions.php:531
|
7941 |
#: includes/functions.php:542 includes/functions.php:553
|
7942 |
#: includes/functions.php:554 includes/functions.php:555
|
@@ -7947,12 +8383,12 @@ msgstr ""
|
|
7947 |
#: includes/functions.php:780 includes/functions.php:786
|
7948 |
#: includes/functions.php:892 includes/functions.php:895
|
7949 |
#: includes/functions.php:900 includes/functions.php:903
|
7950 |
-
#: includes/functions.php:
|
7951 |
-
#: includes/functions.php:976
|
7952 |
msgid "Invalid level."
|
7953 |
msgstr ""
|
7954 |
|
7955 |
-
#: includes/functions.php:
|
7956 |
#: includes/functions.php:542 includes/functions.php:553
|
7957 |
#: includes/functions.php:564 includes/functions.php:565
|
7958 |
#: includes/functions.php:566 includes/functions.php:573
|
@@ -7961,12 +8397,13 @@ msgstr ""
|
|
7961 |
#: includes/functions.php:623 includes/functions.php:646
|
7962 |
#: includes/functions.php:725 includes/functions.php:791
|
7963 |
#: includes/functions.php:797 includes/functions.php:911
|
7964 |
-
#: includes/functions.php:914 includes/functions.php:
|
7965 |
-
#: includes/functions.php:
|
|
|
7966 |
msgid "not changing?"
|
7967 |
msgstr ""
|
7968 |
|
7969 |
-
#: includes/functions.php:
|
7970 |
#: includes/functions.php:559 includes/functions.php:570
|
7971 |
#: includes/functions.php:581 includes/functions.php:582
|
7972 |
#: includes/functions.php:583 includes/functions.php:590
|
@@ -7990,20 +8427,21 @@ msgstr ""
|
|
7990 |
#: includes/functions.php:881 includes/functions.php:887
|
7991 |
#: includes/functions.php:905 includes/functions.php:911
|
7992 |
#: includes/functions.php:967 includes/functions.php:970
|
7993 |
-
#: includes/functions.php:
|
7994 |
-
#: includes/functions.php:1046
|
7995 |
msgid "Error interacting with database"
|
7996 |
msgstr ""
|
7997 |
|
7998 |
-
#: includes/functions.php:
|
7999 |
#: includes/functions.php:1064 includes/functions.php:1067
|
8000 |
-
#: includes/functions.php:
|
8001 |
-
#: includes/functions.php:
|
|
|
8002 |
#, php-format
|
8003 |
msgid "Error interacting with database: %s"
|
8004 |
msgstr ""
|
8005 |
|
8006 |
-
#: includes/functions.php:
|
8007 |
#: includes/functions.php:629 includes/functions.php:651
|
8008 |
#: includes/functions.php:667 includes/functions.php:668
|
8009 |
#: includes/functions.php:678 includes/functions.php:681
|
@@ -8022,8 +8460,9 @@ msgstr ""
|
|
8022 |
#: includes/functions.php:948 includes/functions.php:953
|
8023 |
#: includes/functions.php:986 includes/functions.php:987
|
8024 |
#: includes/functions.php:992 includes/functions.php:1138
|
8025 |
-
#: includes/functions.php:1141 includes/functions.php:
|
8026 |
-
#: includes/functions.php:
|
|
|
8027 |
#: includes/functions.php:1202 includes/functions.php:1204
|
8028 |
#: includes/functions.php:1213 includes/functions.php:1237
|
8029 |
#: includes/functions.php:1241 includes/functions.php:1243
|
@@ -8031,7 +8470,7 @@ msgstr ""
|
|
8031 |
msgid "Membership level not found."
|
8032 |
msgstr ""
|
8033 |
|
8034 |
-
#: includes/functions.php:
|
8035 |
#: includes/functions.php:1101 includes/functions.php:1118
|
8036 |
#: includes/functions.php:1142 includes/functions.php:1143
|
8037 |
#: includes/functions.php:1150 includes/functions.php:1157
|
@@ -8039,12 +8478,13 @@ msgstr ""
|
|
8039 |
#: includes/functions.php:1290 includes/functions.php:1356
|
8040 |
#: includes/functions.php:1357 includes/functions.php:1362
|
8041 |
#: includes/functions.php:1530 includes/functions.php:1533
|
8042 |
-
#: includes/functions.php:
|
8043 |
-
#: includes/functions.php:
|
|
|
8044 |
msgid "No code was given to check."
|
8045 |
msgstr ""
|
8046 |
|
8047 |
-
#: includes/functions.php:
|
8048 |
#: includes/functions.php:1072 includes/functions.php:1088
|
8049 |
#: includes/functions.php:1099 includes/functions.php:1102
|
8050 |
#: includes/functions.php:1109 includes/functions.php:1110
|
@@ -8055,13 +8495,13 @@ msgstr ""
|
|
8055 |
#: includes/functions.php:1205 includes/functions.php:1299
|
8056 |
#: includes/functions.php:1365 includes/functions.php:1366
|
8057 |
#: includes/functions.php:1371 includes/functions.php:1539
|
8058 |
-
#: includes/functions.php:1542 includes/functions.php:
|
8059 |
-
#: includes/functions.php:
|
8060 |
-
#: includes/functions.php:1629
|
8061 |
msgid "The discount code could not be found."
|
8062 |
msgstr ""
|
8063 |
|
8064 |
-
#: includes/functions.php:
|
8065 |
#: includes/functions.php:1088 includes/functions.php:1104
|
8066 |
#: includes/functions.php:1115 includes/functions.php:1118
|
8067 |
#: includes/functions.php:1124 includes/functions.php:1125
|
@@ -8072,14 +8512,14 @@ msgstr ""
|
|
8072 |
#: includes/functions.php:1220 includes/functions.php:1314
|
8073 |
#: includes/functions.php:1380 includes/functions.php:1381
|
8074 |
#: includes/functions.php:1386 includes/functions.php:1554
|
8075 |
-
#: includes/functions.php:1557 includes/functions.php:
|
8076 |
-
#: includes/functions.php:
|
8077 |
-
#: includes/functions.php:1644
|
8078 |
#, php-format
|
8079 |
msgid "This discount code goes into effect on %s."
|
8080 |
msgstr ""
|
8081 |
|
8082 |
-
#: includes/functions.php:
|
8083 |
#: includes/functions.php:1097 includes/functions.php:1113
|
8084 |
#: includes/functions.php:1124 includes/functions.php:1127
|
8085 |
#: includes/functions.php:1131 includes/functions.php:1132
|
@@ -8090,14 +8530,14 @@ msgstr ""
|
|
8090 |
#: includes/functions.php:1227 includes/functions.php:1321
|
8091 |
#: includes/functions.php:1387 includes/functions.php:1388
|
8092 |
#: includes/functions.php:1393 includes/functions.php:1561
|
8093 |
-
#: includes/functions.php:1564 includes/functions.php:
|
8094 |
-
#: includes/functions.php:
|
8095 |
-
#: includes/functions.php:1651
|
8096 |
#, php-format
|
8097 |
msgid "This discount code expired on %s."
|
8098 |
msgstr ""
|
8099 |
|
8100 |
-
#: includes/functions.php:
|
8101 |
#: includes/functions.php:1109 includes/functions.php:1125
|
8102 |
#: includes/functions.php:1136 includes/functions.php:1139
|
8103 |
#: includes/functions.php:1141 includes/functions.php:1142
|
@@ -8108,13 +8548,13 @@ msgstr ""
|
|
8108 |
#: includes/functions.php:1237 includes/functions.php:1331
|
8109 |
#: includes/functions.php:1397 includes/functions.php:1398
|
8110 |
#: includes/functions.php:1403 includes/functions.php:1570
|
8111 |
-
#: includes/functions.php:1573 includes/functions.php:
|
8112 |
-
#: includes/functions.php:
|
8113 |
-
#: includes/functions.php:1661
|
8114 |
msgid "This discount code is no longer valid."
|
8115 |
msgstr ""
|
8116 |
|
8117 |
-
#: includes/functions.php:
|
8118 |
#: includes/functions.php:1124 includes/functions.php:1140
|
8119 |
#: includes/functions.php:1151 includes/functions.php:1154
|
8120 |
#: includes/functions.php:1155 includes/functions.php:1164
|
@@ -8125,12 +8565,13 @@ msgstr ""
|
|
8125 |
#: includes/functions.php:1344 includes/functions.php:1410
|
8126 |
#: includes/functions.php:1411 includes/functions.php:1416
|
8127 |
#: includes/functions.php:1589 includes/functions.php:1592
|
8128 |
-
#: includes/functions.php:
|
8129 |
-
#: includes/functions.php:
|
|
|
8130 |
msgid "This discount code does not apply to this membership level."
|
8131 |
msgstr ""
|
8132 |
|
8133 |
-
#: includes/functions.php:
|
8134 |
#: includes/functions.php:1132 includes/functions.php:1148
|
8135 |
#: includes/functions.php:1159 includes/functions.php:1162
|
8136 |
#: includes/functions.php:1172 includes/functions.php:1180
|
@@ -8141,13 +8582,13 @@ msgstr ""
|
|
8141 |
#: includes/functions.php:1276 includes/functions.php:1370
|
8142 |
#: includes/functions.php:1436 includes/functions.php:1442
|
8143 |
#: includes/functions.php:1448 includes/functions.php:1627
|
8144 |
-
#: includes/functions.php:1630 includes/functions.php:
|
8145 |
-
#: includes/functions.php:
|
8146 |
-
#: includes/functions.php:1718
|
8147 |
msgid "This discount code is okay."
|
8148 |
msgstr ""
|
8149 |
|
8150 |
-
#: includes/functions.php:
|
8151 |
#: includes/functions.php:1156 includes/functions.php:1172
|
8152 |
#: includes/functions.php:1183 includes/functions.php:1186
|
8153 |
#: includes/functions.php:1196 includes/functions.php:1205
|
@@ -8158,13 +8599,13 @@ msgstr ""
|
|
8158 |
#: includes/functions.php:1395 includes/functions.php:1397
|
8159 |
#: includes/functions.php:1463 includes/functions.php:1469
|
8160 |
#: includes/functions.php:1475 includes/functions.php:1655
|
8161 |
-
#: includes/functions.php:1658 includes/functions.php:
|
8162 |
-
#: includes/functions.php:
|
8163 |
-
#: includes/functions.php:1745
|
8164 |
msgid "and"
|
8165 |
msgstr ""
|
8166 |
|
8167 |
-
#: includes/functions.php:
|
8168 |
#: includes/functions.php:1341 includes/functions.php:1361
|
8169 |
#: includes/functions.php:1372 includes/functions.php:1375
|
8170 |
#: includes/functions.php:1385 includes/functions.php:1394
|
@@ -8179,12 +8620,12 @@ msgstr ""
|
|
8179 |
#: includes/functions.php:2015 includes/functions.php:2019
|
8180 |
#: includes/functions.php:2022 includes/functions.php:2024
|
8181 |
#: includes/functions.php:2030 includes/functions.php:2033
|
8182 |
-
#: includes/functions.php:2034
|
8183 |
msgid "Sign Up for !!name!! Now"
|
8184 |
msgstr ""
|
8185 |
|
8186 |
-
#: includes/functions.php:
|
8187 |
-
#: includes/functions.php:2054
|
8188 |
msgid "Sign Up Now"
|
8189 |
msgstr ""
|
8190 |
|
@@ -8334,7 +8775,7 @@ msgid ""
|
|
8334 |
"\">Settings</a>."
|
8335 |
msgstr ""
|
8336 |
|
8337 |
-
#: includes/pointers.php:44 includes/pointers.php:45
|
8338 |
msgid "Close"
|
8339 |
msgstr ""
|
8340 |
|
@@ -8595,27 +9036,27 @@ msgid ""
|
|
8595 |
"the issues</a>."
|
8596 |
msgstr ""
|
8597 |
|
8598 |
-
#: pages/billing.php:
|
8599 |
-
#: pages/billing.php:
|
8600 |
-
#: pages/billing.php:28
|
8601 |
#, php-format
|
8602 |
msgid "Logged in as <strong>%s</strong>."
|
8603 |
msgstr ""
|
8604 |
|
8605 |
-
#: pages/billing.php:
|
8606 |
-
#: pages/billing.php:
|
8607 |
-
#: pages/billing.php:28
|
8608 |
msgid "logout"
|
8609 |
msgstr ""
|
8610 |
|
8611 |
-
#: pages/billing.php:
|
8612 |
#: pages/billing.php:27 pages/billing.php:29 pages/billing.php:30
|
8613 |
#: pages/billing.php:32 pages/billing.php:43 pages/billing.php:46
|
8614 |
#: pages/billing.php:47
|
8615 |
msgid "Membership Fee"
|
8616 |
msgstr ""
|
8617 |
|
8618 |
-
#: pages/billing.php:
|
8619 |
#: pages/billing.php:31 pages/billing.php:33 pages/billing.php:34
|
8620 |
#: pages/billing.php:36 pages/billing.php:47 pages/billing.php:50
|
8621 |
#: pages/billing.php:51 pages/levels.php:70
|
@@ -8623,7 +9064,7 @@ msgstr ""
|
|
8623 |
msgid "%s every %d %s."
|
8624 |
msgstr ""
|
8625 |
|
8626 |
-
#: pages/billing.php:
|
8627 |
#: pages/billing.php:33 pages/billing.php:35 pages/billing.php:36
|
8628 |
#: pages/billing.php:38 pages/billing.php:49 pages/billing.php:52
|
8629 |
#: pages/billing.php:53 pages/levels.php:66
|
@@ -8631,14 +9072,14 @@ msgstr ""
|
|
8631 |
msgid "%s per %s."
|
8632 |
msgstr ""
|
8633 |
|
8634 |
-
#: pages/billing.php:
|
8635 |
#: pages/billing.php:29 pages/billing.php:33 pages/billing.php:42
|
8636 |
#: pages/billing.php:44 pages/billing.php:45 pages/billing.php:47
|
8637 |
#: pages/billing.php:59 pages/billing.php:62 pages/billing.php:63
|
8638 |
msgid "Duration"
|
8639 |
msgstr ""
|
8640 |
|
8641 |
-
#: pages/billing.php:
|
8642 |
#: pages/billing.php:52 pages/billing.php:54 pages/billing.php:55
|
8643 |
#: pages/billing.php:57 pages/billing.php:77 pages/billing.php:80
|
8644 |
#: pages/billing.php:81
|
@@ -8647,7 +9088,7 @@ msgid ""
|
|
8647 |
"paypal.com\">login to PayPal here</a> to update your billing information."
|
8648 |
msgstr ""
|
8649 |
|
8650 |
-
#: pages/billing.php:
|
8651 |
#: pages/billing.php:69 pages/billing.php:78 pages/billing.php:81
|
8652 |
#: pages/billing.php:83 pages/billing.php:84 pages/billing.php:87
|
8653 |
#: pages/billing.php:104 pages/billing.php:107 pages/billing.php:108
|
@@ -8659,7 +9100,7 @@ msgstr ""
|
|
8659 |
msgid "First Name"
|
8660 |
msgstr ""
|
8661 |
|
8662 |
-
#: pages/billing.php:
|
8663 |
#: pages/billing.php:73 pages/billing.php:82 pages/billing.php:85
|
8664 |
#: pages/billing.php:87 pages/billing.php:88 pages/billing.php:91
|
8665 |
#: pages/billing.php:108 pages/billing.php:111 pages/billing.php:112
|
@@ -8671,7 +9112,7 @@ msgstr ""
|
|
8671 |
msgid "Last Name"
|
8672 |
msgstr ""
|
8673 |
|
8674 |
-
#: pages/billing.php:
|
8675 |
#: pages/billing.php:77 pages/billing.php:86 pages/billing.php:89
|
8676 |
#: pages/billing.php:91 pages/billing.php:92 pages/billing.php:95
|
8677 |
#: pages/billing.php:112 pages/billing.php:115 pages/billing.php:116
|
@@ -8683,7 +9124,7 @@ msgstr ""
|
|
8683 |
msgid "Address 1"
|
8684 |
msgstr ""
|
8685 |
|
8686 |
-
#: pages/billing.php:
|
8687 |
#: pages/billing.php:81 pages/billing.php:90 pages/billing.php:93
|
8688 |
#: pages/billing.php:95 pages/billing.php:96 pages/billing.php:99
|
8689 |
#: pages/billing.php:116 pages/billing.php:119 pages/billing.php:120
|
@@ -8695,7 +9136,7 @@ msgstr ""
|
|
8695 |
msgid "Address 2"
|
8696 |
msgstr ""
|
8697 |
|
8698 |
-
#: pages/billing.php:
|
8699 |
#: pages/billing.php:91 pages/billing.php:100 pages/billing.php:103
|
8700 |
#: pages/billing.php:105 pages/billing.php:106 pages/billing.php:109
|
8701 |
#: pages/billing.php:126 pages/billing.php:129 pages/billing.php:130
|
@@ -8707,7 +9148,7 @@ msgstr ""
|
|
8707 |
msgid "City"
|
8708 |
msgstr ""
|
8709 |
|
8710 |
-
#: pages/billing.php:
|
8711 |
#: pages/billing.php:95 pages/billing.php:104 pages/billing.php:107
|
8712 |
#: pages/billing.php:109 pages/billing.php:110 pages/billing.php:113
|
8713 |
#: pages/billing.php:130 pages/billing.php:133 pages/billing.php:134
|
@@ -8719,7 +9160,7 @@ msgstr ""
|
|
8719 |
msgid "State"
|
8720 |
msgstr ""
|
8721 |
|
8722 |
-
#: pages/billing.php:
|
8723 |
#: pages/billing.php:99 pages/billing.php:108 pages/billing.php:111
|
8724 |
#: pages/billing.php:113 pages/billing.php:114 pages/billing.php:117
|
8725 |
#: pages/billing.php:134 pages/billing.php:137 pages/billing.php:138
|
@@ -8731,7 +9172,7 @@ msgstr ""
|
|
8731 |
msgid "Postal Code"
|
8732 |
msgstr ""
|
8733 |
|
8734 |
-
#: pages/billing.php:
|
8735 |
#: pages/billing.php:108 pages/billing.php:117 pages/billing.php:120
|
8736 |
#: pages/billing.php:122 pages/billing.php:123 pages/billing.php:126
|
8737 |
#: pages/billing.php:143 pages/billing.php:146 pages/billing.php:147
|
@@ -8743,7 +9184,7 @@ msgstr ""
|
|
8743 |
msgid "City, State Zip"
|
8744 |
msgstr ""
|
8745 |
|
8746 |
-
#: pages/billing.php:
|
8747 |
#: pages/billing.php:161 pages/billing.php:170 pages/billing.php:173
|
8748 |
#: pages/billing.php:175 pages/billing.php:176 pages/billing.php:179
|
8749 |
#: pages/billing.php:196 pages/billing.php:199 pages/billing.php:200
|
@@ -8755,7 +9196,7 @@ msgstr ""
|
|
8755 |
msgid "Country"
|
8756 |
msgstr ""
|
8757 |
|
8758 |
-
#: pages/billing.php:
|
8759 |
#: pages/billing.php:186 pages/billing.php:195 pages/billing.php:198
|
8760 |
#: pages/billing.php:200 pages/billing.php:201 pages/billing.php:204
|
8761 |
#: pages/billing.php:221 pages/billing.php:224 pages/billing.php:225
|
@@ -8767,7 +9208,7 @@ msgstr ""
|
|
8767 |
msgid "Phone"
|
8768 |
msgstr ""
|
8769 |
|
8770 |
-
#: pages/billing.php:
|
8771 |
#: pages/billing.php:193 pages/billing.php:197 pages/billing.php:206
|
8772 |
#: pages/billing.php:209 pages/billing.php:211 pages/billing.php:212
|
8773 |
#: pages/billing.php:215 pages/billing.php:232 pages/billing.php:235
|
@@ -8782,7 +9223,7 @@ msgstr ""
|
|
8782 |
msgid "E-mail Address"
|
8783 |
msgstr ""
|
8784 |
|
8785 |
-
#: pages/billing.php:
|
8786 |
#: pages/billing.php:201 pages/billing.php:210 pages/billing.php:213
|
8787 |
#: pages/billing.php:215 pages/billing.php:216 pages/billing.php:219
|
8788 |
#: pages/billing.php:236 pages/billing.php:239 pages/billing.php:240
|
@@ -8794,7 +9235,7 @@ msgstr ""
|
|
8794 |
msgid "Confirm E-mail"
|
8795 |
msgstr ""
|
8796 |
|
8797 |
-
#: pages/billing.php:
|
8798 |
#: pages/billing.php:230 pages/billing.php:231 pages/billing.php:234
|
8799 |
#: pages/billing.php:238 pages/billing.php:244 pages/billing.php:247
|
8800 |
#: pages/billing.php:259 pages/billing.php:262 pages/billing.php:263
|
@@ -8802,7 +9243,7 @@ msgstr ""
|
|
8802 |
msgid "Credit Card Information"
|
8803 |
msgstr ""
|
8804 |
|
8805 |
-
#: pages/billing.php:
|
8806 |
#: pages/billing.php:230 pages/billing.php:232 pages/billing.php:235
|
8807 |
#: pages/billing.php:239 pages/billing.php:245 pages/billing.php:248
|
8808 |
#: pages/billing.php:260 pages/billing.php:263 pages/billing.php:264
|
@@ -8811,7 +9252,24 @@ msgstr ""
|
|
8811 |
msgid "We accept %s"
|
8812 |
msgstr ""
|
8813 |
|
8814 |
-
#: pages/billing.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8815 |
#: pages/billing.php:344 pages/billing.php:353 pages/billing.php:356
|
8816 |
#: pages/billing.php:360 pages/billing.php:364 pages/billing.php:378
|
8817 |
#: pages/billing.php:380 pages/billing.php:381 pages/billing.php:385
|
@@ -8857,7 +9315,7 @@ msgstr ""
|
|
8857 |
msgid "Click here to go to the home page."
|
8858 |
msgstr ""
|
8859 |
|
8860 |
-
#: pages/checkout.php:
|
8861 |
#: pages/checkout.php:28 pages/checkout.php:30 pages/checkout.php:35
|
8862 |
#: pages/checkout.php:38
|
8863 |
msgid ""
|
@@ -8865,20 +9323,20 @@ msgid ""
|
|
8865 |
"<strong>click the \"Complete Payment\" button</strong> to finish your order."
|
8866 |
msgstr ""
|
8867 |
|
8868 |
-
#: pages/checkout.php:
|
8869 |
#: pages/checkout.php:35 pages/checkout.php:40 pages/checkout.php:42
|
8870 |
#: pages/checkout.php:43 pages/checkout.php:46
|
8871 |
msgid "change"
|
8872 |
msgstr ""
|
8873 |
|
8874 |
-
#: pages/checkout.php:
|
8875 |
#: pages/checkout.php:42 pages/checkout.php:43 pages/checkout.php:44
|
8876 |
#: pages/checkout.php:50 pages/checkout.php:51 pages/checkout.php:54
|
8877 |
#, php-format
|
8878 |
msgid "You have selected the <strong>%s</strong> membership level."
|
8879 |
msgstr ""
|
8880 |
|
8881 |
-
#: pages/checkout.php:
|
8882 |
#: pages/checkout.php:56 pages/checkout.php:60 pages/checkout.php:61
|
8883 |
#: pages/checkout.php:68 pages/checkout.php:71
|
8884 |
#, php-format
|
@@ -8887,72 +9345,72 @@ msgid ""
|
|
8887 |
"been applied to your order.</p>"
|
8888 |
msgstr ""
|
8889 |
|
8890 |
-
#: pages/checkout.php:
|
8891 |
msgid "Click here to change your discount code."
|
8892 |
msgstr ""
|
8893 |
|
8894 |
-
#: pages/checkout.php:
|
8895 |
#: pages/checkout.php:66 pages/checkout.php:68 pages/checkout.php:73
|
8896 |
#: pages/checkout.php:74 pages/checkout.php:81 pages/checkout.php:84
|
8897 |
msgid "Click here to enter your discount code"
|
8898 |
msgstr ""
|
8899 |
|
8900 |
-
#: pages/checkout.php:
|
8901 |
#: pages/checkout.php:66 pages/checkout.php:68 pages/checkout.php:73
|
8902 |
#: pages/checkout.php:74 pages/checkout.php:81 pages/checkout.php:84
|
8903 |
msgid "Do you have a discount code?"
|
8904 |
msgstr ""
|
8905 |
|
8906 |
-
#: pages/checkout.php:
|
8907 |
#: pages/checkout.php:163 pages/checkout.php:165 pages/checkout.php:170
|
8908 |
#: pages/checkout.php:172 pages/checkout.php:173 pages/checkout.php:175
|
8909 |
#: pages/checkout.php:182 pages/checkout.php:185
|
8910 |
msgid "Account Information"
|
8911 |
msgstr ""
|
8912 |
|
8913 |
-
#: pages/checkout.php:
|
8914 |
#: pages/checkout.php:165 pages/checkout.php:171 pages/checkout.php:172
|
8915 |
#: pages/checkout.php:174 pages/checkout.php:176 pages/checkout.php:183
|
8916 |
#: pages/checkout.php:186
|
8917 |
msgid "Already have an account?"
|
8918 |
msgstr ""
|
8919 |
|
8920 |
-
#: pages/checkout.php:
|
8921 |
#: pages/checkout.php:165 pages/checkout.php:171 pages/checkout.php:172
|
8922 |
#: pages/checkout.php:174 pages/checkout.php:176 pages/checkout.php:183
|
8923 |
#: pages/checkout.php:186
|
8924 |
msgid "Log in here"
|
8925 |
msgstr ""
|
8926 |
|
8927 |
-
#: pages/checkout.php:
|
8928 |
#: pages/checkout.php:189 pages/checkout.php:191 pages/checkout.php:192
|
8929 |
#: pages/checkout.php:198 pages/checkout.php:200 pages/checkout.php:202
|
8930 |
#: pages/checkout.php:209 pages/checkout.php:212
|
8931 |
msgid "Confirm Password"
|
8932 |
msgstr ""
|
8933 |
|
8934 |
-
#: pages/checkout.php:
|
8935 |
#: pages/checkout.php:216 pages/checkout.php:218 pages/checkout.php:225
|
8936 |
#: pages/checkout.php:227 pages/checkout.php:229 pages/checkout.php:236
|
8937 |
#: pages/checkout.php:239
|
8938 |
msgid "Confirm E-mail Address"
|
8939 |
msgstr ""
|
8940 |
|
8941 |
-
#: pages/checkout.php:
|
8942 |
#: pages/checkout.php:232 pages/checkout.php:235 pages/checkout.php:237
|
8943 |
#: pages/checkout.php:244 pages/checkout.php:246 pages/checkout.php:248
|
8944 |
#: pages/checkout.php:255 pages/checkout.php:258
|
8945 |
msgid "Full Name"
|
8946 |
msgstr ""
|
8947 |
|
8948 |
-
#: pages/checkout.php:
|
8949 |
#: pages/checkout.php:233 pages/checkout.php:236 pages/checkout.php:238
|
8950 |
#: pages/checkout.php:245 pages/checkout.php:247 pages/checkout.php:249
|
8951 |
#: pages/checkout.php:256 pages/checkout.php:259
|
8952 |
msgid "LEAVE THIS BLANK"
|
8953 |
msgstr ""
|
8954 |
|
8955 |
-
#: pages/checkout.php:
|
8956 |
#: pages/checkout.php:257 pages/checkout.php:260 pages/checkout.php:262
|
8957 |
#: pages/checkout.php:269 pages/checkout.php:271 pages/checkout.php:273
|
8958 |
#: pages/checkout.php:280 pages/checkout.php:283
|
@@ -8962,21 +9420,31 @@ msgid ""
|
|
8962 |
"different account for this membership, <a href=\"%s\">log out now</a>."
|
8963 |
msgstr ""
|
8964 |
|
8965 |
-
#: pages/checkout.php:
|
8966 |
#: pages/checkout.php:276 pages/checkout.php:278 pages/checkout.php:285
|
8967 |
#: pages/checkout.php:287 pages/checkout.php:289 pages/checkout.php:292
|
8968 |
#: pages/checkout.php:296 pages/checkout.php:299
|
8969 |
msgid "Choose your Payment Method"
|
8970 |
msgstr ""
|
8971 |
|
8972 |
-
#: pages/checkout.php:
|
8973 |
#: pages/checkout.php:284 pages/checkout.php:286 pages/checkout.php:293
|
8974 |
#: pages/checkout.php:296 pages/checkout.php:298 pages/checkout.php:300
|
8975 |
#: pages/checkout.php:305 pages/checkout.php:307 pages/checkout.php:308
|
8976 |
msgid "Check Out with a Credit Card Here"
|
8977 |
msgstr ""
|
8978 |
|
8979 |
-
#: pages/checkout.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8980 |
#: pages/checkout.php:567 pages/checkout.php:575 pages/checkout.php:657
|
8981 |
#: pages/checkout.php:672 pages/checkout.php:673 pages/checkout.php:681
|
8982 |
#: pages/checkout.php:686 pages/checkout.php:690 pages/checkout.php:692
|
@@ -8985,7 +9453,7 @@ msgstr ""
|
|
8985 |
msgid "I agree to the %s"
|
8986 |
msgstr ""
|
8987 |
|
8988 |
-
#: pages/checkout.php:
|
8989 |
#: pages/checkout.php:667 pages/checkout.php:674 pages/checkout.php:677
|
8990 |
#: pages/checkout.php:692 pages/checkout.php:693 pages/checkout.php:701
|
8991 |
#: pages/checkout.php:706 pages/checkout.php:710 pages/checkout.php:712
|
@@ -8993,7 +9461,7 @@ msgstr ""
|
|
8993 |
msgid "Complete Payment"
|
8994 |
msgstr ""
|
8995 |
|
8996 |
-
#: pages/checkout.php:
|
8997 |
#: pages/checkout.php:687 pages/checkout.php:694 pages/checkout.php:697
|
8998 |
#: pages/checkout.php:713 pages/checkout.php:714 pages/checkout.php:723
|
8999 |
#: pages/checkout.php:728 pages/checkout.php:732 pages/checkout.php:734
|
@@ -9025,11 +9493,6 @@ msgstr ""
|
|
9025 |
msgid "Invoice #%s on %s"
|
9026 |
msgstr ""
|
9027 |
|
9028 |
-
#: pages/confirmation.php:49 pages/invoice.php:24 pages/confirmation.php:43
|
9029 |
-
#: pages/confirmation.php:49 pages/invoice.php:24
|
9030 |
-
msgid "Print"
|
9031 |
-
msgstr ""
|
9032 |
-
|
9033 |
#: pages/confirmation.php:52 pages/confirmation.php:123 pages/invoice.php:27
|
9034 |
#: pages/confirmation.php:45 pages/confirmation.php:46
|
9035 |
#: pages/confirmation.php:52 pages/confirmation.php:102
|
@@ -9042,6 +9505,7 @@ msgstr ""
|
|
9042 |
#: pages/confirmation.php:55 pages/invoice.php:31 pages/account.php:29
|
9043 |
#: pages/account.php:33 pages/confirmation.php:48 pages/confirmation.php:49
|
9044 |
#: pages/confirmation.php:55 pages/invoice.php:29 pages/invoice.php:30
|
|
|
9045 |
msgid "Membership Expires"
|
9046 |
msgstr ""
|
9047 |
|
@@ -9049,14 +9513,14 @@ msgstr ""
|
|
9049 |
#: pages/account.php:109 pages/confirmation.php:61 pages/confirmation.php:63
|
9050 |
#: pages/confirmation.php:69 pages/confirmation.php:79
|
9051 |
#: pages/confirmation.php:82 pages/invoice.php:48 pages/invoice.php:50
|
9052 |
-
#: pages/invoice.php:61
|
9053 |
msgid "Payment Method"
|
9054 |
msgstr ""
|
9055 |
|
9056 |
#: pages/confirmation.php:80 pages/invoice.php:63 pages/confirmation.php:80
|
9057 |
#: pages/confirmation.php:82 pages/confirmation.php:83
|
9058 |
-
#: pages/confirmation.php:88 pages/invoice.php:62 pages/invoice.php:
|
9059 |
-
#: pages/invoice.php:69
|
9060 |
msgid "ending in"
|
9061 |
msgstr ""
|
9062 |
|
@@ -9064,13 +9528,15 @@ msgstr ""
|
|
9064 |
#: pages/confirmation.php:61 pages/confirmation.php:63
|
9065 |
#: pages/confirmation.php:65 pages/confirmation.php:71
|
9066 |
#: pages/confirmation.php:88 pages/invoice.php:50 pages/invoice.php:52
|
9067 |
-
#: pages/invoice.php:70 pages/invoice.php:
|
9068 |
-
#: pages/invoice.php:
|
|
|
9069 |
msgid "Total Billed"
|
9070 |
msgstr ""
|
9071 |
|
9072 |
#: pages/confirmation.php:94 pages/invoice.php:77 pages/confirmation.php:94
|
9073 |
-
#: pages/invoice.php:76 pages/invoice.php:
|
|
|
9074 |
msgid "Coupon"
|
9075 |
msgstr ""
|
9076 |
|
@@ -9093,7 +9559,8 @@ msgstr ""
|
|
9093 |
#: pages/confirmation.php:132 pages/invoice.php:135 pages/confirmation.php:111
|
9094 |
#: pages/confirmation.php:113 pages/confirmation.php:121
|
9095 |
#: pages/confirmation.php:124 pages/confirmation.php:132 pages/invoice.php:121
|
9096 |
-
#: pages/invoice.php:134 pages/invoice.php:
|
|
|
9097 |
msgid "View Your Membership Account →"
|
9098 |
msgstr ""
|
9099 |
|
@@ -9105,22 +9572,22 @@ msgid ""
|
|
9105 |
"site owner."
|
9106 |
msgstr ""
|
9107 |
|
9108 |
-
#: pages/invoice.php:29
|
9109 |
msgid "success"
|
9110 |
msgstr ""
|
9111 |
|
9112 |
#: pages/invoice.php:102 pages/invoice.php:88 pages/invoice.php:101
|
9113 |
-
#: pages/invoice.php:106 pages/invoice.php:108
|
9114 |
msgid "Invoice #"
|
9115 |
msgstr ""
|
9116 |
|
9117 |
#: pages/invoice.php:128 pages/invoice.php:114 pages/invoice.php:127
|
9118 |
-
#: pages/invoice.php:132 pages/invoice.php:134
|
9119 |
msgid "No invoices found."
|
9120 |
msgstr ""
|
9121 |
|
9122 |
#: pages/invoice.php:139 pages/invoice.php:125 pages/invoice.php:138
|
9123 |
-
#: pages/invoice.php:143 pages/invoice.php:145
|
9124 |
msgid "← View All Invoices"
|
9125 |
msgstr ""
|
9126 |
|
@@ -9157,42 +9624,46 @@ msgstr ""
|
|
9157 |
msgid "← Return to Home"
|
9158 |
msgstr ""
|
9159 |
|
9160 |
-
#: paid-memberships-pro.php:
|
9161 |
#: adminpages/orders.php:448 paid-memberships-pro.php:115
|
9162 |
#: paid-memberships-pro.php:116 paid-memberships-pro.php:123
|
9163 |
#: paid-memberships-pro.php:124 paid-memberships-pro.php:125
|
9164 |
#: paid-memberships-pro.php:126 paid-memberships-pro.php:127
|
9165 |
#: paid-memberships-pro.php:128 paid-memberships-pro.php:129
|
9166 |
#: paid-memberships-pro.php:130 paid-memberships-pro.php:135
|
9167 |
-
#: paid-memberships-pro.php:140
|
9168 |
msgid "Testing Only"
|
9169 |
msgstr ""
|
9170 |
|
9171 |
-
#: paid-memberships-pro.php:
|
9172 |
#: paid-memberships-pro.php:121 paid-memberships-pro.php:128
|
9173 |
#: paid-memberships-pro.php:129 paid-memberships-pro.php:130
|
9174 |
#: paid-memberships-pro.php:131 paid-memberships-pro.php:132
|
9175 |
#: paid-memberships-pro.php:133 paid-memberships-pro.php:134
|
9176 |
#: paid-memberships-pro.php:135 paid-memberships-pro.php:140
|
9177 |
-
#: paid-memberships-pro.php:145
|
9178 |
msgid "PayPal Payflow Pro/PayPal Pro"
|
9179 |
msgstr ""
|
9180 |
|
9181 |
-
#: paid-memberships-pro.php:
|
9182 |
#: paid-memberships-pro.php:126 paid-memberships-pro.php:133
|
9183 |
#: paid-memberships-pro.php:134 paid-memberships-pro.php:135
|
9184 |
#: paid-memberships-pro.php:136 paid-memberships-pro.php:137
|
9185 |
#: paid-memberships-pro.php:138 paid-memberships-pro.php:139
|
9186 |
#: paid-memberships-pro.php:140 paid-memberships-pro.php:145
|
9187 |
-
#: paid-memberships-pro.php:150
|
9188 |
msgid "Cybersource"
|
9189 |
msgstr ""
|
9190 |
|
9191 |
-
#: paid-memberships-pro.php:
|
|
|
|
|
|
|
|
|
9192 |
#: paid-memberships-pro.php:157 paid-memberships-pro.php:158
|
9193 |
#: paid-memberships-pro.php:159 paid-memberships-pro.php:160
|
9194 |
#: paid-memberships-pro.php:161 paid-memberships-pro.php:166
|
9195 |
-
#: paid-memberships-pro.php:171
|
9196 |
msgid "Once a month"
|
9197 |
msgstr ""
|
9198 |
|
@@ -9282,7 +9753,7 @@ msgstr ""
|
|
9282 |
msgid "Your membership has been cancelled."
|
9283 |
msgstr ""
|
9284 |
|
9285 |
-
#: preheaders/checkout.php:
|
9286 |
#: preheaders/checkout.php:28 preheaders/checkout.php:30
|
9287 |
#: preheaders/checkout.php:31 preheaders/checkout.php:32
|
9288 |
#: preheaders/checkout.php:34 preheaders/checkout.php:344
|
@@ -9294,22 +9765,23 @@ msgstr ""
|
|
9294 |
msgid "Invalid gateway."
|
9295 |
msgstr ""
|
9296 |
|
9297 |
-
#: preheaders/checkout.php:
|
9298 |
-
#: preheaders/checkout.php:
|
9299 |
-
#: preheaders/checkout.php:
|
9300 |
-
#: preheaders/checkout.php:96
|
9301 |
msgid "Checkout: Payment Information"
|
9302 |
msgstr ""
|
9303 |
|
9304 |
-
#: preheaders/checkout.php:
|
9305 |
-
#: preheaders/checkout.php:
|
|
|
9306 |
msgid "Set Up Your Account"
|
9307 |
msgstr ""
|
9308 |
|
9309 |
-
#: preheaders/checkout.php:
|
9310 |
-
#: preheaders/checkout.php:300 preheaders/checkout.php:
|
9311 |
-
#: preheaders/checkout.php:
|
9312 |
-
#: preheaders/checkout.php:421
|
9313 |
msgid "There are JavaScript errors on the page. Please contact the webmaster."
|
9314 |
msgstr ""
|
9315 |
|
@@ -9341,69 +9813,71 @@ msgstr ""
|
|
9341 |
|
9342 |
#: preheaders/checkout.php:382 preheaders/checkout.php:368
|
9343 |
#: preheaders/checkout.php:377 preheaders/checkout.php:381
|
9344 |
-
#: preheaders/checkout.php:
|
9345 |
-
#: preheaders/checkout.php:
|
9346 |
-
#: preheaders/checkout.php:
|
9347 |
-
#: preheaders/checkout.php:536
|
9348 |
msgid "That username is already taken. Please try another."
|
9349 |
msgstr ""
|
9350 |
|
9351 |
#: preheaders/checkout.php:387 preheaders/checkout.php:373
|
|
|
9352 |
msgid ""
|
9353 |
"That email address is already in use. Please log in, or use a different "
|
9354 |
"email address."
|
9355 |
msgstr ""
|
9356 |
|
9357 |
-
#: preheaders/checkout.php:
|
9358 |
#: preheaders/checkout.php:399 preheaders/checkout.php:404
|
9359 |
-
#: preheaders/checkout.php:416 preheaders/checkout.php:
|
9360 |
-
#: preheaders/checkout.php:
|
9361 |
-
#: preheaders/checkout.php:
|
9362 |
-
#: preheaders/checkout.php:
|
9363 |
-
#: preheaders/checkout.php:562
|
9364 |
#, php-format
|
9365 |
msgid "reCAPTCHA failed. (%s) Please try again."
|
9366 |
msgstr ""
|
9367 |
|
9368 |
-
#: preheaders/checkout.php:
|
9369 |
#: preheaders/checkout.php:484 preheaders/checkout.php:491
|
9370 |
#: preheaders/checkout.php:495 preheaders/checkout.php:496
|
9371 |
#: preheaders/checkout.php:501 preheaders/checkout.php:505
|
9372 |
-
#: preheaders/checkout.php:
|
9373 |
-
#: preheaders/checkout.php:
|
9374 |
-
#: preheaders/checkout.php:
|
9375 |
-
#: preheaders/checkout.php:702
|
9376 |
msgid "Payment accepted."
|
9377 |
msgstr ""
|
9378 |
|
9379 |
-
#: preheaders/checkout.php:
|
9380 |
#: preheaders/checkout.php:492 preheaders/checkout.php:497
|
9381 |
#: preheaders/checkout.php:501 preheaders/checkout.php:502
|
9382 |
#: preheaders/checkout.php:509 preheaders/checkout.php:513
|
9383 |
-
#: preheaders/checkout.php:
|
9384 |
-
#: preheaders/checkout.php:
|
9385 |
-
#: preheaders/checkout.php:
|
9386 |
-
#: preheaders/checkout.php:710
|
9387 |
msgid ""
|
9388 |
"Unknown error generating account. Please contact us to set up your "
|
9389 |
"membership."
|
9390 |
msgstr ""
|
9391 |
|
9392 |
-
#: preheaders/checkout.php:
|
9393 |
#: preheaders/checkout.php:552 preheaders/checkout.php:569
|
9394 |
#: preheaders/checkout.php:571 preheaders/checkout.php:572
|
9395 |
#: preheaders/checkout.php:575 preheaders/checkout.php:576
|
9396 |
#: preheaders/checkout.php:577 preheaders/checkout.php:581
|
9397 |
-
#: preheaders/checkout.php:
|
9398 |
-
#: preheaders/checkout.php:
|
9399 |
-
#: preheaders/checkout.php:
|
9400 |
-
#: preheaders/checkout.php:
|
|
|
9401 |
msgid ""
|
9402 |
"Your payment was accepted, but there was an error setting up your account. "
|
9403 |
"Please contact us."
|
9404 |
msgstr ""
|
9405 |
|
9406 |
-
#: preheaders/checkout.php:
|
9407 |
#: preheaders/checkout.php:693 preheaders/checkout.php:710
|
9408 |
#: preheaders/checkout.php:712 preheaders/checkout.php:722
|
9409 |
#: preheaders/checkout.php:730 preheaders/checkout.php:754
|
@@ -9419,7 +9893,7 @@ msgid ""
|
|
9419 |
"submit this form again. Please contact the site owner to fix this issue."
|
9420 |
msgstr ""
|
9421 |
|
9422 |
-
#: preheaders/checkout.php:
|
9423 |
#: preheaders/checkout.php:696 preheaders/checkout.php:713
|
9424 |
#: preheaders/checkout.php:715 preheaders/checkout.php:725
|
9425 |
#: preheaders/checkout.php:733 preheaders/checkout.php:757
|
@@ -9435,7 +9909,7 @@ msgid ""
|
|
9435 |
"this form again. Please contact the site owner to fix this issue."
|
9436 |
msgstr ""
|
9437 |
|
9438 |
-
#: preheaders/checkout.php:
|
9439 |
#: preheaders/checkout.php:707 preheaders/checkout.php:724
|
9440 |
#: preheaders/checkout.php:726 preheaders/checkout.php:736
|
9441 |
#: preheaders/checkout.php:744 preheaders/checkout.php:768
|
@@ -9451,7 +9925,7 @@ msgid ""
|
|
9451 |
"will be processed."
|
9452 |
msgstr ""
|
9453 |
|
9454 |
-
#: preheaders/checkout.php:
|
9455 |
#: preheaders/checkout.php:709 preheaders/checkout.php:726
|
9456 |
#: preheaders/checkout.php:728 preheaders/checkout.php:738
|
9457 |
#: preheaders/checkout.php:746 preheaders/checkout.php:770
|
@@ -9668,6 +10142,57 @@ msgid ""
|
|
9668 |
"select customers."
|
9669 |
msgstr ""
|
9670 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9671 |
#: adminpages/emailsettings.php:63 adminpages/emailsettings.php:72
|
9672 |
msgid ""
|
9673 |
"To modify the appearance of system generated emails, add the files "
|
@@ -9736,6 +10261,20 @@ msgstr ""
|
|
9736 |
msgid "every"
|
9737 |
msgstr ""
|
9738 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9739 |
#: adminpages/pagesettings.php:73
|
9740 |
#, php-format
|
9741 |
msgid "Membership %s"
|
@@ -9936,6 +10475,17 @@ msgstr ""
|
|
9936 |
msgid "Your Secret Key appears incorrect."
|
9937 |
msgstr ""
|
9938 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9939 |
#: classes/gateways/class.pmprogateway_twocheckout.php:139
|
9940 |
msgid "API Private Key"
|
9941 |
msgstr ""
|
6 |
msgstr ""
|
7 |
"Project-Id-Version: paid-memberships-pro\n"
|
8 |
"Report-Msgid-Bugs-To: info@paidmembershipspro.com\n"
|
9 |
+
"POT-Creation-Date: 2019-09-13 12:49-0400\n"
|
10 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
11 |
"Last-Translator: \n"
|
12 |
"Language-Team: Stranger Studios <info@paidmembershipspro.com>\n"
|
59 |
msgid "Check Again"
|
60 |
msgstr ""
|
61 |
|
62 |
+
#: adminpages/addons.php:93 adminpages/orders.php:994 adminpages/addons.php:76
|
63 |
#: adminpages/addons.php:79 adminpages/addons.php:92 adminpages/addons.php:93
|
64 |
#: adminpages/orders.php:605 adminpages/orders.php:712
|
65 |
#: adminpages/orders.php:741 adminpages/orders.php:850
|
103 |
#: adminpages/addons.php:112 adminpages/membershiplevels.php:296
|
104 |
#: adminpages/membershiplevels.php:298 adminpages/membershiplevels.php:300
|
105 |
#: adminpages/membershiplevels.php:324 adminpages/membershiplevels.php:334
|
106 |
+
#: adminpages/membershiplevels.php:356 adminpages/membershiplevels.php:358
|
107 |
msgid "Description"
|
108 |
msgstr ""
|
109 |
|
171 |
msgid "Activate %s"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: adminpages/addons.php:231 adminpages/discountcodes.php:771
|
175 |
+
#: adminpages/membershiplevels.php:762 adminpages/orders.php:1358
|
176 |
+
#: adminpages/addons.php:213 adminpages/addons.php:216
|
177 |
+
#: adminpages/addons.php:229 adminpages/addons.php:231
|
178 |
msgid "Delete"
|
179 |
msgstr ""
|
180 |
|
209 |
msgid "WordPress.org"
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: adminpages/addons.php:249 adminpages/orders.php:900
|
213 |
+
#: adminpages/orders.php:1429 adminpages/orders.php:1439
|
214 |
#: includes/profile.php:186 shortcodes/pmpro_account.php:158
|
215 |
#: adminpages/addons.php:231 adminpages/addons.php:234
|
216 |
#: adminpages/addons.php:247 adminpages/addons.php:249
|
350 |
msgstr ""
|
351 |
|
352 |
#: adminpages/admin_header.php:135
|
353 |
+
#: classes/gateways/class.pmprogateway_stripe.php:71
|
354 |
#: adminpages/admin_header.php:125 adminpages/admin_header.php:135
|
355 |
#: classes/gateways/class.pmprogateway_stripe.php:66
|
356 |
#: classes/gateways/class.pmprogateway_stripe.php:68
|
400 |
msgid "Members"
|
401 |
msgstr ""
|
402 |
|
403 |
+
#: adminpages/admin_header.php:196 adminpages/discountcodes.php:775
|
404 |
+
#: adminpages/orders.php:949 includes/adminpages.php:52
|
405 |
+
#: includes/adminpages.php:156 adminpages/admin_header.php:196
|
406 |
+
#: adminpages/orders.php:520 adminpages/orders.php:570
|
407 |
+
#: adminpages/orders.php:677 adminpages/orders.php:706
|
408 |
+
#: adminpages/orders.php:810 adminpages/orders.php:841
|
409 |
+
#: adminpages/orders.php:852 adminpages/orders.php:939
|
410 |
+
#: adminpages/orders.php:994 includes/adminpages.php:17
|
411 |
+
#: includes/adminpages.php:52 includes/adminpages.php:55
|
412 |
+
#: includes/adminpages.php:56 includes/adminpages.php:84
|
413 |
+
#: includes/adminpages.php:156 includes/adminpages.php:163
|
414 |
+
#: includes/adminpages.php:167 includes/adminpages.php:172
|
415 |
msgid "Orders"
|
416 |
msgstr ""
|
417 |
|
440 |
msgid "Levels"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: adminpages/admin_header.php:215 adminpages/membershiplevels.php:728
|
444 |
#: adminpages/pagesettings.php:85 includes/metaboxes.php:130
|
445 |
#: adminpages/admin_header.php:128 adminpages/admin_header.php:149
|
446 |
#: adminpages/admin_header.php:150 adminpages/admin_header.php:159
|
452 |
#: adminpages/membershiplevels.php:609 adminpages/membershiplevels.php:618
|
453 |
#: adminpages/membershiplevels.php:619 adminpages/membershiplevels.php:631
|
454 |
#: adminpages/membershiplevels.php:641 adminpages/membershiplevels.php:700
|
455 |
+
#: adminpages/membershiplevels.php:702 adminpages/pagesettings.php:69
|
456 |
+
#: adminpages/pagesettings.php:70 adminpages/pagesettings.php:71
|
457 |
+
#: adminpages/pagesettings.php:85 includes/adminpages.php:44
|
458 |
+
#: includes/adminpages.php:64 includes/adminpages.php:65
|
459 |
+
#: includes/adminpages.php:69 includes/adminpages.php:70
|
460 |
+
#: includes/adminpages.php:100 includes/adminpages.php:107
|
461 |
+
#: includes/adminpages.php:111 includes/adminpages.php:116
|
462 |
+
#: includes/metaboxes.php:126 includes/metaboxes.php:130
|
463 |
+
#: includes/metaboxes.php:131 includes/metaboxes.php:132
|
464 |
msgid "Membership Levels"
|
465 |
msgstr ""
|
466 |
|
504 |
msgstr ""
|
505 |
|
506 |
#: adminpages/admin_header.php:231 adminpages/memberslist.php:168
|
507 |
+
#: adminpages/orders.php:372 adminpages/orders.php:1365
|
508 |
#: shortcodes/pmpro_account.php:111 adminpages/admin_header.php:131
|
509 |
#: adminpages/admin_header.php:152 adminpages/admin_header.php:162
|
510 |
#: adminpages/admin_header.php:171 adminpages/admin_header.php:183
|
520 |
#: adminpages/admin_header.php:231 adminpages/emailsettings.php:83
|
521 |
#: includes/adminpages.php:61 adminpages/admin_header.php:231
|
522 |
#: adminpages/emailsettings.php:60 adminpages/emailsettings.php:69
|
523 |
+
#: adminpages/emailsettings.php:79 adminpages/emailsettings.php:83
|
524 |
+
#: includes/adminpages.php:12 includes/adminpages.php:50
|
525 |
+
#: includes/adminpages.php:51 includes/adminpages.php:59
|
526 |
+
#: includes/adminpages.php:61 includes/adminpages.php:121
|
527 |
+
#: includes/adminpages.php:128 includes/adminpages.php:132
|
528 |
+
#: includes/adminpages.php:137
|
529 |
msgid "Email Settings"
|
530 |
msgstr ""
|
531 |
|
540 |
#: includes/adminpages.php:62 adminpages/admin_header.php:235
|
541 |
#: adminpages/advancedsettings.php:79 adminpages/advancedsettings.php:86
|
542 |
#: adminpages/advancedsettings.php:88 adminpages/advancedsettings.php:91
|
543 |
+
#: adminpages/advancedsettings.php:107 adminpages/advancedsettings.php:109
|
544 |
+
#: includes/adminpages.php:13 includes/adminpages.php:51
|
545 |
+
#: includes/adminpages.php:52 includes/adminpages.php:62
|
546 |
+
#: includes/adminpages.php:64 includes/adminpages.php:128
|
547 |
+
#: includes/adminpages.php:135 includes/adminpages.php:139
|
548 |
+
#: includes/adminpages.php:144
|
549 |
msgid "Advanced Settings"
|
550 |
msgstr ""
|
551 |
|
564 |
#: adminpages/advancedsettings.php:61 adminpages/advancedsettings.php:35
|
565 |
#: adminpages/advancedsettings.php:42 adminpages/advancedsettings.php:43
|
566 |
#: adminpages/advancedsettings.php:46 adminpages/advancedsettings.php:60
|
567 |
+
#: adminpages/advancedsettings.php:61
|
568 |
msgid "Your advanced settings have been updated."
|
569 |
msgstr ""
|
570 |
|
571 |
#: adminpages/advancedsettings.php:87 adminpages/advancedsettings.php:66
|
572 |
#: adminpages/advancedsettings.php:68 adminpages/advancedsettings.php:71
|
573 |
+
#: adminpages/advancedsettings.php:85 adminpages/advancedsettings.php:87
|
574 |
#, php-format
|
575 |
msgid ""
|
576 |
"This content is for !!levels!! members only. <a href=\"%s\">Register here</"
|
579 |
|
580 |
#: adminpages/advancedsettings.php:92 adminpages/advancedsettings.php:71
|
581 |
#: adminpages/advancedsettings.php:73 adminpages/advancedsettings.php:76
|
582 |
+
#: adminpages/advancedsettings.php:90 adminpages/advancedsettings.php:92
|
583 |
#, php-format
|
584 |
msgid ""
|
585 |
"Please <a href=\"%s\">login</a> to view this content. (<a href=\"%s"
|
588 |
|
589 |
#: adminpages/advancedsettings.php:97 adminpages/advancedsettings.php:76
|
590 |
#: adminpages/advancedsettings.php:78 adminpages/advancedsettings.php:81
|
591 |
+
#: adminpages/advancedsettings.php:95 adminpages/advancedsettings.php:97
|
592 |
msgid ""
|
593 |
"This content is for members only. Visit the site and log in/register to read."
|
594 |
msgstr ""
|
596 |
#: adminpages/advancedsettings.php:115 adminpages/advancedsettings.php:85
|
597 |
#: adminpages/advancedsettings.php:92 adminpages/advancedsettings.php:94
|
598 |
#: adminpages/advancedsettings.php:97 adminpages/advancedsettings.php:113
|
599 |
+
#: adminpages/advancedsettings.php:115
|
600 |
msgid "Message for Logged-in Non-members"
|
601 |
msgstr ""
|
602 |
|
603 |
#: adminpages/advancedsettings.php:119 adminpages/advancedsettings.php:89
|
604 |
#: adminpages/advancedsettings.php:96 adminpages/advancedsettings.php:98
|
605 |
#: adminpages/advancedsettings.php:101 adminpages/advancedsettings.php:117
|
606 |
+
#: adminpages/advancedsettings.php:119
|
607 |
msgid ""
|
608 |
"This message replaces the post content for non-members. Available variables"
|
609 |
msgstr ""
|
611 |
#: adminpages/advancedsettings.php:124 adminpages/advancedsettings.php:94
|
612 |
#: adminpages/advancedsettings.php:101 adminpages/advancedsettings.php:103
|
613 |
#: adminpages/advancedsettings.php:106 adminpages/advancedsettings.php:122
|
614 |
+
#: adminpages/advancedsettings.php:124
|
615 |
msgid "Message for Logged-out Users"
|
616 |
msgstr ""
|
617 |
|
618 |
#: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:98
|
619 |
#: adminpages/advancedsettings.php:105 adminpages/advancedsettings.php:107
|
620 |
#: adminpages/advancedsettings.php:110 adminpages/advancedsettings.php:126
|
621 |
+
#: adminpages/advancedsettings.php:128
|
622 |
msgid "This message replaces the post content for logged-out visitors."
|
623 |
msgstr ""
|
624 |
|
625 |
#: adminpages/advancedsettings.php:133 adminpages/advancedsettings.php:103
|
626 |
#: adminpages/advancedsettings.php:110 adminpages/advancedsettings.php:112
|
627 |
#: adminpages/advancedsettings.php:115 adminpages/advancedsettings.php:131
|
628 |
+
#: adminpages/advancedsettings.php:133
|
629 |
msgid "Message for RSS Feed"
|
630 |
msgstr ""
|
631 |
|
632 |
#: adminpages/advancedsettings.php:137 adminpages/advancedsettings.php:107
|
633 |
#: adminpages/advancedsettings.php:114 adminpages/advancedsettings.php:116
|
634 |
#: adminpages/advancedsettings.php:119 adminpages/advancedsettings.php:135
|
635 |
+
#: adminpages/advancedsettings.php:137
|
636 |
msgid "This message replaces the post content in RSS feeds."
|
637 |
msgstr ""
|
638 |
|
639 |
#: adminpages/advancedsettings.php:143 adminpages/advancedsettings.php:122
|
640 |
#: adminpages/advancedsettings.php:125 adminpages/advancedsettings.php:141
|
641 |
+
#: adminpages/advancedsettings.php:143
|
642 |
msgid "Filter searches and archives?"
|
643 |
msgstr ""
|
644 |
|
645 |
#: adminpages/advancedsettings.php:147 adminpages/advancedsettings.php:126
|
646 |
#: adminpages/advancedsettings.php:129 adminpages/advancedsettings.php:145
|
647 |
+
#: adminpages/advancedsettings.php:147
|
648 |
msgid ""
|
649 |
"No - Non-members will see restricted posts/pages in searches and archives."
|
650 |
msgstr ""
|
651 |
|
652 |
#: adminpages/advancedsettings.php:148 adminpages/advancedsettings.php:127
|
653 |
#: adminpages/advancedsettings.php:130 adminpages/advancedsettings.php:146
|
654 |
+
#: adminpages/advancedsettings.php:148
|
655 |
msgid ""
|
656 |
"Yes - Only members will see restricted posts/pages in searches and archives."
|
657 |
msgstr ""
|
659 |
#: adminpages/advancedsettings.php:154 adminpages/advancedsettings.php:113
|
660 |
#: adminpages/advancedsettings.php:120 adminpages/advancedsettings.php:133
|
661 |
#: adminpages/advancedsettings.php:136 adminpages/advancedsettings.php:152
|
662 |
+
#: adminpages/advancedsettings.php:154
|
663 |
msgid "Show Excerpts to Non-Members?"
|
664 |
msgstr ""
|
665 |
|
666 |
#: adminpages/advancedsettings.php:158 adminpages/advancedsettings.php:117
|
667 |
#: adminpages/advancedsettings.php:124 adminpages/advancedsettings.php:137
|
668 |
#: adminpages/advancedsettings.php:140 adminpages/advancedsettings.php:156
|
669 |
+
#: adminpages/advancedsettings.php:158
|
670 |
msgid "No - Hide excerpts."
|
671 |
msgstr ""
|
672 |
|
673 |
#: adminpages/advancedsettings.php:159 adminpages/advancedsettings.php:118
|
674 |
#: adminpages/advancedsettings.php:125 adminpages/advancedsettings.php:138
|
675 |
#: adminpages/advancedsettings.php:141 adminpages/advancedsettings.php:157
|
676 |
+
#: adminpages/advancedsettings.php:159
|
677 |
msgid "Yes - Show excerpts."
|
678 |
msgstr ""
|
679 |
|
680 |
#: adminpages/advancedsettings.php:165 adminpages/advancedsettings.php:144
|
681 |
#: adminpages/advancedsettings.php:147 adminpages/advancedsettings.php:163
|
682 |
+
#: adminpages/advancedsettings.php:165
|
683 |
msgid "Hide Ads From Members?"
|
684 |
msgstr ""
|
685 |
|
686 |
#: adminpages/advancedsettings.php:169 adminpages/advancedsettings.php:228
|
687 |
+
#: adminpages/advancedsettings.php:240 adminpages/membershiplevels.php:779
|
688 |
+
#: adminpages/paymentsettings.php:253
|
689 |
+
#: classes/gateways/class.pmprogateway_stripe.php:321 includes/profile.php:125
|
690 |
#: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:135
|
691 |
#: adminpages/advancedsettings.php:148 adminpages/advancedsettings.php:151
|
692 |
+
#: adminpages/advancedsettings.php:167 adminpages/advancedsettings.php:169
|
693 |
+
#: adminpages/advancedsettings.php:187 adminpages/advancedsettings.php:194
|
694 |
+
#: adminpages/advancedsettings.php:199 adminpages/advancedsettings.php:206
|
695 |
+
#: adminpages/advancedsettings.php:207 adminpages/advancedsettings.php:210
|
696 |
+
#: adminpages/advancedsettings.php:219 adminpages/advancedsettings.php:222
|
697 |
+
#: adminpages/advancedsettings.php:226 adminpages/advancedsettings.php:228
|
698 |
+
#: adminpages/advancedsettings.php:238 adminpages/advancedsettings.php:240
|
699 |
+
#: adminpages/membershiplevels.php:563 adminpages/membershiplevels.php:569
|
700 |
+
#: adminpages/membershiplevels.php:571 adminpages/membershiplevels.php:578
|
701 |
+
#: adminpages/membershiplevels.php:598 adminpages/membershiplevels.php:658
|
702 |
+
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:662
|
703 |
+
#: adminpages/membershiplevels.php:667 adminpages/membershiplevels.php:668
|
704 |
+
#: adminpages/membershiplevels.php:672 adminpages/membershiplevels.php:684
|
705 |
+
#: adminpages/membershiplevels.php:694 adminpages/membershiplevels.php:744
|
706 |
+
#: adminpages/membershiplevels.php:746 adminpages/paymentsettings.php:210
|
707 |
#: adminpages/paymentsettings.php:219 adminpages/paymentsettings.php:236
|
708 |
#: adminpages/paymentsettings.php:414 adminpages/paymentsettings.php:429
|
709 |
#: adminpages/paymentsettings.php:434 adminpages/paymentsettings.php:436
|
719 |
#: classes/gateways/class.pmprogateway_stripe.php:222
|
720 |
#: classes/gateways/class.pmprogateway_stripe.php:249
|
721 |
#: classes/gateways/class.pmprogateway_stripe.php:281
|
722 |
+
#: classes/gateways/class.pmprogateway_stripe.php:283
|
723 |
#: classes/gateways/class.pmprogateway_stripe.php:289
|
724 |
#: classes/gateways/class.pmprogateway_stripe.php:291
|
725 |
#: classes/gateways/class.pmprogateway_stripe.php:297
|
732 |
#: adminpages/advancedsettings.php:170 adminpages/advancedsettings.php:129
|
733 |
#: adminpages/advancedsettings.php:136 adminpages/advancedsettings.php:149
|
734 |
#: adminpages/advancedsettings.php:152 adminpages/advancedsettings.php:168
|
735 |
+
#: adminpages/advancedsettings.php:170
|
736 |
msgid "Hide Ads From All Members"
|
737 |
msgstr ""
|
738 |
|
739 |
#: adminpages/advancedsettings.php:171 adminpages/advancedsettings.php:130
|
740 |
#: adminpages/advancedsettings.php:137 adminpages/advancedsettings.php:150
|
741 |
#: adminpages/advancedsettings.php:153 adminpages/advancedsettings.php:169
|
742 |
+
#: adminpages/advancedsettings.php:171
|
743 |
msgid "Hide Ads From Certain Members"
|
744 |
msgstr ""
|
745 |
|
746 |
#: adminpages/advancedsettings.php:178 adminpages/advancedsettings.php:137
|
747 |
#: adminpages/advancedsettings.php:144 adminpages/advancedsettings.php:157
|
748 |
#: adminpages/advancedsettings.php:160 adminpages/advancedsettings.php:176
|
749 |
+
#: adminpages/advancedsettings.php:178
|
750 |
msgid "Ads from the following plugins will be automatically turned off"
|
751 |
msgstr ""
|
752 |
|
753 |
#: adminpages/advancedsettings.php:179 adminpages/advancedsettings.php:138
|
754 |
#: adminpages/advancedsettings.php:145 adminpages/advancedsettings.php:158
|
755 |
#: adminpages/advancedsettings.php:161 adminpages/advancedsettings.php:177
|
756 |
+
#: adminpages/advancedsettings.php:179
|
757 |
msgid "To hide ads in your template code, use code like the following"
|
758 |
msgstr ""
|
759 |
|
760 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:149
|
761 |
#: adminpages/advancedsettings.php:156 adminpages/advancedsettings.php:169
|
762 |
#: adminpages/advancedsettings.php:172 adminpages/advancedsettings.php:188
|
763 |
+
#: adminpages/advancedsettings.php:190
|
764 |
msgid "Choose Levels to Hide Ads From"
|
765 |
msgstr ""
|
766 |
|
767 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:183
|
768 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:203
|
769 |
#: adminpages/advancedsettings.php:206 adminpages/advancedsettings.php:222
|
770 |
+
#: adminpages/advancedsettings.php:224
|
771 |
msgid "Redirect all traffic from registration page to /susbcription/?"
|
772 |
msgstr ""
|
773 |
|
774 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:183
|
775 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:203
|
776 |
#: adminpages/advancedsettings.php:206 adminpages/advancedsettings.php:222
|
777 |
+
#: adminpages/advancedsettings.php:224
|
778 |
msgid "multisite only"
|
779 |
msgstr ""
|
780 |
|
781 |
+
#: adminpages/advancedsettings.php:229 adminpages/membershiplevels.php:779
|
782 |
+
#: adminpages/paymentsettings.php:254
|
783 |
+
#: classes/gateways/class.pmprogateway_stripe.php:323 includes/profile.php:126
|
784 |
#: adminpages/advancedsettings.php:188 adminpages/advancedsettings.php:195
|
785 |
#: adminpages/advancedsettings.php:208 adminpages/advancedsettings.php:211
|
786 |
+
#: adminpages/advancedsettings.php:227 adminpages/advancedsettings.php:229
|
787 |
+
#: adminpages/membershiplevels.php:563 adminpages/membershiplevels.php:569
|
788 |
+
#: adminpages/membershiplevels.php:571 adminpages/membershiplevels.php:578
|
789 |
+
#: adminpages/membershiplevels.php:598 adminpages/membershiplevels.php:658
|
790 |
+
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:662
|
791 |
+
#: adminpages/membershiplevels.php:667 adminpages/membershiplevels.php:668
|
792 |
+
#: adminpages/membershiplevels.php:672 adminpages/membershiplevels.php:684
|
793 |
+
#: adminpages/membershiplevels.php:694 adminpages/membershiplevels.php:744
|
794 |
+
#: adminpages/membershiplevels.php:746 adminpages/paymentsettings.php:211
|
795 |
#: adminpages/paymentsettings.php:220 adminpages/paymentsettings.php:237
|
796 |
#: adminpages/paymentsettings.php:415 adminpages/paymentsettings.php:424
|
797 |
#: adminpages/paymentsettings.php:430 adminpages/paymentsettings.php:435
|
807 |
#: classes/gateways/class.pmprogateway_stripe.php:223
|
808 |
#: classes/gateways/class.pmprogateway_stripe.php:250
|
809 |
#: classes/gateways/class.pmprogateway_stripe.php:282
|
810 |
+
#: classes/gateways/class.pmprogateway_stripe.php:284
|
811 |
#: classes/gateways/class.pmprogateway_stripe.php:290
|
812 |
#: classes/gateways/class.pmprogateway_stripe.php:292
|
813 |
#: classes/gateways/class.pmprogateway_stripe.php:298
|
820 |
#: adminpages/advancedsettings.php:236 adminpages/advancedsettings.php:195
|
821 |
#: adminpages/advancedsettings.php:202 adminpages/advancedsettings.php:215
|
822 |
#: adminpages/advancedsettings.php:218 adminpages/advancedsettings.php:234
|
823 |
+
#: adminpages/advancedsettings.php:236
|
824 |
msgid "Use reCAPTCHA?"
|
825 |
msgstr ""
|
826 |
|
827 |
#: adminpages/advancedsettings.php:241 adminpages/advancedsettings.php:200
|
828 |
#: adminpages/advancedsettings.php:207 adminpages/advancedsettings.php:220
|
829 |
#: adminpages/advancedsettings.php:223 adminpages/advancedsettings.php:239
|
830 |
+
#: adminpages/advancedsettings.php:241
|
831 |
msgid "Yes - Free memberships only."
|
832 |
msgstr ""
|
833 |
|
834 |
#: adminpages/advancedsettings.php:242 adminpages/advancedsettings.php:201
|
835 |
#: adminpages/advancedsettings.php:208 adminpages/advancedsettings.php:221
|
836 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:240
|
837 |
+
#: adminpages/advancedsettings.php:242
|
838 |
msgid "Yes - All memberships."
|
839 |
msgstr ""
|
840 |
|
841 |
#: adminpages/advancedsettings.php:244 adminpages/advancedsettings.php:203
|
842 |
#: adminpages/advancedsettings.php:210 adminpages/advancedsettings.php:223
|
843 |
#: adminpages/advancedsettings.php:226 adminpages/advancedsettings.php:242
|
844 |
+
#: adminpages/advancedsettings.php:244
|
845 |
msgid "A free reCAPTCHA key is required."
|
846 |
msgstr ""
|
847 |
|
848 |
#: adminpages/advancedsettings.php:244 adminpages/advancedsettings.php:203
|
849 |
#: adminpages/advancedsettings.php:210 adminpages/advancedsettings.php:223
|
850 |
#: adminpages/advancedsettings.php:226 adminpages/advancedsettings.php:242
|
851 |
+
#: adminpages/advancedsettings.php:244
|
852 |
msgid "Click here to signup for reCAPTCHA"
|
853 |
msgstr ""
|
854 |
|
855 |
+
#: adminpages/advancedsettings.php:250 adminpages/advancedsettings.php:250
|
856 |
msgid "reCAPTCHA Version"
|
857 |
msgstr ""
|
858 |
|
859 |
+
#: adminpages/advancedsettings.php:252 adminpages/advancedsettings.php:252
|
860 |
msgid " v2 - Checkbox"
|
861 |
msgstr ""
|
862 |
|
863 |
+
#: adminpages/advancedsettings.php:253 adminpages/advancedsettings.php:253
|
864 |
msgid "v3 - Invisible"
|
865 |
msgstr ""
|
866 |
|
867 |
+
#: adminpages/advancedsettings.php:255 adminpages/advancedsettings.php:255
|
868 |
msgid "Changing your version will require new API keys."
|
869 |
msgstr ""
|
870 |
|
871 |
#: adminpages/advancedsettings.php:257 adminpages/advancedsettings.php:248
|
872 |
+
#: adminpages/advancedsettings.php:257
|
873 |
msgid "reCAPTCHA Site Key"
|
874 |
msgstr ""
|
875 |
|
876 |
#: adminpages/advancedsettings.php:260 adminpages/advancedsettings.php:251
|
877 |
+
#: adminpages/advancedsettings.php:260
|
878 |
msgid "reCAPTCHA Secret Key"
|
879 |
msgstr ""
|
880 |
|
881 |
#: adminpages/advancedsettings.php:266 adminpages/advancedsettings.php:218
|
882 |
#: adminpages/advancedsettings.php:225 adminpages/advancedsettings.php:238
|
883 |
#: adminpages/advancedsettings.php:241 adminpages/advancedsettings.php:257
|
884 |
+
#: adminpages/advancedsettings.php:266
|
885 |
msgid "Require Terms of Service on signups?"
|
886 |
msgstr ""
|
887 |
|
888 |
#: adminpages/advancedsettings.php:273 adminpages/advancedsettings.php:225
|
889 |
#: adminpages/advancedsettings.php:232 adminpages/advancedsettings.php:245
|
890 |
#: adminpages/advancedsettings.php:248 adminpages/advancedsettings.php:264
|
891 |
+
#: adminpages/advancedsettings.php:273
|
892 |
msgid ""
|
893 |
"If yes, create a WordPress page containing your TOS agreement and assign it "
|
894 |
"using the dropdown above."
|
895 |
msgstr ""
|
896 |
|
897 |
#: adminpages/advancedsettings.php:384 adminpages/pagesettings.php:315
|
898 |
+
#: adminpages/paymentsettings.php:284 adminpages/advancedsettings.php:284
|
899 |
#: adminpages/advancedsettings.php:355 adminpages/advancedsettings.php:359
|
900 |
#: adminpages/advancedsettings.php:368 adminpages/advancedsettings.php:375
|
901 |
+
#: adminpages/advancedsettings.php:384 adminpages/pagesettings.php:209
|
902 |
+
#: adminpages/pagesettings.php:223 adminpages/pagesettings.php:251
|
903 |
+
#: adminpages/pagesettings.php:254 adminpages/pagesettings.php:294
|
904 |
+
#: adminpages/pagesettings.php:295 adminpages/pagesettings.php:310
|
905 |
+
#: adminpages/pagesettings.php:315 adminpages/paymentsettings.php:238
|
906 |
+
#: adminpages/paymentsettings.php:250 adminpages/paymentsettings.php:267
|
907 |
+
#: adminpages/paymentsettings.php:485 adminpages/paymentsettings.php:526
|
908 |
+
#: adminpages/paymentsettings.php:532 adminpages/paymentsettings.php:534
|
909 |
msgid "Save Settings"
|
910 |
msgstr ""
|
911 |
|
993 |
msgstr ""
|
994 |
|
995 |
#: adminpages/dashboard.php:215 adminpages/memberslist.php:165
|
996 |
+
#: pages/checkout.php:118 shortcodes/pmpro_account.php:110
|
997 |
#: adminpages/dashboard.php:215 adminpages/dashboard.php:223
|
998 |
#: adminpages/memberslist.php:112 adminpages/memberslist.php:145
|
999 |
#: adminpages/memberslist.php:155 adminpages/memberslist.php:165
|
1063 |
msgstr ""
|
1064 |
|
1065 |
#: adminpages/dashboard.php:282 adminpages/discountcodes.php:447
|
1066 |
+
#: adminpages/discountcodes.php:747 adminpages/orders.php:409
|
1067 |
+
#: adminpages/orders.php:1308 adminpages/dashboard.php:282
|
1068 |
#: adminpages/dashboard.php:290 adminpages/discountcodes.php:311
|
1069 |
#: adminpages/discountcodes.php:314 adminpages/discountcodes.php:315
|
1070 |
#: adminpages/discountcodes.php:316 adminpages/discountcodes.php:321
|
1087 |
msgid "Code"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
+
#: adminpages/dashboard.php:283 adminpages/orders.php:1309
|
1091 |
#: adminpages/reports/login.php:179
|
1092 |
#: classes/gateways/class.pmprogateway_payflowpro.php:116
|
1093 |
#: adminpages/dashboard.php:283 adminpages/dashboard.php:291
|
1104 |
msgid "User"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
+
#: adminpages/dashboard.php:284 includes/privacy.php:241 pages/billing.php:49
|
1108 |
#: pages/cancel.php:60 pages/invoice.php:103 pages/levels.php:35
|
1109 |
#: shortcodes/pmpro_account.php:44 shortcodes/pmpro_account.php:128
|
1110 |
#: adminpages/dashboard.php:284 adminpages/dashboard.php:292
|
1113 |
#: pages/billing.php:27 pages/billing.php:28 pages/billing.php:30
|
1114 |
#: pages/billing.php:41 pages/billing.php:44 pages/billing.php:45
|
1115 |
#: pages/cancel.php:52 pages/cancel.php:60 pages/cancel.php:61
|
1116 |
+
#: pages/invoice.php:89 pages/invoice.php:102 pages/invoice.php:103
|
1117 |
+
#: pages/invoice.php:109 pages/levels.php:13 pages/levels.php:35
|
1118 |
+
#: shortcodes/pmpro_account.php:43 shortcodes/pmpro_account.php:44
|
1119 |
+
#: shortcodes/pmpro_account.php:123 shortcodes/pmpro_account.php:125
|
1120 |
+
#: shortcodes/pmpro_account.php:126 shortcodes/pmpro_account.php:128
|
1121 |
msgid "Level"
|
1122 |
msgstr ""
|
1123 |
|
1124 |
+
#: adminpages/dashboard.php:285 adminpages/orders.php:627
|
1125 |
+
#: adminpages/orders.php:1312 adminpages/templates/orders-email.php:64
|
1126 |
#: adminpages/templates/orders-print.php:93 includes/privacy.php:285
|
1127 |
#: pages/confirmation.php:96 pages/invoice.php:79 adminpages/dashboard.php:285
|
1128 |
#: adminpages/dashboard.php:293 adminpages/orders.php:320
|
1137 |
#: adminpages/orders.php:1236 adminpages/orders.php:1357
|
1138 |
#: adminpages/templates/orders-email.php:64
|
1139 |
#: adminpages/templates/orders-print.php:93 includes/privacy.php:285
|
1140 |
+
#: pages/confirmation.php:96 pages/invoice.php:78 pages/invoice.php:79
|
1141 |
+
#: pages/invoice.php:82 pages/invoice.php:84
|
1142 |
msgid "Total"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
+
#: adminpages/dashboard.php:286 adminpages/orders.php:712
|
1146 |
+
#: adminpages/orders.php:1316 includes/privacy.php:202 includes/privacy.php:309
|
1147 |
#: pages/invoice.php:29 shortcodes/pmpro_account.php:130
|
1148 |
#: adminpages/dashboard.php:286 adminpages/dashboard.php:294
|
1149 |
#: adminpages/orders.php:373 adminpages/orders.php:423
|
1156 |
#: adminpages/orders.php:1112 adminpages/orders.php:1143
|
1157 |
#: adminpages/orders.php:1149 adminpages/orders.php:1240
|
1158 |
#: adminpages/orders.php:1361 includes/privacy.php:202 includes/privacy.php:309
|
1159 |
+
#: pages/invoice.php:29 shortcodes/pmpro_account.php:130
|
1160 |
msgid "Status"
|
1161 |
msgstr ""
|
1162 |
|
1163 |
+
#: adminpages/dashboard.php:287 adminpages/orders.php:815
|
1164 |
+
#: adminpages/orders.php:1317 pages/invoice.php:101
|
1165 |
#: shortcodes/pmpro_account.php:127 adminpages/dashboard.php:287
|
1166 |
#: adminpages/dashboard.php:295 adminpages/orders.php:442
|
1167 |
#: adminpages/orders.php:492 adminpages/orders.php:493
|
1174 |
#: adminpages/orders.php:1113 adminpages/orders.php:1144
|
1175 |
#: adminpages/orders.php:1150 adminpages/orders.php:1241
|
1176 |
#: adminpages/orders.php:1362 pages/account.php:91 pages/invoice.php:87
|
1177 |
+
#: pages/invoice.php:100 pages/invoice.php:101 pages/invoice.php:105
|
1178 |
+
#: pages/invoice.php:107 shortcodes/pmpro_account.php:122
|
1179 |
+
#: shortcodes/pmpro_account.php:124 shortcodes/pmpro_account.php:125
|
1180 |
+
#: shortcodes/pmpro_account.php:127
|
1181 |
msgid "Date"
|
1182 |
msgstr ""
|
1183 |
|
1184 |
+
#: adminpages/dashboard.php:294 adminpages/orders.php:1462
|
1185 |
#: adminpages/dashboard.php:294 adminpages/dashboard.php:302
|
1186 |
#: adminpages/orders.php:674 adminpages/orders.php:977
|
1187 |
#: adminpages/orders.php:995 adminpages/orders.php:1005
|
1192 |
msgid "No orders found."
|
1193 |
msgstr ""
|
1194 |
|
1195 |
+
#: adminpages/dashboard.php:311 adminpages/orders.php:1345
|
1196 |
#: adminpages/dashboard.php:311 adminpages/dashboard.php:319
|
1197 |
#: adminpages/orders.php:630 adminpages/orders.php:933
|
1198 |
#: adminpages/orders.php:943 adminpages/orders.php:972
|
1202 |
msgid "deleted"
|
1203 |
msgstr ""
|
1204 |
|
1205 |
+
#: adminpages/dashboard.php:313 adminpages/orders.php:1347
|
1206 |
#: adminpages/dashboard.php:313 adminpages/dashboard.php:321
|
1207 |
#: adminpages/orders.php:1275 adminpages/orders.php:1397
|
1208 |
msgid "none"
|
1329 |
msgstr ""
|
1330 |
|
1331 |
#: adminpages/discountcodes.php:442 adminpages/discountcodes.php:746
|
1332 |
+
#: adminpages/membershiplevels.php:346 adminpages/membershiplevels.php:741
|
1333 |
+
#: adminpages/memberslist.php:164 adminpages/orders.php:1307
|
1334 |
#: adminpages/reports/login.php:178 adminpages/templates/orders-email.php:46
|
1335 |
#: adminpages/templates/orders-print.php:75 adminpages/discountcodes.php:306
|
1336 |
#: adminpages/discountcodes.php:309 adminpages/discountcodes.php:310
|
1344 |
#: adminpages/membershiplevels.php:284 adminpages/membershiplevels.php:286
|
1345 |
#: adminpages/membershiplevels.php:288 adminpages/membershiplevels.php:312
|
1346 |
#: adminpages/membershiplevels.php:322 adminpages/membershiplevels.php:344
|
1347 |
+
#: adminpages/membershiplevels.php:346 adminpages/membershiplevels.php:505
|
1348 |
+
#: adminpages/membershiplevels.php:511 adminpages/membershiplevels.php:513
|
1349 |
+
#: adminpages/membershiplevels.php:540 adminpages/membershiplevels.php:541
|
1350 |
+
#: adminpages/membershiplevels.php:583 adminpages/membershiplevels.php:629
|
1351 |
+
#: adminpages/membershiplevels.php:631 adminpages/membershiplevels.php:636
|
1352 |
+
#: adminpages/membershiplevels.php:637 adminpages/membershiplevels.php:641
|
1353 |
+
#: adminpages/membershiplevels.php:653 adminpages/membershiplevels.php:663
|
1354 |
+
#: adminpages/membershiplevels.php:713 adminpages/membershiplevels.php:715
|
1355 |
#: adminpages/memberslist.php:111 adminpages/memberslist.php:144
|
1356 |
#: adminpages/memberslist.php:154 adminpages/memberslist.php:164
|
1357 |
#: adminpages/orders.php:597 adminpages/orders.php:900
|
1366 |
msgid "ID"
|
1367 |
msgstr ""
|
1368 |
|
1369 |
+
#: adminpages/discountcodes.php:443 adminpages/orders.php:402
|
1370 |
#: adminpages/discountcodes.php:307 adminpages/discountcodes.php:310
|
1371 |
#: adminpages/discountcodes.php:311 adminpages/discountcodes.php:312
|
1372 |
#: adminpages/discountcodes.php:317 adminpages/discountcodes.php:382
|
1389 |
msgstr ""
|
1390 |
|
1391 |
#: adminpages/discountcodes.php:503
|
1392 |
+
#: classes/gateways/class.pmprogateway_braintree.php:479
|
1393 |
+
#: classes/gateways/class.pmprogateway_stripe.php:565 pages/billing.php:321
|
1394 |
+
#: pages/checkout.php:389 adminpages/discountcodes.php:367
|
1395 |
#: adminpages/discountcodes.php:370 adminpages/discountcodes.php:371
|
1396 |
#: adminpages/discountcodes.php:372 adminpages/discountcodes.php:377
|
1397 |
#: adminpages/discountcodes.php:442 adminpages/discountcodes.php:483
|
1419 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
1420 |
#: classes/gateways/class.pmprogateway_stripe.php:570
|
1421 |
#: classes/gateways/class.pmprogateway_stripe.php:597
|
1422 |
+
#: classes/gateways/class.pmprogateway_stripe.php:598
|
1423 |
#: classes/gateways/class.pmprogateway_stripe.php:613
|
1424 |
#: classes/gateways/class.pmprogateway_stripe.php:621
|
1425 |
#: classes/gateways/class.pmprogateway_stripe.php:628
|
1472 |
#: adminpages/membershiplevels.php:337 adminpages/membershiplevels.php:339
|
1473 |
#: adminpages/membershiplevels.php:341 adminpages/membershiplevels.php:342
|
1474 |
#: adminpages/membershiplevels.php:365 adminpages/membershiplevels.php:375
|
1475 |
+
#: adminpages/membershiplevels.php:398 adminpages/membershiplevels.php:400
|
1476 |
+
#: adminpages/membershiplevels.php:507 adminpages/membershiplevels.php:513
|
1477 |
+
#: adminpages/membershiplevels.php:515 adminpages/membershiplevels.php:542
|
1478 |
+
#: pages/levels.php:14
|
1479 |
msgid "Initial Payment"
|
1480 |
msgstr ""
|
1481 |
|
1488 |
#: adminpages/membershiplevels.php:340 adminpages/membershiplevels.php:350
|
1489 |
#: adminpages/membershiplevels.php:352 adminpages/membershiplevels.php:353
|
1490 |
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:386
|
1491 |
+
#: adminpages/membershiplevels.php:409 adminpages/membershiplevels.php:411
|
1492 |
msgid "The initial amount collected at registration."
|
1493 |
msgstr ""
|
1494 |
|
1501 |
#: adminpages/membershiplevels.php:344 adminpages/membershiplevels.php:354
|
1502 |
#: adminpages/membershiplevels.php:356 adminpages/membershiplevels.php:357
|
1503 |
#: adminpages/membershiplevels.php:380 adminpages/membershiplevels.php:390
|
1504 |
+
#: adminpages/membershiplevels.php:413 adminpages/membershiplevels.php:415
|
1505 |
msgid "Recurring Subscription"
|
1506 |
msgstr ""
|
1507 |
|
1514 |
#: adminpages/membershiplevels.php:345 adminpages/membershiplevels.php:355
|
1515 |
#: adminpages/membershiplevels.php:357 adminpages/membershiplevels.php:358
|
1516 |
#: adminpages/membershiplevels.php:381 adminpages/membershiplevels.php:391
|
1517 |
+
#: adminpages/membershiplevels.php:414 adminpages/membershiplevels.php:416
|
1518 |
msgid "Check if this level has a recurring subscription payment."
|
1519 |
msgstr ""
|
1520 |
|
1527 |
#: adminpages/membershiplevels.php:359 adminpages/membershiplevels.php:361
|
1528 |
#: adminpages/membershiplevels.php:362 adminpages/membershiplevels.php:385
|
1529 |
#: adminpages/membershiplevels.php:395 adminpages/membershiplevels.php:418
|
1530 |
+
#: adminpages/membershiplevels.php:420
|
1531 |
msgid "Billing Amount"
|
1532 |
msgstr ""
|
1533 |
|
1534 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1535 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1536 |
+
#: classes/gateways/class.pmprogateway_stripe.php:608
|
1537 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1538 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1539 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
1546 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1547 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1548 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1549 |
+
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:449
|
1550 |
+
#: adminpages/membershiplevels.php:476 adminpages/membershiplevels.php:477
|
1551 |
+
#: adminpages/membershiplevels.php:479 adminpages/membershiplevels.php:480
|
1552 |
+
#: adminpages/membershiplevels.php:501 adminpages/membershiplevels.php:511
|
1553 |
+
#: adminpages/membershiplevels.php:535 adminpages/membershiplevels.php:537
|
1554 |
#: classes/gateways/class.pmprogateway_stripe.php:521
|
1555 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
1556 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
1562 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
1563 |
#: classes/gateways/class.pmprogateway_stripe.php:599
|
1564 |
#: classes/gateways/class.pmprogateway_stripe.php:637
|
1565 |
+
#: classes/gateways/class.pmprogateway_stripe.php:655
|
1566 |
#: classes/gateways/class.pmprogateway_stripe.php:664
|
1567 |
#: classes/gateways/class.pmprogateway_stripe.php:671
|
1568 |
#: classes/gateways/class.pmprogateway_stripe.php:679
|
1574 |
|
1575 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1576 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1577 |
+
#: classes/gateways/class.pmprogateway_stripe.php:610
|
1578 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1579 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1580 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
1587 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1588 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1589 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1590 |
+
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:449
|
1591 |
+
#: adminpages/membershiplevels.php:476 adminpages/membershiplevels.php:477
|
1592 |
+
#: adminpages/membershiplevels.php:479 adminpages/membershiplevels.php:480
|
1593 |
+
#: adminpages/membershiplevels.php:501 adminpages/membershiplevels.php:511
|
1594 |
+
#: adminpages/membershiplevels.php:535 adminpages/membershiplevels.php:537
|
1595 |
#: classes/gateways/class.pmprogateway_stripe.php:521
|
1596 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
1597 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
1603 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
1604 |
#: classes/gateways/class.pmprogateway_stripe.php:599
|
1605 |
#: classes/gateways/class.pmprogateway_stripe.php:637
|
1606 |
+
#: classes/gateways/class.pmprogateway_stripe.php:655
|
1607 |
#: classes/gateways/class.pmprogateway_stripe.php:664
|
1608 |
#: classes/gateways/class.pmprogateway_stripe.php:671
|
1609 |
#: classes/gateways/class.pmprogateway_stripe.php:679
|
1615 |
|
1616 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1617 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1618 |
+
#: classes/gateways/class.pmprogateway_stripe.php:609
|
1619 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1620 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1621 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
1628 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1629 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1630 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1631 |
+
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:449
|
1632 |
+
#: adminpages/membershiplevels.php:476 adminpages/membershiplevels.php:477
|
1633 |
+
#: adminpages/membershiplevels.php:479 adminpages/membershiplevels.php:480
|
1634 |
+
#: adminpages/membershiplevels.php:501 adminpages/membershiplevels.php:511
|
1635 |
+
#: adminpages/membershiplevels.php:535 adminpages/membershiplevels.php:537
|
1636 |
#: classes/gateways/class.pmprogateway_stripe.php:521
|
1637 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
1638 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
1644 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
1645 |
#: classes/gateways/class.pmprogateway_stripe.php:599
|
1646 |
#: classes/gateways/class.pmprogateway_stripe.php:637
|
1647 |
+
#: classes/gateways/class.pmprogateway_stripe.php:655
|
1648 |
#: classes/gateways/class.pmprogateway_stripe.php:664
|
1649 |
#: classes/gateways/class.pmprogateway_stripe.php:671
|
1650 |
#: classes/gateways/class.pmprogateway_stripe.php:679
|
1656 |
|
1657 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1658 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1659 |
+
#: classes/gateways/class.pmprogateway_stripe.php:611
|
1660 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1661 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1662 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
1669 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1670 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1671 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1672 |
+
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:449
|
1673 |
+
#: adminpages/membershiplevels.php:476 adminpages/membershiplevels.php:477
|
1674 |
+
#: adminpages/membershiplevels.php:479 adminpages/membershiplevels.php:480
|
1675 |
+
#: adminpages/membershiplevels.php:501 adminpages/membershiplevels.php:511
|
1676 |
+
#: adminpages/membershiplevels.php:535 adminpages/membershiplevels.php:537
|
1677 |
#: classes/gateways/class.pmprogateway_stripe.php:521
|
1678 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
1679 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
1685 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
1686 |
#: classes/gateways/class.pmprogateway_stripe.php:599
|
1687 |
#: classes/gateways/class.pmprogateway_stripe.php:637
|
1688 |
+
#: classes/gateways/class.pmprogateway_stripe.php:655
|
1689 |
#: classes/gateways/class.pmprogateway_stripe.php:664
|
1690 |
#: classes/gateways/class.pmprogateway_stripe.php:671
|
1691 |
#: classes/gateways/class.pmprogateway_stripe.php:679
|
1704 |
#: adminpages/membershiplevels.php:364 adminpages/membershiplevels.php:383
|
1705 |
#: adminpages/membershiplevels.php:385 adminpages/membershiplevels.php:386
|
1706 |
#: adminpages/membershiplevels.php:409 adminpages/membershiplevels.php:419
|
1707 |
+
#: adminpages/membershiplevels.php:442 adminpages/membershiplevels.php:444
|
1708 |
msgid "The amount to be billed one cycle after the initial payment."
|
1709 |
msgstr ""
|
1710 |
|
1718 |
#: adminpages/membershiplevels.php:403 adminpages/membershiplevels.php:404
|
1719 |
#: adminpages/membershiplevels.php:425 adminpages/membershiplevels.php:435
|
1720 |
#: adminpages/membershiplevels.php:438 adminpages/membershiplevels.php:459
|
1721 |
+
#: adminpages/membershiplevels.php:461
|
1722 |
msgid "Billing Cycle Limit"
|
1723 |
msgstr ""
|
1724 |
|
1732 |
#: adminpages/membershiplevels.php:407 adminpages/membershiplevels.php:408
|
1733 |
#: adminpages/membershiplevels.php:429 adminpages/membershiplevels.php:439
|
1734 |
#: adminpages/membershiplevels.php:442 adminpages/membershiplevels.php:463
|
1735 |
+
#: adminpages/membershiplevels.php:465
|
1736 |
msgid ""
|
1737 |
"The <strong>total</strong> number of recurring billing cycles for this "
|
1738 |
"level, including the trial period (if applicable) but not including the "
|
1748 |
#: adminpages/membershiplevels.php:395 adminpages/membershiplevels.php:414
|
1749 |
#: adminpages/membershiplevels.php:416 adminpages/membershiplevels.php:417
|
1750 |
#: adminpages/membershiplevels.php:438 adminpages/membershiplevels.php:448
|
1751 |
+
#: adminpages/membershiplevels.php:472 adminpages/membershiplevels.php:474
|
1752 |
msgid "Custom Trial"
|
1753 |
msgstr ""
|
1754 |
|
1762 |
#: adminpages/membershiplevels.php:416 adminpages/membershiplevels.php:418
|
1763 |
#: adminpages/membershiplevels.php:419 adminpages/membershiplevels.php:440
|
1764 |
#: adminpages/membershiplevels.php:450 adminpages/membershiplevels.php:474
|
1765 |
+
#: adminpages/membershiplevels.php:476
|
1766 |
msgid "Check to add a custom trial period."
|
1767 |
msgstr ""
|
1768 |
|
1776 |
#: adminpages/membershiplevels.php:425 adminpages/membershiplevels.php:427
|
1777 |
#: adminpages/membershiplevels.php:428 adminpages/membershiplevels.php:449
|
1778 |
#: adminpages/membershiplevels.php:459 adminpages/membershiplevels.php:483
|
1779 |
+
#: adminpages/membershiplevels.php:485
|
1780 |
msgid "Trial Billing Amount"
|
1781 |
msgstr ""
|
1782 |
|
1790 |
#: adminpages/membershiplevels.php:436 adminpages/membershiplevels.php:438
|
1791 |
#: adminpages/membershiplevels.php:439 adminpages/membershiplevels.php:460
|
1792 |
#: adminpages/membershiplevels.php:470 adminpages/membershiplevels.php:494
|
1793 |
+
#: adminpages/membershiplevels.php:496
|
1794 |
msgid "for the first"
|
1795 |
msgstr ""
|
1796 |
|
1804 |
#: adminpages/membershiplevels.php:438 adminpages/membershiplevels.php:440
|
1805 |
#: adminpages/membershiplevels.php:441 adminpages/membershiplevels.php:462
|
1806 |
#: adminpages/membershiplevels.php:472 adminpages/membershiplevels.php:496
|
1807 |
+
#: adminpages/membershiplevels.php:498
|
1808 |
msgid "subscription payments"
|
1809 |
msgstr ""
|
1810 |
|
1818 |
#: adminpages/membershiplevels.php:466 adminpages/membershiplevels.php:467
|
1819 |
#: adminpages/membershiplevels.php:469 adminpages/membershiplevels.php:470
|
1820 |
#: adminpages/membershiplevels.php:491 adminpages/membershiplevels.php:501
|
1821 |
+
#: adminpages/membershiplevels.php:525 adminpages/membershiplevels.php:527
|
1822 |
msgid "Membership Expiration"
|
1823 |
msgstr ""
|
1824 |
|
1832 |
#: adminpages/membershiplevels.php:468 adminpages/membershiplevels.php:470
|
1833 |
#: adminpages/membershiplevels.php:471 adminpages/membershiplevels.php:492
|
1834 |
#: adminpages/membershiplevels.php:502 adminpages/membershiplevels.php:526
|
1835 |
+
#: adminpages/membershiplevels.php:528
|
1836 |
msgid "Check this to set when membership access expires."
|
1837 |
msgstr ""
|
1838 |
|
1846 |
#: adminpages/membershiplevels.php:471 adminpages/membershiplevels.php:472
|
1847 |
#: adminpages/membershiplevels.php:474 adminpages/membershiplevels.php:475
|
1848 |
#: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:506
|
1849 |
+
#: adminpages/membershiplevels.php:530 adminpages/membershiplevels.php:532
|
1850 |
msgid "Expires In"
|
1851 |
msgstr ""
|
1852 |
|
1860 |
#: adminpages/membershiplevels.php:485 adminpages/membershiplevels.php:487
|
1861 |
#: adminpages/membershiplevels.php:488 adminpages/membershiplevels.php:509
|
1862 |
#: adminpages/membershiplevels.php:519 adminpages/membershiplevels.php:543
|
1863 |
+
#: adminpages/membershiplevels.php:545
|
1864 |
msgid ""
|
1865 |
"Set the duration of membership access. Note that the any future payments "
|
1866 |
"(recurring subscription, if any) will be cancelled when the membership "
|
1913 |
msgid "Starts"
|
1914 |
msgstr ""
|
1915 |
|
1916 |
+
#: adminpages/discountcodes.php:765 adminpages/membershiplevels.php:760
|
1917 |
+
#: adminpages/orders.php:1352
|
1918 |
+
msgid "Edit"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1919 |
msgstr ""
|
1920 |
|
1921 |
+
#: adminpages/discountcodes.php:768 adminpages/membershiplevels.php:761
|
1922 |
+
#: adminpages/orders.php:1355
|
1923 |
+
msgid "Copy"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1924 |
msgstr ""
|
1925 |
|
1926 |
+
#: adminpages/discountcodes.php:771 adminpages/discountcodes.php:617
|
1927 |
#: adminpages/discountcodes.php:622 adminpages/discountcodes.php:650
|
1928 |
#: adminpages/discountcodes.php:651 adminpages/discountcodes.php:652
|
1929 |
#: adminpages/discountcodes.php:653 adminpages/discountcodes.php:658
|
1936 |
"code anymore."
|
1937 |
msgstr ""
|
1938 |
|
1939 |
+
#: adminpages/discountcodes.php:775
|
1940 |
+
msgid " View Orders"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1941 |
msgstr ""
|
1942 |
|
1943 |
#: adminpages/emailsettings.php:84 adminpages/emailsettings.php:61
|
1944 |
#: adminpages/emailsettings.php:70 adminpages/emailsettings.php:80
|
1945 |
+
#: adminpages/emailsettings.php:84
|
1946 |
msgid ""
|
1947 |
"By default, system generated emails are sent from "
|
1948 |
"<em><strong>wordpress@yourdomain.com</strong></em>. You can update this from "
|
1950 |
msgstr ""
|
1951 |
|
1952 |
#: adminpages/emailsettings.php:86 adminpages/emailsettings.php:82
|
1953 |
+
#: adminpages/emailsettings.php:86
|
1954 |
msgid ""
|
1955 |
"To modify the appearance of system generated emails, add the files "
|
1956 |
"<em>email_header.html</em> and <em>email_footer.html</em> to your theme's "
|
1964 |
|
1965 |
#: adminpages/emailsettings.php:92 adminpages/emailsettings.php:69
|
1966 |
#: adminpages/emailsettings.php:78 adminpages/emailsettings.php:88
|
1967 |
+
#: adminpages/emailsettings.php:92
|
1968 |
msgid "From Email"
|
1969 |
msgstr ""
|
1970 |
|
1971 |
#: adminpages/emailsettings.php:100 adminpages/emailsettings.php:77
|
1972 |
#: adminpages/emailsettings.php:86 adminpages/emailsettings.php:96
|
1973 |
+
#: adminpages/emailsettings.php:100
|
1974 |
msgid "From Name"
|
1975 |
msgstr ""
|
1976 |
|
1977 |
#: adminpages/emailsettings.php:108 adminpages/emailsettings.php:94
|
1978 |
+
#: adminpages/emailsettings.php:104 adminpages/emailsettings.php:108
|
1979 |
msgid "Only Filter PMPro Emails?"
|
1980 |
msgstr ""
|
1981 |
|
1982 |
#: adminpages/emailsettings.php:112 adminpages/emailsettings.php:98
|
1983 |
+
#: adminpages/emailsettings.php:108 adminpages/emailsettings.php:112
|
1984 |
#, php-format
|
1985 |
msgid ""
|
1986 |
"If unchecked, all emails from \"WordPress <%s>\" will be filtered to "
|
1989 |
|
1990 |
#: adminpages/emailsettings.php:129 adminpages/emailsettings.php:86
|
1991 |
#: adminpages/emailsettings.php:104 adminpages/emailsettings.php:115
|
1992 |
+
#: adminpages/emailsettings.php:125 adminpages/emailsettings.php:129
|
1993 |
msgid "Send the site admin emails"
|
1994 |
msgstr ""
|
1995 |
|
1996 |
#: adminpages/emailsettings.php:135 adminpages/emailsettings.php:92
|
1997 |
#: adminpages/emailsettings.php:110 adminpages/emailsettings.php:121
|
1998 |
+
#: adminpages/emailsettings.php:131 adminpages/emailsettings.php:135
|
1999 |
msgid "Checkout"
|
2000 |
msgstr ""
|
2001 |
|
2002 |
#: adminpages/emailsettings.php:139 adminpages/emailsettings.php:96
|
2003 |
#: adminpages/emailsettings.php:114 adminpages/emailsettings.php:125
|
2004 |
+
#: adminpages/emailsettings.php:135 adminpages/emailsettings.php:139
|
2005 |
msgid "when a member checks out."
|
2006 |
msgstr ""
|
2007 |
|
2008 |
#: adminpages/emailsettings.php:144 adminpages/emailsettings.php:101
|
2009 |
#: adminpages/emailsettings.php:119 adminpages/emailsettings.php:130
|
2010 |
+
#: adminpages/emailsettings.php:140 adminpages/emailsettings.php:144
|
2011 |
msgid "Admin Changes"
|
2012 |
msgstr ""
|
2013 |
|
2014 |
#: adminpages/emailsettings.php:148 adminpages/emailsettings.php:105
|
2015 |
#: adminpages/emailsettings.php:123 adminpages/emailsettings.php:134
|
2016 |
+
#: adminpages/emailsettings.php:144 adminpages/emailsettings.php:148
|
2017 |
msgid "when an admin changes a user's membership level through the dashboard."
|
2018 |
msgstr ""
|
2019 |
|
2020 |
#: adminpages/emailsettings.php:153 adminpages/emailsettings.php:110
|
2021 |
#: adminpages/emailsettings.php:128 adminpages/emailsettings.php:139
|
2022 |
+
#: adminpages/emailsettings.php:149 adminpages/emailsettings.php:153
|
2023 |
msgid "Cancellation"
|
2024 |
msgstr ""
|
2025 |
|
2026 |
#: adminpages/emailsettings.php:157 adminpages/emailsettings.php:114
|
2027 |
#: adminpages/emailsettings.php:132 adminpages/emailsettings.php:143
|
2028 |
+
#: adminpages/emailsettings.php:153 adminpages/emailsettings.php:157
|
2029 |
msgid "when a user cancels his or her account."
|
2030 |
msgstr ""
|
2031 |
|
2032 |
#: adminpages/emailsettings.php:162 adminpages/emailsettings.php:119
|
2033 |
#: adminpages/emailsettings.php:137 adminpages/emailsettings.php:148
|
2034 |
+
#: adminpages/emailsettings.php:158 adminpages/emailsettings.php:162
|
2035 |
msgid "Bill Updates"
|
2036 |
msgstr ""
|
2037 |
|
2038 |
#: adminpages/emailsettings.php:166 adminpages/emailsettings.php:123
|
2039 |
#: adminpages/emailsettings.php:141 adminpages/emailsettings.php:152
|
2040 |
+
#: adminpages/emailsettings.php:162 adminpages/emailsettings.php:166
|
2041 |
msgid "when a user updates his or her billing information."
|
2042 |
msgstr ""
|
2043 |
|
2044 |
#: adminpages/emailsettings.php:172 adminpages/emailsettings.php:129
|
2045 |
#: adminpages/emailsettings.php:147 adminpages/emailsettings.php:158
|
2046 |
+
#: adminpages/emailsettings.php:168 adminpages/emailsettings.php:172
|
2047 |
msgid "Send members emails"
|
2048 |
msgstr ""
|
2049 |
|
2050 |
#: adminpages/emailsettings.php:178 adminpages/emailsettings.php:135
|
2051 |
#: adminpages/emailsettings.php:153 adminpages/emailsettings.php:164
|
2052 |
+
#: adminpages/emailsettings.php:174 adminpages/emailsettings.php:178
|
2053 |
msgid "New Users"
|
2054 |
msgstr ""
|
2055 |
|
2056 |
#: adminpages/emailsettings.php:182 adminpages/emailsettings.php:139
|
2057 |
#: adminpages/emailsettings.php:157 adminpages/emailsettings.php:168
|
2058 |
+
#: adminpages/emailsettings.php:178 adminpages/emailsettings.php:182
|
2059 |
msgid ""
|
2060 |
"Default WP notification email. (Recommended: Leave unchecked. Members will "
|
2061 |
"still get an email confirmation from PMPro after checkout.)"
|
2062 |
msgstr ""
|
2063 |
|
2064 |
+
#: adminpages/functions.php:270 adminpages/orders.php:146
|
2065 |
+
#: adminpages/orders.php:155 adminpages/orders.php:158
|
2066 |
+
msgid "Invoice emailed successfully."
|
2067 |
+
msgstr ""
|
2068 |
+
|
2069 |
+
#: adminpages/functions.php:274 adminpages/orders.php:149
|
2070 |
+
#: adminpages/orders.php:160 adminpages/orders.php:161
|
2071 |
+
msgid "Error emailing invoice."
|
2072 |
+
msgstr ""
|
2073 |
+
|
2074 |
+
#: adminpages/functions.php:301 adminpages/orders.php:667
|
2075 |
+
#: adminpages/orders.php:696 adminpages/orders.php:800
|
2076 |
+
#: adminpages/orders.php:831 adminpages/orders.php:842
|
2077 |
+
#: adminpages/orders.php:929 adminpages/orders.php:984
|
2078 |
+
msgid "Email Invoice"
|
2079 |
+
msgstr ""
|
2080 |
+
|
2081 |
+
#: adminpages/functions.php:304 adminpages/orders.php:670
|
2082 |
+
#: adminpages/orders.php:699 adminpages/orders.php:803
|
2083 |
+
#: adminpages/orders.php:834 adminpages/orders.php:845
|
2084 |
+
#: adminpages/orders.php:932 adminpages/orders.php:987
|
2085 |
+
msgid "Send an invoice for this order to: "
|
2086 |
+
msgstr ""
|
2087 |
+
|
2088 |
+
#: adminpages/functions.php:306 adminpages/orders.php:672
|
2089 |
+
#: adminpages/orders.php:701 adminpages/orders.php:805
|
2090 |
+
#: adminpages/orders.php:836 adminpages/orders.php:847
|
2091 |
+
#: adminpages/orders.php:934 adminpages/orders.php:989
|
2092 |
+
msgid "Send Email"
|
2093 |
+
msgstr ""
|
2094 |
+
|
2095 |
#: adminpages/membershiplevels.php:150 adminpages/membershiplevels.php:137
|
2096 |
#: adminpages/membershiplevels.php:141 adminpages/membershiplevels.php:143
|
2097 |
#: adminpages/membershiplevels.php:146 adminpages/membershiplevels.php:150
|
2165 |
msgid "Add New Membership Level"
|
2166 |
msgstr ""
|
2167 |
|
2168 |
+
#: adminpages/membershiplevels.php:353 adminpages/membershiplevels.php:742
|
2169 |
#: adminpages/reports/login.php:180 adminpages/membershiplevels.php:291
|
2170 |
#: adminpages/membershiplevels.php:293 adminpages/membershiplevels.php:295
|
2171 |
#: adminpages/membershiplevels.php:319 adminpages/membershiplevels.php:329
|
2172 |
+
#: adminpages/membershiplevels.php:351 adminpages/membershiplevels.php:353
|
2173 |
+
#: adminpages/membershiplevels.php:506 adminpages/membershiplevels.php:512
|
2174 |
+
#: adminpages/membershiplevels.php:514 adminpages/membershiplevels.php:541
|
2175 |
+
#: adminpages/membershiplevels.php:542 adminpages/membershiplevels.php:584
|
2176 |
+
#: adminpages/membershiplevels.php:630 adminpages/membershiplevels.php:632
|
2177 |
+
#: adminpages/membershiplevels.php:637 adminpages/membershiplevels.php:638
|
2178 |
+
#: adminpages/membershiplevels.php:642 adminpages/membershiplevels.php:654
|
2179 |
+
#: adminpages/membershiplevels.php:664 adminpages/membershiplevels.php:714
|
2180 |
+
#: adminpages/membershiplevels.php:716 adminpages/reports/login.php:142
|
2181 |
#: adminpages/reports/login.php:144 adminpages/reports/login.php:160
|
2182 |
#: adminpages/reports/login.php:164 adminpages/reports/login.php:180
|
2183 |
msgid "Name"
|
2186 |
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:314
|
2187 |
#: adminpages/membershiplevels.php:316 adminpages/membershiplevels.php:318
|
2188 |
#: adminpages/membershiplevels.php:342 adminpages/membershiplevels.php:352
|
2189 |
+
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
2190 |
msgid "Confirmation Message"
|
2191 |
msgstr ""
|
2192 |
|
2193 |
#: adminpages/membershiplevels.php:390 adminpages/membershiplevels.php:388
|
2194 |
+
#: adminpages/membershiplevels.php:390
|
2195 |
msgid "Check to include this message in the membership confirmation email."
|
2196 |
msgstr ""
|
2197 |
|
2198 |
+
#: adminpages/membershiplevels.php:396 adminpages/membershiplevels.php:743
|
2199 |
#: adminpages/membershiplevels.php:333 adminpages/membershiplevels.php:335
|
2200 |
#: adminpages/membershiplevels.php:337 adminpages/membershiplevels.php:338
|
2201 |
#: adminpages/membershiplevels.php:361 adminpages/membershiplevels.php:371
|
2202 |
+
#: adminpages/membershiplevels.php:394 adminpages/membershiplevels.php:396
|
2203 |
+
#: adminpages/membershiplevels.php:543 adminpages/membershiplevels.php:585
|
2204 |
+
#: adminpages/membershiplevels.php:631 adminpages/membershiplevels.php:633
|
2205 |
+
#: adminpages/membershiplevels.php:638 adminpages/membershiplevels.php:639
|
2206 |
+
#: adminpages/membershiplevels.php:643 adminpages/membershiplevels.php:655
|
2207 |
+
#: adminpages/membershiplevels.php:665 adminpages/membershiplevels.php:715
|
2208 |
+
#: adminpages/membershiplevels.php:717
|
2209 |
msgid "Billing Details"
|
2210 |
msgstr ""
|
2211 |
|
2212 |
#: adminpages/membershiplevels.php:431
|
2213 |
+
#: classes/gateways/class.pmprogateway_stripe.php:742
|
2214 |
#: adminpages/membershiplevels.php:349 adminpages/membershiplevels.php:351
|
2215 |
#: adminpages/membershiplevels.php:370 adminpages/membershiplevels.php:372
|
2216 |
#: adminpages/membershiplevels.php:373 adminpages/membershiplevels.php:396
|
2217 |
#: adminpages/membershiplevels.php:406 adminpages/membershiplevels.php:429
|
2218 |
+
#: adminpages/membershiplevels.php:431
|
2219 |
#: classes/gateways/class.pmprogateway_stripe.php:619
|
2220 |
#: classes/gateways/class.pmprogateway_stripe.php:620
|
2221 |
#: classes/gateways/class.pmprogateway_stripe.php:630
|
2227 |
#: classes/gateways/class.pmprogateway_stripe.php:686
|
2228 |
#: classes/gateways/class.pmprogateway_stripe.php:697
|
2229 |
#: classes/gateways/class.pmprogateway_stripe.php:735
|
2230 |
+
#: classes/gateways/class.pmprogateway_stripe.php:750
|
2231 |
#: classes/gateways/class.pmprogateway_stripe.php:762
|
2232 |
#: classes/gateways/class.pmprogateway_stripe.php:769
|
2233 |
#: classes/gateways/class.pmprogateway_stripe.php:777
|
2241 |
#: adminpages/membershiplevels.php:368 adminpages/membershiplevels.php:387
|
2242 |
#: adminpages/membershiplevels.php:389 adminpages/membershiplevels.php:390
|
2243 |
#: adminpages/membershiplevels.php:413 adminpages/membershiplevels.php:423
|
2244 |
+
#: adminpages/membershiplevels.php:444 adminpages/membershiplevels.php:446
|
2245 |
msgid ""
|
2246 |
"Braintree integration currently only supports billing periods of \"Month\" "
|
2247 |
"or \"Year\"."
|
2251 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:393
|
2252 |
#: adminpages/membershiplevels.php:395 adminpages/membershiplevels.php:396
|
2253 |
#: adminpages/membershiplevels.php:417 adminpages/membershiplevels.php:427
|
2254 |
+
#: adminpages/membershiplevels.php:448 adminpages/membershiplevels.php:450
|
2255 |
msgid ""
|
2256 |
"After saving this level, make note of the ID and create a \"Plan\" in your "
|
2257 |
"Braintree dashboard with the same settings and the \"Plan ID\" set to "
|
2259 |
msgstr ""
|
2260 |
|
2261 |
#: adminpages/membershiplevels.php:450 adminpages/membershiplevels.php:455
|
2262 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:88
|
2263 |
+
#: classes/gateways/class.pmprogateway_paypal.php:136
|
2264 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:145
|
2265 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:137
|
2266 |
#: adminpages/membershiplevels.php:372 adminpages/membershiplevels.php:374
|
2270 |
#: adminpages/membershiplevels.php:417 adminpages/membershiplevels.php:419
|
2271 |
#: adminpages/membershiplevels.php:427 adminpages/membershiplevels.php:429
|
2272 |
#: adminpages/membershiplevels.php:432 adminpages/membershiplevels.php:448
|
2273 |
+
#: adminpages/membershiplevels.php:450 adminpages/membershiplevels.php:453
|
2274 |
+
#: adminpages/membershiplevels.php:455 adminpages/paymentsettings.php:170
|
2275 |
#: adminpages/paymentsettings.php:174 adminpages/paymentsettings.php:179
|
2276 |
#: classes/gateways/class.pmprogateway_cybersource.php:101
|
2277 |
#: classes/gateways/class.pmprogateway_paypal.php:118
|
2285 |
msgstr ""
|
2286 |
|
2287 |
#: adminpages/membershiplevels.php:455 adminpages/membershiplevels.php:432
|
2288 |
+
#: adminpages/membershiplevels.php:453 adminpages/membershiplevels.php:455
|
2289 |
#, php-format
|
2290 |
msgid ""
|
2291 |
"You will need to create a \"Plan\" in your Braintree dashboard with the same "
|
2296 |
#: adminpages/membershiplevels.php:388 adminpages/membershiplevels.php:407
|
2297 |
#: adminpages/membershiplevels.php:409 adminpages/membershiplevels.php:410
|
2298 |
#: adminpages/membershiplevels.php:431 adminpages/membershiplevels.php:441
|
2299 |
+
#: adminpages/membershiplevels.php:465 adminpages/membershiplevels.php:467
|
2300 |
msgid ""
|
2301 |
"Stripe integration currently does not support billing limits. You can still "
|
2302 |
"set an expiration date below."
|
2306 |
#: adminpages/membershiplevels.php:400 adminpages/membershiplevels.php:419
|
2307 |
#: adminpages/membershiplevels.php:421 adminpages/membershiplevels.php:422
|
2308 |
#: adminpages/membershiplevels.php:443 adminpages/membershiplevels.php:453
|
2309 |
+
#: adminpages/membershiplevels.php:477 adminpages/membershiplevels.php:479
|
2310 |
msgid ""
|
2311 |
"2Checkout integration does not support custom trials. You can do one period "
|
2312 |
"trials by setting an initial payment different from the billing amount."
|
2317 |
#: adminpages/membershiplevels.php:441 adminpages/membershiplevels.php:443
|
2318 |
#: adminpages/membershiplevels.php:444 adminpages/membershiplevels.php:465
|
2319 |
#: adminpages/membershiplevels.php:475 adminpages/membershiplevels.php:499
|
2320 |
+
#: adminpages/membershiplevels.php:501
|
2321 |
msgid ""
|
2322 |
"Stripe integration currently does not support trial amounts greater than $0."
|
2323 |
msgstr ""
|
2327 |
#: adminpages/membershiplevels.php:445 adminpages/membershiplevels.php:447
|
2328 |
#: adminpages/membershiplevels.php:448 adminpages/membershiplevels.php:469
|
2329 |
#: adminpages/membershiplevels.php:479 adminpages/membershiplevels.php:503
|
2330 |
+
#: adminpages/membershiplevels.php:505
|
2331 |
msgid ""
|
2332 |
"Braintree integration currently does not support trial amounts greater than "
|
2333 |
"$0."
|
2338 |
#: adminpages/membershiplevels.php:449 adminpages/membershiplevels.php:451
|
2339 |
#: adminpages/membershiplevels.php:452 adminpages/membershiplevels.php:473
|
2340 |
#: adminpages/membershiplevels.php:483 adminpages/membershiplevels.php:507
|
2341 |
+
#: adminpages/membershiplevels.php:509
|
2342 |
msgid ""
|
2343 |
"Payflow integration currently does not support trial amounts greater than $0."
|
2344 |
msgstr ""
|
2348 |
#: adminpages/membershiplevels.php:457 adminpages/membershiplevels.php:458
|
2349 |
#: adminpages/membershiplevels.php:460 adminpages/membershiplevels.php:461
|
2350 |
#: adminpages/membershiplevels.php:482 adminpages/membershiplevels.php:492
|
2351 |
+
#: adminpages/membershiplevels.php:516 adminpages/membershiplevels.php:518
|
2352 |
msgid "Other Settings"
|
2353 |
msgstr ""
|
2354 |
|
2357 |
#: adminpages/membershiplevels.php:461 adminpages/membershiplevels.php:462
|
2358 |
#: adminpages/membershiplevels.php:464 adminpages/membershiplevels.php:465
|
2359 |
#: adminpages/membershiplevels.php:486 adminpages/membershiplevels.php:496
|
2360 |
+
#: adminpages/membershiplevels.php:520 adminpages/membershiplevels.php:522
|
2361 |
msgid "Disable New Signups"
|
2362 |
msgstr ""
|
2363 |
|
2366 |
#: adminpages/membershiplevels.php:462 adminpages/membershiplevels.php:463
|
2367 |
#: adminpages/membershiplevels.php:465 adminpages/membershiplevels.php:466
|
2368 |
#: adminpages/membershiplevels.php:487 adminpages/membershiplevels.php:497
|
2369 |
+
#: adminpages/membershiplevels.php:521 adminpages/membershiplevels.php:523
|
2370 |
msgid ""
|
2371 |
"Check to hide this level from the membership levels page and disable "
|
2372 |
"registration."
|
2373 |
msgstr ""
|
2374 |
|
2375 |
#: adminpages/membershiplevels.php:548 adminpages/membershiplevels.php:546
|
2376 |
+
#: adminpages/membershiplevels.php:548
|
2377 |
#, php-format
|
2378 |
msgid ""
|
2379 |
"WARNING: This level is set with both a recurring billing amount and an "
|
2387 |
#: adminpages/membershiplevels.php:492 adminpages/membershiplevels.php:493
|
2388 |
#: adminpages/membershiplevels.php:495 adminpages/membershiplevels.php:496
|
2389 |
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:527
|
2390 |
+
#: adminpages/membershiplevels.php:570 adminpages/membershiplevels.php:572
|
2391 |
msgid "Content Settings"
|
2392 |
msgstr ""
|
2393 |
|
2394 |
+
#: adminpages/membershiplevels.php:588
|
2395 |
+
#, php-format
|
2396 |
+
msgid ""
|
2397 |
+
"Non-members will not see posts in these categories. You can <a href=\"%s\" "
|
2398 |
+
"title=\"Advanced Settings\" target=\"_blank\">update this setting here</a>."
|
2399 |
+
msgstr ""
|
2400 |
+
|
2401 |
+
#: adminpages/membershiplevels.php:592
|
2402 |
+
#, php-format
|
2403 |
+
msgid ""
|
2404 |
+
"Non-members will see the title and excerpt for posts in these categories. "
|
2405 |
+
"You can <a href=\"%s\" title=\"Advanced Settings\" target=\"_blank\">update "
|
2406 |
+
"this setting here</a>."
|
2407 |
+
msgstr ""
|
2408 |
+
|
2409 |
+
#: adminpages/membershiplevels.php:595
|
2410 |
+
#, php-format
|
2411 |
+
msgid ""
|
2412 |
+
"Non-members will see the title only for posts in these categories. You can "
|
2413 |
+
"<a href=\"%s\" title=\"Advanced Settings\" target=\"_blank\">update this "
|
2414 |
+
"setting here</a>."
|
2415 |
+
msgstr ""
|
2416 |
+
|
2417 |
+
#: adminpages/membershiplevels.php:602 adminpages/membershiplevels.php:461
|
2418 |
#: adminpages/membershiplevels.php:467 adminpages/membershiplevels.php:469
|
2419 |
#: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:497
|
2420 |
#: adminpages/membershiplevels.php:499 adminpages/membershiplevels.php:500
|
2421 |
#: adminpages/membershiplevels.php:521 adminpages/membershiplevels.php:531
|
2422 |
+
#: adminpages/membershiplevels.php:574 adminpages/membershiplevels.php:576
|
2423 |
msgid "Categories"
|
2424 |
msgstr ""
|
2425 |
|
2426 |
+
#: adminpages/membershiplevels.php:610 adminpages/membershiplevels.php:505
|
2427 |
#: adminpages/membershiplevels.php:507 adminpages/membershiplevels.php:516
|
2428 |
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:529
|
2429 |
#: adminpages/membershiplevels.php:539 adminpages/membershiplevels.php:582
|
2430 |
+
#: adminpages/membershiplevels.php:584
|
2431 |
msgid "Save Level"
|
2432 |
msgstr ""
|
2433 |
|
2434 |
+
#: adminpages/membershiplevels.php:611 adminpages/orders.php:939
|
2435 |
+
#: pages/billing.php:371 pages/cancel.php:83 shortcodes/pmpro_account.php:72
|
2436 |
#: adminpages/membershiplevels.php:506 adminpages/membershiplevels.php:508
|
2437 |
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:518
|
2438 |
#: adminpages/membershiplevels.php:530 adminpages/membershiplevels.php:540
|
2439 |
+
#: adminpages/membershiplevels.php:583 adminpages/membershiplevels.php:585
|
2440 |
+
#: adminpages/orders.php:511 adminpages/orders.php:561
|
2441 |
+
#: adminpages/orders.php:633 adminpages/orders.php:662
|
2442 |
+
#: adminpages/orders.php:765 adminpages/orders.php:796
|
2443 |
+
#: adminpages/orders.php:807 adminpages/orders.php:894
|
2444 |
+
#: adminpages/orders.php:949 pages/account.php:44 pages/billing.php:295
|
2445 |
+
#: pages/billing.php:299 pages/billing.php:330 pages/billing.php:339
|
2446 |
+
#: pages/billing.php:342 pages/billing.php:344 pages/billing.php:348
|
2447 |
+
#: pages/billing.php:363 pages/billing.php:364 pages/billing.php:365
|
2448 |
+
#: pages/billing.php:371 pages/billing.php:392 pages/billing.php:397
|
2449 |
+
#: pages/billing.php:401 pages/billing.php:406 pages/cancel.php:71
|
2450 |
+
#: pages/cancel.php:83 pages/cancel.php:84 shortcodes/pmpro_account.php:70
|
2451 |
+
#: shortcodes/pmpro_account.php:72 shortcodes/pmpro_account.php:73
|
2452 |
msgid "Cancel"
|
2453 |
msgstr ""
|
2454 |
|
2455 |
+
#: adminpages/membershiplevels.php:722 adminpages/membershiplevels.php:725
|
2456 |
#: adminpages/membershiplevels.php:493 adminpages/membershiplevels.php:496
|
2457 |
#: adminpages/membershiplevels.php:499 adminpages/membershiplevels.php:501
|
2458 |
#: adminpages/membershiplevels.php:502 adminpages/membershiplevels.php:504
|
2465 |
#: adminpages/membershiplevels.php:624 adminpages/membershiplevels.php:625
|
2466 |
#: adminpages/membershiplevels.php:634 adminpages/membershiplevels.php:637
|
2467 |
#: adminpages/membershiplevels.php:644 adminpages/membershiplevels.php:647
|
2468 |
+
#: adminpages/membershiplevels.php:694 adminpages/membershiplevels.php:696
|
2469 |
+
#: adminpages/membershiplevels.php:697 adminpages/membershiplevels.php:699
|
2470 |
msgid "Search Levels"
|
2471 |
msgstr ""
|
2472 |
|
2473 |
+
#: adminpages/membershiplevels.php:728 adminpages/membershiplevels.php:490
|
2474 |
#: adminpages/membershiplevels.php:496 adminpages/membershiplevels.php:498
|
2475 |
#: adminpages/membershiplevels.php:525 adminpages/membershiplevels.php:526
|
2476 |
#: adminpages/membershiplevels.php:569 adminpages/membershiplevels.php:607
|
2477 |
#: adminpages/membershiplevels.php:609 adminpages/membershiplevels.php:618
|
2478 |
#: adminpages/membershiplevels.php:619 adminpages/membershiplevels.php:631
|
2479 |
#: adminpages/membershiplevels.php:641 adminpages/membershiplevels.php:700
|
2480 |
+
#: adminpages/membershiplevels.php:702
|
2481 |
msgid "Add New Level"
|
2482 |
msgstr ""
|
2483 |
|
2484 |
+
#: adminpages/membershiplevels.php:731 adminpages/membershiplevels.php:579
|
2485 |
#: adminpages/membershiplevels.php:619 adminpages/membershiplevels.php:621
|
2486 |
#: adminpages/membershiplevels.php:630 adminpages/membershiplevels.php:631
|
2487 |
#: adminpages/membershiplevels.php:643 adminpages/membershiplevels.php:653
|
2488 |
+
#: adminpages/membershiplevels.php:703 adminpages/membershiplevels.php:705
|
2489 |
msgid "Drag and drop membership levels to reorder them on the Levels page."
|
2490 |
msgstr ""
|
2491 |
|
2492 |
+
#: adminpages/membershiplevels.php:744 pages/cancel.php:61
|
2493 |
#: pages/confirmation.php:81 pages/invoice.php:64
|
2494 |
#: shortcodes/pmpro_account.php:46 adminpages/membershiplevels.php:510
|
2495 |
#: adminpages/membershiplevels.php:516 adminpages/membershiplevels.php:518
|
2498 |
#: adminpages/membershiplevels.php:634 adminpages/membershiplevels.php:639
|
2499 |
#: adminpages/membershiplevels.php:640 adminpages/membershiplevels.php:644
|
2500 |
#: adminpages/membershiplevels.php:656 adminpages/membershiplevels.php:666
|
2501 |
+
#: adminpages/membershiplevels.php:716 adminpages/membershiplevels.php:718
|
2502 |
+
#: pages/account.php:20 pages/cancel.php:53 pages/cancel.php:61
|
2503 |
+
#: pages/cancel.php:62 pages/confirmation.php:81 pages/confirmation.php:83
|
2504 |
+
#: pages/confirmation.php:84 pages/confirmation.php:89 pages/invoice.php:63
|
2505 |
+
#: pages/invoice.php:64 pages/invoice.php:68 pages/invoice.php:70
|
2506 |
+
#: shortcodes/pmpro_account.php:45 shortcodes/pmpro_account.php:46
|
2507 |
msgid "Expiration"
|
2508 |
msgstr ""
|
2509 |
|
2510 |
+
#: adminpages/membershiplevels.php:745 adminpages/membershiplevels.php:511
|
2511 |
#: adminpages/membershiplevels.php:517 adminpages/membershiplevels.php:519
|
2512 |
#: adminpages/membershiplevels.php:545 adminpages/membershiplevels.php:546
|
2513 |
#: adminpages/membershiplevels.php:587 adminpages/membershiplevels.php:633
|
2514 |
#: adminpages/membershiplevels.php:635 adminpages/membershiplevels.php:640
|
2515 |
#: adminpages/membershiplevels.php:641 adminpages/membershiplevels.php:645
|
2516 |
#: adminpages/membershiplevels.php:657 adminpages/membershiplevels.php:667
|
2517 |
+
#: adminpages/membershiplevels.php:717 adminpages/membershiplevels.php:719
|
2518 |
msgid "Allow Signups"
|
2519 |
msgstr ""
|
2520 |
|
2521 |
+
#: adminpages/membershiplevels.php:762 adminpages/membershiplevels.php:566
|
2522 |
+
#: adminpages/membershiplevels.php:572 adminpages/membershiplevels.php:574
|
2523 |
+
#: adminpages/membershiplevels.php:580 adminpages/membershiplevels.php:601
|
2524 |
+
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:662
|
2525 |
+
#: adminpages/membershiplevels.php:664 adminpages/membershiplevels.php:669
|
2526 |
+
#: adminpages/membershiplevels.php:670 adminpages/membershiplevels.php:674
|
2527 |
+
#: adminpages/membershiplevels.php:686 adminpages/membershiplevels.php:696
|
2528 |
+
#: adminpages/membershiplevels.php:746 adminpages/membershiplevels.php:748
|
2529 |
+
#, php-format
|
2530 |
+
msgid ""
|
2531 |
+
"Are you sure you want to delete membership level %s? All subscriptions will "
|
2532 |
+
"be cancelled."
|
2533 |
+
msgstr ""
|
2534 |
+
|
2535 |
+
#: adminpages/membershiplevels.php:767 adminpages/membershiplevels.php:534
|
2536 |
#: adminpages/membershiplevels.php:540 adminpages/membershiplevels.php:542
|
2537 |
#: adminpages/membershiplevels.php:566 adminpages/membershiplevels.php:569
|
2538 |
#: adminpages/membershiplevels.php:646 adminpages/membershiplevels.php:648
|
2539 |
#: adminpages/membershiplevels.php:650 adminpages/membershiplevels.php:655
|
2540 |
#: adminpages/membershiplevels.php:656 adminpages/membershiplevels.php:660
|
2541 |
#: adminpages/membershiplevels.php:672 adminpages/membershiplevels.php:682
|
2542 |
+
#: adminpages/membershiplevels.php:732 adminpages/membershiplevels.php:734
|
2543 |
msgid "FREE"
|
2544 |
msgstr ""
|
2545 |
|
2546 |
+
#: adminpages/membershiplevels.php:776 adminpages/membershiplevels.php:560
|
2547 |
#: adminpages/membershiplevels.php:566 adminpages/membershiplevels.php:568
|
2548 |
#: adminpages/membershiplevels.php:575 adminpages/membershiplevels.php:595
|
2549 |
#: adminpages/membershiplevels.php:655 adminpages/membershiplevels.php:657
|
2550 |
#: adminpages/membershiplevels.php:659 adminpages/membershiplevels.php:664
|
2551 |
#: adminpages/membershiplevels.php:665 adminpages/membershiplevels.php:669
|
2552 |
#: adminpages/membershiplevels.php:681 adminpages/membershiplevels.php:691
|
2553 |
+
#: adminpages/membershiplevels.php:741 adminpages/membershiplevels.php:743
|
2554 |
msgid "After"
|
2555 |
msgstr ""
|
2556 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2557 |
#: adminpages/memberslist.php:25 adminpages/memberslist.php:25
|
2558 |
#: includes/adminpages.php:15 includes/adminpages.php:53
|
2559 |
#: includes/adminpages.php:54 includes/adminpages.php:74
|
2562 |
msgid "Members List"
|
2563 |
msgstr ""
|
2564 |
|
2565 |
+
#: adminpages/memberslist.php:26 adminpages/orders.php:973
|
2566 |
#: adminpages/memberslist.php:26 adminpages/orders.php:522
|
2567 |
#: adminpages/orders.php:591 adminpages/orders.php:698
|
2568 |
#: adminpages/orders.php:727 adminpages/orders.php:833
|
2571 |
msgid "Export to CSV"
|
2572 |
msgstr ""
|
2573 |
|
2574 |
+
#: adminpages/memberslist.php:30 adminpages/orders.php:992
|
2575 |
#: adminpages/reports/login.php:103 adminpages/reports/memberships.php:349
|
2576 |
#: adminpages/reports/sales.php:288 adminpages/memberslist.php:30
|
2577 |
#: adminpages/orders.php:603 adminpages/orders.php:710
|
2595 |
|
2596 |
#: adminpages/memberslist.php:32 adminpages/reports/login.php:105
|
2597 |
#: adminpages/reports/memberships.php:373 adminpages/reports/sales.php:311
|
2598 |
+
#: classes/class.pmproemail.php:182 classes/class.pmproemail.php:227
|
2599 |
#: adminpages/memberslist.php:32 adminpages/reports/login.php:67
|
2600 |
#: adminpages/reports/login.php:69 adminpages/reports/login.php:85
|
2601 |
#: adminpages/reports/login.php:89 adminpages/reports/login.php:105
|
2657 |
msgid "Last Name"
|
2658 |
msgstr ""
|
2659 |
|
2660 |
+
#: adminpages/memberslist.php:170 pages/billing.php:108 pages/checkout.php:226
|
2661 |
#: pages/confirmation.php:66 pages/invoice.php:49
|
2662 |
#: adminpages/memberslist.php:117 adminpages/memberslist.php:150
|
2663 |
#: adminpages/memberslist.php:160 adminpages/memberslist.php:170
|
2672 |
#: pages/confirmation.php:59 pages/confirmation.php:61
|
2673 |
#: pages/confirmation.php:66 pages/confirmation.php:67
|
2674 |
#: pages/confirmation.php:69 pages/invoice.php:46 pages/invoice.php:48
|
2675 |
+
#: pages/invoice.php:49
|
2676 |
msgid "Billing Address"
|
2677 |
msgstr ""
|
2678 |
|
2716 |
msgid "All Users"
|
2717 |
msgstr ""
|
2718 |
|
2719 |
+
#: adminpages/orders.php:156 adminpages/orders.php:26 adminpages/orders.php:67
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2720 |
#: adminpages/orders.php:162 adminpages/orders.php:174
|
2721 |
#: adminpages/orders.php:175
|
2722 |
msgid "Order deleted successfully."
|
2723 |
msgstr ""
|
2724 |
|
2725 |
+
#: adminpages/orders.php:159 adminpages/orders.php:31 adminpages/orders.php:72
|
2726 |
#: adminpages/orders.php:165 adminpages/orders.php:177
|
2727 |
#: adminpages/orders.php:180
|
2728 |
msgid "Error deleting order."
|
2729 |
msgstr ""
|
2730 |
|
2731 |
+
#: adminpages/orders.php:296 adminpages/orders.php:119
|
2732 |
#: adminpages/orders.php:169 adminpages/orders.php:270
|
2733 |
#: adminpages/orders.php:284 adminpages/orders.php:285
|
2734 |
#: adminpages/orders.php:295 adminpages/orders.php:297
|
2736 |
msgid "Order saved successfully."
|
2737 |
msgstr ""
|
2738 |
|
2739 |
+
#: adminpages/orders.php:299 adminpages/orders.php:124
|
2740 |
#: adminpages/orders.php:174 adminpages/orders.php:275
|
2741 |
#: adminpages/orders.php:287 adminpages/orders.php:288
|
2742 |
#: adminpages/orders.php:298 adminpages/orders.php:300
|
2744 |
msgid "Error updating order timestamp."
|
2745 |
msgstr ""
|
2746 |
|
2747 |
+
#: adminpages/orders.php:303 adminpages/orders.php:130
|
2748 |
#: adminpages/orders.php:180 adminpages/orders.php:281
|
2749 |
#: adminpages/orders.php:291 adminpages/orders.php:292
|
2750 |
#: adminpages/orders.php:302 adminpages/orders.php:304
|
2752 |
msgid "Error saving order."
|
2753 |
msgstr ""
|
2754 |
|
2755 |
+
#: adminpages/orders.php:370 classes/class.memberorder.php:859
|
2756 |
#: adminpages/orders.php:195 adminpages/orders.php:245
|
2757 |
#: adminpages/orders.php:317 adminpages/orders.php:321
|
2758 |
#: adminpages/orders.php:346 adminpages/orders.php:352
|
2763 |
msgid "Order"
|
2764 |
msgstr ""
|
2765 |
|
2766 |
+
#: adminpages/orders.php:371 adminpages/orders.php:1361
|
2767 |
+
#: pages/confirmation.php:49 pages/invoice.php:24 pages/confirmation.php:43
|
2768 |
+
#: pages/confirmation.php:49 pages/invoice.php:24
|
2769 |
+
msgid "Print"
|
2770 |
+
msgstr ""
|
2771 |
+
|
2772 |
+
#: adminpages/orders.php:374 adminpages/orders.php:197
|
2773 |
#: adminpages/orders.php:247 adminpages/orders.php:319
|
2774 |
#: adminpages/orders.php:323 adminpages/orders.php:348
|
2775 |
#: adminpages/orders.php:354 adminpages/orders.php:364
|
2777 |
msgid "New Order"
|
2778 |
msgstr ""
|
2779 |
|
2780 |
+
#: adminpages/orders.php:421 adminpages/orders.php:220
|
2781 |
#: adminpages/orders.php:270 adminpages/orders.php:342
|
2782 |
#: adminpages/orders.php:359 adminpages/orders.php:371
|
2783 |
#: adminpages/orders.php:390 adminpages/orders.php:401
|
2785 |
msgid "Randomly generated for you."
|
2786 |
msgstr ""
|
2787 |
|
2788 |
+
#: adminpages/orders.php:426 adminpages/orders.php:225
|
2789 |
#: adminpages/orders.php:275 adminpages/orders.php:347
|
2790 |
#: adminpages/orders.php:364 adminpages/orders.php:376
|
2791 |
#: adminpages/orders.php:395 adminpages/orders.php:406
|
2793 |
msgid "User ID"
|
2794 |
msgstr ""
|
2795 |
|
2796 |
+
#: adminpages/orders.php:440 adminpages/orders.php:234
|
2797 |
#: adminpages/orders.php:284 adminpages/orders.php:356
|
2798 |
#: adminpages/orders.php:376 adminpages/orders.php:385
|
2799 |
#: adminpages/orders.php:407 adminpages/orders.php:418
|
2801 |
msgid "Membership Level ID"
|
2802 |
msgstr ""
|
2803 |
|
2804 |
+
#: adminpages/orders.php:455 includes/privacy.php:245 adminpages/orders.php:243
|
2805 |
#: adminpages/orders.php:293 adminpages/orders.php:365
|
2806 |
#: adminpages/orders.php:389 adminpages/orders.php:394
|
2807 |
#: adminpages/orders.php:420 adminpages/orders.php:431
|
2809 |
msgid "Billing Name"
|
2810 |
msgstr ""
|
2811 |
|
2812 |
+
#: adminpages/orders.php:469 includes/privacy.php:249 adminpages/orders.php:251
|
2813 |
#: adminpages/orders.php:301 adminpages/orders.php:373
|
2814 |
#: adminpages/orders.php:401 adminpages/orders.php:402
|
2815 |
#: adminpages/orders.php:432 adminpages/orders.php:443
|
2817 |
msgid "Billing Street"
|
2818 |
msgstr ""
|
2819 |
|
2820 |
+
#: adminpages/orders.php:482 includes/privacy.php:253 includes/privacy.php:358
|
2821 |
#: adminpages/orders.php:258 adminpages/orders.php:308
|
2822 |
#: adminpages/orders.php:380 adminpages/orders.php:409
|
2823 |
#: adminpages/orders.php:412 adminpages/orders.php:443
|
2826 |
msgid "Billing City"
|
2827 |
msgstr ""
|
2828 |
|
2829 |
+
#: adminpages/orders.php:495 includes/privacy.php:257 adminpages/orders.php:265
|
2830 |
#: adminpages/orders.php:315 adminpages/orders.php:387
|
2831 |
#: adminpages/orders.php:416 adminpages/orders.php:423
|
2832 |
#: adminpages/orders.php:454 adminpages/orders.php:465
|
2834 |
msgid "Billing State"
|
2835 |
msgstr ""
|
2836 |
|
2837 |
+
#: adminpages/orders.php:508 includes/privacy.php:261 includes/privacy.php:360
|
2838 |
#: adminpages/orders.php:272 adminpages/orders.php:322
|
2839 |
#: adminpages/orders.php:394 adminpages/orders.php:423
|
2840 |
#: adminpages/orders.php:434 adminpages/orders.php:465
|
2843 |
msgid "Billing Postal Code"
|
2844 |
msgstr ""
|
2845 |
|
2846 |
+
#: adminpages/orders.php:521 includes/privacy.php:265 includes/privacy.php:362
|
2847 |
#: adminpages/orders.php:279 adminpages/orders.php:329
|
2848 |
#: adminpages/orders.php:401 adminpages/orders.php:430
|
2849 |
#: adminpages/orders.php:445 adminpages/orders.php:476
|
2852 |
msgid "Billing Country"
|
2853 |
msgstr ""
|
2854 |
|
2855 |
+
#: adminpages/orders.php:535 includes/privacy.php:269 adminpages/orders.php:287
|
2856 |
#: adminpages/orders.php:337 adminpages/orders.php:409
|
2857 |
#: adminpages/orders.php:438 adminpages/orders.php:457
|
2858 |
#: adminpages/orders.php:488 adminpages/orders.php:499
|
2860 |
msgid "Billing Phone"
|
2861 |
msgstr ""
|
2862 |
|
2863 |
+
#: adminpages/orders.php:565 adminpages/orders.php:1318
|
2864 |
+
#: classes/class.pmproemail.php:313 classes/class.pmproemail.php:322
|
2865 |
+
#: classes/class.pmproemail.php:331 classes/class.pmproemail.php:413
|
2866 |
+
#: classes/class.pmproemail.php:422 classes/class.pmproemail.php:740
|
2867 |
+
#: classes/class.pmproemail.php:742
|
2868 |
+
#: classes/gateways/class.pmprogateway_braintree.php:509
|
2869 |
+
#: classes/gateways/class.pmprogateway_stripe.php:578 pages/checkout.php:83
|
2870 |
+
#: pages/checkout.php:89 pages/checkout.php:426 pages/confirmation.php:58
|
2871 |
#: pages/invoice.php:34 adminpages/orders.php:575 adminpages/orders.php:1363
|
2872 |
#: classes/class.pmproemail.php:216 classes/class.pmproemail.php:218
|
2873 |
#: classes/class.pmproemail.php:225 classes/class.pmproemail.php:227
|
2880 |
#: classes/class.pmproemail.php:278 classes/class.pmproemail.php:284
|
2881 |
#: classes/class.pmproemail.php:285 classes/class.pmproemail.php:287
|
2882 |
#: classes/class.pmproemail.php:293 classes/class.pmproemail.php:294
|
2883 |
+
#: classes/class.pmproemail.php:302 classes/class.pmproemail.php:303
|
2884 |
+
#: classes/class.pmproemail.php:304 classes/class.pmproemail.php:307
|
2885 |
+
#: classes/class.pmproemail.php:313 classes/class.pmproemail.php:316
|
2886 |
+
#: classes/class.pmproemail.php:325 classes/class.pmproemail.php:328
|
2887 |
+
#: classes/class.pmproemail.php:334 classes/class.pmproemail.php:337
|
2888 |
+
#: classes/class.pmproemail.php:346 classes/class.pmproemail.php:357
|
2889 |
+
#: classes/class.pmproemail.php:366 classes/class.pmproemail.php:369
|
2890 |
+
#: classes/class.pmproemail.php:376 classes/class.pmproemail.php:378
|
2891 |
+
#: classes/class.pmproemail.php:384 classes/class.pmproemail.php:385
|
2892 |
+
#: classes/class.pmproemail.php:393 classes/class.pmproemail.php:394
|
2893 |
#: classes/class.pmproemail.php:532 classes/class.pmproemail.php:580
|
2894 |
#: classes/class.pmproemail.php:645 classes/class.pmproemail.php:648
|
2895 |
#: classes/class.pmproemail.php:657 classes/class.pmproemail.php:659
|
2896 |
#: classes/class.pmproemail.php:679 classes/class.pmproemail.php:696
|
2897 |
#: classes/class.pmproemail.php:698 classes/class.pmproemail.php:703
|
2898 |
#: classes/class.pmproemail.php:705 classes/class.pmproemail.php:711
|
2899 |
+
#: classes/class.pmproemail.php:712 classes/class.pmproemail.php:713
|
2900 |
+
#: classes/class.pmproemail.php:714
|
2901 |
#: classes/gateways/class.pmprogateway_braintree.php:349
|
2902 |
#: classes/gateways/class.pmprogateway_braintree.php:362
|
2903 |
#: classes/gateways/class.pmprogateway_braintree.php:364
|
2921 |
#: classes/gateways/class.pmprogateway_stripe.php:562
|
2922 |
#: classes/gateways/class.pmprogateway_stripe.php:573
|
2923 |
#: classes/gateways/class.pmprogateway_stripe.php:611
|
2924 |
+
#: classes/gateways/class.pmprogateway_stripe.php:629
|
2925 |
#: classes/gateways/class.pmprogateway_stripe.php:638
|
2926 |
#: classes/gateways/class.pmprogateway_stripe.php:644
|
2927 |
#: classes/gateways/class.pmprogateway_stripe.php:652
|
2938 |
#: pages/checkout.php:612 pages/checkout.php:616 pages/checkout.php:617
|
2939 |
#: pages/checkout.php:619 pages/checkout.php:622 pages/confirmation.php:51
|
2940 |
#: pages/confirmation.php:52 pages/confirmation.php:58 pages/invoice.php:32
|
2941 |
+
#: pages/invoice.php:33 pages/invoice.php:34
|
2942 |
msgid "Discount Code"
|
2943 |
msgstr ""
|
2944 |
|
2945 |
+
#: adminpages/orders.php:576 classes/class.pmproemail.php:905
|
2946 |
+
#: includes/init.php:193 includes/profile.php:48 adminpages/orders.php:586
|
2947 |
#: classes/class.pmproemail.php:868 classes/class.pmproemail.php:876
|
2948 |
+
#: classes/class.pmproemail.php:877 includes/init.php:229 includes/init.php:232
|
2949 |
+
#: includes/init.php:233 includes/init.php:235 includes/init.php:237
|
2950 |
+
#: includes/init.php:245 includes/init.php:253 includes/init.php:258
|
2951 |
+
#: includes/init.php:259 includes/init.php:264 includes/init.php:265
|
2952 |
+
#: includes/init.php:266 includes/init.php:280 includes/init.php:284
|
2953 |
+
#: includes/profile.php:37 includes/profile.php:39 includes/profile.php:42
|
2954 |
+
#: includes/profile.php:48
|
2955 |
msgid "None"
|
2956 |
msgstr ""
|
2957 |
|
2958 |
+
#: adminpages/orders.php:587 includes/privacy.php:273 adminpages/orders.php:296
|
2959 |
#: adminpages/orders.php:346 adminpages/orders.php:418
|
2960 |
#: adminpages/orders.php:447 adminpages/orders.php:470
|
2961 |
#: adminpages/orders.php:501 adminpages/orders.php:512
|
2963 |
msgid "Sub Total"
|
2964 |
msgstr ""
|
2965 |
|
2966 |
+
#: adminpages/orders.php:600 adminpages/templates/orders-email.php:60
|
2967 |
#: adminpages/templates/orders-print.php:89 includes/privacy.php:277
|
2968 |
#: pages/confirmation.php:92 pages/invoice.php:75 adminpages/orders.php:304
|
2969 |
#: adminpages/orders.php:354 adminpages/orders.php:426
|
2972 |
#: adminpages/orders.php:555 adminpages/orders.php:610
|
2973 |
#: adminpages/templates/orders-email.php:60
|
2974 |
#: adminpages/templates/orders-print.php:89 includes/privacy.php:277
|
2975 |
+
#: pages/confirmation.php:92 pages/invoice.php:74 pages/invoice.php:75
|
2976 |
+
#: pages/invoice.php:78 pages/invoice.php:80
|
2977 |
msgid "Tax"
|
2978 |
msgstr ""
|
2979 |
|
2980 |
+
#: adminpages/orders.php:613 includes/privacy.php:281 adminpages/orders.php:312
|
2981 |
#: adminpages/orders.php:362 adminpages/orders.php:434
|
2982 |
#: adminpages/orders.php:463 adminpages/orders.php:492
|
2983 |
#: adminpages/orders.php:523 adminpages/orders.php:534
|
2985 |
msgid "Coupon Amount"
|
2986 |
msgstr ""
|
2987 |
|
2988 |
+
#: adminpages/orders.php:638 adminpages/orders.php:325
|
2989 |
#: adminpages/orders.php:375 adminpages/orders.php:447
|
2990 |
#: adminpages/orders.php:476 adminpages/orders.php:513
|
2991 |
#: adminpages/orders.php:544 adminpages/orders.php:555
|
2993 |
msgid "Should be subtotal + tax - couponamount."
|
2994 |
msgstr ""
|
2995 |
|
2996 |
+
#: adminpages/orders.php:643 includes/privacy.php:289 adminpages/orders.php:330
|
2997 |
#: adminpages/orders.php:380 adminpages/orders.php:452
|
2998 |
#: adminpages/orders.php:481 adminpages/orders.php:518
|
2999 |
#: adminpages/orders.php:549 adminpages/orders.php:560
|
3001 |
msgid "Payment Type"
|
3002 |
msgstr ""
|
3003 |
|
3004 |
+
#: adminpages/orders.php:655 adminpages/orders.php:335
|
3005 |
#: adminpages/orders.php:385 adminpages/orders.php:457
|
3006 |
#: adminpages/orders.php:486 adminpages/orders.php:528
|
3007 |
#: adminpages/orders.php:559 adminpages/orders.php:570
|
3009 |
msgid "e.g. PayPal Express, PayPal Standard, Credit Card."
|
3010 |
msgstr ""
|
3011 |
|
3012 |
+
#: adminpages/orders.php:659
|
3013 |
+
#: classes/gateways/class.pmprogateway_braintree.php:466
|
3014 |
+
#: classes/gateways/class.pmprogateway_stripe.php:548 includes/privacy.php:293
|
3015 |
+
#: pages/billing.php:279 pages/checkout.php:374 adminpages/orders.php:339
|
3016 |
#: adminpages/orders.php:389 adminpages/orders.php:461
|
3017 |
#: adminpages/orders.php:490 adminpages/orders.php:532
|
3018 |
#: adminpages/orders.php:563 adminpages/orders.php:574
|
3041 |
#: classes/gateways/class.pmprogateway_stripe.php:484
|
3042 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
3043 |
#: classes/gateways/class.pmprogateway_stripe.php:549
|
3044 |
+
#: classes/gateways/class.pmprogateway_stripe.php:558
|
3045 |
#: classes/gateways/class.pmprogateway_stripe.php:573
|
3046 |
#: classes/gateways/class.pmprogateway_stripe.php:581
|
3047 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
3058 |
msgid "Card Type"
|
3059 |
msgstr ""
|
3060 |
|
3061 |
+
#: adminpages/orders.php:669 adminpages/orders.php:344
|
3062 |
#: adminpages/orders.php:394 adminpages/orders.php:466
|
3063 |
#: adminpages/orders.php:495 adminpages/orders.php:540
|
3064 |
#: adminpages/orders.php:571 adminpages/orders.php:582
|
3066 |
msgid "e.g. Visa, MasterCard, AMEX, etc"
|
3067 |
msgstr ""
|
3068 |
|
3069 |
+
#: adminpages/orders.php:673
|
3070 |
#: classes/gateways/class.pmprogateway_twocheckout.php:137
|
3071 |
#: includes/privacy.php:297 adminpages/orders.php:348 adminpages/orders.php:398
|
3072 |
#: adminpages/orders.php:470 adminpages/orders.php:499
|
3081 |
msgid "Account Number"
|
3082 |
msgstr ""
|
3083 |
|
3084 |
+
#: adminpages/orders.php:684 adminpages/orders.php:353
|
3085 |
#: adminpages/orders.php:403 adminpages/orders.php:475
|
3086 |
#: adminpages/orders.php:504 adminpages/orders.php:553
|
3087 |
#: adminpages/orders.php:584 adminpages/orders.php:595
|
3089 |
msgid "Obscure all but last 4 digits."
|
3090 |
msgstr ""
|
3091 |
|
3092 |
+
#: adminpages/orders.php:694 includes/privacy.php:301 adminpages/orders.php:358
|
3093 |
#: adminpages/orders.php:408 adminpages/orders.php:480
|
3094 |
#: adminpages/orders.php:509 adminpages/orders.php:561
|
3095 |
#: adminpages/orders.php:592 adminpages/orders.php:603
|
3097 |
msgid "Expiration Month"
|
3098 |
msgstr ""
|
3099 |
|
3100 |
+
#: adminpages/orders.php:702 includes/privacy.php:305 adminpages/orders.php:365
|
3101 |
#: adminpages/orders.php:415 adminpages/orders.php:487
|
3102 |
#: adminpages/orders.php:516 adminpages/orders.php:569
|
3103 |
#: adminpages/orders.php:600 adminpages/orders.php:611
|
3105 |
msgid "Expiration Year"
|
3106 |
msgstr ""
|
3107 |
|
3108 |
+
#: adminpages/orders.php:734 adminpages/orders.php:1314
|
3109 |
#: classes/class.memberorder.php:860 includes/privacy.php:313
|
3110 |
#: adminpages/orders.php:394 adminpages/orders.php:444
|
3111 |
#: adminpages/orders.php:516 adminpages/orders.php:545
|
3123 |
msgid "Gateway"
|
3124 |
msgstr ""
|
3125 |
|
3126 |
+
#: adminpages/orders.php:757 adminpages/paymentsettings.php:144
|
3127 |
#: includes/privacy.php:317 adminpages/orders.php:411 adminpages/orders.php:461
|
3128 |
#: adminpages/orders.php:462 adminpages/orders.php:534
|
3129 |
#: adminpages/orders.php:563 adminpages/orders.php:633
|
3135 |
msgid "Gateway Environment"
|
3136 |
msgstr ""
|
3137 |
|
3138 |
+
#: adminpages/orders.php:769 adminpages/paymentsettings.php:148
|
3139 |
#: adminpages/orders.php:415 adminpages/orders.php:465
|
3140 |
#: adminpages/orders.php:466 adminpages/orders.php:538
|
3141 |
#: adminpages/orders.php:567 adminpages/orders.php:640
|
3147 |
msgid "Sandbox/Testing"
|
3148 |
msgstr ""
|
3149 |
|
3150 |
+
#: adminpages/orders.php:774 adminpages/paymentsettings.php:149
|
3151 |
#: adminpages/orders.php:416 adminpages/orders.php:466
|
3152 |
#: adminpages/orders.php:467 adminpages/orders.php:539
|
3153 |
#: adminpages/orders.php:568 adminpages/orders.php:642
|
3159 |
msgid "Live/Production"
|
3160 |
msgstr ""
|
3161 |
|
3162 |
+
#: adminpages/orders.php:782 includes/privacy.php:321 adminpages/orders.php:423
|
3163 |
#: adminpages/orders.php:473 adminpages/orders.php:474
|
3164 |
#: adminpages/orders.php:546 adminpages/orders.php:575
|
3165 |
#: adminpages/orders.php:650 adminpages/orders.php:681
|
3168 |
msgid "Payment Transaction ID"
|
3169 |
msgstr ""
|
3170 |
|
3171 |
+
#: adminpages/orders.php:793 adminpages/orders.php:428
|
3172 |
#: adminpages/orders.php:478 adminpages/orders.php:479
|
3173 |
#: adminpages/orders.php:551 adminpages/orders.php:580
|
3174 |
#: adminpages/orders.php:659 adminpages/orders.php:690
|
3177 |
msgid "Generated by the gateway. Useful to cross reference orders."
|
3178 |
msgstr ""
|
3179 |
|
3180 |
+
#: adminpages/orders.php:798 classes/class.memberorder.php:861
|
3181 |
#: includes/privacy.php:325 adminpages/orders.php:432 adminpages/orders.php:482
|
3182 |
#: adminpages/orders.php:483 adminpages/orders.php:555
|
3183 |
#: adminpages/orders.php:584 adminpages/orders.php:664
|
3189 |
msgid "Subscription Transaction ID"
|
3190 |
msgstr ""
|
3191 |
|
3192 |
+
#: adminpages/orders.php:810 adminpages/orders.php:437
|
3193 |
#: adminpages/orders.php:487 adminpages/orders.php:488
|
3194 |
#: adminpages/orders.php:560 adminpages/orders.php:589
|
3195 |
#: adminpages/orders.php:674 adminpages/orders.php:705
|
3198 |
msgid "Generated by the gateway. Useful to cross reference subscriptions."
|
3199 |
msgstr ""
|
3200 |
|
3201 |
+
#: adminpages/orders.php:857 adminpages/orders.php:477
|
3202 |
#: adminpages/orders.php:527 adminpages/orders.php:599
|
3203 |
#: adminpages/orders.php:628 adminpages/orders.php:716
|
3204 |
#: adminpages/orders.php:747 adminpages/orders.php:758
|
3206 |
msgid "Affiliate ID"
|
3207 |
msgstr ""
|
3208 |
|
3209 |
+
#: adminpages/orders.php:871 adminpages/orders.php:485
|
3210 |
#: adminpages/orders.php:535 adminpages/orders.php:607
|
3211 |
#: adminpages/orders.php:636 adminpages/orders.php:728
|
3212 |
#: adminpages/orders.php:759 adminpages/orders.php:770
|
3214 |
msgid "Affiliate SubID"
|
3215 |
msgstr ""
|
3216 |
|
3217 |
+
#: adminpages/orders.php:893 adminpages/orders.php:848
|
3218 |
#: adminpages/orders.php:903
|
3219 |
msgid "TOS Consent"
|
3220 |
msgstr ""
|
3221 |
|
3222 |
+
#: adminpages/orders.php:910 adminpages/orders.php:495
|
3223 |
#: adminpages/orders.php:545 adminpages/orders.php:617
|
3224 |
#: adminpages/orders.php:646 adminpages/orders.php:742
|
3225 |
#: adminpages/orders.php:773 adminpages/orders.php:784
|
3227 |
msgid "Notes"
|
3228 |
msgstr ""
|
3229 |
|
3230 |
+
#: adminpages/orders.php:938 adminpages/orders.php:510
|
3231 |
#: adminpages/orders.php:560 adminpages/orders.php:632
|
3232 |
#: adminpages/orders.php:661 adminpages/orders.php:764
|
3233 |
#: adminpages/orders.php:795 adminpages/orders.php:806
|
3235 |
msgid "Save Order"
|
3236 |
msgstr ""
|
3237 |
|
3238 |
+
#: adminpages/orders.php:951 adminpages/orders.php:521
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3239 |
#: adminpages/orders.php:571 adminpages/orders.php:678
|
3240 |
#: adminpages/orders.php:707 adminpages/orders.php:812
|
3241 |
#: adminpages/orders.php:843 adminpages/orders.php:854
|
3243 |
msgid "Add New Order"
|
3244 |
msgstr ""
|
3245 |
|
3246 |
+
#: adminpages/orders.php:996 adminpages/orders.php:606
|
3247 |
#: adminpages/orders.php:713 adminpages/orders.php:742
|
3248 |
#: adminpages/orders.php:852 adminpages/orders.php:883
|
3249 |
#: adminpages/orders.php:894 adminpages/orders.php:985
|
3251 |
msgid "Within a Date Range"
|
3252 |
msgstr ""
|
3253 |
|
3254 |
+
#: adminpages/orders.php:998 adminpages/orders.php:607
|
3255 |
#: adminpages/orders.php:714 adminpages/orders.php:743
|
3256 |
#: adminpages/orders.php:854 adminpages/orders.php:885
|
3257 |
#: adminpages/orders.php:896 adminpages/orders.php:987
|
3259 |
msgid "Predefined Date Range"
|
3260 |
msgstr ""
|
3261 |
|
3262 |
+
#: adminpages/orders.php:1000 adminpages/orders.php:608
|
3263 |
#: adminpages/orders.php:715 adminpages/orders.php:744
|
3264 |
#: adminpages/orders.php:856 adminpages/orders.php:887
|
3265 |
#: adminpages/orders.php:898 adminpages/orders.php:989
|
3267 |
msgid "Within a Level"
|
3268 |
msgstr ""
|
3269 |
|
3270 |
+
#: adminpages/orders.php:1002 adminpages/orders.php:1047
|
3271 |
msgid "With a Discount Code"
|
3272 |
msgstr ""
|
3273 |
|
3274 |
+
#: adminpages/orders.php:1004 adminpages/orders.php:609
|
3275 |
#: adminpages/orders.php:716 adminpages/orders.php:745
|
3276 |
#: adminpages/orders.php:858 adminpages/orders.php:889
|
3277 |
#: adminpages/orders.php:900 adminpages/orders.php:991
|
3279 |
msgid "Within a Status"
|
3280 |
msgstr ""
|
3281 |
|
3282 |
+
#: adminpages/orders.php:1006 adminpages/orders.php:1051
|
3283 |
msgid "Only Paid Orders"
|
3284 |
msgstr ""
|
3285 |
|
3286 |
+
#: adminpages/orders.php:1008 adminpages/orders.php:1053
|
3287 |
msgid "Only Free Orders"
|
3288 |
msgstr ""
|
3289 |
|
3290 |
+
#: adminpages/orders.php:1011 adminpages/orders.php:612
|
3291 |
#: adminpages/orders.php:719 adminpages/orders.php:748
|
3292 |
#: adminpages/orders.php:861 adminpages/orders.php:892
|
3293 |
#: adminpages/orders.php:903 adminpages/orders.php:994
|
3295 |
msgid "From"
|
3296 |
msgstr ""
|
3297 |
|
3298 |
+
#: adminpages/orders.php:1026 adminpages/orders.php:624
|
3299 |
#: adminpages/orders.php:731 adminpages/orders.php:760
|
3300 |
#: adminpages/orders.php:876 adminpages/orders.php:907
|
3301 |
#: adminpages/orders.php:918 adminpages/orders.php:1009
|
3303 |
msgid "To"
|
3304 |
msgstr ""
|
3305 |
|
3306 |
+
#: adminpages/orders.php:1039 adminpages/orders.php:636
|
3307 |
#: adminpages/orders.php:743 adminpages/orders.php:772
|
3308 |
#: adminpages/orders.php:889 adminpages/orders.php:920
|
3309 |
#: adminpages/orders.php:931 adminpages/orders.php:1022
|
3311 |
msgid "filter by "
|
3312 |
msgstr ""
|
3313 |
|
3314 |
+
#: adminpages/orders.php:1090 adminpages/orders.php:674
|
3315 |
#: adminpages/orders.php:780 adminpages/orders.php:809
|
3316 |
#: adminpages/orders.php:932 adminpages/orders.php:963
|
3317 |
#: adminpages/orders.php:969 adminpages/orders.php:1060
|
3319 |
msgid "Filter"
|
3320 |
msgstr ""
|
3321 |
|
3322 |
+
#: adminpages/orders.php:1224 adminpages/orders.php:1227
|
3323 |
#: adminpages/orders.php:535 adminpages/orders.php:538
|
3324 |
#: adminpages/orders.php:777 adminpages/orders.php:780
|
3325 |
#: adminpages/orders.php:883 adminpages/orders.php:886
|
3332 |
msgid "Search Orders"
|
3333 |
msgstr ""
|
3334 |
|
3335 |
+
#: adminpages/orders.php:1300 adminpages/orders.php:590
|
3336 |
#: adminpages/orders.php:893 adminpages/orders.php:903
|
3337 |
#: adminpages/orders.php:930 adminpages/orders.php:959
|
3338 |
#: adminpages/orders.php:1096 adminpages/orders.php:1127
|
3342 |
msgid "%d orders found."
|
3343 |
msgstr ""
|
3344 |
|
3345 |
+
#: adminpages/orders.php:1311 includes/init.php:171 includes/profile.php:36
|
3346 |
+
#: pages/checkout.php:47 pages/confirmation.php:53 pages/confirmation.php:124
|
3347 |
#: pages/invoice.php:28 adminpages/orders.php:601 adminpages/orders.php:904
|
3348 |
#: adminpages/orders.php:914 adminpages/orders.php:941
|
3349 |
#: adminpages/orders.php:970 adminpages/orders.php:1107
|
3351 |
#: adminpages/orders.php:1235 adminpages/orders.php:1356 includes/init.php:214
|
3352 |
#: includes/init.php:217 includes/init.php:218 includes/init.php:220
|
3353 |
#: includes/init.php:222 includes/init.php:230 includes/init.php:238
|
3354 |
+
#: includes/init.php:242 includes/init.php:243 includes/init.php:244
|
3355 |
+
#: includes/init.php:258 includes/init.php:262 includes/profile.php:25
|
3356 |
+
#: includes/profile.php:27 includes/profile.php:30 includes/profile.php:36
|
3357 |
+
#: pages/checkout.php:33 pages/checkout.php:34 pages/checkout.php:35
|
3358 |
+
#: pages/checkout.php:39 pages/checkout.php:42 pages/checkout.php:45
|
3359 |
+
#: pages/confirmation.php:46 pages/confirmation.php:47
|
3360 |
+
#: pages/confirmation.php:53 pages/confirmation.php:62
|
3361 |
+
#: pages/confirmation.php:64 pages/confirmation.php:70
|
3362 |
+
#: pages/confirmation.php:91 pages/confirmation.php:103
|
3363 |
+
#: pages/confirmation.php:105 pages/confirmation.php:113
|
3364 |
+
#: pages/confirmation.php:116 pages/confirmation.php:124 pages/invoice.php:27
|
3365 |
+
#: pages/invoice.php:28 pages/invoice.php:49 pages/invoice.php:51
|
3366 |
+
#: pages/invoice.php:70
|
3367 |
msgid "Membership Level"
|
3368 |
msgstr ""
|
3369 |
|
3370 |
+
#: adminpages/orders.php:1313 adminpages/orders.php:1424
|
3371 |
#: adminpages/orders.php:603 adminpages/orders.php:651
|
3372 |
#: adminpages/orders.php:906 adminpages/orders.php:916
|
3373 |
#: adminpages/orders.php:943 adminpages/orders.php:954
|
3381 |
msgid "Payment"
|
3382 |
msgstr ""
|
3383 |
|
3384 |
+
#: adminpages/orders.php:1315 adminpages/orders.php:605
|
3385 |
#: adminpages/orders.php:908 adminpages/orders.php:918
|
3386 |
#: adminpages/orders.php:945 adminpages/orders.php:974
|
3387 |
#: adminpages/orders.php:1111 adminpages/orders.php:1142
|
3390 |
msgid "Transaction IDs"
|
3391 |
msgstr ""
|
3392 |
|
3393 |
+
#: adminpages/orders.php:1358 adminpages/orders.php:664
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3394 |
#: adminpages/orders.php:967 adminpages/orders.php:985
|
3395 |
#: adminpages/orders.php:995 adminpages/orders.php:998
|
3396 |
#: adminpages/orders.php:1027 adminpages/orders.php:1056
|
3403 |
"want to delete order %s?"
|
3404 |
msgstr ""
|
3405 |
|
3406 |
+
#: adminpages/orders.php:1433 adminpages/orders.php:653
|
3407 |
+
#: adminpages/orders.php:956 adminpages/orders.php:974
|
3408 |
+
#: adminpages/orders.php:984 adminpages/orders.php:1013
|
3409 |
+
#: adminpages/orders.php:1042 adminpages/orders.php:1192
|
3410 |
+
#: adminpages/orders.php:1226 adminpages/orders.php:1232
|
3411 |
+
#: adminpages/orders.php:1344 adminpages/orders.php:1466
|
3412 |
+
msgid "Subscription"
|
3413 |
msgstr ""
|
3414 |
|
3415 |
+
#: adminpages/orders.php:1450 adminpages/discountcodes.php:614
|
3416 |
+
#: adminpages/discountcodes.php:619 adminpages/discountcodes.php:647
|
3417 |
+
#: adminpages/discountcodes.php:648 adminpages/discountcodes.php:649
|
3418 |
+
#: adminpages/discountcodes.php:650 adminpages/discountcodes.php:655
|
3419 |
+
#: adminpages/discountcodes.php:735 adminpages/discountcodes.php:789
|
3420 |
+
#: adminpages/discountcodes.php:803 adminpages/membershiplevels.php:564
|
3421 |
+
#: adminpages/membershiplevels.php:570 adminpages/membershiplevels.php:572
|
3422 |
+
#: adminpages/membershiplevels.php:580 adminpages/membershiplevels.php:599
|
3423 |
+
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:662
|
3424 |
+
#: adminpages/membershiplevels.php:664 adminpages/membershiplevels.php:669
|
3425 |
+
#: adminpages/membershiplevels.php:670 adminpages/membershiplevels.php:674
|
3426 |
+
#: adminpages/membershiplevels.php:686 adminpages/membershiplevels.php:696
|
3427 |
+
#: adminpages/membershiplevels.php:746 adminpages/membershiplevels.php:748
|
3428 |
+
#: adminpages/orders.php:658 adminpages/orders.php:961
|
3429 |
+
#: adminpages/orders.php:979 adminpages/orders.php:989
|
3430 |
+
#: adminpages/orders.php:992 adminpages/orders.php:1021
|
3431 |
+
#: adminpages/orders.php:1050 adminpages/orders.php:1205
|
3432 |
+
#: adminpages/orders.php:1239 adminpages/orders.php:1245
|
3433 |
+
#: adminpages/orders.php:1360 adminpages/orders.php:1483
|
3434 |
+
#: adminpages/orders.php:1489
|
3435 |
+
msgid "edit"
|
3436 |
msgstr ""
|
3437 |
|
3438 |
#: adminpages/pagesettings.php:62 adminpages/pagesettings.php:54
|
3703 |
msgid "Payment Gateway"
|
3704 |
msgstr ""
|
3705 |
|
3706 |
+
#: adminpages/paymentsettings.php:110 adminpages/paymentsettings.php:235
|
3707 |
#: adminpages/paymentsettings.php:93 adminpages/paymentsettings.php:110
|
3708 |
#: adminpages/paymentsettings.php:144 adminpages/paymentsettings.php:146
|
3709 |
#: adminpages/paymentsettings.php:201 adminpages/paymentsettings.php:218
|
3725 |
msgid "Choose a Gateway"
|
3726 |
msgstr ""
|
3727 |
|
3728 |
+
#: adminpages/paymentsettings.php:138
|
3729 |
+
msgid ""
|
3730 |
+
"It is not connected to a live gateway environment and cannot accept payments."
|
3731 |
+
msgstr ""
|
3732 |
+
|
3733 |
+
#: adminpages/paymentsettings.php:138
|
3734 |
+
msgid ""
|
3735 |
+
"This gateway is for membership sites with Free levels or for sites that "
|
3736 |
+
"accept payment offline."
|
3737 |
+
msgstr ""
|
3738 |
+
|
3739 |
+
#: adminpages/paymentsettings.php:182 adminpages/paymentsettings.php:148
|
3740 |
#: adminpages/paymentsettings.php:165
|
3741 |
msgid "Currency and Tax Settings"
|
3742 |
msgstr ""
|
3743 |
|
3744 |
+
#: adminpages/paymentsettings.php:187 adminpages/paymentsettings.php:153
|
3745 |
#: adminpages/paymentsettings.php:170 adminpages/paymentsettings.php:327
|
3746 |
#: adminpages/paymentsettings.php:337 adminpages/paymentsettings.php:356
|
3747 |
#: adminpages/paymentsettings.php:381 adminpages/paymentsettings.php:386
|
3748 |
msgid "Currency"
|
3749 |
msgstr ""
|
3750 |
|
3751 |
+
#: adminpages/paymentsettings.php:203 adminpages/paymentsettings.php:169
|
3752 |
#: adminpages/paymentsettings.php:186 adminpages/paymentsettings.php:400
|
3753 |
#: adminpages/paymentsettings.php:402
|
3754 |
msgid ""
|
3756 |
"your gateway."
|
3757 |
msgstr ""
|
3758 |
|
3759 |
+
#: adminpages/paymentsettings.php:208 adminpages/paymentsettings.php:174
|
3760 |
#: adminpages/paymentsettings.php:191 adminpages/paymentsettings.php:375
|
3761 |
#: adminpages/paymentsettings.php:401 adminpages/paymentsettings.php:406
|
3762 |
#: adminpages/paymentsettings.php:408
|
3763 |
msgid "Accepted Credit Card Types"
|
3764 |
msgstr ""
|
3765 |
|
3766 |
+
#: adminpages/paymentsettings.php:222 adminpages/paymentsettings.php:188
|
3767 |
#: adminpages/paymentsettings.php:205 adminpages/paymentsettings.php:398
|
3768 |
#: adminpages/paymentsettings.php:438 adminpages/paymentsettings.php:443
|
3769 |
#: adminpages/paymentsettings.php:445
|
3770 |
msgid "Sales Tax"
|
3771 |
msgstr ""
|
3772 |
|
3773 |
+
#: adminpages/paymentsettings.php:222 pages/billing.php:125
|
3774 |
#: adminpages/paymentsettings.php:188 adminpages/paymentsettings.php:205
|
3775 |
#: adminpages/paymentsettings.php:398 adminpages/paymentsettings.php:438
|
3776 |
#: adminpages/paymentsettings.php:443 adminpages/paymentsettings.php:445
|
3781 |
msgid "optional"
|
3782 |
msgstr ""
|
3783 |
|
3784 |
+
#: adminpages/paymentsettings.php:225 adminpages/paymentsettings.php:191
|
3785 |
#: adminpages/paymentsettings.php:208 adminpages/paymentsettings.php:401
|
3786 |
#: adminpages/paymentsettings.php:441 adminpages/paymentsettings.php:446
|
3787 |
#: adminpages/paymentsettings.php:448
|
3788 |
msgid "Tax State"
|
3789 |
msgstr ""
|
3790 |
|
3791 |
+
#: adminpages/paymentsettings.php:226 adminpages/paymentsettings.php:192
|
3792 |
#: adminpages/paymentsettings.php:209 adminpages/paymentsettings.php:402
|
3793 |
#: adminpages/paymentsettings.php:442 adminpages/paymentsettings.php:447
|
3794 |
#: adminpages/paymentsettings.php:449
|
3795 |
msgid "abbreviation, e.g. \"PA\""
|
3796 |
msgstr ""
|
3797 |
|
3798 |
+
#: adminpages/paymentsettings.php:227 adminpages/paymentsettings.php:193
|
3799 |
#: adminpages/paymentsettings.php:210
|
3800 |
msgid "Tax Rate"
|
3801 |
msgstr ""
|
3802 |
|
3803 |
+
#: adminpages/paymentsettings.php:228 adminpages/paymentsettings.php:194
|
3804 |
#: adminpages/paymentsettings.php:211 adminpages/paymentsettings.php:404
|
3805 |
#: adminpages/paymentsettings.php:444 adminpages/paymentsettings.php:449
|
3806 |
#: adminpages/paymentsettings.php:451
|
3807 |
msgid "decimal, e.g. \"0.06\""
|
3808 |
msgstr ""
|
3809 |
|
3810 |
+
#: adminpages/paymentsettings.php:229 adminpages/paymentsettings.php:212
|
3811 |
msgid ""
|
3812 |
"US only. If values are given, tax will be applied for any members ordering "
|
3813 |
"from the selected state.<br />For non-US or more complex tax rules, use the "
|
3817 |
"\">pmpro_tax filter</a>."
|
3818 |
msgstr ""
|
3819 |
|
3820 |
+
#: adminpages/paymentsettings.php:240 adminpages/paymentsettings.php:206
|
3821 |
#: adminpages/paymentsettings.php:223 adminpages/paymentsettings.php:450
|
3822 |
#: adminpages/paymentsettings.php:455 adminpages/paymentsettings.php:457
|
3823 |
msgid "Force SSL"
|
3824 |
msgstr ""
|
3825 |
|
3826 |
+
#: adminpages/paymentsettings.php:247 adminpages/paymentsettings.php:213
|
3827 |
#: adminpages/paymentsettings.php:230
|
3828 |
msgid ""
|
3829 |
"Your Site URL starts with https:// and so PMPro will allow your entire site "
|
3830 |
"to be served over HTTPS."
|
3831 |
msgstr ""
|
3832 |
|
3833 |
+
#: adminpages/paymentsettings.php:255 adminpages/paymentsettings.php:212
|
3834 |
#: adminpages/paymentsettings.php:221 adminpages/paymentsettings.php:238
|
3835 |
#: adminpages/paymentsettings.php:456 adminpages/paymentsettings.php:461
|
3836 |
#: adminpages/paymentsettings.php:463
|
3837 |
msgid "Yes (with JavaScript redirects)"
|
3838 |
msgstr ""
|
3839 |
|
3840 |
+
#: adminpages/paymentsettings.php:257 adminpages/paymentsettings.php:214
|
3841 |
#: adminpages/paymentsettings.php:223 adminpages/paymentsettings.php:240
|
3842 |
msgid ""
|
3843 |
"Recommended: Yes. Try the JavaScript redirects setting if you are having "
|
3844 |
"issues with infinite redirect loops."
|
3845 |
msgstr ""
|
3846 |
|
3847 |
+
#: adminpages/paymentsettings.php:265 adminpages/paymentsettings.php:219
|
3848 |
#: adminpages/paymentsettings.php:231 adminpages/paymentsettings.php:248
|
3849 |
#: adminpages/paymentsettings.php:430 adminpages/paymentsettings.php:463
|
3850 |
#: adminpages/paymentsettings.php:468 adminpages/paymentsettings.php:470
|
3851 |
msgid "SSL Seal Code"
|
3852 |
msgstr ""
|
3853 |
|
3854 |
+
#: adminpages/paymentsettings.php:269 adminpages/paymentsettings.php:252
|
3855 |
msgid ""
|
3856 |
"Your <strong><a target=\"_blank\" href=\"http://www.paidmembershipspro.com/"
|
3857 |
"documentation/initial-plugin-setup/ssl/?"
|
3861 |
"can be pasted here."
|
3862 |
msgstr ""
|
3863 |
|
3864 |
+
#: adminpages/paymentsettings.php:274 adminpages/paymentsettings.php:228
|
3865 |
#: adminpages/paymentsettings.php:240 adminpages/paymentsettings.php:257
|
3866 |
msgid "Extra HTTPS URL Filter"
|
3867 |
msgstr ""
|
3868 |
|
3869 |
+
#: adminpages/paymentsettings.php:277 adminpages/paymentsettings.php:231
|
3870 |
#: adminpages/paymentsettings.php:243 adminpages/paymentsettings.php:260
|
3871 |
msgid ""
|
3872 |
"Pass all generated HTML through a URL filter to add HTTPS to URLs used on "
|
4238 |
#: adminpages/templates/orders-print.php:85 pages/confirmation.php:91
|
4239 |
#: pages/invoice.php:74 adminpages/templates/orders-email.php:56
|
4240 |
#: adminpages/templates/orders-print.php:85 pages/confirmation.php:91
|
4241 |
+
#: pages/invoice.php:73 pages/invoice.php:74 pages/invoice.php:77
|
4242 |
+
#: pages/invoice.php:79
|
4243 |
msgid "Subtotal"
|
4244 |
msgstr ""
|
4245 |
|
4309 |
msgid "An Email From %s"
|
4310 |
msgstr ""
|
4311 |
|
4312 |
+
#: classes/class.pmproemail.php:171 classes/class.pmproemail.php:120
|
4313 |
#: classes/class.pmproemail.php:122 classes/class.pmproemail.php:125
|
4314 |
#: classes/class.pmproemail.php:134 classes/class.pmproemail.php:136
|
4315 |
#: classes/class.pmproemail.php:143
|
4317 |
msgid "Your membership at %s has been CANCELLED"
|
4318 |
msgstr ""
|
4319 |
|
4320 |
+
#: classes/class.pmproemail.php:204 classes/class.pmproemail.php:142
|
4321 |
#: classes/class.pmproemail.php:144 classes/class.pmproemail.php:147
|
4322 |
#: classes/class.pmproemail.php:156 classes/class.pmproemail.php:166
|
4323 |
#: classes/class.pmproemail.php:169 classes/class.pmproemail.php:176
|
4325 |
msgid "Membership for %s at %s has been CANCELLED"
|
4326 |
msgstr ""
|
4327 |
|
4328 |
+
#: classes/class.pmproemail.php:254 classes/class.pmproemail.php:172
|
4329 |
#: classes/class.pmproemail.php:173 classes/class.pmproemail.php:175
|
4330 |
#: classes/class.pmproemail.php:178 classes/class.pmproemail.php:187
|
4331 |
#: classes/class.pmproemail.php:207 classes/class.pmproemail.php:212
|
4334 |
msgid "Your membership confirmation for %s"
|
4335 |
msgstr ""
|
4336 |
|
4337 |
+
#: classes/class.pmproemail.php:338 classes/class.pmproemail.php:434
|
4338 |
+
#: classes/class.pmproemail.php:749 classes/class.pmproemail.php:241
|
4339 |
#: classes/class.pmproemail.php:243 classes/class.pmproemail.php:253
|
4340 |
#: classes/class.pmproemail.php:256 classes/class.pmproemail.php:265
|
4341 |
#: classes/class.pmproemail.php:285 classes/class.pmproemail.php:294
|
4342 |
#: classes/class.pmproemail.php:301 classes/class.pmproemail.php:309
|
4343 |
+
#: classes/class.pmproemail.php:310 classes/class.pmproemail.php:325
|
4344 |
+
#: classes/class.pmproemail.php:328 classes/class.pmproemail.php:346
|
4345 |
+
#: classes/class.pmproemail.php:349 classes/class.pmproemail.php:358
|
4346 |
+
#: classes/class.pmproemail.php:378 classes/class.pmproemail.php:390
|
4347 |
+
#: classes/class.pmproemail.php:397 classes/class.pmproemail.php:405
|
4348 |
+
#: classes/class.pmproemail.php:406 classes/class.pmproemail.php:538
|
4349 |
#: classes/class.pmproemail.php:586 classes/class.pmproemail.php:651
|
4350 |
#: classes/class.pmproemail.php:654 classes/class.pmproemail.php:663
|
4351 |
#: classes/class.pmproemail.php:665 classes/class.pmproemail.php:685
|
4352 |
#: classes/class.pmproemail.php:705 classes/class.pmproemail.php:712
|
4353 |
+
#: classes/class.pmproemail.php:720 classes/class.pmproemail.php:721
|
4354 |
#, php-format
|
4355 |
msgid "This membership will expire on %s."
|
4356 |
msgstr ""
|
4357 |
|
4358 |
+
#: classes/class.pmproemail.php:360 classes/class.pmproemail.php:263
|
4359 |
#: classes/class.pmproemail.php:265 classes/class.pmproemail.php:275
|
4360 |
#: classes/class.pmproemail.php:278 classes/class.pmproemail.php:287
|
4361 |
#: classes/class.pmproemail.php:307 classes/class.pmproemail.php:316
|
4362 |
#: classes/class.pmproemail.php:323 classes/class.pmproemail.php:331
|
4363 |
+
#: classes/class.pmproemail.php:332
|
4364 |
#, php-format
|
4365 |
msgid "Member Checkout for %s at %s"
|
4366 |
msgstr ""
|
4367 |
|
4368 |
+
#: classes/class.pmproemail.php:451 classes/class.pmproemail.php:375
|
4369 |
#: classes/class.pmproemail.php:395 classes/class.pmproemail.php:407
|
4370 |
#: classes/class.pmproemail.php:414 classes/class.pmproemail.php:422
|
4371 |
+
#: classes/class.pmproemail.php:423
|
4372 |
#, php-format
|
4373 |
msgid "Your billing information has been updated at %s"
|
4374 |
msgstr ""
|
4375 |
|
4376 |
+
#: classes/class.pmproemail.php:505 classes/class.pmproemail.php:428
|
4377 |
#: classes/class.pmproemail.php:448 classes/class.pmproemail.php:461
|
4378 |
#: classes/class.pmproemail.php:468 classes/class.pmproemail.php:476
|
4379 |
+
#: classes/class.pmproemail.php:477
|
4380 |
#, php-format
|
4381 |
msgid "Billing information has been updated for %s at %s"
|
4382 |
msgstr ""
|
4383 |
|
4384 |
+
#: classes/class.pmproemail.php:554 classes/class.pmproemail.php:425
|
4385 |
#: classes/class.pmproemail.php:430 classes/class.pmproemail.php:464
|
4386 |
#: classes/class.pmproemail.php:467 classes/class.pmproemail.php:476
|
4387 |
#: classes/class.pmproemail.php:496 classes/class.pmproemail.php:510
|
4388 |
#: classes/class.pmproemail.php:517 classes/class.pmproemail.php:525
|
4389 |
+
#: classes/class.pmproemail.php:526
|
4390 |
#, php-format
|
4391 |
msgid "Membership Payment Failed at %s"
|
4392 |
msgstr ""
|
4393 |
|
4394 |
+
#: classes/class.pmproemail.php:601 classes/class.pmproemail.php:462
|
4395 |
#: classes/class.pmproemail.php:468 classes/class.pmproemail.php:510
|
4396 |
#: classes/class.pmproemail.php:513 classes/class.pmproemail.php:522
|
4397 |
#: classes/class.pmproemail.php:542 classes/class.pmproemail.php:557
|
4398 |
#: classes/class.pmproemail.php:564 classes/class.pmproemail.php:572
|
4399 |
+
#: classes/class.pmproemail.php:573
|
4400 |
#, php-format
|
4401 |
msgid "Membership Payment Failed For %s at %s"
|
4402 |
msgstr ""
|
4403 |
|
4404 |
+
#: classes/class.pmproemail.php:649 classes/class.pmproemail.php:508
|
4405 |
#: classes/class.pmproemail.php:557 classes/class.pmproemail.php:560
|
4406 |
#: classes/class.pmproemail.php:569 classes/class.pmproemail.php:589
|
4407 |
#: classes/class.pmproemail.php:605 classes/class.pmproemail.php:612
|
4408 |
+
#: classes/class.pmproemail.php:620 classes/class.pmproemail.php:621
|
4409 |
#, php-format
|
4410 |
msgid "Credit Card on File Expiring Soon at %s"
|
4411 |
msgstr ""
|
4412 |
|
4413 |
+
#: classes/class.pmproemail.php:700 classes/class.pmproemail.php:501
|
4414 |
#: classes/class.pmproemail.php:548 classes/class.pmproemail.php:605
|
4415 |
#: classes/class.pmproemail.php:608 classes/class.pmproemail.php:617
|
4416 |
#: classes/class.pmproemail.php:619 classes/class.pmproemail.php:639
|
4417 |
#: classes/class.pmproemail.php:656 classes/class.pmproemail.php:663
|
4418 |
+
#: classes/class.pmproemail.php:671 classes/class.pmproemail.php:672
|
4419 |
#, php-format
|
4420 |
msgid "INVOICE for %s membership"
|
4421 |
msgstr ""
|
4422 |
|
4423 |
+
#: classes/class.pmproemail.php:777 classes/class.pmproemail.php:563
|
4424 |
#: classes/class.pmproemail.php:611 classes/class.pmproemail.php:676
|
4425 |
#: classes/class.pmproemail.php:679 classes/class.pmproemail.php:688
|
4426 |
#: classes/class.pmproemail.php:690 classes/class.pmproemail.php:710
|
4427 |
#: classes/class.pmproemail.php:733 classes/class.pmproemail.php:740
|
4428 |
+
#: classes/class.pmproemail.php:748 classes/class.pmproemail.php:749
|
4429 |
#, php-format
|
4430 |
msgid "Your trial at %s is ending soon"
|
4431 |
msgstr ""
|
4432 |
|
4433 |
+
#: classes/class.pmproemail.php:813 classes/class.pmproemail.php:596
|
4434 |
#: classes/class.pmproemail.php:645 classes/class.pmproemail.php:710
|
4435 |
#: classes/class.pmproemail.php:713 classes/class.pmproemail.php:722
|
4436 |
#: classes/class.pmproemail.php:724 classes/class.pmproemail.php:744
|
4437 |
#: classes/class.pmproemail.php:769 classes/class.pmproemail.php:776
|
4438 |
+
#: classes/class.pmproemail.php:784 classes/class.pmproemail.php:785
|
4439 |
#, php-format
|
4440 |
msgid "Your membership at %s has ended"
|
4441 |
msgstr ""
|
4442 |
|
4443 |
+
#: classes/class.pmproemail.php:840 classes/class.pmproemail.php:621
|
4444 |
#: classes/class.pmproemail.php:670 classes/class.pmproemail.php:735
|
4445 |
#: classes/class.pmproemail.php:738 classes/class.pmproemail.php:747
|
4446 |
#: classes/class.pmproemail.php:749 classes/class.pmproemail.php:769
|
4447 |
#: classes/class.pmproemail.php:796 classes/class.pmproemail.php:803
|
4448 |
+
#: classes/class.pmproemail.php:811 classes/class.pmproemail.php:812
|
4449 |
#, php-format
|
4450 |
msgid "Your membership at %s will end soon"
|
4451 |
msgstr ""
|
4452 |
|
4453 |
+
#: classes/class.pmproemail.php:862 classes/class.pmproemail.php:641
|
4454 |
#: classes/class.pmproemail.php:690 classes/class.pmproemail.php:755
|
4455 |
#: classes/class.pmproemail.php:758 classes/class.pmproemail.php:767
|
4456 |
#: classes/class.pmproemail.php:769 classes/class.pmproemail.php:789
|
4457 |
#: classes/class.pmproemail.php:818 classes/class.pmproemail.php:825
|
4458 |
+
#: classes/class.pmproemail.php:833 classes/class.pmproemail.php:834
|
4459 |
#, php-format
|
4460 |
msgid "Your membership at %s has been changed"
|
4461 |
msgstr ""
|
4462 |
|
4463 |
+
#: classes/class.pmproemail.php:867 classes/class.pmproemail.php:914
|
4464 |
#: classes/class.pmproemail.php:759 classes/class.pmproemail.php:762
|
4465 |
#: classes/class.pmproemail.php:771 classes/class.pmproemail.php:773
|
4466 |
#: classes/class.pmproemail.php:793 classes/class.pmproemail.php:800
|
4467 |
#: classes/class.pmproemail.php:809 classes/class.pmproemail.php:810
|
4468 |
#: classes/class.pmproemail.php:811 classes/class.pmproemail.php:823
|
4469 |
#: classes/class.pmproemail.php:830 classes/class.pmproemail.php:838
|
4470 |
+
#: classes/class.pmproemail.php:839 classes/class.pmproemail.php:863
|
4471 |
+
#: classes/class.pmproemail.php:870 classes/class.pmproemail.php:877
|
4472 |
+
#: classes/class.pmproemail.php:885 classes/class.pmproemail.php:886
|
4473 |
#, php-format
|
4474 |
msgid "The new level is %s"
|
4475 |
msgstr ""
|
4476 |
|
4477 |
+
#: classes/class.pmproemail.php:869 classes/class.pmproemail.php:647
|
4478 |
#: classes/class.pmproemail.php:696 classes/class.pmproemail.php:761
|
4479 |
#: classes/class.pmproemail.php:764 classes/class.pmproemail.php:773
|
4480 |
#: classes/class.pmproemail.php:775 classes/class.pmproemail.php:795
|
4481 |
#: classes/class.pmproemail.php:825 classes/class.pmproemail.php:832
|
4482 |
+
#: classes/class.pmproemail.php:840 classes/class.pmproemail.php:841
|
4483 |
msgid "Your membership has been cancelled"
|
4484 |
msgstr ""
|
4485 |
|
4486 |
+
#: classes/class.pmproemail.php:873 classes/class.pmproemail.php:921
|
4487 |
#: classes/class.pmproemail.php:651 classes/class.pmproemail.php:689
|
4488 |
#: classes/class.pmproemail.php:700 classes/class.pmproemail.php:738
|
4489 |
#: classes/class.pmproemail.php:765 classes/class.pmproemail.php:768
|
4493 |
#: classes/class.pmproemail.php:815 classes/class.pmproemail.php:816
|
4494 |
#: classes/class.pmproemail.php:817 classes/class.pmproemail.php:829
|
4495 |
#: classes/class.pmproemail.php:836 classes/class.pmproemail.php:844
|
4496 |
+
#: classes/class.pmproemail.php:845 classes/class.pmproemail.php:869
|
4497 |
+
#: classes/class.pmproemail.php:876 classes/class.pmproemail.php:884
|
4498 |
+
#: classes/class.pmproemail.php:892 classes/class.pmproemail.php:893
|
4499 |
#, php-format
|
4500 |
msgid "This membership will expire on %s"
|
4501 |
msgstr ""
|
4502 |
|
4503 |
+
#: classes/class.pmproemail.php:877 classes/class.pmproemail.php:925
|
4504 |
#: classes/class.pmproemail.php:655 classes/class.pmproemail.php:693
|
4505 |
#: classes/class.pmproemail.php:704 classes/class.pmproemail.php:742
|
4506 |
#: classes/class.pmproemail.php:769 classes/class.pmproemail.php:772
|
4510 |
#: classes/class.pmproemail.php:819 classes/class.pmproemail.php:820
|
4511 |
#: classes/class.pmproemail.php:821 classes/class.pmproemail.php:833
|
4512 |
#: classes/class.pmproemail.php:840 classes/class.pmproemail.php:848
|
4513 |
+
#: classes/class.pmproemail.php:849 classes/class.pmproemail.php:873
|
4514 |
+
#: classes/class.pmproemail.php:880 classes/class.pmproemail.php:888
|
4515 |
+
#: classes/class.pmproemail.php:896 classes/class.pmproemail.php:897
|
4516 |
msgid "This membership does not expire"
|
4517 |
msgstr ""
|
4518 |
|
4519 |
+
#: classes/class.pmproemail.php:909 classes/class.pmproemail.php:679
|
4520 |
#: classes/class.pmproemail.php:728 classes/class.pmproemail.php:793
|
4521 |
#: classes/class.pmproemail.php:796 classes/class.pmproemail.php:805
|
4522 |
#: classes/class.pmproemail.php:806 classes/class.pmproemail.php:807
|
4523 |
#: classes/class.pmproemail.php:826 classes/class.pmproemail.php:859
|
4524 |
#: classes/class.pmproemail.php:866 classes/class.pmproemail.php:872
|
4525 |
+
#: classes/class.pmproemail.php:880 classes/class.pmproemail.php:881
|
4526 |
#, php-format
|
4527 |
msgid "Membership for %s at %s has been changed"
|
4528 |
msgstr ""
|
4529 |
|
4530 |
+
#: classes/class.pmproemail.php:916 classes/class.pmproemail.php:799
|
4531 |
#: classes/class.pmproemail.php:802 classes/class.pmproemail.php:811
|
4532 |
#: classes/class.pmproemail.php:812 classes/class.pmproemail.php:813
|
4533 |
#: classes/class.pmproemail.php:832 classes/class.pmproemail.php:865
|
4534 |
#: classes/class.pmproemail.php:872 classes/class.pmproemail.php:879
|
4535 |
+
#: classes/class.pmproemail.php:887 classes/class.pmproemail.php:888
|
4536 |
msgid "Membership has been cancelled"
|
4537 |
msgstr ""
|
4538 |
|
4539 |
+
#: classes/class.pmproemail.php:956 classes/class.pmproemail.php:848
|
4540 |
#: classes/class.pmproemail.php:849 classes/class.pmproemail.php:850
|
4541 |
#: classes/class.pmproemail.php:869 classes/class.pmproemail.php:904
|
4542 |
#: classes/class.pmproemail.php:911 classes/class.pmproemail.php:919
|
4543 |
+
#: classes/class.pmproemail.php:927 classes/class.pmproemail.php:928
|
4544 |
msgid "Invoice for Order #: "
|
4545 |
msgstr ""
|
4546 |
|
4547 |
+
#: classes/class.pmproemail.php:1003
|
4548 |
+
#, php-format
|
4549 |
+
msgid "Payment action required for your %s membership"
|
4550 |
+
msgstr ""
|
4551 |
+
|
4552 |
+
#: classes/class.pmproemail.php:1040
|
4553 |
+
#, php-format
|
4554 |
+
msgid "Payment action required: membership for %s at %s"
|
4555 |
+
msgstr ""
|
4556 |
+
|
4557 |
+
#: classes/class.pmproemail.php:1076 classes/class.pmproemail.php:948
|
4558 |
#: classes/class.pmproemail.php:955 classes/class.pmproemail.php:963
|
4559 |
+
#: classes/class.pmproemail.php:971 classes/class.pmproemail.php:972
|
4560 |
msgid ""
|
4561 |
"<p>An administrator at !!sitename!! has changed your membership level.</p>\n"
|
4562 |
"\n"
|
4571 |
#: classes/gateways/class.pmprogateway.php:55
|
4572 |
#: classes/gateways/class.pmprogateway_authorizenet.php:171
|
4573 |
#: classes/gateways/class.pmprogateway_check.php:210
|
4574 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:154
|
4575 |
#: classes/gateways/class.pmprogateway_payflowpro.php:164
|
4576 |
+
#: classes/gateways/class.pmprogateway_paypal.php:302
|
4577 |
#: classes/gateways/class.pmprogateway.php:55
|
4578 |
#: classes/gateways/class.pmprogateway_authorizenet.php:55
|
4579 |
#: classes/gateways/class.pmprogateway_authorizenet.php:171
|
4600 |
#: classes/gateways/class.pmprogateway_check.php:262
|
4601 |
#: classes/gateways/class.pmprogateway_check.php:267
|
4602 |
#: classes/gateways/class.pmprogateway_check.php:285
|
4603 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:202
|
4604 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:207
|
4605 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:223
|
4606 |
#: classes/gateways/class.pmprogateway_payflowpro.php:187
|
4607 |
#: classes/gateways/class.pmprogateway_payflowpro.php:192
|
4608 |
+
#: classes/gateways/class.pmprogateway_paypal.php:325
|
4609 |
#: classes/gateways/class.pmprogateway.php:106
|
4610 |
#: classes/gateways/class.pmprogateway.php:111
|
4611 |
#: classes/gateways/class.pmprogateway.php:129
|
4646 |
#: classes/gateways/class.pmprogateway.php:113
|
4647 |
#: classes/gateways/class.pmprogateway_authorizenet.php:228
|
4648 |
#: classes/gateways/class.pmprogateway_check.php:269
|
4649 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:208
|
4650 |
#: classes/gateways/class.pmprogateway.php:113
|
4651 |
#: classes/gateways/class.pmprogateway_authorizenet.php:112
|
4652 |
#: classes/gateways/class.pmprogateway_authorizenet.php:228
|
4662 |
msgstr ""
|
4663 |
|
4664 |
#: classes/gateways/class.pmprogateway_authorizenet.php:39
|
4665 |
+
#: paid-memberships-pro.php:154
|
4666 |
#: classes/gateways/class.pmprogateway_authorizenet.php:39
|
4667 |
#: paid-memberships-pro.php:122 paid-memberships-pro.php:123
|
4668 |
#: paid-memberships-pro.php:130 paid-memberships-pro.php:131
|
4670 |
#: paid-memberships-pro.php:134 paid-memberships-pro.php:135
|
4671 |
#: paid-memberships-pro.php:136 paid-memberships-pro.php:137
|
4672 |
#: paid-memberships-pro.php:142 paid-memberships-pro.php:147
|
4673 |
+
#: paid-memberships-pro.php:152
|
4674 |
msgid "Authorize.net"
|
4675 |
msgstr ""
|
4676 |
|
4729 |
msgstr ""
|
4730 |
|
4731 |
#: classes/gateways/class.pmprogateway_braintree.php:87
|
4732 |
+
#: classes/gateways/class.pmprogateway_stripe.php:86
|
4733 |
#: classes/gateways/class.pmprogateway_braintree.php:49
|
4734 |
#: classes/gateways/class.pmprogateway_braintree.php:62
|
4735 |
#: classes/gateways/class.pmprogateway_braintree.php:84
|
4760 |
"Settings (Keys, etc)."
|
4761 |
msgstr ""
|
4762 |
|
4763 |
+
#: classes/gateways/class.pmprogateway_braintree.php:250
|
4764 |
+
#: paid-memberships-pro.php:155
|
4765 |
#: classes/gateways/class.pmprogateway_braintree.php:63
|
4766 |
#: classes/gateways/class.pmprogateway_braintree.php:76
|
4767 |
#: classes/gateways/class.pmprogateway_braintree.php:77
|
4777 |
#: paid-memberships-pro.php:135 paid-memberships-pro.php:136
|
4778 |
#: paid-memberships-pro.php:137 paid-memberships-pro.php:138
|
4779 |
#: paid-memberships-pro.php:143 paid-memberships-pro.php:148
|
4780 |
+
#: paid-memberships-pro.php:153
|
4781 |
msgid "Braintree Payments"
|
4782 |
msgstr ""
|
4783 |
|
4784 |
+
#: classes/gateways/class.pmprogateway_braintree.php:306
|
4785 |
#: classes/gateways/class.pmprogateway_braintree.php:119
|
4786 |
#: classes/gateways/class.pmprogateway_braintree.php:132
|
4787 |
#: classes/gateways/class.pmprogateway_braintree.php:133
|
4794 |
msgid "Braintree Settings"
|
4795 |
msgstr ""
|
4796 |
|
4797 |
+
#: classes/gateways/class.pmprogateway_braintree.php:311
|
4798 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:93
|
4799 |
#: adminpages/paymentsettings.php:294 adminpages/paymentsettings.php:298
|
4800 |
#: adminpages/paymentsettings.php:303 adminpages/paymentsettings.php:364
|
4801 |
#: adminpages/paymentsettings.php:369
|
4812 |
msgid "Merchant ID"
|
4813 |
msgstr ""
|
4814 |
|
4815 |
+
#: classes/gateways/class.pmprogateway_braintree.php:319
|
4816 |
#: adminpages/paymentsettings.php:302 adminpages/paymentsettings.php:306
|
4817 |
#: adminpages/paymentsettings.php:311
|
4818 |
#: classes/gateways/class.pmprogateway_braintree.php:132
|
4827 |
msgid "Public Key"
|
4828 |
msgstr ""
|
4829 |
|
4830 |
+
#: classes/gateways/class.pmprogateway_braintree.php:327
|
4831 |
#: adminpages/paymentsettings.php:310 adminpages/paymentsettings.php:314
|
4832 |
#: adminpages/paymentsettings.php:319
|
4833 |
#: classes/gateways/class.pmprogateway_braintree.php:140
|
4842 |
msgid "Private Key"
|
4843 |
msgstr ""
|
4844 |
|
4845 |
+
#: classes/gateways/class.pmprogateway_braintree.php:335
|
4846 |
#: adminpages/paymentsettings.php:318 adminpages/paymentsettings.php:322
|
4847 |
#: adminpages/paymentsettings.php:327
|
4848 |
#: classes/gateways/class.pmprogateway_braintree.php:148
|
4857 |
msgid "Client-Side Encryption Key"
|
4858 |
msgstr ""
|
4859 |
|
4860 |
+
#: classes/gateways/class.pmprogateway_braintree.php:343
|
4861 |
+
#: classes/gateways/class.pmprogateway_stripe.php:330
|
4862 |
#: adminpages/paymentsettings.php:462 adminpages/paymentsettings.php:470
|
4863 |
#: adminpages/paymentsettings.php:503 adminpages/paymentsettings.php:509
|
4864 |
#: adminpages/paymentsettings.php:511 adminpages/paymentsettings.php:517
|
4882 |
#: classes/gateways/class.pmprogateway_stripe.php:230
|
4883 |
#: classes/gateways/class.pmprogateway_stripe.php:257
|
4884 |
#: classes/gateways/class.pmprogateway_stripe.php:289
|
4885 |
+
#: classes/gateways/class.pmprogateway_stripe.php:291
|
4886 |
#: classes/gateways/class.pmprogateway_stripe.php:297
|
4887 |
#: classes/gateways/class.pmprogateway_stripe.php:299
|
4888 |
#: classes/gateways/class.pmprogateway_stripe.php:305
|
4890 |
msgid "Web Hook URL"
|
4891 |
msgstr ""
|
4892 |
|
4893 |
+
#: classes/gateways/class.pmprogateway_braintree.php:347
|
4894 |
#: adminpages/paymentsettings.php:474 adminpages/paymentsettings.php:515
|
4895 |
#: adminpages/paymentsettings.php:521 adminpages/paymentsettings.php:523
|
4896 |
#: classes/gateways/class.pmprogateway_braintree.php:160
|
4905 |
msgid "To fully integrate with Braintree, be sure to set your Web Hook URL to"
|
4906 |
msgstr ""
|
4907 |
|
4908 |
+
#: classes/gateways/class.pmprogateway_braintree.php:454
|
4909 |
+
#: classes/gateways/class.pmprogateway_stripe.php:536 pages/checkout.php:362
|
4910 |
#: classes/gateways/class.pmprogateway_braintree.php:270
|
4911 |
#: classes/gateways/class.pmprogateway_braintree.php:283
|
4912 |
#: classes/gateways/class.pmprogateway_braintree.php:285
|
4931 |
#: classes/gateways/class.pmprogateway_stripe.php:461
|
4932 |
#: classes/gateways/class.pmprogateway_stripe.php:499
|
4933 |
#: classes/gateways/class.pmprogateway_stripe.php:526
|
4934 |
+
#: classes/gateways/class.pmprogateway_stripe.php:546
|
4935 |
#: classes/gateways/class.pmprogateway_stripe.php:561
|
4936 |
#: classes/gateways/class.pmprogateway_stripe.php:569
|
4937 |
#: classes/gateways/class.pmprogateway_stripe.php:576
|
4944 |
msgid "Payment Information"
|
4945 |
msgstr ""
|
4946 |
|
4947 |
+
#: classes/gateways/class.pmprogateway_braintree.php:455
|
4948 |
+
#: classes/gateways/class.pmprogateway_stripe.php:537 pages/checkout.php:363
|
4949 |
#: classes/gateways/class.pmprogateway_braintree.php:270
|
4950 |
#: classes/gateways/class.pmprogateway_braintree.php:283
|
4951 |
#: classes/gateways/class.pmprogateway_braintree.php:285
|
4970 |
#: classes/gateways/class.pmprogateway_stripe.php:462
|
4971 |
#: classes/gateways/class.pmprogateway_stripe.php:500
|
4972 |
#: classes/gateways/class.pmprogateway_stripe.php:527
|
4973 |
+
#: classes/gateways/class.pmprogateway_stripe.php:547
|
4974 |
#: classes/gateways/class.pmprogateway_stripe.php:562
|
4975 |
#: classes/gateways/class.pmprogateway_stripe.php:570
|
4976 |
#: classes/gateways/class.pmprogateway_stripe.php:577
|
4984 |
msgid "We Accept %s"
|
4985 |
msgstr ""
|
4986 |
|
4987 |
+
#: classes/gateways/class.pmprogateway_braintree.php:475
|
4988 |
+
#: classes/gateways/class.pmprogateway_stripe.php:561 pages/billing.php:317
|
4989 |
+
#: pages/checkout.php:385 classes/gateways/class.pmprogateway_braintree.php:303
|
4990 |
#: classes/gateways/class.pmprogateway_braintree.php:316
|
4991 |
#: classes/gateways/class.pmprogateway_braintree.php:318
|
4992 |
#: classes/gateways/class.pmprogateway_braintree.php:321
|
5009 |
#: classes/gateways/class.pmprogateway_stripe.php:527
|
5010 |
#: classes/gateways/class.pmprogateway_stripe.php:565
|
5011 |
#: classes/gateways/class.pmprogateway_stripe.php:592
|
5012 |
+
#: classes/gateways/class.pmprogateway_stripe.php:594
|
5013 |
#: classes/gateways/class.pmprogateway_stripe.php:609
|
5014 |
#: classes/gateways/class.pmprogateway_stripe.php:617
|
5015 |
#: classes/gateways/class.pmprogateway_stripe.php:624
|
5026 |
msgid "Card Number"
|
5027 |
msgstr ""
|
5028 |
|
5029 |
+
#: classes/gateways/class.pmprogateway_braintree.php:503 pages/billing.php:356
|
5030 |
#: classes/gateways/class.pmprogateway_braintree.php:340
|
5031 |
#: classes/gateways/class.pmprogateway_braintree.php:353
|
5032 |
#: classes/gateways/class.pmprogateway_braintree.php:355
|
5061 |
msgid "CVV"
|
5062 |
msgstr ""
|
5063 |
|
5064 |
+
#: classes/gateways/class.pmprogateway_braintree.php:504 pages/billing.php:357
|
5065 |
+
#: pages/checkout.php:421 classes/gateways/class.pmprogateway_braintree.php:341
|
|
|
5066 |
#: classes/gateways/class.pmprogateway_braintree.php:354
|
5067 |
#: classes/gateways/class.pmprogateway_braintree.php:356
|
5068 |
#: classes/gateways/class.pmprogateway_braintree.php:359
|
5084 |
#: classes/gateways/class.pmprogateway_stripe.php:554
|
5085 |
#: classes/gateways/class.pmprogateway_stripe.php:565
|
5086 |
#: classes/gateways/class.pmprogateway_stripe.php:603
|
5087 |
+
#: classes/gateways/class.pmprogateway_stripe.php:624
|
5088 |
#: classes/gateways/class.pmprogateway_stripe.php:630
|
5089 |
#: classes/gateways/class.pmprogateway_stripe.php:639
|
5090 |
#: classes/gateways/class.pmprogateway_stripe.php:647
|
5103 |
msgid "what's this?"
|
5104 |
msgstr ""
|
5105 |
|
5106 |
+
#: classes/gateways/class.pmprogateway_braintree.php:511
|
5107 |
+
#: classes/gateways/class.pmprogateway_stripe.php:583 pages/checkout.php:91
|
5108 |
+
#: pages/checkout.php:428 classes/gateways/class.pmprogateway_braintree.php:351
|
5109 |
#: classes/gateways/class.pmprogateway_braintree.php:364
|
5110 |
#: classes/gateways/class.pmprogateway_braintree.php:366
|
5111 |
#: classes/gateways/class.pmprogateway_braintree.php:369
|
5128 |
#: classes/gateways/class.pmprogateway_stripe.php:564
|
5129 |
#: classes/gateways/class.pmprogateway_stripe.php:575
|
5130 |
#: classes/gateways/class.pmprogateway_stripe.php:613
|
5131 |
+
#: classes/gateways/class.pmprogateway_stripe.php:631
|
5132 |
#: classes/gateways/class.pmprogateway_stripe.php:640
|
5133 |
#: classes/gateways/class.pmprogateway_stripe.php:646
|
5134 |
#: classes/gateways/class.pmprogateway_stripe.php:654
|
5145 |
msgid "Apply"
|
5146 |
msgstr ""
|
5147 |
|
5148 |
+
#: classes/gateways/class.pmprogateway_braintree.php:570
|
5149 |
+
#: classes/gateways/class.pmprogateway_braintree.php:587
|
5150 |
+
#: classes/gateways/class.pmprogateway_braintree.php:677
|
5151 |
+
#: classes/gateways/class.pmprogateway_braintree.php:849
|
5152 |
+
#: classes/gateways/class.pmprogateway_braintree.php:958
|
5153 |
+
#: classes/gateways/class.pmprogateway_braintree.php:985
|
5154 |
#: classes/gateways/class.pmprogateway_braintree.php:509
|
5155 |
#: classes/gateways/class.pmprogateway_braintree.php:524
|
5156 |
#: classes/gateways/class.pmprogateway_braintree.php:526
|
5184 |
msgid "Payment error: Please contact the webmaster (braintree-load-error)"
|
5185 |
msgstr ""
|
5186 |
|
5187 |
+
#: classes/gateways/class.pmprogateway_braintree.php:574
|
|
|
5188 |
#: classes/gateways/class.pmprogateway_braintree.php:61
|
5189 |
#: classes/gateways/class.pmprogateway_braintree.php:406
|
5190 |
#: classes/gateways/class.pmprogateway_braintree.php:419
|
5221 |
msgid "Unknown error: Initial payment failed."
|
5222 |
msgstr ""
|
5223 |
|
5224 |
+
#: classes/gateways/class.pmprogateway_braintree.php:650
|
5225 |
#: classes/gateways/class.pmprogateway_braintree.php:120
|
5226 |
#: classes/gateways/class.pmprogateway_braintree.php:465
|
5227 |
#: classes/gateways/class.pmprogateway_braintree.php:478
|
5238 |
msgid "Error during settlement:"
|
5239 |
msgstr ""
|
5240 |
|
5241 |
+
#: classes/gateways/class.pmprogateway_braintree.php:659
|
5242 |
#: classes/gateways/class.pmprogateway_braintree.php:129
|
5243 |
#: classes/gateways/class.pmprogateway_braintree.php:474
|
5244 |
#: classes/gateways/class.pmprogateway_braintree.php:487
|
5255 |
msgid "Error during charge:"
|
5256 |
msgstr ""
|
5257 |
|
5258 |
+
#: classes/gateways/class.pmprogateway_braintree.php:751
|
5259 |
#: classes/gateways/class.pmprogateway_braintree.php:690
|
5260 |
#: classes/gateways/class.pmprogateway_braintree.php:731
|
5261 |
#: classes/gateways/class.pmprogateway_braintree.php:757
|
5264 |
msgid "Failed to update customer: %s"
|
5265 |
msgstr ""
|
5266 |
|
5267 |
+
#: classes/gateways/class.pmprogateway_braintree.php:763
|
5268 |
#: classes/gateways/class.pmprogateway_braintree.php:198
|
5269 |
#: classes/gateways/class.pmprogateway_braintree.php:221
|
5270 |
#: classes/gateways/class.pmprogateway_braintree.php:566
|
5282 |
msgid "Failed to update customer."
|
5283 |
msgstr ""
|
5284 |
|
5285 |
+
#: classes/gateways/class.pmprogateway_braintree.php:811
|
5286 |
#: classes/gateways/class.pmprogateway_braintree.php:246
|
5287 |
#: classes/gateways/class.pmprogateway_braintree.php:269
|
5288 |
#: classes/gateways/class.pmprogateway_braintree.php:614
|
5300 |
msgid "Failed to create customer."
|
5301 |
msgstr ""
|
5302 |
|
5303 |
+
#: classes/gateways/class.pmprogateway_braintree.php:818
|
5304 |
#: classes/gateways/class.pmprogateway_braintree.php:253
|
5305 |
#: classes/gateways/class.pmprogateway_braintree.php:276
|
5306 |
#: classes/gateways/class.pmprogateway_braintree.php:621
|
5318 |
msgid "Error creating customer record with Braintree:"
|
5319 |
msgstr ""
|
5320 |
|
5321 |
+
#: classes/gateways/class.pmprogateway_braintree.php:934
|
5322 |
#: classes/gateways/class.pmprogateway_braintree.php:940
|
5323 |
#, php-format
|
5324 |
msgid "Error subscribing customer to plan with Braintree: %s (%s)"
|
5325 |
msgstr ""
|
5326 |
|
5327 |
+
#: classes/gateways/class.pmprogateway_braintree.php:949
|
5328 |
#: classes/gateways/class.pmprogateway_braintree.php:955
|
5329 |
#, php-format
|
5330 |
msgid "Failed to subscribe with Braintree: %s"
|
5331 |
msgstr ""
|
5332 |
|
5333 |
+
#: classes/gateways/class.pmprogateway_braintree.php:1020
|
5334 |
+
#: classes/gateways/class.pmprogateway_braintree.php:1031
|
5335 |
#: classes/gateways/class.pmprogateway_braintree.php:1026
|
5336 |
#: classes/gateways/class.pmprogateway_braintree.php:1037
|
5337 |
#, php-format
|
5338 |
msgid "Could not find the subscription. %s"
|
5339 |
msgstr ""
|
5340 |
|
5341 |
+
#: classes/gateways/class.pmprogateway_braintree.php:1038
|
5342 |
#: classes/gateways/class.pmprogateway_braintree.php:397
|
5343 |
#: classes/gateways/class.pmprogateway_braintree.php:398
|
5344 |
#: classes/gateways/class.pmprogateway_braintree.php:410
|
5393 |
msgid "Could not find the subscription."
|
5394 |
msgstr ""
|
5395 |
|
5396 |
+
#: classes/gateways/class.pmprogateway_check.php:49
|
5397 |
+
#: paid-memberships-pro.php:148 adminpages/orders.php:399
|
5398 |
+
#: adminpages/orders.php:449 adminpages/paymentsettings.php:157
|
5399 |
+
#: adminpages/paymentsettings.php:159
|
5400 |
+
#: classes/gateways/class.pmprogateway_check.php:48
|
5401 |
+
#: classes/gateways/class.pmprogateway_check.php:49
|
5402 |
+
#: paid-memberships-pro.php:116 paid-memberships-pro.php:117
|
5403 |
+
#: paid-memberships-pro.php:124 paid-memberships-pro.php:125
|
5404 |
+
#: paid-memberships-pro.php:126 paid-memberships-pro.php:127
|
5405 |
+
#: paid-memberships-pro.php:128 paid-memberships-pro.php:129
|
5406 |
+
#: paid-memberships-pro.php:130 paid-memberships-pro.php:131
|
5407 |
+
#: paid-memberships-pro.php:136 paid-memberships-pro.php:141
|
5408 |
+
#: paid-memberships-pro.php:146
|
5409 |
+
msgid "Pay by Check"
|
5410 |
+
msgstr ""
|
5411 |
+
|
5412 |
+
#: classes/gateways/class.pmprogateway_check.php:101
|
5413 |
+
#: classes/gateways/class.pmprogateway_check.php:100
|
5414 |
+
#: classes/gateways/class.pmprogateway_check.php:101
|
5415 |
+
msgid "Pay by Check Settings"
|
5416 |
+
msgstr ""
|
5417 |
+
|
5418 |
+
#: classes/gateways/class.pmprogateway_check.php:106
|
5419 |
+
#: adminpages/paymentsettings.php:389 adminpages/paymentsettings.php:415
|
5420 |
+
#: adminpages/paymentsettings.php:420 adminpages/paymentsettings.php:422
|
5421 |
+
#: classes/gateways/class.pmprogateway_check.php:105
|
5422 |
+
#: classes/gateways/class.pmprogateway_check.php:106
|
5423 |
+
msgid "Instructions"
|
5424 |
+
msgstr ""
|
5425 |
+
|
5426 |
+
#: classes/gateways/class.pmprogateway_check.php:110
|
5427 |
+
#: adminpages/paymentsettings.php:393 adminpages/paymentsettings.php:419
|
5428 |
+
#: adminpages/paymentsettings.php:424 adminpages/paymentsettings.php:426
|
5429 |
+
#: classes/gateways/class.pmprogateway_check.php:109
|
5430 |
+
#: classes/gateways/class.pmprogateway_check.php:110
|
5431 |
+
msgid ""
|
5432 |
+
"Who to write the check out to. Where to mail it. Shown on checkout, "
|
5433 |
+
"confirmation, and invoice pages."
|
5434 |
+
msgstr ""
|
5435 |
+
|
5436 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:36
|
5437 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:42
|
5438 |
+
msgid "CyberSource"
|
5439 |
+
msgstr ""
|
5440 |
+
|
5441 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:83
|
5442 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:96
|
5443 |
+
msgid "CyberSource Settings"
|
5444 |
+
msgstr ""
|
5445 |
+
|
5446 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:88
|
5447 |
+
#: adminpages/paymentsettings.php:174
|
5448 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:101
|
5449 |
+
msgid ""
|
5450 |
+
"This gateway option is in beta. Some functionality may not be available. "
|
5451 |
+
"Please contact Paid Memberships Pro with any issues you run into. "
|
5452 |
+
"<strong>Please be sure to upgrade Paid Memberships Pro to the latest "
|
5453 |
+
"versions when available.</strong>"
|
5454 |
+
msgstr ""
|
5455 |
+
|
5456 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:101
|
5457 |
+
#: adminpages/paymentsettings.php:372 adminpages/paymentsettings.php:377
|
5458 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:114
|
5459 |
+
msgid "Transaction Security Key"
|
5460 |
+
msgstr ""
|
5461 |
+
|
5462 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:316
|
5463 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:317
|
5464 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:480
|
5465 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:481
|
5466 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:767
|
5467 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:768
|
5468 |
+
msgid ""
|
5469 |
+
"Error validating credit card type. Make sure your credit card number is "
|
5470 |
+
"correct and try again."
|
5471 |
+
msgstr ""
|
5472 |
+
|
5473 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:343
|
5474 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:349
|
5475 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:395
|
5476 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:401
|
5477 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:505
|
5478 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:511
|
5479 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:695
|
5480 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:701
|
5481 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:779
|
5482 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:785
|
5483 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:833
|
5484 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:839
|
5485 |
+
msgid "Error communicating with Cybersource: %"
|
5486 |
+
msgstr ""
|
5487 |
+
|
5488 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:344
|
5489 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:350
|
5490 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:396
|
5491 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:402
|
5492 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:506
|
5493 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:512
|
5494 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:696
|
5495 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:702
|
5496 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:780
|
5497 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:786
|
5498 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:834
|
5499 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:840
|
5500 |
+
msgid "Error communicating with Cybersource."
|
5501 |
+
msgstr ""
|
5502 |
+
|
5503 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:678
|
5504 |
+
msgid "The payment gateway doesn't support this credit/debit card type."
|
5505 |
+
msgstr ""
|
5506 |
+
|
5507 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:863
|
5508 |
+
msgid "Successful transaction."
|
5509 |
+
msgstr ""
|
5510 |
+
|
5511 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:864
|
5512 |
+
msgid "The request is missing one or more required fields."
|
5513 |
+
msgstr ""
|
5514 |
+
|
5515 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:865
|
5516 |
+
msgid ""
|
5517 |
+
"One or more fields in the request contains invalid data. Check that your "
|
5518 |
+
"billing address is valid."
|
5519 |
+
msgstr ""
|
5520 |
+
|
5521 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:866
|
5522 |
+
msgid "Duplicate order detected."
|
5523 |
+
msgstr ""
|
5524 |
+
|
5525 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:867
|
5526 |
+
msgid "Only partial amount was approved."
|
5527 |
+
msgstr ""
|
5528 |
+
|
5529 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:868
|
5530 |
+
msgid "Error: General system failure."
|
5531 |
+
msgstr ""
|
5532 |
+
|
5533 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:869
|
5534 |
+
msgid "Error: The request was received but there was a server timeout."
|
5535 |
+
msgstr ""
|
5536 |
+
|
5537 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:870
|
5538 |
+
msgid ""
|
5539 |
+
"Error: The request was received, but a service did not finish running in "
|
5540 |
+
"time. "
|
5541 |
+
msgstr ""
|
5542 |
+
|
5543 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:871
|
5544 |
+
msgid "Address Verification Service (AVS) failure."
|
5545 |
+
msgstr ""
|
5546 |
+
|
5547 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:872
|
5548 |
+
msgid "Authorization failed."
|
5549 |
+
msgstr ""
|
5550 |
+
|
5551 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:873
|
5552 |
+
msgid "Expired card or invalid expiration date."
|
5553 |
+
msgstr ""
|
5554 |
+
|
5555 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:874
|
5556 |
+
msgid "The card was declined."
|
5557 |
+
msgstr ""
|
5558 |
+
|
5559 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:875
|
5560 |
+
msgid "Insufficient funds in the account."
|
5561 |
+
msgstr ""
|
5562 |
+
|
5563 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:876
|
5564 |
+
msgid "Stolen or lost card."
|
5565 |
+
msgstr ""
|
5566 |
+
|
5567 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:877
|
5568 |
+
msgid "Issuing bank unavailable."
|
5569 |
+
msgstr ""
|
5570 |
+
|
5571 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:878
|
5572 |
+
msgid "Inactive card or card not authorized for card-not-present transactions."
|
5573 |
+
msgstr ""
|
5574 |
+
|
5575 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:879
|
5576 |
+
msgid "American Express Card Identification Digits (CID) did not match."
|
5577 |
+
msgstr ""
|
5578 |
+
|
5579 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:880
|
5580 |
+
msgid "The card has reached the credit limit. "
|
5581 |
+
msgstr ""
|
5582 |
+
|
5583 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:881
|
5584 |
+
msgid "Invalid card verification number."
|
5585 |
+
msgstr ""
|
5586 |
+
|
5587 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:882
|
5588 |
+
msgid "The customer matched an entry on the processors negative file. "
|
5589 |
+
msgstr ""
|
5590 |
+
|
5591 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:883
|
5592 |
+
msgid "Card verification (CV) check failed."
|
5593 |
+
msgstr ""
|
5594 |
+
|
5595 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:884
|
5596 |
+
msgid "Invalid account number."
|
5597 |
+
msgstr ""
|
5598 |
+
|
5599 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:885
|
5600 |
+
msgid "The card type is not accepted by the payment processor."
|
5601 |
+
msgstr ""
|
5602 |
+
|
5603 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:886
|
5604 |
+
msgid "General decline by the processor."
|
5605 |
+
msgstr ""
|
5606 |
+
|
5607 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:887
|
5608 |
+
msgid "There is a problem with your CyberSource merchant configuration."
|
5609 |
+
msgstr ""
|
5610 |
+
|
5611 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:888
|
5612 |
+
msgid "The requested amount exceeds the originally authorized amount."
|
5613 |
+
msgstr ""
|
5614 |
+
|
5615 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:889
|
5616 |
+
msgid "Processor failure."
|
5617 |
+
msgstr ""
|
5618 |
+
|
5619 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:890
|
5620 |
+
msgid "The authorization has already been reversed."
|
5621 |
+
msgstr ""
|
5622 |
+
|
5623 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:891
|
5624 |
+
msgid "The authorization has already been captured."
|
5625 |
+
msgstr ""
|
5626 |
+
|
5627 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:892
|
5628 |
+
msgid ""
|
5629 |
+
"The requested transaction amount must match the previous transaction amount."
|
5630 |
+
msgstr ""
|
5631 |
+
|
5632 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:893
|
5633 |
+
msgid ""
|
5634 |
+
"The card type sent is invalid or does not correlate with the credit card "
|
5635 |
+
"number."
|
5636 |
+
msgstr ""
|
5637 |
+
|
5638 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:894
|
5639 |
+
msgid "The referenced request id is invalid for all follow-on transactions."
|
5640 |
+
msgstr ""
|
5641 |
+
|
5642 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:895
|
5643 |
+
msgid "The request ID is invalid."
|
5644 |
+
msgstr ""
|
5645 |
+
|
5646 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:896
|
5647 |
+
msgid "The transaction has already been settled or reversed."
|
5648 |
+
msgstr ""
|
5649 |
+
|
5650 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:897
|
5651 |
+
msgid ""
|
5652 |
+
"The capture or credit is not voidable because the capture or credit "
|
5653 |
+
"information has already been submitted to your processor. Or, you requested "
|
5654 |
+
"a void for a type of transaction that cannot be voided."
|
5655 |
+
msgstr ""
|
5656 |
+
|
5657 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:898
|
5658 |
+
msgid "You requested a credit for a capture that was previously voided."
|
5659 |
+
msgstr ""
|
5660 |
+
|
5661 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:899
|
5662 |
+
msgid ""
|
5663 |
+
"Error: The request was received, but there was a timeout at the payment "
|
5664 |
+
"processor."
|
5665 |
+
msgstr ""
|
5666 |
+
|
5667 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:900
|
5668 |
+
msgid "Stand-alone credits are not allowed with this processor."
|
5669 |
+
msgstr ""
|
5670 |
+
|
5671 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:901
|
5672 |
+
msgid ""
|
5673 |
+
"Apartment number missing or not found. Check that your billing address is "
|
5674 |
+
"valid."
|
5675 |
+
msgstr ""
|
5676 |
+
|
5677 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:902
|
5678 |
+
msgid ""
|
5679 |
+
"Insufficient address information. Check that your billing address is valid."
|
5680 |
+
msgstr ""
|
5681 |
+
|
5682 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:903
|
5683 |
+
msgid ""
|
5684 |
+
"House/Box number not found on street. Check that your billing address is "
|
5685 |
+
"valid."
|
5686 |
+
msgstr ""
|
5687 |
+
|
5688 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:904
|
5689 |
+
msgid ""
|
5690 |
+
"Multiple address matches were found. Check that your billing address is "
|
5691 |
+
"valid."
|
5692 |
+
msgstr ""
|
5693 |
+
|
5694 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:905
|
5695 |
+
msgid ""
|
5696 |
+
"P.O. Box identifier not found or out of range.. Check that your billing "
|
5697 |
+
"address is valid."
|
5698 |
+
msgstr ""
|
5699 |
+
|
5700 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:906
|
5701 |
+
msgid ""
|
5702 |
+
"Route service identifier not found or out of range. Check that your billing "
|
5703 |
+
"address is valid."
|
5704 |
msgstr ""
|
5705 |
|
5706 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:907
|
5707 |
+
msgid ""
|
5708 |
+
"Street name not found in Postal code. Check that your billing address is "
|
5709 |
+
"valid."
|
5710 |
msgstr ""
|
5711 |
|
5712 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:908
|
5713 |
+
msgid ""
|
5714 |
+
"Postal code not found in database. Check that your billing address is valid."
|
|
|
|
|
|
|
5715 |
msgstr ""
|
5716 |
|
5717 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:909
|
|
|
|
|
|
|
|
|
5718 |
msgid ""
|
5719 |
+
"Unable to verify or correct address. Check that your billing address is "
|
5720 |
+
"valid."
|
5721 |
msgstr ""
|
5722 |
|
5723 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:910
|
5724 |
+
msgid ""
|
5725 |
+
"Multiple address matches were found (international). Check that your billing "
|
5726 |
+
"address is valid."
|
5727 |
msgstr ""
|
5728 |
|
5729 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:911
|
5730 |
+
msgid "Address match not found. Check that your billing address is valid."
|
|
|
5731 |
msgstr ""
|
5732 |
|
5733 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:912
|
|
|
|
|
5734 |
msgid ""
|
5735 |
+
"Unsupported character set. Verify the character set that you are using to "
|
5736 |
+
"process transactions."
|
|
|
|
|
5737 |
msgstr ""
|
5738 |
|
5739 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:913
|
5740 |
+
msgid "Order has been rejected by Decision Manager."
|
5741 |
+
msgstr ""
|
5742 |
+
|
5743 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:914
|
5744 |
+
msgid "Smart Authorization failed."
|
5745 |
+
msgstr ""
|
5746 |
+
|
5747 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:915
|
5748 |
+
msgid "Your order has been refused."
|
5749 |
+
msgstr ""
|
5750 |
+
|
5751 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:921
|
5752 |
+
msgid "Unknown error."
|
5753 |
+
msgstr ""
|
5754 |
+
|
5755 |
+
#: classes/gateways/class.pmprogateway_cybersource.php:926
|
5756 |
+
msgid " Invalid fields:"
|
5757 |
msgstr ""
|
5758 |
|
5759 |
#: classes/gateways/class.pmprogateway_payflowpro.php:39
|
5781 |
msgstr ""
|
5782 |
|
5783 |
#: classes/gateways/class.pmprogateway_payflowpro.php:124
|
5784 |
+
#: pages/checkout.php:127 adminpages/paymentsettings.php:219
|
5785 |
#: adminpages/paymentsettings.php:223 adminpages/paymentsettings.php:228
|
5786 |
#: classes/gateways/class.pmprogateway_payflowpro.php:124
|
5787 |
#: pages/checkout.php:176 pages/checkout.php:177 pages/checkout.php:180
|
5805 |
msgstr ""
|
5806 |
|
5807 |
#: classes/gateways/class.pmprogateway_payflowpro.php:194
|
5808 |
+
#: classes/gateways/class.pmprogateway_paypal.php:332
|
5809 |
#: classes/gateways/class.pmprogateway_payflowpro.php:57
|
5810 |
#: classes/gateways/class.pmprogateway_payflowpro.php:194
|
5811 |
#: classes/gateways/class.pmprogateway_paypal.php:57
|
5818 |
msgstr ""
|
5819 |
|
5820 |
#: classes/gateways/class.pmprogateway_paypal.php:68
|
5821 |
+
#: paid-memberships-pro.php:151
|
5822 |
#: classes/gateways/class.pmprogateway_paypal.php:57
|
5823 |
#: classes/gateways/class.pmprogateway_paypal.php:68
|
5824 |
#: paid-memberships-pro.php:119 paid-memberships-pro.php:120
|
5827 |
#: paid-memberships-pro.php:131 paid-memberships-pro.php:132
|
5828 |
#: paid-memberships-pro.php:133 paid-memberships-pro.php:134
|
5829 |
#: paid-memberships-pro.php:139 paid-memberships-pro.php:144
|
5830 |
+
#: paid-memberships-pro.php:149
|
5831 |
msgid "PayPal Website Payments Pro"
|
5832 |
msgstr ""
|
5833 |
|
5834 |
+
#: classes/gateways/class.pmprogateway_paypal.php:131
|
5835 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:140
|
5836 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:132
|
5837 |
#: classes/gateways/class.pmprogateway_paypal.php:113
|
5844 |
msgid "PayPal Settings"
|
5845 |
msgstr ""
|
5846 |
|
5847 |
+
#: classes/gateways/class.pmprogateway_paypal.php:136
|
5848 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:145
|
5849 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:137
|
5850 |
#: adminpages/paymentsettings.php:179
|
5863 |
"here.</a>"
|
5864 |
msgstr ""
|
5865 |
|
5866 |
+
#: classes/gateways/class.pmprogateway_paypal.php:141
|
5867 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:150
|
5868 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:142
|
5869 |
#: adminpages/paymentsettings.php:227 adminpages/paymentsettings.php:231
|
5878 |
msgid "Gateway Account Email"
|
5879 |
msgstr ""
|
5880 |
|
5881 |
+
#: classes/gateways/class.pmprogateway_paypal.php:149
|
5882 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:158
|
5883 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:150
|
5884 |
#: classes/gateways/class.pmprogateway_twocheckout.php:119
|
5898 |
msgid "API Username"
|
5899 |
msgstr ""
|
5900 |
|
5901 |
+
#: classes/gateways/class.pmprogateway_paypal.php:157
|
5902 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:166
|
5903 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:158
|
5904 |
#: classes/gateways/class.pmprogateway_twocheckout.php:128
|
5918 |
msgid "API Password"
|
5919 |
msgstr ""
|
5920 |
|
5921 |
+
#: classes/gateways/class.pmprogateway_paypal.php:165
|
5922 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:174
|
5923 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:166
|
5924 |
#: adminpages/paymentsettings.php:251 adminpages/paymentsettings.php:255
|
5933 |
msgid "API Signature"
|
5934 |
msgstr ""
|
5935 |
|
5936 |
+
#: classes/gateways/class.pmprogateway_paypal.php:173
|
5937 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:182
|
5938 |
#: classes/gateways/class.pmprogateway_paypal.php:167
|
5939 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:182
|
5940 |
msgid "Confirmation Step"
|
5941 |
msgstr ""
|
5942 |
|
5943 |
+
#: classes/gateways/class.pmprogateway_paypal.php:184
|
5944 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:193
|
5945 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:174
|
5946 |
#: adminpages/paymentsettings.php:446 adminpages/paymentsettings.php:479
|
5955 |
msgid "IPN Handler URL"
|
5956 |
msgstr ""
|
5957 |
|
5958 |
+
#: classes/gateways/class.pmprogateway_paypal.php:187
|
5959 |
#: classes/gateways/class.pmprogateway_paypal.php:158
|
5960 |
#: classes/gateways/class.pmprogateway_paypal.php:181
|
5961 |
msgid ""
|
5963 |
"SHOULD NOT set this in your PayPal account settings."
|
5964 |
msgstr ""
|
5965 |
|
5966 |
+
#: classes/gateways/class.pmprogateway_paypal.php:268
|
5967 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:463
|
5968 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:229
|
5969 |
+
#: pages/checkout.php:214 classes/gateways/class.pmprogateway_paypal.php:178
|
5970 |
#: classes/gateways/class.pmprogateway_paypal.php:201
|
5971 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:402
|
5972 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:412
|
5984 |
msgid "Check Out with PayPal"
|
5985 |
msgstr ""
|
5986 |
|
5987 |
+
#: classes/gateways/class.pmprogateway_paypal.php:274
|
5988 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:468
|
5989 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:234
|
5990 |
+
#: pages/checkout.php:496 classes/gateways/class.pmprogateway_paypal.php:184
|
5991 |
#: classes/gateways/class.pmprogateway_paypal.php:207
|
5992 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:408
|
5993 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:418
|
6005 |
msgid "Submit and Check Out"
|
6006 |
msgstr ""
|
6007 |
|
6008 |
+
#: classes/gateways/class.pmprogateway_paypal.php:274
|
6009 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:468
|
6010 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:234
|
6011 |
#: classes/gateways/class.pmprogateway_twocheckout.php:203
|
6012 |
+
#: pages/checkout.php:496 classes/gateways/class.pmprogateway_paypal.php:184
|
6013 |
#: classes/gateways/class.pmprogateway_paypal.php:207
|
6014 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:408
|
6015 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:418
|
6030 |
msgid "Submit and Confirm"
|
6031 |
msgstr ""
|
6032 |
|
6033 |
+
#: classes/gateways/class.pmprogateway_paypal.php:681
|
6034 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:768
|
6035 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:575
|
6036 |
#: classes/gateways/class.pmprogateway_paypal.php:385
|
6037 |
#: classes/gateways/class.pmprogateway_paypal.php:605
|
6062 |
msgstr ""
|
6063 |
|
6064 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:84
|
6065 |
+
#: paid-memberships-pro.php:150
|
6066 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:63
|
6067 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:73
|
6068 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:84
|
6072 |
#: paid-memberships-pro.php:130 paid-memberships-pro.php:131
|
6073 |
#: paid-memberships-pro.php:132 paid-memberships-pro.php:133
|
6074 |
#: paid-memberships-pro.php:138 paid-memberships-pro.php:143
|
6075 |
+
#: paid-memberships-pro.php:148
|
6076 |
msgid "PayPal Express"
|
6077 |
msgstr ""
|
6078 |
|
6085 |
msgid "To fully integrate with PayPal, be sure to set your IPN Handler URL to "
|
6086 |
msgstr ""
|
6087 |
|
6088 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:327
|
6089 |
+
#: classes/gateways/class.pmprogateway_paypalexpress.php:382
|
6090 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:268
|
6091 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:278
|
6092 |
#: classes/gateways/class.pmprogateway_paypalexpress.php:301
|
6106 |
msgstr ""
|
6107 |
|
6108 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:71
|
6109 |
+
#: paid-memberships-pro.php:153
|
6110 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:60
|
6111 |
#: classes/gateways/class.pmprogateway_paypalstandard.php:71
|
6112 |
#: paid-memberships-pro.php:121 paid-memberships-pro.php:122
|
6115 |
#: paid-memberships-pro.php:133 paid-memberships-pro.php:134
|
6116 |
#: paid-memberships-pro.php:135 paid-memberships-pro.php:136
|
6117 |
#: paid-memberships-pro.php:141 paid-memberships-pro.php:146
|
6118 |
+
#: paid-memberships-pro.php:151
|
6119 |
msgid "PayPal Standard"
|
6120 |
msgstr ""
|
6121 |
|
6132 |
msgid "User requested cancellation"
|
6133 |
msgstr ""
|
6134 |
|
6135 |
+
#: classes/gateways/class.pmprogateway_stripe.php:229
|
6136 |
+
#: paid-memberships-pro.php:149
|
6137 |
#: classes/gateways/class.pmprogateway_stripe.php:93
|
6138 |
#: classes/gateways/class.pmprogateway_stripe.php:94
|
6139 |
#: classes/gateways/class.pmprogateway_stripe.php:104
|
6143 |
#: classes/gateways/class.pmprogateway_stripe.php:140
|
6144 |
#: classes/gateways/class.pmprogateway_stripe.php:142
|
6145 |
#: classes/gateways/class.pmprogateway_stripe.php:169
|
6146 |
+
#: classes/gateways/class.pmprogateway_stripe.php:198
|
6147 |
#: classes/gateways/class.pmprogateway_stripe.php:201
|
6148 |
#: classes/gateways/class.pmprogateway_stripe.php:203
|
6149 |
#: paid-memberships-pro.php:117 paid-memberships-pro.php:118
|
6152 |
#: paid-memberships-pro.php:129 paid-memberships-pro.php:130
|
6153 |
#: paid-memberships-pro.php:131 paid-memberships-pro.php:132
|
6154 |
#: paid-memberships-pro.php:137 paid-memberships-pro.php:142
|
6155 |
+
#: paid-memberships-pro.php:147
|
6156 |
msgid "Stripe"
|
6157 |
msgstr ""
|
6158 |
|
6159 |
+
#: classes/gateways/class.pmprogateway_stripe.php:283
|
6160 |
#: classes/gateways/class.pmprogateway_stripe.php:148
|
6161 |
#: classes/gateways/class.pmprogateway_stripe.php:149
|
6162 |
#: classes/gateways/class.pmprogateway_stripe.php:159
|
6166 |
#: classes/gateways/class.pmprogateway_stripe.php:195
|
6167 |
#: classes/gateways/class.pmprogateway_stripe.php:197
|
6168 |
#: classes/gateways/class.pmprogateway_stripe.php:224
|
6169 |
+
#: classes/gateways/class.pmprogateway_stripe.php:250
|
6170 |
#: classes/gateways/class.pmprogateway_stripe.php:256
|
6171 |
#: classes/gateways/class.pmprogateway_stripe.php:258
|
6172 |
msgid "Stripe Settings"
|
6173 |
msgstr ""
|
6174 |
|
6175 |
+
#: classes/gateways/class.pmprogateway_stripe.php:288
|
6176 |
#: adminpages/paymentsettings.php:285 adminpages/paymentsettings.php:289
|
6177 |
#: adminpages/paymentsettings.php:294
|
6178 |
#: classes/gateways/class.pmprogateway_stripe.php:161
|
6184 |
#: classes/gateways/class.pmprogateway_stripe.php:208
|
6185 |
#: classes/gateways/class.pmprogateway_stripe.php:210
|
6186 |
#: classes/gateways/class.pmprogateway_stripe.php:237
|
6187 |
+
#: classes/gateways/class.pmprogateway_stripe.php:255
|
6188 |
#: classes/gateways/class.pmprogateway_stripe.php:261
|
6189 |
#: classes/gateways/class.pmprogateway_stripe.php:263
|
6190 |
#: classes/gateways/class.pmprogateway_stripe.php:269
|
6191 |
msgid "Publishable Key"
|
6192 |
msgstr ""
|
6193 |
|
6194 |
+
#: classes/gateways/class.pmprogateway_stripe.php:298
|
6195 |
#: classes/gateways/class.pmprogateway_stripe.php:263
|
6196 |
#: classes/gateways/class.pmprogateway_stripe.php:269
|
6197 |
#: classes/gateways/class.pmprogateway_stripe.php:271
|
6198 |
msgid "Your Publishable Key appears incorrect."
|
6199 |
msgstr ""
|
6200 |
|
6201 |
+
#: classes/gateways/class.pmprogateway_stripe.php:306
|
6202 |
#: adminpages/paymentsettings.php:277 adminpages/paymentsettings.php:281
|
6203 |
#: adminpages/paymentsettings.php:286
|
6204 |
#: classes/gateways/class.pmprogateway_stripe.php:153
|
6211 |
#: classes/gateways/class.pmprogateway_stripe.php:202
|
6212 |
#: classes/gateways/class.pmprogateway_stripe.php:229
|
6213 |
#: classes/gateways/class.pmprogateway_stripe.php:261
|
6214 |
+
#: classes/gateways/class.pmprogateway_stripe.php:271
|
6215 |
#: classes/gateways/class.pmprogateway_stripe.php:277
|
6216 |
#: classes/gateways/class.pmprogateway_stripe.php:279
|
6217 |
msgid "Secret Key"
|
6218 |
msgstr ""
|
6219 |
|
6220 |
+
#: classes/gateways/class.pmprogateway_stripe.php:315
|
6221 |
#: adminpages/paymentsettings.php:425 adminpages/paymentsettings.php:430
|
6222 |
#: adminpages/paymentsettings.php:432
|
6223 |
#: classes/gateways/class.pmprogateway_stripe.php:169
|
6230 |
#: classes/gateways/class.pmprogateway_stripe.php:218
|
6231 |
#: classes/gateways/class.pmprogateway_stripe.php:245
|
6232 |
#: classes/gateways/class.pmprogateway_stripe.php:277
|
6233 |
+
#: classes/gateways/class.pmprogateway_stripe.php:279
|
6234 |
#: classes/gateways/class.pmprogateway_stripe.php:285
|
6235 |
#: classes/gateways/class.pmprogateway_stripe.php:287
|
6236 |
#: classes/gateways/class.pmprogateway_stripe.php:293
|
6238 |
msgid "Show Billing Address Fields"
|
6239 |
msgstr ""
|
6240 |
|
6241 |
+
#: classes/gateways/class.pmprogateway_stripe.php:325
|
6242 |
#: adminpages/paymentsettings.php:437 adminpages/paymentsettings.php:439
|
6243 |
#: classes/gateways/class.pmprogateway_stripe.php:176
|
6244 |
#: classes/gateways/class.pmprogateway_stripe.php:177
|
6250 |
#: classes/gateways/class.pmprogateway_stripe.php:225
|
6251 |
#: classes/gateways/class.pmprogateway_stripe.php:252
|
6252 |
#: classes/gateways/class.pmprogateway_stripe.php:284
|
6253 |
+
#: classes/gateways/class.pmprogateway_stripe.php:286
|
6254 |
#: classes/gateways/class.pmprogateway_stripe.php:292
|
6255 |
#: classes/gateways/class.pmprogateway_stripe.php:294
|
6256 |
#: classes/gateways/class.pmprogateway_stripe.php:300
|
6261 |
"verification in the Stripe dashboard settings.</strong>"
|
6262 |
msgstr ""
|
6263 |
|
6264 |
+
#: classes/gateways/class.pmprogateway_stripe.php:333
|
6265 |
#: adminpages/paymentsettings.php:465 adminpages/paymentsettings.php:506
|
6266 |
#: adminpages/paymentsettings.php:512 adminpages/paymentsettings.php:514
|
6267 |
#: classes/gateways/class.pmprogateway_stripe.php:184
|
6274 |
#: classes/gateways/class.pmprogateway_stripe.php:233
|
6275 |
#: classes/gateways/class.pmprogateway_stripe.php:260
|
6276 |
#: classes/gateways/class.pmprogateway_stripe.php:292
|
6277 |
+
#: classes/gateways/class.pmprogateway_stripe.php:294
|
6278 |
#: classes/gateways/class.pmprogateway_stripe.php:300
|
6279 |
#: classes/gateways/class.pmprogateway_stripe.php:302
|
6280 |
#: classes/gateways/class.pmprogateway_stripe.php:308
|
6282 |
msgid "To fully integrate with Stripe, be sure to set your Web Hook URL to"
|
6283 |
msgstr ""
|
6284 |
|
6285 |
+
#: classes/gateways/class.pmprogateway_stripe.php:340
|
6286 |
#: classes/gateways/class.pmprogateway_stripe.php:299
|
6287 |
#: classes/gateways/class.pmprogateway_stripe.php:307
|
6288 |
msgid "Stripe API Version"
|
6289 |
msgstr ""
|
6290 |
|
6291 |
+
#: classes/gateways/class.pmprogateway_stripe.php:368
|
6292 |
+
msgid "Verification steps confirmed. Your payment is processing."
|
|
|
|
|
|
|
|
|
|
|
|
|
6293 |
msgstr ""
|
6294 |
|
6295 |
+
#: classes/gateways/class.pmprogateway_stripe.php:572
|
6296 |
+
msgid "CVC"
|
6297 |
+
msgstr ""
|
6298 |
+
|
6299 |
+
#: classes/gateways/class.pmprogateway_stripe.php:650
|
6300 |
#: classes/gateways/class.pmprogateway_stripe.php:693
|
6301 |
#: classes/gateways/class.pmprogateway_stripe.php:703
|
6302 |
#: classes/gateways/class.pmprogateway_stripe.php:710
|
6310 |
"have been deleted."
|
6311 |
msgstr ""
|
6312 |
|
6313 |
+
#: classes/gateways/class.pmprogateway_stripe.php:655
|
6314 |
#: classes/gateways/class.pmprogateway_stripe.php:567
|
6315 |
#: classes/gateways/class.pmprogateway_stripe.php:568
|
6316 |
#: classes/gateways/class.pmprogateway_stripe.php:578
|
6322 |
#: classes/gateways/class.pmprogateway_stripe.php:634
|
6323 |
#: classes/gateways/class.pmprogateway_stripe.php:645
|
6324 |
#: classes/gateways/class.pmprogateway_stripe.php:683
|
6325 |
+
#: classes/gateways/class.pmprogateway_stripe.php:698
|
6326 |
#: classes/gateways/class.pmprogateway_stripe.php:710
|
6327 |
#: classes/gateways/class.pmprogateway_stripe.php:717
|
6328 |
#: classes/gateways/class.pmprogateway_stripe.php:725
|
6332 |
msgid "Subscription Updates"
|
6333 |
msgstr ""
|
6334 |
|
6335 |
+
#: classes/gateways/class.pmprogateway_stripe.php:659
|
6336 |
#: classes/gateways/class.pmprogateway_stripe.php:571
|
6337 |
#: classes/gateways/class.pmprogateway_stripe.php:572
|
6338 |
#: classes/gateways/class.pmprogateway_stripe.php:582
|
6344 |
#: classes/gateways/class.pmprogateway_stripe.php:638
|
6345 |
#: classes/gateways/class.pmprogateway_stripe.php:649
|
6346 |
#: classes/gateways/class.pmprogateway_stripe.php:687
|
6347 |
+
#: classes/gateways/class.pmprogateway_stripe.php:702
|
6348 |
#: classes/gateways/class.pmprogateway_stripe.php:714
|
6349 |
#: classes/gateways/class.pmprogateway_stripe.php:721
|
6350 |
#: classes/gateways/class.pmprogateway_stripe.php:729
|
6356 |
"at predefined times. Be sure to click Update Profile after making changes."
|
6357 |
msgstr ""
|
6358 |
|
6359 |
+
#: classes/gateways/class.pmprogateway_stripe.php:661
|
6360 |
#: classes/gateways/class.pmprogateway_stripe.php:573
|
6361 |
#: classes/gateways/class.pmprogateway_stripe.php:574
|
6362 |
#: classes/gateways/class.pmprogateway_stripe.php:584
|
6368 |
#: classes/gateways/class.pmprogateway_stripe.php:640
|
6369 |
#: classes/gateways/class.pmprogateway_stripe.php:651
|
6370 |
#: classes/gateways/class.pmprogateway_stripe.php:689
|
6371 |
+
#: classes/gateways/class.pmprogateway_stripe.php:704
|
6372 |
#: classes/gateways/class.pmprogateway_stripe.php:716
|
6373 |
#: classes/gateways/class.pmprogateway_stripe.php:723
|
6374 |
#: classes/gateways/class.pmprogateway_stripe.php:731
|
6380 |
"at predefined times. Be sure to click Update User after making changes."
|
6381 |
msgstr ""
|
6382 |
|
6383 |
+
#: classes/gateways/class.pmprogateway_stripe.php:667 pages/billing.php:370
|
6384 |
#: classes/gateways/class.pmprogateway_stripe.php:578
|
6385 |
#: classes/gateways/class.pmprogateway_stripe.php:579
|
6386 |
#: classes/gateways/class.pmprogateway_stripe.php:589
|
6392 |
#: classes/gateways/class.pmprogateway_stripe.php:645
|
6393 |
#: classes/gateways/class.pmprogateway_stripe.php:656
|
6394 |
#: classes/gateways/class.pmprogateway_stripe.php:694
|
6395 |
+
#: classes/gateways/class.pmprogateway_stripe.php:709
|
6396 |
#: classes/gateways/class.pmprogateway_stripe.php:721
|
6397 |
#: classes/gateways/class.pmprogateway_stripe.php:728
|
6398 |
#: classes/gateways/class.pmprogateway_stripe.php:736
|
6407 |
msgid "Update"
|
6408 |
msgstr ""
|
6409 |
|
6410 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1243
|
6411 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1256
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6412 |
#: classes/gateways/class.pmprogateway_stripe.php:1236
|
6413 |
#: classes/gateways/class.pmprogateway_stripe.php:1247
|
6414 |
#: classes/gateways/class.pmprogateway_stripe.php:1289
|
6419 |
msgid "Error: %s"
|
6420 |
msgstr ""
|
6421 |
|
6422 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1349
|
6423 |
#: classes/gateways/class.pmprogateway_stripe.php:190
|
6424 |
#: classes/gateways/class.pmprogateway_stripe.php:192
|
6425 |
#: classes/gateways/class.pmprogateway_stripe.php:199
|
6436 |
#: classes/gateways/class.pmprogateway_stripe.php:1260
|
6437 |
#: classes/gateways/class.pmprogateway_stripe.php:1300
|
6438 |
#: classes/gateways/class.pmprogateway_stripe.php:1303
|
6439 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1322
|
6440 |
#: classes/gateways/class.pmprogateway_stripe.php:1325
|
6441 |
#: classes/gateways/class.pmprogateway_stripe.php:1326
|
6442 |
#: classes/gateways/class.pmprogateway_stripe.php:1336
|
6450 |
msgid "Error creating customer record with Stripe:"
|
6451 |
msgstr ""
|
6452 |
|
6453 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1408
|
6454 |
#: classes/gateways/class.pmprogateway_stripe.php:1275
|
6455 |
#: classes/gateways/class.pmprogateway_stripe.php:1303
|
6456 |
#: classes/gateways/class.pmprogateway_stripe.php:1313
|
6457 |
#: classes/gateways/class.pmprogateway_stripe.php:1317
|
6458 |
#: classes/gateways/class.pmprogateway_stripe.php:1357
|
6459 |
#: classes/gateways/class.pmprogateway_stripe.php:1360
|
6460 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1374
|
6461 |
#: classes/gateways/class.pmprogateway_stripe.php:1384
|
6462 |
#: classes/gateways/class.pmprogateway_stripe.php:1385
|
6463 |
#: classes/gateways/class.pmprogateway_stripe.php:1395
|
6471 |
msgid "Error getting subscription with Stripe:"
|
6472 |
msgstr ""
|
6473 |
|
6474 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1559
|
6475 |
#: classes/gateways/class.pmprogateway_stripe.php:278
|
6476 |
#: classes/gateways/class.pmprogateway_stripe.php:279
|
6477 |
#: classes/gateways/class.pmprogateway_stripe.php:286
|
6496 |
#: classes/gateways/class.pmprogateway_stripe.php:1467
|
6497 |
#: classes/gateways/class.pmprogateway_stripe.php:1507
|
6498 |
#: classes/gateways/class.pmprogateway_stripe.php:1510
|
6499 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1525
|
6500 |
#: classes/gateways/class.pmprogateway_stripe.php:1540
|
6501 |
#: classes/gateways/class.pmprogateway_stripe.php:1541
|
6502 |
#: classes/gateways/class.pmprogateway_stripe.php:1551
|
6510 |
msgid "Error creating plan with Stripe:"
|
6511 |
msgstr ""
|
6512 |
|
6513 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1590
|
6514 |
#: classes/gateways/class.pmprogateway_stripe.php:294
|
6515 |
#: classes/gateways/class.pmprogateway_stripe.php:295
|
6516 |
#: classes/gateways/class.pmprogateway_stripe.php:302
|
6530 |
#: classes/gateways/class.pmprogateway_stripe.php:1498
|
6531 |
#: classes/gateways/class.pmprogateway_stripe.php:1538
|
6532 |
#: classes/gateways/class.pmprogateway_stripe.php:1541
|
6533 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1554
|
6534 |
#: classes/gateways/class.pmprogateway_stripe.php:1571
|
6535 |
#: classes/gateways/class.pmprogateway_stripe.php:1572
|
6536 |
#: classes/gateways/class.pmprogateway_stripe.php:1582
|
6544 |
msgid "Error subscribing customer to plan with Stripe:"
|
6545 |
msgstr ""
|
6546 |
|
6547 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1681
|
6548 |
#: classes/gateways/class.pmprogateway_stripe.php:769
|
6549 |
#: classes/gateways/class.pmprogateway_stripe.php:770
|
6550 |
#: classes/gateways/class.pmprogateway_stripe.php:780
|
6557 |
#: classes/gateways/class.pmprogateway_stripe.php:849
|
6558 |
#: classes/gateways/class.pmprogateway_stripe.php:887
|
6559 |
#: classes/gateways/class.pmprogateway_stripe.php:914
|
6560 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1643
|
6561 |
#: classes/gateways/class.pmprogateway_stripe.php:1698
|
6562 |
#: classes/gateways/class.pmprogateway_stripe.php:1706
|
6563 |
#: classes/gateways/class.pmprogateway_stripe.php:1714
|
6567 |
msgid "Could not cancel the old subscription. Updates have not been processed."
|
6568 |
msgstr ""
|
6569 |
|
6570 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1793
|
6571 |
#: classes/gateways/class.pmprogateway_stripe.php:383
|
6572 |
#: classes/gateways/class.pmprogateway_stripe.php:389
|
6573 |
#: classes/gateways/class.pmprogateway_stripe.php:410
|
6588 |
#: classes/gateways/class.pmprogateway_stripe.php:1668
|
6589 |
#: classes/gateways/class.pmprogateway_stripe.php:1678
|
6590 |
#: classes/gateways/class.pmprogateway_stripe.php:1716
|
6591 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1744
|
6592 |
#: classes/gateways/class.pmprogateway_stripe.php:1752
|
6593 |
#: classes/gateways/class.pmprogateway_stripe.php:1801
|
6594 |
#: classes/gateways/class.pmprogateway_stripe.php:1809
|
6599 |
msgid "Could not cancel old subscription."
|
6600 |
msgstr ""
|
6601 |
|
6602 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1809
|
6603 |
#: classes/gateways/class.pmprogateway_stripe.php:1533
|
6604 |
#: classes/gateways/class.pmprogateway_stripe.php:1534
|
6605 |
#: classes/gateways/class.pmprogateway_stripe.php:1535
|
6617 |
#: classes/gateways/class.pmprogateway_stripe.php:1685
|
6618 |
#: classes/gateways/class.pmprogateway_stripe.php:1695
|
6619 |
#: classes/gateways/class.pmprogateway_stripe.php:1733
|
6620 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1760
|
6621 |
#: classes/gateways/class.pmprogateway_stripe.php:1769
|
6622 |
#: classes/gateways/class.pmprogateway_stripe.php:1818
|
6623 |
#: classes/gateways/class.pmprogateway_stripe.php:1826
|
6628 |
msgid "Could not find the customer."
|
6629 |
msgstr ""
|
6630 |
|
6631 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1973
|
6632 |
#: classes/gateways/class.pmprogateway_stripe.php:1836
|
6633 |
#: classes/gateways/class.pmprogateway_stripe.php:1837
|
6634 |
#: classes/gateways/class.pmprogateway_stripe.php:1847
|
6635 |
#: classes/gateways/class.pmprogateway_stripe.php:1885
|
6636 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1920
|
6637 |
#: classes/gateways/class.pmprogateway_stripe.php:1921
|
6638 |
#: classes/gateways/class.pmprogateway_stripe.php:1978
|
6639 |
#: classes/gateways/class.pmprogateway_stripe.php:1986
|
6644 |
msgid "Error: "
|
6645 |
msgstr ""
|
6646 |
|
6647 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1987
|
6648 |
#: classes/gateways/class.pmprogateway_stripe.php:1849
|
6649 |
#: classes/gateways/class.pmprogateway_stripe.php:1850
|
6650 |
#: classes/gateways/class.pmprogateway_stripe.php:1860
|
6651 |
#: classes/gateways/class.pmprogateway_stripe.php:1898
|
6652 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1933
|
6653 |
#: classes/gateways/class.pmprogateway_stripe.php:1934
|
6654 |
#: classes/gateways/class.pmprogateway_stripe.php:1991
|
6655 |
#: classes/gateways/class.pmprogateway_stripe.php:1999
|
6661 |
msgid "Error: Unkown error while refunding charge #%s"
|
6662 |
msgstr ""
|
6663 |
|
6664 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2438
|
6665 |
+
msgid ""
|
6666 |
+
"Customer authentication is required to complete this transaction. Please "
|
6667 |
+
"complete the verification steps issued by your payment provider."
|
6668 |
+
msgstr ""
|
6669 |
+
|
6670 |
+
#: classes/gateways/class.pmprogateway_stripe.php:2455
|
6671 |
+
msgid ""
|
6672 |
+
"Customer authentication is required to finish setting up your subscription. "
|
6673 |
+
"Please complete the verification steps issued by your payment provider."
|
6674 |
+
msgstr ""
|
6675 |
+
|
6676 |
#: classes/gateways/class.pmprogateway_twocheckout.php:59
|
6677 |
+
#: paid-memberships-pro.php:156
|
6678 |
#: classes/gateways/class.pmprogateway_twocheckout.php:53
|
6679 |
#: classes/gateways/class.pmprogateway_twocheckout.php:59
|
6680 |
#: classes/gateways/class.pmprogateway_twocheckout.php:60
|
6684 |
#: paid-memberships-pro.php:136 paid-memberships-pro.php:137
|
6685 |
#: paid-memberships-pro.php:138 paid-memberships-pro.php:139
|
6686 |
#: paid-memberships-pro.php:144 paid-memberships-pro.php:149
|
6687 |
+
#: paid-memberships-pro.php:154
|
6688 |
msgid "2Checkout"
|
6689 |
msgstr ""
|
6690 |
|
6884 |
msgid "Visit Customer Support Forum"
|
6885 |
msgstr ""
|
6886 |
|
6887 |
+
#: includes/cleanup.php:43
|
6888 |
+
msgid ""
|
6889 |
+
"<p><strong>Warning:</strong> One or more users for deletion have an active "
|
6890 |
+
"membership level. Deleting a user will also cancel their membership and "
|
6891 |
+
"recurring subscription.</p>"
|
6892 |
+
msgstr ""
|
6893 |
+
|
6894 |
+
#: includes/cleanup.php:45
|
6895 |
+
msgid ""
|
6896 |
+
"<p><strong>Warning:</strong> This user has an active membership level. "
|
6897 |
+
"Deleting a user will also cancel their membership and recurring subscription."
|
6898 |
+
"</p>"
|
6899 |
+
msgstr ""
|
6900 |
+
|
6901 |
#: includes/countries.php:7 includes/countries.php:7
|
6902 |
msgid "Andorra"
|
6903 |
msgstr ""
|
7887 |
msgid "US Armed Forces"
|
7888 |
msgstr ""
|
7889 |
|
7890 |
+
#: includes/currencies.php:7 includes/currencies.php:100
|
7891 |
+
#: includes/currencies.php:127 includes/currencies.php:7
|
7892 |
#: includes/currencies.php:17 includes/currencies.php:37
|
7893 |
#: includes/currencies.php:44 includes/currencies.php:64
|
7894 |
#: includes/currencies.php:68 includes/currencies.php:75
|
7899 |
msgid "US Dollars ($)"
|
7900 |
msgstr ""
|
7901 |
|
7902 |
+
#: includes/currencies.php:9 includes/currencies.php:103
|
7903 |
#: includes/currencies.php:8 includes/currencies.php:9
|
7904 |
#: includes/currencies.php:19 includes/currencies.php:40
|
7905 |
#: includes/currencies.php:47 includes/currencies.php:67
|
7910 |
msgid "Euros (€)"
|
7911 |
msgstr ""
|
7912 |
|
7913 |
+
#: includes/currencies.php:14 includes/currencies.php:102
|
7914 |
#: includes/currencies.php:9 includes/currencies.php:14
|
7915 |
#: includes/currencies.php:24 includes/currencies.php:39
|
7916 |
#: includes/currencies.php:46 includes/currencies.php:66
|
7938 |
msgid "Brazilian Real (R$)"
|
7939 |
msgstr ""
|
7940 |
|
7941 |
+
#: includes/currencies.php:25 includes/currencies.php:101
|
7942 |
#: includes/currencies.php:12 includes/currencies.php:24
|
7943 |
#: includes/currencies.php:25 includes/currencies.php:34
|
7944 |
#: includes/currencies.php:35 includes/currencies.php:38
|
8081 |
msgid "Russian Ruble (₽)"
|
8082 |
msgstr ""
|
8083 |
|
8084 |
+
#: includes/currencies.php:71 includes/currencies.php:25
|
8085 |
#: includes/currencies.php:28 includes/currencies.php:45
|
8086 |
#: includes/currencies.php:52 includes/currencies.php:62
|
8087 |
#: includes/currencies.php:64 includes/currencies.php:65
|
8090 |
msgid "Singapore Dollar ($)"
|
8091 |
msgstr ""
|
8092 |
|
8093 |
+
#: includes/currencies.php:76 includes/currencies.php:50
|
8094 |
#: includes/currencies.php:57 includes/currencies.php:67
|
8095 |
#: includes/currencies.php:69 includes/currencies.php:70
|
8096 |
#: includes/currencies.php:73 includes/currencies.php:75
|
8098 |
msgid "South African Rand (R)"
|
8099 |
msgstr ""
|
8100 |
|
8101 |
+
#: includes/currencies.php:81 includes/currencies.php:30
|
8102 |
#: includes/currencies.php:50 includes/currencies.php:54
|
8103 |
#: includes/currencies.php:61 includes/currencies.php:71
|
8104 |
#: includes/currencies.php:73 includes/currencies.php:75
|
8107 |
msgid "South Korean Won"
|
8108 |
msgstr ""
|
8109 |
|
8110 |
+
#: includes/currencies.php:84 includes/currencies.php:26
|
8111 |
#: includes/currencies.php:31 includes/currencies.php:51
|
8112 |
#: includes/currencies.php:55 includes/currencies.php:62
|
8113 |
#: includes/currencies.php:72 includes/currencies.php:74
|
8116 |
msgid "Swedish Krona"
|
8117 |
msgstr ""
|
8118 |
|
8119 |
+
#: includes/currencies.php:85 includes/currencies.php:27
|
8120 |
#: includes/currencies.php:32 includes/currencies.php:52
|
8121 |
#: includes/currencies.php:56 includes/currencies.php:63
|
8122 |
#: includes/currencies.php:73 includes/currencies.php:75
|
8125 |
msgid "Swiss Franc"
|
8126 |
msgstr ""
|
8127 |
|
8128 |
+
#: includes/currencies.php:86 includes/currencies.php:28
|
8129 |
#: includes/currencies.php:33 includes/currencies.php:53
|
8130 |
#: includes/currencies.php:57 includes/currencies.php:64
|
8131 |
#: includes/currencies.php:74 includes/currencies.php:76
|
8134 |
msgid "Taiwan New Dollars"
|
8135 |
msgstr ""
|
8136 |
|
8137 |
+
#: includes/currencies.php:87 includes/currencies.php:29
|
8138 |
#: includes/currencies.php:34 includes/currencies.php:54
|
8139 |
#: includes/currencies.php:58 includes/currencies.php:65
|
8140 |
#: includes/currencies.php:75 includes/currencies.php:77
|
8143 |
msgid "Thai Baht"
|
8144 |
msgstr ""
|
8145 |
|
8146 |
+
#: includes/currencies.php:88 includes/currencies.php:35
|
8147 |
#: includes/currencies.php:55 includes/currencies.php:59
|
8148 |
#: includes/currencies.php:66 includes/currencies.php:76
|
8149 |
#: includes/currencies.php:78 includes/currencies.php:82
|
8152 |
msgid "Turkish Lira"
|
8153 |
msgstr ""
|
8154 |
|
8155 |
+
#: includes/currencies.php:90 includes/currencies.php:36
|
8156 |
#: includes/currencies.php:56 includes/currencies.php:60
|
8157 |
#: includes/currencies.php:67 includes/currencies.php:77
|
8158 |
#: includes/currencies.php:79 includes/currencies.php:84
|
8191 |
msgid "Profile Start Date Issue Detected and Fixed at %s"
|
8192 |
msgstr ""
|
8193 |
|
8194 |
+
#: includes/functions.php:340 includes/functions.php:452
|
8195 |
#: includes/functions.php:160 includes/functions.php:196
|
8196 |
#: includes/functions.php:200 includes/functions.php:202
|
8197 |
#: includes/functions.php:203 includes/functions.php:204
|
8204 |
msgid "The price for membership is <strong>%s</strong> now"
|
8205 |
msgstr ""
|
8206 |
|
8207 |
+
#: includes/functions.php:342 includes/functions.php:454
|
8208 |
#: includes/functions.php:202 includes/functions.php:204
|
8209 |
#: includes/functions.php:205 includes/functions.php:206
|
8210 |
#: includes/functions.php:209 includes/functions.php:245
|
8216 |
msgid "<strong>%s</strong> now"
|
8217 |
msgstr ""
|
8218 |
|
8219 |
+
#: includes/functions.php:349 includes/functions.php:330
|
8220 |
#, php-format
|
8221 |
msgid " and then <strong>%1$s per %2$s for %3$d more %4$s</strong>."
|
8222 |
msgstr ""
|
8223 |
|
8224 |
+
#: includes/functions.php:351 includes/functions.php:332
|
8225 |
#, php-format
|
8226 |
msgid " and then <strong>%1$s every %2$d %3$s for %4$d more payments</strong>."
|
8227 |
msgstr ""
|
8228 |
|
8229 |
+
#: includes/functions.php:354 includes/functions.php:335
|
8230 |
#, php-format
|
8231 |
msgid " and then <strong>%1$s after %2$d %3$s</strong>."
|
8232 |
msgstr ""
|
8233 |
|
8234 |
+
#: includes/functions.php:359 includes/functions.php:340
|
8235 |
#, php-format
|
8236 |
msgid "The price for membership is <strong>%1$s per %2$s</strong>."
|
8237 |
msgstr ""
|
8238 |
|
8239 |
+
#: includes/functions.php:361 includes/functions.php:342
|
8240 |
#, php-format
|
8241 |
msgid "<strong>%1$s per %2$s</strong>."
|
8242 |
msgstr ""
|
8243 |
|
8244 |
+
#: includes/functions.php:365 includes/functions.php:346
|
8245 |
#, php-format
|
8246 |
msgid "The price for membership is <strong>%1$s every %2$d %3$s</strong>."
|
8247 |
msgstr ""
|
8248 |
|
8249 |
+
#: includes/functions.php:367 includes/functions.php:348
|
8250 |
#, php-format
|
8251 |
msgid "<strong>%1$s every %2$d %3$s</strong>."
|
8252 |
msgstr ""
|
8253 |
|
8254 |
+
#: includes/functions.php:372 includes/functions.php:353
|
8255 |
#, php-format
|
8256 |
msgid " and then <strong>%1$s per %2$s</strong>."
|
8257 |
msgstr ""
|
8258 |
|
8259 |
+
#: includes/functions.php:374 includes/functions.php:355
|
8260 |
#, php-format
|
8261 |
msgid " and then <strong>%1$s every %2$d %3$s</strong>."
|
8262 |
msgstr ""
|
8263 |
|
8264 |
+
#: includes/functions.php:389 includes/functions.php:202
|
8265 |
#: includes/functions.php:238 includes/functions.php:249
|
8266 |
#: includes/functions.php:260 includes/functions.php:261
|
8267 |
#: includes/functions.php:262 includes/functions.php:264
|
8272 |
msgid "After your initial payment, your first payment is Free."
|
8273 |
msgstr ""
|
8274 |
|
8275 |
+
#: includes/functions.php:391 includes/functions.php:206
|
8276 |
#: includes/functions.php:242 includes/functions.php:253
|
8277 |
#: includes/functions.php:264 includes/functions.php:265
|
8278 |
#: includes/functions.php:266 includes/functions.php:268
|
8284 |
msgid "After your initial payment, your first %d payments are Free."
|
8285 |
msgstr ""
|
8286 |
|
8287 |
+
#: includes/functions.php:395 includes/functions.php:213
|
8288 |
#: includes/functions.php:249 includes/functions.php:260
|
8289 |
#: includes/functions.php:271 includes/functions.php:272
|
8290 |
#: includes/functions.php:273 includes/functions.php:275
|
8296 |
msgid "After your initial payment, your first payment will cost %s."
|
8297 |
msgstr ""
|
8298 |
|
8299 |
+
#: includes/functions.php:397 includes/functions.php:378
|
8300 |
#, php-format
|
8301 |
msgid "After your initial payment, your first %1$d payments will cost %2$s."
|
8302 |
msgstr ""
|
8303 |
|
8304 |
+
#: includes/functions.php:407 includes/functions.php:508
|
8305 |
#: includes/functions.php:388 includes/functions.php:489
|
8306 |
#, php-format
|
8307 |
msgid "Customers in %1$s will be charged %2$s%% tax."
|
8308 |
msgstr ""
|
8309 |
|
8310 |
+
#: includes/functions.php:465 includes/functions.php:446
|
8311 |
#, php-format
|
8312 |
msgid "<strong>%1$s per %2$s for %3$d more %4$s</strong>"
|
8313 |
msgstr ""
|
8314 |
|
8315 |
+
#: includes/functions.php:467 includes/functions.php:448
|
8316 |
#, php-format
|
8317 |
msgid "<strong>%1$s every %2$d %3$s for %4$d more payments</strong>"
|
8318 |
msgstr ""
|
8319 |
|
8320 |
+
#: includes/functions.php:470 includes/functions.php:451
|
8321 |
#, php-format
|
8322 |
msgid "<strong>%1$s after %2$d %3$s</strong>"
|
8323 |
msgstr ""
|
8324 |
|
8325 |
+
#: includes/functions.php:473 includes/functions.php:454
|
8326 |
#, php-format
|
8327 |
msgid "<strong>%1$s every %2$s</strong>"
|
8328 |
msgstr ""
|
8329 |
|
8330 |
+
#: includes/functions.php:475 includes/functions.php:456
|
8331 |
#, php-format
|
8332 |
msgid "<strong>%1$s every %2$d %3$s</strong>"
|
8333 |
msgstr ""
|
8334 |
|
8335 |
+
#: includes/functions.php:497 includes/functions.php:478
|
8336 |
#: includes/functions.php:511 includes/functions.php:520
|
8337 |
msgid "Trial pricing has been applied to the first payment."
|
8338 |
msgstr ""
|
8339 |
|
8340 |
+
#: includes/functions.php:499 includes/functions.php:480
|
8341 |
#: includes/functions.php:513 includes/functions.php:522
|
8342 |
#, php-format
|
8343 |
msgid "Trial pricing has been applied to the first %d payments."
|
8344 |
msgstr ""
|
8345 |
|
8346 |
+
#: includes/functions.php:524 includes/functions.php:505
|
8347 |
#, php-format
|
8348 |
msgid "Membership expires after %1$d %2$s."
|
8349 |
msgstr ""
|
8350 |
|
8351 |
+
#: includes/functions.php:543 includes/functions.php:524
|
8352 |
#, php-format
|
8353 |
msgid "%1$s membership expires after %2$d %3$s"
|
8354 |
msgstr ""
|
8355 |
|
8356 |
+
#: includes/functions.php:901 includes/functions.php:491
|
8357 |
#: includes/functions.php:514 includes/functions.php:525
|
8358 |
#: includes/functions.php:536 includes/functions.php:537
|
8359 |
#: includes/functions.php:538 includes/functions.php:545
|
8362 |
#: includes/functions.php:615 includes/functions.php:694
|
8363 |
#: includes/functions.php:760 includes/functions.php:766
|
8364 |
#: includes/functions.php:874 includes/functions.php:877
|
8365 |
+
#: includes/functions.php:882 includes/functions.php:945
|
8366 |
+
#: includes/functions.php:947 includes/functions.php:956
|
8367 |
msgid "User ID not found."
|
8368 |
msgstr ""
|
8369 |
|
8370 |
+
#: includes/functions.php:913 includes/functions.php:886
|
8371 |
+
#: includes/functions.php:889 includes/functions.php:894
|
8372 |
msgid "No membership_id specified in pmpro_changeMembershipLevel."
|
8373 |
msgstr ""
|
8374 |
|
8375 |
+
#: includes/functions.php:919 includes/functions.php:927
|
8376 |
#: includes/functions.php:508 includes/functions.php:531
|
8377 |
#: includes/functions.php:542 includes/functions.php:553
|
8378 |
#: includes/functions.php:554 includes/functions.php:555
|
8383 |
#: includes/functions.php:780 includes/functions.php:786
|
8384 |
#: includes/functions.php:892 includes/functions.php:895
|
8385 |
#: includes/functions.php:900 includes/functions.php:903
|
8386 |
+
#: includes/functions.php:908 includes/functions.php:965
|
8387 |
+
#: includes/functions.php:967 includes/functions.php:976
|
8388 |
msgid "Invalid level."
|
8389 |
msgstr ""
|
8390 |
|
8391 |
+
#: includes/functions.php:938 includes/functions.php:520
|
8392 |
#: includes/functions.php:542 includes/functions.php:553
|
8393 |
#: includes/functions.php:564 includes/functions.php:565
|
8394 |
#: includes/functions.php:566 includes/functions.php:573
|
8397 |
#: includes/functions.php:623 includes/functions.php:646
|
8398 |
#: includes/functions.php:725 includes/functions.php:791
|
8399 |
#: includes/functions.php:797 includes/functions.php:911
|
8400 |
+
#: includes/functions.php:914 includes/functions.php:919
|
8401 |
+
#: includes/functions.php:976 includes/functions.php:978
|
8402 |
+
#: includes/functions.php:987
|
8403 |
msgid "not changing?"
|
8404 |
msgstr ""
|
8405 |
|
8406 |
+
#: includes/functions.php:994 includes/functions.php:537
|
8407 |
#: includes/functions.php:559 includes/functions.php:570
|
8408 |
#: includes/functions.php:581 includes/functions.php:582
|
8409 |
#: includes/functions.php:583 includes/functions.php:590
|
8427 |
#: includes/functions.php:881 includes/functions.php:887
|
8428 |
#: includes/functions.php:905 includes/functions.php:911
|
8429 |
#: includes/functions.php:967 includes/functions.php:970
|
8430 |
+
#: includes/functions.php:975 includes/functions.php:1017
|
8431 |
+
#: includes/functions.php:1037 includes/functions.php:1046
|
8432 |
msgid "Error interacting with database"
|
8433 |
msgstr ""
|
8434 |
|
8435 |
+
#: includes/functions.php:1096 includes/functions.php:907
|
8436 |
#: includes/functions.php:1064 includes/functions.php:1067
|
8437 |
+
#: includes/functions.php:1077 includes/functions.php:1123
|
8438 |
+
#: includes/functions.php:1127 includes/functions.php:1129
|
8439 |
+
#: includes/functions.php:1138
|
8440 |
#, php-format
|
8441 |
msgid "Error interacting with database: %s"
|
8442 |
msgstr ""
|
8443 |
|
8444 |
+
#: includes/functions.php:1174 includes/functions.php:1212
|
8445 |
#: includes/functions.php:629 includes/functions.php:651
|
8446 |
#: includes/functions.php:667 includes/functions.php:668
|
8447 |
#: includes/functions.php:678 includes/functions.php:681
|
8460 |
#: includes/functions.php:948 includes/functions.php:953
|
8461 |
#: includes/functions.php:986 includes/functions.php:987
|
8462 |
#: includes/functions.php:992 includes/functions.php:1138
|
8463 |
+
#: includes/functions.php:1141 includes/functions.php:1155
|
8464 |
+
#: includes/functions.php:1176 includes/functions.php:1179
|
8465 |
+
#: includes/functions.php:1193 includes/functions.php:1198
|
8466 |
#: includes/functions.php:1202 includes/functions.php:1204
|
8467 |
#: includes/functions.php:1213 includes/functions.php:1237
|
8468 |
#: includes/functions.php:1241 includes/functions.php:1243
|
8470 |
msgid "Membership level not found."
|
8471 |
msgstr ""
|
8472 |
|
8473 |
+
#: includes/functions.php:1586 includes/functions.php:1100
|
8474 |
#: includes/functions.php:1101 includes/functions.php:1118
|
8475 |
#: includes/functions.php:1142 includes/functions.php:1143
|
8476 |
#: includes/functions.php:1150 includes/functions.php:1157
|
8478 |
#: includes/functions.php:1290 includes/functions.php:1356
|
8479 |
#: includes/functions.php:1357 includes/functions.php:1362
|
8480 |
#: includes/functions.php:1530 includes/functions.php:1533
|
8481 |
+
#: includes/functions.php:1547 includes/functions.php:1605
|
8482 |
+
#: includes/functions.php:1609 includes/functions.php:1611
|
8483 |
+
#: includes/functions.php:1620
|
8484 |
msgid "No code was given to check."
|
8485 |
msgstr ""
|
8486 |
|
8487 |
+
#: includes/functions.php:1595 includes/functions.php:1050
|
8488 |
#: includes/functions.php:1072 includes/functions.php:1088
|
8489 |
#: includes/functions.php:1099 includes/functions.php:1102
|
8490 |
#: includes/functions.php:1109 includes/functions.php:1110
|
8495 |
#: includes/functions.php:1205 includes/functions.php:1299
|
8496 |
#: includes/functions.php:1365 includes/functions.php:1366
|
8497 |
#: includes/functions.php:1371 includes/functions.php:1539
|
8498 |
+
#: includes/functions.php:1542 includes/functions.php:1556
|
8499 |
+
#: includes/functions.php:1614 includes/functions.php:1618
|
8500 |
+
#: includes/functions.php:1620 includes/functions.php:1629
|
8501 |
msgid "The discount code could not be found."
|
8502 |
msgstr ""
|
8503 |
|
8504 |
+
#: includes/functions.php:1610 includes/functions.php:1066
|
8505 |
#: includes/functions.php:1088 includes/functions.php:1104
|
8506 |
#: includes/functions.php:1115 includes/functions.php:1118
|
8507 |
#: includes/functions.php:1124 includes/functions.php:1125
|
8512 |
#: includes/functions.php:1220 includes/functions.php:1314
|
8513 |
#: includes/functions.php:1380 includes/functions.php:1381
|
8514 |
#: includes/functions.php:1386 includes/functions.php:1554
|
8515 |
+
#: includes/functions.php:1557 includes/functions.php:1571
|
8516 |
+
#: includes/functions.php:1629 includes/functions.php:1633
|
8517 |
+
#: includes/functions.php:1635 includes/functions.php:1644
|
8518 |
#, php-format
|
8519 |
msgid "This discount code goes into effect on %s."
|
8520 |
msgstr ""
|
8521 |
|
8522 |
+
#: includes/functions.php:1617 includes/functions.php:1075
|
8523 |
#: includes/functions.php:1097 includes/functions.php:1113
|
8524 |
#: includes/functions.php:1124 includes/functions.php:1127
|
8525 |
#: includes/functions.php:1131 includes/functions.php:1132
|
8530 |
#: includes/functions.php:1227 includes/functions.php:1321
|
8531 |
#: includes/functions.php:1387 includes/functions.php:1388
|
8532 |
#: includes/functions.php:1393 includes/functions.php:1561
|
8533 |
+
#: includes/functions.php:1564 includes/functions.php:1578
|
8534 |
+
#: includes/functions.php:1636 includes/functions.php:1640
|
8535 |
+
#: includes/functions.php:1642 includes/functions.php:1651
|
8536 |
#, php-format
|
8537 |
msgid "This discount code expired on %s."
|
8538 |
msgstr ""
|
8539 |
|
8540 |
+
#: includes/functions.php:1626 includes/functions.php:1087
|
8541 |
#: includes/functions.php:1109 includes/functions.php:1125
|
8542 |
#: includes/functions.php:1136 includes/functions.php:1139
|
8543 |
#: includes/functions.php:1141 includes/functions.php:1142
|
8548 |
#: includes/functions.php:1237 includes/functions.php:1331
|
8549 |
#: includes/functions.php:1397 includes/functions.php:1398
|
8550 |
#: includes/functions.php:1403 includes/functions.php:1570
|
8551 |
+
#: includes/functions.php:1573 includes/functions.php:1587
|
8552 |
+
#: includes/functions.php:1646 includes/functions.php:1650
|
8553 |
+
#: includes/functions.php:1652 includes/functions.php:1661
|
8554 |
msgid "This discount code is no longer valid."
|
8555 |
msgstr ""
|
8556 |
|
8557 |
+
#: includes/functions.php:1645 includes/functions.php:1102
|
8558 |
#: includes/functions.php:1124 includes/functions.php:1140
|
8559 |
#: includes/functions.php:1151 includes/functions.php:1154
|
8560 |
#: includes/functions.php:1155 includes/functions.php:1164
|
8565 |
#: includes/functions.php:1344 includes/functions.php:1410
|
8566 |
#: includes/functions.php:1411 includes/functions.php:1416
|
8567 |
#: includes/functions.php:1589 includes/functions.php:1592
|
8568 |
+
#: includes/functions.php:1606 includes/functions.php:1666
|
8569 |
+
#: includes/functions.php:1670 includes/functions.php:1672
|
8570 |
+
#: includes/functions.php:1681
|
8571 |
msgid "This discount code does not apply to this membership level."
|
8572 |
msgstr ""
|
8573 |
|
8574 |
+
#: includes/functions.php:1683 includes/functions.php:1110
|
8575 |
#: includes/functions.php:1132 includes/functions.php:1148
|
8576 |
#: includes/functions.php:1159 includes/functions.php:1162
|
8577 |
#: includes/functions.php:1172 includes/functions.php:1180
|
8582 |
#: includes/functions.php:1276 includes/functions.php:1370
|
8583 |
#: includes/functions.php:1436 includes/functions.php:1442
|
8584 |
#: includes/functions.php:1448 includes/functions.php:1627
|
8585 |
+
#: includes/functions.php:1630 includes/functions.php:1644
|
8586 |
+
#: includes/functions.php:1703 includes/functions.php:1707
|
8587 |
+
#: includes/functions.php:1709 includes/functions.php:1718
|
8588 |
msgid "This discount code is okay."
|
8589 |
msgstr ""
|
8590 |
|
8591 |
+
#: includes/functions.php:1711 includes/functions.php:1134
|
8592 |
#: includes/functions.php:1156 includes/functions.php:1172
|
8593 |
#: includes/functions.php:1183 includes/functions.php:1186
|
8594 |
#: includes/functions.php:1196 includes/functions.php:1205
|
8599 |
#: includes/functions.php:1395 includes/functions.php:1397
|
8600 |
#: includes/functions.php:1463 includes/functions.php:1469
|
8601 |
#: includes/functions.php:1475 includes/functions.php:1655
|
8602 |
+
#: includes/functions.php:1658 includes/functions.php:1672
|
8603 |
+
#: includes/functions.php:1730 includes/functions.php:1734
|
8604 |
+
#: includes/functions.php:1736 includes/functions.php:1745
|
8605 |
msgid "and"
|
8606 |
msgstr ""
|
8607 |
|
8608 |
+
#: includes/functions.php:2100 includes/functions.php:1319
|
8609 |
#: includes/functions.php:1341 includes/functions.php:1361
|
8610 |
#: includes/functions.php:1372 includes/functions.php:1375
|
8611 |
#: includes/functions.php:1385 includes/functions.php:1394
|
8620 |
#: includes/functions.php:2015 includes/functions.php:2019
|
8621 |
#: includes/functions.php:2022 includes/functions.php:2024
|
8622 |
#: includes/functions.php:2030 includes/functions.php:2033
|
8623 |
+
#: includes/functions.php:2034 includes/functions.php:2061
|
8624 |
msgid "Sign Up for !!name!! Now"
|
8625 |
msgstr ""
|
8626 |
|
8627 |
+
#: includes/functions.php:2124 includes/functions.php:2021
|
8628 |
+
#: includes/functions.php:2054 includes/functions.php:2085
|
8629 |
msgid "Sign Up Now"
|
8630 |
msgstr ""
|
8631 |
|
8775 |
"\">Settings</a>."
|
8776 |
msgstr ""
|
8777 |
|
8778 |
+
#: includes/pointers.php:44 includes/pointers.php:44 includes/pointers.php:45
|
8779 |
msgid "Close"
|
8780 |
msgstr ""
|
8781 |
|
9036 |
"the issues</a>."
|
9037 |
msgstr ""
|
9038 |
|
9039 |
+
#: pages/billing.php:31 pages/billing.php:389 pages/billing.php:14
|
9040 |
+
#: pages/billing.php:23 pages/billing.php:25 pages/billing.php:26
|
9041 |
+
#: pages/billing.php:27 pages/billing.php:28
|
9042 |
#, php-format
|
9043 |
msgid "Logged in as <strong>%s</strong>."
|
9044 |
msgstr ""
|
9045 |
|
9046 |
+
#: pages/billing.php:31 pages/billing.php:389 pages/billing.php:14
|
9047 |
+
#: pages/billing.php:23 pages/billing.php:25 pages/billing.php:26
|
9048 |
+
#: pages/billing.php:27 pages/billing.php:28
|
9049 |
msgid "logout"
|
9050 |
msgstr ""
|
9051 |
|
9052 |
+
#: pages/billing.php:51 pages/account.php:14 pages/billing.php:18
|
9053 |
#: pages/billing.php:27 pages/billing.php:29 pages/billing.php:30
|
9054 |
#: pages/billing.php:32 pages/billing.php:43 pages/billing.php:46
|
9055 |
#: pages/billing.php:47
|
9056 |
msgid "Membership Fee"
|
9057 |
msgstr ""
|
9058 |
|
9059 |
+
#: pages/billing.php:55 pages/account.php:18 pages/billing.php:22
|
9060 |
#: pages/billing.php:31 pages/billing.php:33 pages/billing.php:34
|
9061 |
#: pages/billing.php:36 pages/billing.php:47 pages/billing.php:50
|
9062 |
#: pages/billing.php:51 pages/levels.php:70
|
9064 |
msgid "%s every %d %s."
|
9065 |
msgstr ""
|
9066 |
|
9067 |
+
#: pages/billing.php:57 pages/account.php:20 pages/billing.php:24
|
9068 |
#: pages/billing.php:33 pages/billing.php:35 pages/billing.php:36
|
9069 |
#: pages/billing.php:38 pages/billing.php:49 pages/billing.php:52
|
9070 |
#: pages/billing.php:53 pages/levels.php:66
|
9072 |
msgid "%s per %s."
|
9073 |
msgstr ""
|
9074 |
|
9075 |
+
#: pages/billing.php:67 pages/account.php:25 pages/account.php:29
|
9076 |
#: pages/billing.php:29 pages/billing.php:33 pages/billing.php:42
|
9077 |
#: pages/billing.php:44 pages/billing.php:45 pages/billing.php:47
|
9078 |
#: pages/billing.php:59 pages/billing.php:62 pages/billing.php:63
|
9079 |
msgid "Duration"
|
9080 |
msgstr ""
|
9081 |
|
9082 |
+
#: pages/billing.php:85 pages/billing.php:39 pages/billing.php:43
|
9083 |
#: pages/billing.php:52 pages/billing.php:54 pages/billing.php:55
|
9084 |
#: pages/billing.php:57 pages/billing.php:77 pages/billing.php:80
|
9085 |
#: pages/billing.php:81
|
9088 |
"paypal.com\">login to PayPal here</a> to update your billing information."
|
9089 |
msgstr ""
|
9090 |
|
9091 |
+
#: pages/billing.php:112 pages/checkout.php:230 pages/billing.php:65
|
9092 |
#: pages/billing.php:69 pages/billing.php:78 pages/billing.php:81
|
9093 |
#: pages/billing.php:83 pages/billing.php:84 pages/billing.php:87
|
9094 |
#: pages/billing.php:104 pages/billing.php:107 pages/billing.php:108
|
9100 |
msgid "First Name"
|
9101 |
msgstr ""
|
9102 |
|
9103 |
+
#: pages/billing.php:116 pages/checkout.php:234 pages/billing.php:69
|
9104 |
#: pages/billing.php:73 pages/billing.php:82 pages/billing.php:85
|
9105 |
#: pages/billing.php:87 pages/billing.php:88 pages/billing.php:91
|
9106 |
#: pages/billing.php:108 pages/billing.php:111 pages/billing.php:112
|
9112 |
msgid "Last Name"
|
9113 |
msgstr ""
|
9114 |
|
9115 |
+
#: pages/billing.php:120 pages/checkout.php:238 pages/billing.php:73
|
9116 |
#: pages/billing.php:77 pages/billing.php:86 pages/billing.php:89
|
9117 |
#: pages/billing.php:91 pages/billing.php:92 pages/billing.php:95
|
9118 |
#: pages/billing.php:112 pages/billing.php:115 pages/billing.php:116
|
9124 |
msgid "Address 1"
|
9125 |
msgstr ""
|
9126 |
|
9127 |
+
#: pages/billing.php:124 pages/checkout.php:242 pages/billing.php:77
|
9128 |
#: pages/billing.php:81 pages/billing.php:90 pages/billing.php:93
|
9129 |
#: pages/billing.php:95 pages/billing.php:96 pages/billing.php:99
|
9130 |
#: pages/billing.php:116 pages/billing.php:119 pages/billing.php:120
|
9136 |
msgid "Address 2"
|
9137 |
msgstr ""
|
9138 |
|
9139 |
+
#: pages/billing.php:134 pages/checkout.php:249 pages/billing.php:87
|
9140 |
#: pages/billing.php:91 pages/billing.php:100 pages/billing.php:103
|
9141 |
#: pages/billing.php:105 pages/billing.php:106 pages/billing.php:109
|
9142 |
#: pages/billing.php:126 pages/billing.php:129 pages/billing.php:130
|
9148 |
msgid "City"
|
9149 |
msgstr ""
|
9150 |
|
9151 |
+
#: pages/billing.php:138 pages/checkout.php:253 pages/billing.php:91
|
9152 |
#: pages/billing.php:95 pages/billing.php:104 pages/billing.php:107
|
9153 |
#: pages/billing.php:109 pages/billing.php:110 pages/billing.php:113
|
9154 |
#: pages/billing.php:130 pages/billing.php:133 pages/billing.php:134
|
9160 |
msgid "State"
|
9161 |
msgstr ""
|
9162 |
|
9163 |
+
#: pages/billing.php:142 pages/checkout.php:257 pages/billing.php:95
|
9164 |
#: pages/billing.php:99 pages/billing.php:108 pages/billing.php:111
|
9165 |
#: pages/billing.php:113 pages/billing.php:114 pages/billing.php:117
|
9166 |
#: pages/billing.php:134 pages/billing.php:137 pages/billing.php:138
|
9172 |
msgid "Postal Code"
|
9173 |
msgstr ""
|
9174 |
|
9175 |
+
#: pages/billing.php:151 pages/checkout.php:262 pages/billing.php:104
|
9176 |
#: pages/billing.php:108 pages/billing.php:117 pages/billing.php:120
|
9177 |
#: pages/billing.php:122 pages/billing.php:123 pages/billing.php:126
|
9178 |
#: pages/billing.php:143 pages/billing.php:146 pages/billing.php:147
|
9184 |
msgid "City, State Zip"
|
9185 |
msgstr ""
|
9186 |
|
9187 |
+
#: pages/billing.php:204 pages/checkout.php:299 pages/billing.php:157
|
9188 |
#: pages/billing.php:161 pages/billing.php:170 pages/billing.php:173
|
9189 |
#: pages/billing.php:175 pages/billing.php:176 pages/billing.php:179
|
9190 |
#: pages/billing.php:196 pages/billing.php:199 pages/billing.php:200
|
9196 |
msgid "Country"
|
9197 |
msgstr ""
|
9198 |
|
9199 |
+
#: pages/billing.php:229 pages/checkout.php:315 pages/billing.php:182
|
9200 |
#: pages/billing.php:186 pages/billing.php:195 pages/billing.php:198
|
9201 |
#: pages/billing.php:200 pages/billing.php:201 pages/billing.php:204
|
9202 |
#: pages/billing.php:221 pages/billing.php:224 pages/billing.php:225
|
9208 |
msgid "Phone"
|
9209 |
msgstr ""
|
9210 |
|
9211 |
+
#: pages/billing.php:240 pages/checkout.php:148 pages/checkout.php:330
|
9212 |
#: pages/billing.php:193 pages/billing.php:197 pages/billing.php:206
|
9213 |
#: pages/billing.php:209 pages/billing.php:211 pages/billing.php:212
|
9214 |
#: pages/billing.php:215 pages/billing.php:232 pages/billing.php:235
|
9223 |
msgid "E-mail Address"
|
9224 |
msgstr ""
|
9225 |
|
9226 |
+
#: pages/billing.php:244 pages/checkout.php:337 pages/billing.php:197
|
9227 |
#: pages/billing.php:201 pages/billing.php:210 pages/billing.php:213
|
9228 |
#: pages/billing.php:215 pages/billing.php:216 pages/billing.php:219
|
9229 |
#: pages/billing.php:236 pages/billing.php:239 pages/billing.php:240
|
9235 |
msgid "Confirm E-mail"
|
9236 |
msgstr ""
|
9237 |
|
9238 |
+
#: pages/billing.php:267 pages/billing.php:217 pages/billing.php:221
|
9239 |
#: pages/billing.php:230 pages/billing.php:231 pages/billing.php:234
|
9240 |
#: pages/billing.php:238 pages/billing.php:244 pages/billing.php:247
|
9241 |
#: pages/billing.php:259 pages/billing.php:262 pages/billing.php:263
|
9243 |
msgid "Credit Card Information"
|
9244 |
msgstr ""
|
9245 |
|
9246 |
+
#: pages/billing.php:268 pages/billing.php:217 pages/billing.php:221
|
9247 |
#: pages/billing.php:230 pages/billing.php:232 pages/billing.php:235
|
9248 |
#: pages/billing.php:239 pages/billing.php:245 pages/billing.php:248
|
9249 |
#: pages/billing.php:260 pages/billing.php:263 pages/billing.php:264
|
9252 |
msgid "We accept %s"
|
9253 |
msgstr ""
|
9254 |
|
9255 |
+
#: pages/billing.php:406
|
9256 |
+
#, php-format
|
9257 |
+
msgid ""
|
9258 |
+
"You do not have an active membership. <a href='%s'>Choose a membership level."
|
9259 |
+
"</a>"
|
9260 |
+
msgstr ""
|
9261 |
+
|
9262 |
+
#: pages/billing.php:409
|
9263 |
+
#, php-format
|
9264 |
+
msgid "You do not have an active membership. <a href='%s'>Register here.</a>"
|
9265 |
+
msgstr ""
|
9266 |
+
|
9267 |
+
#: pages/billing.php:412
|
9268 |
+
#, php-format
|
9269 |
+
msgid "Your membership is not active. <a href='%s'>Renew now.</a>"
|
9270 |
+
msgstr ""
|
9271 |
+
|
9272 |
+
#: pages/billing.php:415 pages/billing.php:309 pages/billing.php:313
|
9273 |
#: pages/billing.php:344 pages/billing.php:353 pages/billing.php:356
|
9274 |
#: pages/billing.php:360 pages/billing.php:364 pages/billing.php:378
|
9275 |
#: pages/billing.php:380 pages/billing.php:381 pages/billing.php:385
|
9315 |
msgid "Click here to go to the home page."
|
9316 |
msgstr ""
|
9317 |
|
9318 |
+
#: pages/checkout.php:38 pages/checkout.php:26 pages/checkout.php:27
|
9319 |
#: pages/checkout.php:28 pages/checkout.php:30 pages/checkout.php:35
|
9320 |
#: pages/checkout.php:38
|
9321 |
msgid ""
|
9323 |
"<strong>click the \"Complete Payment\" button</strong> to finish your order."
|
9324 |
msgstr ""
|
9325 |
|
9326 |
+
#: pages/checkout.php:48 pages/checkout.php:33 pages/checkout.php:34
|
9327 |
#: pages/checkout.php:35 pages/checkout.php:40 pages/checkout.php:42
|
9328 |
#: pages/checkout.php:43 pages/checkout.php:46
|
9329 |
msgid "change"
|
9330 |
msgstr ""
|
9331 |
|
9332 |
+
#: pages/checkout.php:52 pages/checkout.php:39 pages/checkout.php:41
|
9333 |
#: pages/checkout.php:42 pages/checkout.php:43 pages/checkout.php:44
|
9334 |
#: pages/checkout.php:50 pages/checkout.php:51 pages/checkout.php:54
|
9335 |
#, php-format
|
9336 |
msgid "You have selected the <strong>%s</strong> membership level."
|
9337 |
msgstr ""
|
9338 |
|
9339 |
+
#: pages/checkout.php:69 pages/checkout.php:51 pages/checkout.php:53
|
9340 |
#: pages/checkout.php:56 pages/checkout.php:60 pages/checkout.php:61
|
9341 |
#: pages/checkout.php:68 pages/checkout.php:71
|
9342 |
#, php-format
|
9345 |
"been applied to your order.</p>"
|
9346 |
msgstr ""
|
9347 |
|
9348 |
+
#: pages/checkout.php:79 pages/checkout.php:66 pages/checkout.php:71
|
9349 |
msgid "Click here to change your discount code."
|
9350 |
msgstr ""
|
9351 |
|
9352 |
+
#: pages/checkout.php:81 pages/checkout.php:64 pages/checkout.php:65
|
9353 |
#: pages/checkout.php:66 pages/checkout.php:68 pages/checkout.php:73
|
9354 |
#: pages/checkout.php:74 pages/checkout.php:81 pages/checkout.php:84
|
9355 |
msgid "Click here to enter your discount code"
|
9356 |
msgstr ""
|
9357 |
|
9358 |
+
#: pages/checkout.php:81 pages/checkout.php:64 pages/checkout.php:65
|
9359 |
#: pages/checkout.php:66 pages/checkout.php:68 pages/checkout.php:73
|
9360 |
#: pages/checkout.php:74 pages/checkout.php:81 pages/checkout.php:84
|
9361 |
msgid "Do you have a discount code?"
|
9362 |
msgstr ""
|
9363 |
|
9364 |
+
#: pages/checkout.php:113 pages/checkout.php:160 pages/checkout.php:162
|
9365 |
#: pages/checkout.php:163 pages/checkout.php:165 pages/checkout.php:170
|
9366 |
#: pages/checkout.php:172 pages/checkout.php:173 pages/checkout.php:175
|
9367 |
#: pages/checkout.php:182 pages/checkout.php:185
|
9368 |
msgid "Account Information"
|
9369 |
msgstr ""
|
9370 |
|
9371 |
+
#: pages/checkout.php:114 pages/checkout.php:160 pages/checkout.php:163
|
9372 |
#: pages/checkout.php:165 pages/checkout.php:171 pages/checkout.php:172
|
9373 |
#: pages/checkout.php:174 pages/checkout.php:176 pages/checkout.php:183
|
9374 |
#: pages/checkout.php:186
|
9375 |
msgid "Already have an account?"
|
9376 |
msgstr ""
|
9377 |
|
9378 |
+
#: pages/checkout.php:114 pages/checkout.php:160 pages/checkout.php:163
|
9379 |
#: pages/checkout.php:165 pages/checkout.php:171 pages/checkout.php:172
|
9380 |
#: pages/checkout.php:174 pages/checkout.php:176 pages/checkout.php:183
|
9381 |
#: pages/checkout.php:186
|
9382 |
msgid "Log in here"
|
9383 |
msgstr ""
|
9384 |
|
9385 |
+
#: pages/checkout.php:135 pages/checkout.php:184 pages/checkout.php:186
|
9386 |
#: pages/checkout.php:189 pages/checkout.php:191 pages/checkout.php:192
|
9387 |
#: pages/checkout.php:198 pages/checkout.php:200 pages/checkout.php:202
|
9388 |
#: pages/checkout.php:209 pages/checkout.php:212
|
9389 |
msgid "Confirm Password"
|
9390 |
msgstr ""
|
9391 |
|
9392 |
+
#: pages/checkout.php:156 pages/checkout.php:205 pages/checkout.php:213
|
9393 |
#: pages/checkout.php:216 pages/checkout.php:218 pages/checkout.php:225
|
9394 |
#: pages/checkout.php:227 pages/checkout.php:229 pages/checkout.php:236
|
9395 |
#: pages/checkout.php:239
|
9396 |
msgid "Confirm E-mail Address"
|
9397 |
msgstr ""
|
9398 |
|
9399 |
+
#: pages/checkout.php:169 pages/checkout.php:218 pages/checkout.php:226
|
9400 |
#: pages/checkout.php:232 pages/checkout.php:235 pages/checkout.php:237
|
9401 |
#: pages/checkout.php:244 pages/checkout.php:246 pages/checkout.php:248
|
9402 |
#: pages/checkout.php:255 pages/checkout.php:258
|
9403 |
msgid "Full Name"
|
9404 |
msgstr ""
|
9405 |
|
9406 |
+
#: pages/checkout.php:170 pages/checkout.php:219 pages/checkout.php:227
|
9407 |
#: pages/checkout.php:233 pages/checkout.php:236 pages/checkout.php:238
|
9408 |
#: pages/checkout.php:245 pages/checkout.php:247 pages/checkout.php:249
|
9409 |
#: pages/checkout.php:256 pages/checkout.php:259
|
9410 |
msgid "LEAVE THIS BLANK"
|
9411 |
msgstr ""
|
9412 |
|
9413 |
+
#: pages/checkout.php:189 pages/checkout.php:238 pages/checkout.php:246
|
9414 |
#: pages/checkout.php:257 pages/checkout.php:260 pages/checkout.php:262
|
9415 |
#: pages/checkout.php:269 pages/checkout.php:271 pages/checkout.php:273
|
9416 |
#: pages/checkout.php:280 pages/checkout.php:283
|
9420 |
"different account for this membership, <a href=\"%s\">log out now</a>."
|
9421 |
msgstr ""
|
9422 |
|
9423 |
+
#: pages/checkout.php:205 pages/checkout.php:254 pages/checkout.php:262
|
9424 |
#: pages/checkout.php:276 pages/checkout.php:278 pages/checkout.php:285
|
9425 |
#: pages/checkout.php:287 pages/checkout.php:289 pages/checkout.php:292
|
9426 |
#: pages/checkout.php:296 pages/checkout.php:299
|
9427 |
msgid "Choose your Payment Method"
|
9428 |
msgstr ""
|
9429 |
|
9430 |
+
#: pages/checkout.php:210 pages/checkout.php:259 pages/checkout.php:267
|
9431 |
#: pages/checkout.php:284 pages/checkout.php:286 pages/checkout.php:293
|
9432 |
#: pages/checkout.php:296 pages/checkout.php:298 pages/checkout.php:300
|
9433 |
#: pages/checkout.php:305 pages/checkout.php:307 pages/checkout.php:308
|
9434 |
msgid "Check Out with a Credit Card Here"
|
9435 |
msgstr ""
|
9436 |
|
9437 |
+
#: pages/checkout.php:420 classes/gateways/class.pmprogateway_stripe.php:623
|
9438 |
+
#: classes/gateways/class.pmprogateway_stripe.php:638
|
9439 |
+
#: classes/gateways/class.pmprogateway_stripe.php:646
|
9440 |
+
#: classes/gateways/class.pmprogateway_stripe.php:653
|
9441 |
+
#: classes/gateways/class.pmprogateway_stripe.php:654
|
9442 |
+
#: classes/gateways/class.pmprogateway_stripe.php:655 pages/checkout.php:492
|
9443 |
+
#: pages/checkout.php:500
|
9444 |
+
msgid "Security Code (CVC)"
|
9445 |
+
msgstr ""
|
9446 |
+
|
9447 |
+
#: pages/checkout.php:459 pages/checkout.php:277 pages/checkout.php:284
|
9448 |
#: pages/checkout.php:567 pages/checkout.php:575 pages/checkout.php:657
|
9449 |
#: pages/checkout.php:672 pages/checkout.php:673 pages/checkout.php:681
|
9450 |
#: pages/checkout.php:686 pages/checkout.php:690 pages/checkout.php:692
|
9453 |
msgid "I agree to the %s"
|
9454 |
msgstr ""
|
9455 |
|
9456 |
+
#: pages/checkout.php:484 pages/checkout.php:586 pages/checkout.php:594
|
9457 |
#: pages/checkout.php:667 pages/checkout.php:674 pages/checkout.php:677
|
9458 |
#: pages/checkout.php:692 pages/checkout.php:693 pages/checkout.php:701
|
9459 |
#: pages/checkout.php:706 pages/checkout.php:710 pages/checkout.php:712
|
9461 |
msgid "Complete Payment"
|
9462 |
msgstr ""
|
9463 |
|
9464 |
+
#: pages/checkout.php:506 pages/checkout.php:608 pages/checkout.php:616
|
9465 |
#: pages/checkout.php:687 pages/checkout.php:694 pages/checkout.php:697
|
9466 |
#: pages/checkout.php:713 pages/checkout.php:714 pages/checkout.php:723
|
9467 |
#: pages/checkout.php:728 pages/checkout.php:732 pages/checkout.php:734
|
9493 |
msgid "Invoice #%s on %s"
|
9494 |
msgstr ""
|
9495 |
|
|
|
|
|
|
|
|
|
|
|
9496 |
#: pages/confirmation.php:52 pages/confirmation.php:123 pages/invoice.php:27
|
9497 |
#: pages/confirmation.php:45 pages/confirmation.php:46
|
9498 |
#: pages/confirmation.php:52 pages/confirmation.php:102
|
9505 |
#: pages/confirmation.php:55 pages/invoice.php:31 pages/account.php:29
|
9506 |
#: pages/account.php:33 pages/confirmation.php:48 pages/confirmation.php:49
|
9507 |
#: pages/confirmation.php:55 pages/invoice.php:29 pages/invoice.php:30
|
9508 |
+
#: pages/invoice.php:31
|
9509 |
msgid "Membership Expires"
|
9510 |
msgstr ""
|
9511 |
|
9513 |
#: pages/account.php:109 pages/confirmation.php:61 pages/confirmation.php:63
|
9514 |
#: pages/confirmation.php:69 pages/confirmation.php:79
|
9515 |
#: pages/confirmation.php:82 pages/invoice.php:48 pages/invoice.php:50
|
9516 |
+
#: pages/invoice.php:61 pages/invoice.php:62
|
9517 |
msgid "Payment Method"
|
9518 |
msgstr ""
|
9519 |
|
9520 |
#: pages/confirmation.php:80 pages/invoice.php:63 pages/confirmation.php:80
|
9521 |
#: pages/confirmation.php:82 pages/confirmation.php:83
|
9522 |
+
#: pages/confirmation.php:88 pages/invoice.php:62 pages/invoice.php:63
|
9523 |
+
#: pages/invoice.php:67 pages/invoice.php:69
|
9524 |
msgid "ending in"
|
9525 |
msgstr ""
|
9526 |
|
9528 |
#: pages/confirmation.php:61 pages/confirmation.php:63
|
9529 |
#: pages/confirmation.php:65 pages/confirmation.php:71
|
9530 |
#: pages/confirmation.php:88 pages/invoice.php:50 pages/invoice.php:52
|
9531 |
+
#: pages/invoice.php:70 pages/invoice.php:71 pages/invoice.php:90
|
9532 |
+
#: pages/invoice.php:103 pages/invoice.php:104 pages/invoice.php:107
|
9533 |
+
#: pages/invoice.php:109 pages/invoice.php:110
|
9534 |
msgid "Total Billed"
|
9535 |
msgstr ""
|
9536 |
|
9537 |
#: pages/confirmation.php:94 pages/invoice.php:77 pages/confirmation.php:94
|
9538 |
+
#: pages/invoice.php:76 pages/invoice.php:77 pages/invoice.php:80
|
9539 |
+
#: pages/invoice.php:82
|
9540 |
msgid "Coupon"
|
9541 |
msgstr ""
|
9542 |
|
9559 |
#: pages/confirmation.php:132 pages/invoice.php:135 pages/confirmation.php:111
|
9560 |
#: pages/confirmation.php:113 pages/confirmation.php:121
|
9561 |
#: pages/confirmation.php:124 pages/confirmation.php:132 pages/invoice.php:121
|
9562 |
+
#: pages/invoice.php:134 pages/invoice.php:135 pages/invoice.php:139
|
9563 |
+
#: pages/invoice.php:141
|
9564 |
msgid "View Your Membership Account →"
|
9565 |
msgstr ""
|
9566 |
|
9572 |
"site owner."
|
9573 |
msgstr ""
|
9574 |
|
9575 |
+
#: pages/invoice.php:29 pages/invoice.php:29
|
9576 |
msgid "success"
|
9577 |
msgstr ""
|
9578 |
|
9579 |
#: pages/invoice.php:102 pages/invoice.php:88 pages/invoice.php:101
|
9580 |
+
#: pages/invoice.php:102 pages/invoice.php:106 pages/invoice.php:108
|
9581 |
msgid "Invoice #"
|
9582 |
msgstr ""
|
9583 |
|
9584 |
#: pages/invoice.php:128 pages/invoice.php:114 pages/invoice.php:127
|
9585 |
+
#: pages/invoice.php:128 pages/invoice.php:132 pages/invoice.php:134
|
9586 |
msgid "No invoices found."
|
9587 |
msgstr ""
|
9588 |
|
9589 |
#: pages/invoice.php:139 pages/invoice.php:125 pages/invoice.php:138
|
9590 |
+
#: pages/invoice.php:139 pages/invoice.php:143 pages/invoice.php:145
|
9591 |
msgid "← View All Invoices"
|
9592 |
msgstr ""
|
9593 |
|
9624 |
msgid "← Return to Home"
|
9625 |
msgstr ""
|
9626 |
|
9627 |
+
#: paid-memberships-pro.php:147 adminpages/orders.php:398
|
9628 |
#: adminpages/orders.php:448 paid-memberships-pro.php:115
|
9629 |
#: paid-memberships-pro.php:116 paid-memberships-pro.php:123
|
9630 |
#: paid-memberships-pro.php:124 paid-memberships-pro.php:125
|
9631 |
#: paid-memberships-pro.php:126 paid-memberships-pro.php:127
|
9632 |
#: paid-memberships-pro.php:128 paid-memberships-pro.php:129
|
9633 |
#: paid-memberships-pro.php:130 paid-memberships-pro.php:135
|
9634 |
+
#: paid-memberships-pro.php:140 paid-memberships-pro.php:145
|
9635 |
msgid "Testing Only"
|
9636 |
msgstr ""
|
9637 |
|
9638 |
+
#: paid-memberships-pro.php:152 paid-memberships-pro.php:120
|
9639 |
#: paid-memberships-pro.php:121 paid-memberships-pro.php:128
|
9640 |
#: paid-memberships-pro.php:129 paid-memberships-pro.php:130
|
9641 |
#: paid-memberships-pro.php:131 paid-memberships-pro.php:132
|
9642 |
#: paid-memberships-pro.php:133 paid-memberships-pro.php:134
|
9643 |
#: paid-memberships-pro.php:135 paid-memberships-pro.php:140
|
9644 |
+
#: paid-memberships-pro.php:145 paid-memberships-pro.php:150
|
9645 |
msgid "PayPal Payflow Pro/PayPal Pro"
|
9646 |
msgstr ""
|
9647 |
|
9648 |
+
#: paid-memberships-pro.php:157 paid-memberships-pro.php:125
|
9649 |
#: paid-memberships-pro.php:126 paid-memberships-pro.php:133
|
9650 |
#: paid-memberships-pro.php:134 paid-memberships-pro.php:135
|
9651 |
#: paid-memberships-pro.php:136 paid-memberships-pro.php:137
|
9652 |
#: paid-memberships-pro.php:138 paid-memberships-pro.php:139
|
9653 |
#: paid-memberships-pro.php:140 paid-memberships-pro.php:145
|
9654 |
+
#: paid-memberships-pro.php:150 paid-memberships-pro.php:155
|
9655 |
msgid "Cybersource"
|
9656 |
msgstr ""
|
9657 |
|
9658 |
+
#: paid-memberships-pro.php:161
|
9659 |
+
msgid "Default"
|
9660 |
+
msgstr ""
|
9661 |
+
|
9662 |
+
#: paid-memberships-pro.php:182 paid-memberships-pro.php:156
|
9663 |
#: paid-memberships-pro.php:157 paid-memberships-pro.php:158
|
9664 |
#: paid-memberships-pro.php:159 paid-memberships-pro.php:160
|
9665 |
#: paid-memberships-pro.php:161 paid-memberships-pro.php:166
|
9666 |
+
#: paid-memberships-pro.php:171 paid-memberships-pro.php:176
|
9667 |
msgid "Once a month"
|
9668 |
msgstr ""
|
9669 |
|
9753 |
msgid "Your membership has been cancelled."
|
9754 |
msgstr ""
|
9755 |
|
9756 |
+
#: preheaders/checkout.php:37 preheaders/checkout.php:358
|
9757 |
#: preheaders/checkout.php:28 preheaders/checkout.php:30
|
9758 |
#: preheaders/checkout.php:31 preheaders/checkout.php:32
|
9759 |
#: preheaders/checkout.php:34 preheaders/checkout.php:344
|
9765 |
msgid "Invalid gateway."
|
9766 |
msgstr ""
|
9767 |
|
9768 |
+
#: preheaders/checkout.php:72 preheaders/checkout.php:54
|
9769 |
+
#: preheaders/checkout.php:68 preheaders/checkout.php:88
|
9770 |
+
#: preheaders/checkout.php:89 preheaders/checkout.php:91
|
9771 |
+
#: preheaders/checkout.php:95 preheaders/checkout.php:96
|
9772 |
msgid "Checkout: Payment Information"
|
9773 |
msgstr ""
|
9774 |
|
9775 |
+
#: preheaders/checkout.php:77 preheaders/checkout.php:59
|
9776 |
+
#: preheaders/checkout.php:73 preheaders/checkout.php:100
|
9777 |
+
#: preheaders/checkout.php:101
|
9778 |
msgid "Set Up Your Account"
|
9779 |
msgstr ""
|
9780 |
|
9781 |
+
#: preheaders/checkout.php:301 preheaders/checkout.php:289
|
9782 |
+
#: preheaders/checkout.php:300 preheaders/checkout.php:303
|
9783 |
+
#: preheaders/checkout.php:304 preheaders/checkout.php:331
|
9784 |
+
#: preheaders/checkout.php:416 preheaders/checkout.php:421
|
9785 |
msgid "There are JavaScript errors on the page. Please contact the webmaster."
|
9786 |
msgstr ""
|
9787 |
|
9813 |
|
9814 |
#: preheaders/checkout.php:382 preheaders/checkout.php:368
|
9815 |
#: preheaders/checkout.php:377 preheaders/checkout.php:381
|
9816 |
+
#: preheaders/checkout.php:382 preheaders/checkout.php:410
|
9817 |
+
#: preheaders/checkout.php:503 preheaders/checkout.php:510
|
9818 |
+
#: preheaders/checkout.php:515 preheaders/checkout.php:518
|
9819 |
+
#: preheaders/checkout.php:535 preheaders/checkout.php:536
|
9820 |
msgid "That username is already taken. Please try another."
|
9821 |
msgstr ""
|
9822 |
|
9823 |
#: preheaders/checkout.php:387 preheaders/checkout.php:373
|
9824 |
+
#: preheaders/checkout.php:387
|
9825 |
msgid ""
|
9826 |
"That email address is already in use. Please log in, or use a different "
|
9827 |
"email address."
|
9828 |
msgstr ""
|
9829 |
|
9830 |
+
#: preheaders/checkout.php:419 preheaders/checkout.php:397
|
9831 |
#: preheaders/checkout.php:399 preheaders/checkout.php:404
|
9832 |
+
#: preheaders/checkout.php:416 preheaders/checkout.php:418
|
9833 |
+
#: preheaders/checkout.php:420 preheaders/checkout.php:446
|
9834 |
+
#: preheaders/checkout.php:525 preheaders/checkout.php:532
|
9835 |
+
#: preheaders/checkout.php:537 preheaders/checkout.php:544
|
9836 |
+
#: preheaders/checkout.php:561 preheaders/checkout.php:562
|
9837 |
#, php-format
|
9838 |
msgid "reCAPTCHA failed. (%s) Please try again."
|
9839 |
msgstr ""
|
9840 |
|
9841 |
+
#: preheaders/checkout.php:445 preheaders/checkout.php:482
|
9842 |
#: preheaders/checkout.php:484 preheaders/checkout.php:491
|
9843 |
#: preheaders/checkout.php:495 preheaders/checkout.php:496
|
9844 |
#: preheaders/checkout.php:501 preheaders/checkout.php:505
|
9845 |
+
#: preheaders/checkout.php:509 preheaders/checkout.php:533
|
9846 |
+
#: preheaders/checkout.php:647 preheaders/checkout.php:654
|
9847 |
+
#: preheaders/checkout.php:659 preheaders/checkout.php:683
|
9848 |
+
#: preheaders/checkout.php:701 preheaders/checkout.php:702
|
9849 |
msgid "Payment accepted."
|
9850 |
msgstr ""
|
9851 |
|
9852 |
+
#: preheaders/checkout.php:451 preheaders/checkout.php:490
|
9853 |
#: preheaders/checkout.php:492 preheaders/checkout.php:497
|
9854 |
#: preheaders/checkout.php:501 preheaders/checkout.php:502
|
9855 |
#: preheaders/checkout.php:509 preheaders/checkout.php:513
|
9856 |
+
#: preheaders/checkout.php:515 preheaders/checkout.php:539
|
9857 |
+
#: preheaders/checkout.php:653 preheaders/checkout.php:660
|
9858 |
+
#: preheaders/checkout.php:665 preheaders/checkout.php:691
|
9859 |
+
#: preheaders/checkout.php:709 preheaders/checkout.php:710
|
9860 |
msgid ""
|
9861 |
"Unknown error generating account. Please contact us to set up your "
|
9862 |
"membership."
|
9863 |
msgstr ""
|
9864 |
|
9865 |
+
#: preheaders/checkout.php:537 preheaders/checkout.php:550
|
9866 |
#: preheaders/checkout.php:552 preheaders/checkout.php:569
|
9867 |
#: preheaders/checkout.php:571 preheaders/checkout.php:572
|
9868 |
#: preheaders/checkout.php:575 preheaders/checkout.php:576
|
9869 |
#: preheaders/checkout.php:577 preheaders/checkout.php:581
|
9870 |
+
#: preheaders/checkout.php:596 preheaders/checkout.php:614
|
9871 |
+
#: preheaders/checkout.php:785 preheaders/checkout.php:792
|
9872 |
+
#: preheaders/checkout.php:797 preheaders/checkout.php:825
|
9873 |
+
#: preheaders/checkout.php:844 preheaders/checkout.php:859
|
9874 |
+
#: preheaders/checkout.php:860
|
9875 |
msgid ""
|
9876 |
"Your payment was accepted, but there was an error setting up your account. "
|
9877 |
"Please contact us."
|
9878 |
msgstr ""
|
9879 |
|
9880 |
+
#: preheaders/checkout.php:767 preheaders/checkout.php:691
|
9881 |
#: preheaders/checkout.php:693 preheaders/checkout.php:710
|
9882 |
#: preheaders/checkout.php:712 preheaders/checkout.php:722
|
9883 |
#: preheaders/checkout.php:730 preheaders/checkout.php:754
|
9893 |
"submit this form again. Please contact the site owner to fix this issue."
|
9894 |
msgstr ""
|
9895 |
|
9896 |
+
#: preheaders/checkout.php:770 preheaders/checkout.php:694
|
9897 |
#: preheaders/checkout.php:696 preheaders/checkout.php:713
|
9898 |
#: preheaders/checkout.php:715 preheaders/checkout.php:725
|
9899 |
#: preheaders/checkout.php:733 preheaders/checkout.php:757
|
9909 |
"this form again. Please contact the site owner to fix this issue."
|
9910 |
msgstr ""
|
9911 |
|
9912 |
+
#: preheaders/checkout.php:781 preheaders/checkout.php:705
|
9913 |
#: preheaders/checkout.php:707 preheaders/checkout.php:724
|
9914 |
#: preheaders/checkout.php:726 preheaders/checkout.php:736
|
9915 |
#: preheaders/checkout.php:744 preheaders/checkout.php:768
|
9925 |
"will be processed."
|
9926 |
msgstr ""
|
9927 |
|
9928 |
+
#: preheaders/checkout.php:783 preheaders/checkout.php:707
|
9929 |
#: preheaders/checkout.php:709 preheaders/checkout.php:726
|
9930 |
#: preheaders/checkout.php:728 preheaders/checkout.php:738
|
9931 |
#: preheaders/checkout.php:746 preheaders/checkout.php:770
|
10142 |
"select customers."
|
10143 |
msgstr ""
|
10144 |
|
10145 |
+
#: adminpages/discountcodes.php:617 adminpages/discountcodes.php:622
|
10146 |
+
#: adminpages/discountcodes.php:650 adminpages/discountcodes.php:651
|
10147 |
+
#: adminpages/discountcodes.php:652 adminpages/discountcodes.php:653
|
10148 |
+
#: adminpages/discountcodes.php:658 adminpages/discountcodes.php:738
|
10149 |
+
#: adminpages/discountcodes.php:792 adminpages/discountcodes.php:805
|
10150 |
+
#: adminpages/membershiplevels.php:566 adminpages/membershiplevels.php:572
|
10151 |
+
#: adminpages/membershiplevels.php:574 adminpages/membershiplevels.php:580
|
10152 |
+
#: adminpages/membershiplevels.php:601 adminpages/membershiplevels.php:660
|
10153 |
+
#: adminpages/membershiplevels.php:662 adminpages/membershiplevels.php:664
|
10154 |
+
#: adminpages/membershiplevels.php:669 adminpages/membershiplevels.php:670
|
10155 |
+
#: adminpages/membershiplevels.php:674 adminpages/membershiplevels.php:686
|
10156 |
+
#: adminpages/membershiplevels.php:696 adminpages/membershiplevels.php:746
|
10157 |
+
#: adminpages/membershiplevels.php:748 adminpages/orders.php:664
|
10158 |
+
#: adminpages/orders.php:967 adminpages/orders.php:985
|
10159 |
+
#: adminpages/orders.php:995 adminpages/orders.php:998
|
10160 |
+
#: adminpages/orders.php:1027 adminpages/orders.php:1056
|
10161 |
+
#: adminpages/orders.php:1211 adminpages/orders.php:1245
|
10162 |
+
#: adminpages/orders.php:1251 adminpages/orders.php:1366
|
10163 |
+
#: adminpages/orders.php:1495
|
10164 |
+
msgid "delete"
|
10165 |
+
msgstr ""
|
10166 |
+
|
10167 |
+
#: adminpages/discountcodes.php:804 adminpages/membershiplevels.php:565
|
10168 |
+
#: adminpages/membershiplevels.php:571 adminpages/membershiplevels.php:573
|
10169 |
+
#: adminpages/membershiplevels.php:580 adminpages/membershiplevels.php:600
|
10170 |
+
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:662
|
10171 |
+
#: adminpages/membershiplevels.php:664 adminpages/membershiplevels.php:669
|
10172 |
+
#: adminpages/membershiplevels.php:670 adminpages/membershiplevels.php:674
|
10173 |
+
#: adminpages/membershiplevels.php:686 adminpages/membershiplevels.php:696
|
10174 |
+
#: adminpages/membershiplevels.php:746 adminpages/membershiplevels.php:748
|
10175 |
+
#: adminpages/orders.php:661 adminpages/orders.php:964
|
10176 |
+
#: adminpages/orders.php:982 adminpages/orders.php:992
|
10177 |
+
#: adminpages/orders.php:995 adminpages/orders.php:1024
|
10178 |
+
#: adminpages/orders.php:1053 adminpages/orders.php:1208
|
10179 |
+
#: adminpages/orders.php:1242 adminpages/orders.php:1248
|
10180 |
+
#: adminpages/orders.php:1363 adminpages/orders.php:1492
|
10181 |
+
msgid "copy"
|
10182 |
+
msgstr ""
|
10183 |
+
|
10184 |
+
#: adminpages/discountcodes.php:807 adminpages/discountcodes.php:809
|
10185 |
+
msgid "orders"
|
10186 |
+
msgstr ""
|
10187 |
+
|
10188 |
+
#: adminpages/discountcodes.php:807
|
10189 |
+
msgid "view orders"
|
10190 |
+
msgstr ""
|
10191 |
+
|
10192 |
+
#: adminpages/discountcodes.php:809
|
10193 |
+
msgid "no orders"
|
10194 |
+
msgstr ""
|
10195 |
+
|
10196 |
#: adminpages/emailsettings.php:63 adminpages/emailsettings.php:72
|
10197 |
msgid ""
|
10198 |
"To modify the appearance of system generated emails, add the files "
|
10261 |
msgid "every"
|
10262 |
msgstr ""
|
10263 |
|
10264 |
+
#: adminpages/orders.php:1030 adminpages/orders.php:1059
|
10265 |
+
#: adminpages/orders.php:1215 adminpages/orders.php:1249
|
10266 |
+
#: adminpages/orders.php:1255 adminpages/orders.php:1370
|
10267 |
+
#: adminpages/orders.php:1499
|
10268 |
+
msgid "print"
|
10269 |
+
msgstr ""
|
10270 |
+
|
10271 |
+
#: adminpages/orders.php:1033 adminpages/orders.php:1062
|
10272 |
+
#: adminpages/orders.php:1219 adminpages/orders.php:1253
|
10273 |
+
#: adminpages/orders.php:1259 adminpages/orders.php:1374
|
10274 |
+
#: adminpages/orders.php:1503
|
10275 |
+
msgid "email"
|
10276 |
+
msgstr ""
|
10277 |
+
|
10278 |
#: adminpages/pagesettings.php:73
|
10279 |
#, php-format
|
10280 |
msgid "Membership %s"
|
10475 |
msgid "Your Secret Key appears incorrect."
|
10476 |
msgstr ""
|
10477 |
|
10478 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1090
|
10479 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1119
|
10480 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1127
|
10481 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1134
|
10482 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1135
|
10483 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1136
|
10484 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1142
|
10485 |
+
#: classes/gateways/class.pmprogateway_stripe.php:1172
|
10486 |
+
msgid "Payment error: Please contact the webmaster (stripe-load-error)"
|
10487 |
+
msgstr ""
|
10488 |
+
|
10489 |
#: classes/gateways/class.pmprogateway_twocheckout.php:139
|
10490 |
msgid "API Private Key"
|
10491 |
msgstr ""
|
languages/paid-memberships-pro.pot
CHANGED
@@ -6,7 +6,7 @@ msgid ""
|
|
6 |
msgstr ""
|
7 |
"Project-Id-Version: paid-memberships-pro\n"
|
8 |
"Report-Msgid-Bugs-To: info@paidmembershipspro.com\n"
|
9 |
-
"POT-Creation-Date: 2019-
|
10 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
11 |
"Last-Translator: \n"
|
12 |
"Language-Team: Stranger Studios <info@paidmembershipspro.com>\n"
|
@@ -59,7 +59,7 @@ msgstr ""
|
|
59 |
msgid "Check Again"
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: adminpages/addons.php:93 adminpages/orders.php:
|
63 |
#: adminpages/addons.php:79 adminpages/addons.php:92 adminpages/addons.php:93
|
64 |
#: adminpages/orders.php:605 adminpages/orders.php:712
|
65 |
#: adminpages/orders.php:741 adminpages/orders.php:850
|
@@ -103,7 +103,7 @@ msgstr ""
|
|
103 |
#: adminpages/addons.php:112 adminpages/membershiplevels.php:296
|
104 |
#: adminpages/membershiplevels.php:298 adminpages/membershiplevels.php:300
|
105 |
#: adminpages/membershiplevels.php:324 adminpages/membershiplevels.php:334
|
106 |
-
#: adminpages/membershiplevels.php:356
|
107 |
msgid "Description"
|
108 |
msgstr ""
|
109 |
|
@@ -171,9 +171,10 @@ msgstr ""
|
|
171 |
msgid "Activate %s"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: adminpages/addons.php:231 adminpages/
|
175 |
-
#: adminpages/
|
176 |
-
#: adminpages/addons.php:
|
|
|
177 |
msgid "Delete"
|
178 |
msgstr ""
|
179 |
|
@@ -208,8 +209,8 @@ msgstr ""
|
|
208 |
msgid "WordPress.org"
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: adminpages/addons.php:249 adminpages/orders.php:
|
212 |
-
#: adminpages/orders.php:
|
213 |
#: includes/profile.php:186 shortcodes/pmpro_account.php:158
|
214 |
#: adminpages/addons.php:231 adminpages/addons.php:234
|
215 |
#: adminpages/addons.php:247 adminpages/addons.php:249
|
@@ -349,7 +350,7 @@ msgid ""
|
|
349 |
msgstr ""
|
350 |
|
351 |
#: adminpages/admin_header.php:135
|
352 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
353 |
#: adminpages/admin_header.php:125 adminpages/admin_header.php:135
|
354 |
#: classes/gateways/class.pmprogateway_stripe.php:66
|
355 |
#: classes/gateways/class.pmprogateway_stripe.php:68
|
@@ -399,18 +400,18 @@ msgstr ""
|
|
399 |
msgid "Members"
|
400 |
msgstr ""
|
401 |
|
402 |
-
#: adminpages/admin_header.php:196 adminpages/
|
403 |
-
#:
|
404 |
-
#: adminpages
|
405 |
-
#: adminpages/orders.php:
|
406 |
-
#: adminpages/orders.php:
|
407 |
-
#: adminpages/orders.php:
|
408 |
-
#: adminpages/orders.php:
|
409 |
-
#:
|
410 |
-
#: includes/adminpages.php:
|
411 |
-
#: includes/adminpages.php:
|
412 |
-
#: includes/adminpages.php:
|
413 |
-
#: includes/adminpages.php:172
|
414 |
msgid "Orders"
|
415 |
msgstr ""
|
416 |
|
@@ -439,7 +440,7 @@ msgstr ""
|
|
439 |
msgid "Levels"
|
440 |
msgstr ""
|
441 |
|
442 |
-
#: adminpages/admin_header.php:215 adminpages/membershiplevels.php:
|
443 |
#: adminpages/pagesettings.php:85 includes/metaboxes.php:130
|
444 |
#: adminpages/admin_header.php:128 adminpages/admin_header.php:149
|
445 |
#: adminpages/admin_header.php:150 adminpages/admin_header.php:159
|
@@ -451,15 +452,15 @@ msgstr ""
|
|
451 |
#: adminpages/membershiplevels.php:609 adminpages/membershiplevels.php:618
|
452 |
#: adminpages/membershiplevels.php:619 adminpages/membershiplevels.php:631
|
453 |
#: adminpages/membershiplevels.php:641 adminpages/membershiplevels.php:700
|
454 |
-
#: adminpages/
|
455 |
-
#: adminpages/pagesettings.php:
|
456 |
-
#:
|
457 |
-
#: includes/adminpages.php:
|
458 |
-
#: includes/adminpages.php:
|
459 |
-
#: includes/adminpages.php:
|
460 |
-
#: includes/adminpages.php:
|
461 |
-
#: includes/metaboxes.php:
|
462 |
-
#: includes/metaboxes.php:132
|
463 |
msgid "Membership Levels"
|
464 |
msgstr ""
|
465 |
|
@@ -503,6 +504,7 @@ msgid "Payment Gateway & SSL Settings"
|
|
503 |
msgstr ""
|
504 |
|
505 |
#: adminpages/admin_header.php:231 adminpages/memberslist.php:168
|
|
|
506 |
#: shortcodes/pmpro_account.php:111 adminpages/admin_header.php:131
|
507 |
#: adminpages/admin_header.php:152 adminpages/admin_header.php:162
|
508 |
#: adminpages/admin_header.php:171 adminpages/admin_header.php:183
|
@@ -518,11 +520,12 @@ msgstr ""
|
|
518 |
#: adminpages/admin_header.php:231 adminpages/emailsettings.php:83
|
519 |
#: includes/adminpages.php:61 adminpages/admin_header.php:231
|
520 |
#: adminpages/emailsettings.php:60 adminpages/emailsettings.php:69
|
521 |
-
#: adminpages/emailsettings.php:79
|
522 |
-
#: includes/adminpages.php:
|
523 |
-
#: includes/adminpages.php:
|
524 |
-
#: includes/adminpages.php:
|
525 |
-
#: includes/adminpages.php:
|
|
|
526 |
msgid "Email Settings"
|
527 |
msgstr ""
|
528 |
|
@@ -537,11 +540,12 @@ msgstr ""
|
|
537 |
#: includes/adminpages.php:62 adminpages/admin_header.php:235
|
538 |
#: adminpages/advancedsettings.php:79 adminpages/advancedsettings.php:86
|
539 |
#: adminpages/advancedsettings.php:88 adminpages/advancedsettings.php:91
|
540 |
-
#: adminpages/advancedsettings.php:107
|
541 |
-
#: includes/adminpages.php:
|
542 |
-
#: includes/adminpages.php:
|
543 |
-
#: includes/adminpages.php:
|
544 |
-
#: includes/adminpages.php:
|
|
|
545 |
msgid "Advanced Settings"
|
546 |
msgstr ""
|
547 |
|
@@ -560,12 +564,13 @@ msgstr ""
|
|
560 |
#: adminpages/advancedsettings.php:61 adminpages/advancedsettings.php:35
|
561 |
#: adminpages/advancedsettings.php:42 adminpages/advancedsettings.php:43
|
562 |
#: adminpages/advancedsettings.php:46 adminpages/advancedsettings.php:60
|
|
|
563 |
msgid "Your advanced settings have been updated."
|
564 |
msgstr ""
|
565 |
|
566 |
#: adminpages/advancedsettings.php:87 adminpages/advancedsettings.php:66
|
567 |
#: adminpages/advancedsettings.php:68 adminpages/advancedsettings.php:71
|
568 |
-
#: adminpages/advancedsettings.php:85
|
569 |
#, php-format
|
570 |
msgid ""
|
571 |
"This content is for !!levels!! members only. <a href=\"%s\">Register here</"
|
@@ -574,7 +579,7 @@ msgstr ""
|
|
574 |
|
575 |
#: adminpages/advancedsettings.php:92 adminpages/advancedsettings.php:71
|
576 |
#: adminpages/advancedsettings.php:73 adminpages/advancedsettings.php:76
|
577 |
-
#: adminpages/advancedsettings.php:90
|
578 |
#, php-format
|
579 |
msgid ""
|
580 |
"Please <a href=\"%s\">login</a> to view this content. (<a href=\"%s"
|
@@ -583,7 +588,7 @@ msgstr ""
|
|
583 |
|
584 |
#: adminpages/advancedsettings.php:97 adminpages/advancedsettings.php:76
|
585 |
#: adminpages/advancedsettings.php:78 adminpages/advancedsettings.php:81
|
586 |
-
#: adminpages/advancedsettings.php:95
|
587 |
msgid ""
|
588 |
"This content is for members only. Visit the site and log in/register to read."
|
589 |
msgstr ""
|
@@ -591,12 +596,14 @@ msgstr ""
|
|
591 |
#: adminpages/advancedsettings.php:115 adminpages/advancedsettings.php:85
|
592 |
#: adminpages/advancedsettings.php:92 adminpages/advancedsettings.php:94
|
593 |
#: adminpages/advancedsettings.php:97 adminpages/advancedsettings.php:113
|
|
|
594 |
msgid "Message for Logged-in Non-members"
|
595 |
msgstr ""
|
596 |
|
597 |
#: adminpages/advancedsettings.php:119 adminpages/advancedsettings.php:89
|
598 |
#: adminpages/advancedsettings.php:96 adminpages/advancedsettings.php:98
|
599 |
#: adminpages/advancedsettings.php:101 adminpages/advancedsettings.php:117
|
|
|
600 |
msgid ""
|
601 |
"This message replaces the post content for non-members. Available variables"
|
602 |
msgstr ""
|
@@ -604,40 +611,47 @@ msgstr ""
|
|
604 |
#: adminpages/advancedsettings.php:124 adminpages/advancedsettings.php:94
|
605 |
#: adminpages/advancedsettings.php:101 adminpages/advancedsettings.php:103
|
606 |
#: adminpages/advancedsettings.php:106 adminpages/advancedsettings.php:122
|
|
|
607 |
msgid "Message for Logged-out Users"
|
608 |
msgstr ""
|
609 |
|
610 |
#: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:98
|
611 |
#: adminpages/advancedsettings.php:105 adminpages/advancedsettings.php:107
|
612 |
#: adminpages/advancedsettings.php:110 adminpages/advancedsettings.php:126
|
|
|
613 |
msgid "This message replaces the post content for logged-out visitors."
|
614 |
msgstr ""
|
615 |
|
616 |
#: adminpages/advancedsettings.php:133 adminpages/advancedsettings.php:103
|
617 |
#: adminpages/advancedsettings.php:110 adminpages/advancedsettings.php:112
|
618 |
#: adminpages/advancedsettings.php:115 adminpages/advancedsettings.php:131
|
|
|
619 |
msgid "Message for RSS Feed"
|
620 |
msgstr ""
|
621 |
|
622 |
#: adminpages/advancedsettings.php:137 adminpages/advancedsettings.php:107
|
623 |
#: adminpages/advancedsettings.php:114 adminpages/advancedsettings.php:116
|
624 |
#: adminpages/advancedsettings.php:119 adminpages/advancedsettings.php:135
|
|
|
625 |
msgid "This message replaces the post content in RSS feeds."
|
626 |
msgstr ""
|
627 |
|
628 |
#: adminpages/advancedsettings.php:143 adminpages/advancedsettings.php:122
|
629 |
#: adminpages/advancedsettings.php:125 adminpages/advancedsettings.php:141
|
|
|
630 |
msgid "Filter searches and archives?"
|
631 |
msgstr ""
|
632 |
|
633 |
#: adminpages/advancedsettings.php:147 adminpages/advancedsettings.php:126
|
634 |
#: adminpages/advancedsettings.php:129 adminpages/advancedsettings.php:145
|
|
|
635 |
msgid ""
|
636 |
"No - Non-members will see restricted posts/pages in searches and archives."
|
637 |
msgstr ""
|
638 |
|
639 |
#: adminpages/advancedsettings.php:148 adminpages/advancedsettings.php:127
|
640 |
#: adminpages/advancedsettings.php:130 adminpages/advancedsettings.php:146
|
|
|
641 |
msgid ""
|
642 |
"Yes - Only members will see restricted posts/pages in searches and archives."
|
643 |
msgstr ""
|
@@ -645,45 +659,51 @@ msgstr ""
|
|
645 |
#: adminpages/advancedsettings.php:154 adminpages/advancedsettings.php:113
|
646 |
#: adminpages/advancedsettings.php:120 adminpages/advancedsettings.php:133
|
647 |
#: adminpages/advancedsettings.php:136 adminpages/advancedsettings.php:152
|
|
|
648 |
msgid "Show Excerpts to Non-Members?"
|
649 |
msgstr ""
|
650 |
|
651 |
#: adminpages/advancedsettings.php:158 adminpages/advancedsettings.php:117
|
652 |
#: adminpages/advancedsettings.php:124 adminpages/advancedsettings.php:137
|
653 |
#: adminpages/advancedsettings.php:140 adminpages/advancedsettings.php:156
|
|
|
654 |
msgid "No - Hide excerpts."
|
655 |
msgstr ""
|
656 |
|
657 |
#: adminpages/advancedsettings.php:159 adminpages/advancedsettings.php:118
|
658 |
#: adminpages/advancedsettings.php:125 adminpages/advancedsettings.php:138
|
659 |
#: adminpages/advancedsettings.php:141 adminpages/advancedsettings.php:157
|
|
|
660 |
msgid "Yes - Show excerpts."
|
661 |
msgstr ""
|
662 |
|
663 |
#: adminpages/advancedsettings.php:165 adminpages/advancedsettings.php:144
|
664 |
#: adminpages/advancedsettings.php:147 adminpages/advancedsettings.php:163
|
|
|
665 |
msgid "Hide Ads From Members?"
|
666 |
msgstr ""
|
667 |
|
668 |
#: adminpages/advancedsettings.php:169 adminpages/advancedsettings.php:228
|
669 |
-
#: adminpages/advancedsettings.php:240 adminpages/membershiplevels.php:
|
670 |
-
#: adminpages/paymentsettings.php:
|
671 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
672 |
#: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:135
|
673 |
#: adminpages/advancedsettings.php:148 adminpages/advancedsettings.php:151
|
674 |
-
#: adminpages/advancedsettings.php:167 adminpages/advancedsettings.php:
|
675 |
-
#: adminpages/advancedsettings.php:
|
676 |
-
#: adminpages/advancedsettings.php:
|
677 |
-
#: adminpages/advancedsettings.php:
|
678 |
-
#: adminpages/advancedsettings.php:
|
679 |
-
#: adminpages/advancedsettings.php:
|
680 |
-
#: adminpages/
|
681 |
-
#: adminpages/membershiplevels.php:
|
682 |
-
#: adminpages/membershiplevels.php:
|
683 |
-
#: adminpages/membershiplevels.php:
|
684 |
-
#: adminpages/membershiplevels.php:
|
685 |
-
#: adminpages/membershiplevels.php:
|
686 |
-
#: adminpages/membershiplevels.php:
|
|
|
|
|
687 |
#: adminpages/paymentsettings.php:219 adminpages/paymentsettings.php:236
|
688 |
#: adminpages/paymentsettings.php:414 adminpages/paymentsettings.php:429
|
689 |
#: adminpages/paymentsettings.php:434 adminpages/paymentsettings.php:436
|
@@ -699,6 +719,7 @@ msgstr ""
|
|
699 |
#: classes/gateways/class.pmprogateway_stripe.php:222
|
700 |
#: classes/gateways/class.pmprogateway_stripe.php:249
|
701 |
#: classes/gateways/class.pmprogateway_stripe.php:281
|
|
|
702 |
#: classes/gateways/class.pmprogateway_stripe.php:289
|
703 |
#: classes/gateways/class.pmprogateway_stripe.php:291
|
704 |
#: classes/gateways/class.pmprogateway_stripe.php:297
|
@@ -711,58 +732,66 @@ msgstr ""
|
|
711 |
#: adminpages/advancedsettings.php:170 adminpages/advancedsettings.php:129
|
712 |
#: adminpages/advancedsettings.php:136 adminpages/advancedsettings.php:149
|
713 |
#: adminpages/advancedsettings.php:152 adminpages/advancedsettings.php:168
|
|
|
714 |
msgid "Hide Ads From All Members"
|
715 |
msgstr ""
|
716 |
|
717 |
#: adminpages/advancedsettings.php:171 adminpages/advancedsettings.php:130
|
718 |
#: adminpages/advancedsettings.php:137 adminpages/advancedsettings.php:150
|
719 |
#: adminpages/advancedsettings.php:153 adminpages/advancedsettings.php:169
|
|
|
720 |
msgid "Hide Ads From Certain Members"
|
721 |
msgstr ""
|
722 |
|
723 |
#: adminpages/advancedsettings.php:178 adminpages/advancedsettings.php:137
|
724 |
#: adminpages/advancedsettings.php:144 adminpages/advancedsettings.php:157
|
725 |
#: adminpages/advancedsettings.php:160 adminpages/advancedsettings.php:176
|
|
|
726 |
msgid "Ads from the following plugins will be automatically turned off"
|
727 |
msgstr ""
|
728 |
|
729 |
#: adminpages/advancedsettings.php:179 adminpages/advancedsettings.php:138
|
730 |
#: adminpages/advancedsettings.php:145 adminpages/advancedsettings.php:158
|
731 |
#: adminpages/advancedsettings.php:161 adminpages/advancedsettings.php:177
|
|
|
732 |
msgid "To hide ads in your template code, use code like the following"
|
733 |
msgstr ""
|
734 |
|
735 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:149
|
736 |
#: adminpages/advancedsettings.php:156 adminpages/advancedsettings.php:169
|
737 |
#: adminpages/advancedsettings.php:172 adminpages/advancedsettings.php:188
|
|
|
738 |
msgid "Choose Levels to Hide Ads From"
|
739 |
msgstr ""
|
740 |
|
741 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:183
|
742 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:203
|
743 |
#: adminpages/advancedsettings.php:206 adminpages/advancedsettings.php:222
|
|
|
744 |
msgid "Redirect all traffic from registration page to /susbcription/?"
|
745 |
msgstr ""
|
746 |
|
747 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:183
|
748 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:203
|
749 |
#: adminpages/advancedsettings.php:206 adminpages/advancedsettings.php:222
|
|
|
750 |
msgid "multisite only"
|
751 |
msgstr ""
|
752 |
|
753 |
-
#: adminpages/advancedsettings.php:229 adminpages/membershiplevels.php:
|
754 |
-
#: adminpages/paymentsettings.php:
|
755 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
756 |
#: adminpages/advancedsettings.php:188 adminpages/advancedsettings.php:195
|
757 |
#: adminpages/advancedsettings.php:208 adminpages/advancedsettings.php:211
|
758 |
-
#: adminpages/advancedsettings.php:227 adminpages/
|
759 |
-
#: adminpages/membershiplevels.php:
|
760 |
-
#: adminpages/membershiplevels.php:
|
761 |
-
#: adminpages/membershiplevels.php:
|
762 |
-
#: adminpages/membershiplevels.php:
|
763 |
-
#: adminpages/membershiplevels.php:
|
764 |
-
#: adminpages/membershiplevels.php:
|
765 |
-
#: adminpages/membershiplevels.php:
|
|
|
766 |
#: adminpages/paymentsettings.php:220 adminpages/paymentsettings.php:237
|
767 |
#: adminpages/paymentsettings.php:415 adminpages/paymentsettings.php:424
|
768 |
#: adminpages/paymentsettings.php:430 adminpages/paymentsettings.php:435
|
@@ -778,6 +807,7 @@ msgstr ""
|
|
778 |
#: classes/gateways/class.pmprogateway_stripe.php:223
|
779 |
#: classes/gateways/class.pmprogateway_stripe.php:250
|
780 |
#: classes/gateways/class.pmprogateway_stripe.php:282
|
|
|
781 |
#: classes/gateways/class.pmprogateway_stripe.php:290
|
782 |
#: classes/gateways/class.pmprogateway_stripe.php:292
|
783 |
#: classes/gateways/class.pmprogateway_stripe.php:298
|
@@ -790,83 +820,92 @@ msgstr ""
|
|
790 |
#: adminpages/advancedsettings.php:236 adminpages/advancedsettings.php:195
|
791 |
#: adminpages/advancedsettings.php:202 adminpages/advancedsettings.php:215
|
792 |
#: adminpages/advancedsettings.php:218 adminpages/advancedsettings.php:234
|
|
|
793 |
msgid "Use reCAPTCHA?"
|
794 |
msgstr ""
|
795 |
|
796 |
#: adminpages/advancedsettings.php:241 adminpages/advancedsettings.php:200
|
797 |
#: adminpages/advancedsettings.php:207 adminpages/advancedsettings.php:220
|
798 |
#: adminpages/advancedsettings.php:223 adminpages/advancedsettings.php:239
|
|
|
799 |
msgid "Yes - Free memberships only."
|
800 |
msgstr ""
|
801 |
|
802 |
#: adminpages/advancedsettings.php:242 adminpages/advancedsettings.php:201
|
803 |
#: adminpages/advancedsettings.php:208 adminpages/advancedsettings.php:221
|
804 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:240
|
|
|
805 |
msgid "Yes - All memberships."
|
806 |
msgstr ""
|
807 |
|
808 |
#: adminpages/advancedsettings.php:244 adminpages/advancedsettings.php:203
|
809 |
#: adminpages/advancedsettings.php:210 adminpages/advancedsettings.php:223
|
810 |
#: adminpages/advancedsettings.php:226 adminpages/advancedsettings.php:242
|
|
|
811 |
msgid "A free reCAPTCHA key is required."
|
812 |
msgstr ""
|
813 |
|
814 |
#: adminpages/advancedsettings.php:244 adminpages/advancedsettings.php:203
|
815 |
#: adminpages/advancedsettings.php:210 adminpages/advancedsettings.php:223
|
816 |
#: adminpages/advancedsettings.php:226 adminpages/advancedsettings.php:242
|
|
|
817 |
msgid "Click here to signup for reCAPTCHA"
|
818 |
msgstr ""
|
819 |
|
820 |
-
#: adminpages/advancedsettings.php:250
|
821 |
msgid "reCAPTCHA Version"
|
822 |
msgstr ""
|
823 |
|
824 |
-
#: adminpages/advancedsettings.php:252
|
825 |
msgid " v2 - Checkbox"
|
826 |
msgstr ""
|
827 |
|
828 |
-
#: adminpages/advancedsettings.php:253
|
829 |
msgid "v3 - Invisible"
|
830 |
msgstr ""
|
831 |
|
832 |
-
#: adminpages/advancedsettings.php:255
|
833 |
msgid "Changing your version will require new API keys."
|
834 |
msgstr ""
|
835 |
|
836 |
#: adminpages/advancedsettings.php:257 adminpages/advancedsettings.php:248
|
|
|
837 |
msgid "reCAPTCHA Site Key"
|
838 |
msgstr ""
|
839 |
|
840 |
#: adminpages/advancedsettings.php:260 adminpages/advancedsettings.php:251
|
|
|
841 |
msgid "reCAPTCHA Secret Key"
|
842 |
msgstr ""
|
843 |
|
844 |
#: adminpages/advancedsettings.php:266 adminpages/advancedsettings.php:218
|
845 |
#: adminpages/advancedsettings.php:225 adminpages/advancedsettings.php:238
|
846 |
#: adminpages/advancedsettings.php:241 adminpages/advancedsettings.php:257
|
|
|
847 |
msgid "Require Terms of Service on signups?"
|
848 |
msgstr ""
|
849 |
|
850 |
#: adminpages/advancedsettings.php:273 adminpages/advancedsettings.php:225
|
851 |
#: adminpages/advancedsettings.php:232 adminpages/advancedsettings.php:245
|
852 |
#: adminpages/advancedsettings.php:248 adminpages/advancedsettings.php:264
|
|
|
853 |
msgid ""
|
854 |
"If yes, create a WordPress page containing your TOS agreement and assign it "
|
855 |
"using the dropdown above."
|
856 |
msgstr ""
|
857 |
|
858 |
#: adminpages/advancedsettings.php:384 adminpages/pagesettings.php:315
|
859 |
-
#: adminpages/paymentsettings.php:
|
860 |
#: adminpages/advancedsettings.php:355 adminpages/advancedsettings.php:359
|
861 |
#: adminpages/advancedsettings.php:368 adminpages/advancedsettings.php:375
|
862 |
-
#: adminpages/
|
863 |
-
#: adminpages/pagesettings.php:
|
864 |
-
#: adminpages/pagesettings.php:
|
865 |
-
#: adminpages/pagesettings.php:
|
866 |
-
#: adminpages/
|
867 |
-
#: adminpages/paymentsettings.php:
|
868 |
-
#: adminpages/paymentsettings.php:
|
869 |
-
#: adminpages/paymentsettings.php:534
|
870 |
msgid "Save Settings"
|
871 |
msgstr ""
|
872 |
|
@@ -954,7 +993,7 @@ msgid ""
|
|
954 |
msgstr ""
|
955 |
|
956 |
#: adminpages/dashboard.php:215 adminpages/memberslist.php:165
|
957 |
-
#: pages/checkout.php:
|
958 |
#: adminpages/dashboard.php:215 adminpages/dashboard.php:223
|
959 |
#: adminpages/memberslist.php:112 adminpages/memberslist.php:145
|
960 |
#: adminpages/memberslist.php:155 adminpages/memberslist.php:165
|
@@ -1024,8 +1063,8 @@ msgid "No members found."
|
|
1024 |
msgstr ""
|
1025 |
|
1026 |
#: adminpages/dashboard.php:282 adminpages/discountcodes.php:447
|
1027 |
-
#: adminpages/discountcodes.php:747 adminpages/orders.php:
|
1028 |
-
#: adminpages/orders.php:
|
1029 |
#: adminpages/dashboard.php:290 adminpages/discountcodes.php:311
|
1030 |
#: adminpages/discountcodes.php:314 adminpages/discountcodes.php:315
|
1031 |
#: adminpages/discountcodes.php:316 adminpages/discountcodes.php:321
|
@@ -1048,7 +1087,7 @@ msgstr ""
|
|
1048 |
msgid "Code"
|
1049 |
msgstr ""
|
1050 |
|
1051 |
-
#: adminpages/dashboard.php:283 adminpages/orders.php:
|
1052 |
#: adminpages/reports/login.php:179
|
1053 |
#: classes/gateways/class.pmprogateway_payflowpro.php:116
|
1054 |
#: adminpages/dashboard.php:283 adminpages/dashboard.php:291
|
@@ -1065,7 +1104,7 @@ msgstr ""
|
|
1065 |
msgid "User"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
-
#: adminpages/dashboard.php:284 includes/privacy.php:241 pages/billing.php:
|
1069 |
#: pages/cancel.php:60 pages/invoice.php:103 pages/levels.php:35
|
1070 |
#: shortcodes/pmpro_account.php:44 shortcodes/pmpro_account.php:128
|
1071 |
#: adminpages/dashboard.php:284 adminpages/dashboard.php:292
|
@@ -1074,16 +1113,16 @@ msgstr ""
|
|
1074 |
#: pages/billing.php:27 pages/billing.php:28 pages/billing.php:30
|
1075 |
#: pages/billing.php:41 pages/billing.php:44 pages/billing.php:45
|
1076 |
#: pages/cancel.php:52 pages/cancel.php:60 pages/cancel.php:61
|
1077 |
-
#: pages/invoice.php:89 pages/invoice.php:102 pages/invoice.php:
|
1078 |
-
#: pages/
|
1079 |
-
#: shortcodes/pmpro_account.php:
|
1080 |
-
#: shortcodes/pmpro_account.php:
|
1081 |
-
#: shortcodes/pmpro_account.php:128
|
1082 |
msgid "Level"
|
1083 |
msgstr ""
|
1084 |
|
1085 |
-
#: adminpages/dashboard.php:285 adminpages/orders.php:
|
1086 |
-
#: adminpages/orders.php:
|
1087 |
#: adminpages/templates/orders-print.php:93 includes/privacy.php:285
|
1088 |
#: pages/confirmation.php:96 pages/invoice.php:79 adminpages/dashboard.php:285
|
1089 |
#: adminpages/dashboard.php:293 adminpages/orders.php:320
|
@@ -1098,13 +1137,13 @@ msgstr ""
|
|
1098 |
#: adminpages/orders.php:1236 adminpages/orders.php:1357
|
1099 |
#: adminpages/templates/orders-email.php:64
|
1100 |
#: adminpages/templates/orders-print.php:93 includes/privacy.php:285
|
1101 |
-
#: pages/confirmation.php:96 pages/invoice.php:78 pages/invoice.php:
|
1102 |
-
#: pages/invoice.php:84
|
1103 |
msgid "Total"
|
1104 |
msgstr ""
|
1105 |
|
1106 |
-
#: adminpages/dashboard.php:286 adminpages/orders.php:
|
1107 |
-
#: adminpages/orders.php:
|
1108 |
#: pages/invoice.php:29 shortcodes/pmpro_account.php:130
|
1109 |
#: adminpages/dashboard.php:286 adminpages/dashboard.php:294
|
1110 |
#: adminpages/orders.php:373 adminpages/orders.php:423
|
@@ -1117,12 +1156,12 @@ msgstr ""
|
|
1117 |
#: adminpages/orders.php:1112 adminpages/orders.php:1143
|
1118 |
#: adminpages/orders.php:1149 adminpages/orders.php:1240
|
1119 |
#: adminpages/orders.php:1361 includes/privacy.php:202 includes/privacy.php:309
|
1120 |
-
#: shortcodes/pmpro_account.php:130
|
1121 |
msgid "Status"
|
1122 |
msgstr ""
|
1123 |
|
1124 |
-
#: adminpages/dashboard.php:287 adminpages/orders.php:
|
1125 |
-
#: adminpages/orders.php:
|
1126 |
#: shortcodes/pmpro_account.php:127 adminpages/dashboard.php:287
|
1127 |
#: adminpages/dashboard.php:295 adminpages/orders.php:442
|
1128 |
#: adminpages/orders.php:492 adminpages/orders.php:493
|
@@ -1135,13 +1174,14 @@ msgstr ""
|
|
1135 |
#: adminpages/orders.php:1113 adminpages/orders.php:1144
|
1136 |
#: adminpages/orders.php:1150 adminpages/orders.php:1241
|
1137 |
#: adminpages/orders.php:1362 pages/account.php:91 pages/invoice.php:87
|
1138 |
-
#: pages/invoice.php:100 pages/invoice.php:
|
1139 |
-
#:
|
1140 |
-
#: shortcodes/pmpro_account.php:
|
|
|
1141 |
msgid "Date"
|
1142 |
msgstr ""
|
1143 |
|
1144 |
-
#: adminpages/dashboard.php:294 adminpages/orders.php:
|
1145 |
#: adminpages/dashboard.php:294 adminpages/dashboard.php:302
|
1146 |
#: adminpages/orders.php:674 adminpages/orders.php:977
|
1147 |
#: adminpages/orders.php:995 adminpages/orders.php:1005
|
@@ -1152,7 +1192,7 @@ msgstr ""
|
|
1152 |
msgid "No orders found."
|
1153 |
msgstr ""
|
1154 |
|
1155 |
-
#: adminpages/dashboard.php:311 adminpages/orders.php:
|
1156 |
#: adminpages/dashboard.php:311 adminpages/dashboard.php:319
|
1157 |
#: adminpages/orders.php:630 adminpages/orders.php:933
|
1158 |
#: adminpages/orders.php:943 adminpages/orders.php:972
|
@@ -1162,7 +1202,7 @@ msgstr ""
|
|
1162 |
msgid "deleted"
|
1163 |
msgstr ""
|
1164 |
|
1165 |
-
#: adminpages/dashboard.php:313 adminpages/orders.php:
|
1166 |
#: adminpages/dashboard.php:313 adminpages/dashboard.php:321
|
1167 |
#: adminpages/orders.php:1275 adminpages/orders.php:1397
|
1168 |
msgid "none"
|
@@ -1289,8 +1329,8 @@ msgid "Add New Discount Code"
|
|
1289 |
msgstr ""
|
1290 |
|
1291 |
#: adminpages/discountcodes.php:442 adminpages/discountcodes.php:746
|
1292 |
-
#: adminpages/membershiplevels.php:346 adminpages/membershiplevels.php:
|
1293 |
-
#: adminpages/memberslist.php:164 adminpages/orders.php:
|
1294 |
#: adminpages/reports/login.php:178 adminpages/templates/orders-email.php:46
|
1295 |
#: adminpages/templates/orders-print.php:75 adminpages/discountcodes.php:306
|
1296 |
#: adminpages/discountcodes.php:309 adminpages/discountcodes.php:310
|
@@ -1304,13 +1344,14 @@ msgstr ""
|
|
1304 |
#: adminpages/membershiplevels.php:284 adminpages/membershiplevels.php:286
|
1305 |
#: adminpages/membershiplevels.php:288 adminpages/membershiplevels.php:312
|
1306 |
#: adminpages/membershiplevels.php:322 adminpages/membershiplevels.php:344
|
1307 |
-
#: adminpages/membershiplevels.php:
|
1308 |
-
#: adminpages/membershiplevels.php:
|
1309 |
-
#: adminpages/membershiplevels.php:
|
1310 |
-
#: adminpages/membershiplevels.php:
|
1311 |
-
#: adminpages/membershiplevels.php:
|
1312 |
-
#: adminpages/membershiplevels.php:
|
1313 |
-
#: adminpages/membershiplevels.php:
|
|
|
1314 |
#: adminpages/memberslist.php:111 adminpages/memberslist.php:144
|
1315 |
#: adminpages/memberslist.php:154 adminpages/memberslist.php:164
|
1316 |
#: adminpages/orders.php:597 adminpages/orders.php:900
|
@@ -1325,7 +1366,7 @@ msgstr ""
|
|
1325 |
msgid "ID"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
-
#: adminpages/discountcodes.php:443 adminpages/orders.php:
|
1329 |
#: adminpages/discountcodes.php:307 adminpages/discountcodes.php:310
|
1330 |
#: adminpages/discountcodes.php:311 adminpages/discountcodes.php:312
|
1331 |
#: adminpages/discountcodes.php:317 adminpages/discountcodes.php:382
|
@@ -1348,9 +1389,9 @@ msgid "Start Date"
|
|
1348 |
msgstr ""
|
1349 |
|
1350 |
#: adminpages/discountcodes.php:503
|
1351 |
-
#: classes/gateways/class.pmprogateway_braintree.php:
|
1352 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
1353 |
-
#: pages/checkout.php:
|
1354 |
#: adminpages/discountcodes.php:370 adminpages/discountcodes.php:371
|
1355 |
#: adminpages/discountcodes.php:372 adminpages/discountcodes.php:377
|
1356 |
#: adminpages/discountcodes.php:442 adminpages/discountcodes.php:483
|
@@ -1378,6 +1419,7 @@ msgstr ""
|
|
1378 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
1379 |
#: classes/gateways/class.pmprogateway_stripe.php:570
|
1380 |
#: classes/gateways/class.pmprogateway_stripe.php:597
|
|
|
1381 |
#: classes/gateways/class.pmprogateway_stripe.php:613
|
1382 |
#: classes/gateways/class.pmprogateway_stripe.php:621
|
1383 |
#: classes/gateways/class.pmprogateway_stripe.php:628
|
@@ -1430,9 +1472,10 @@ msgstr ""
|
|
1430 |
#: adminpages/membershiplevels.php:337 adminpages/membershiplevels.php:339
|
1431 |
#: adminpages/membershiplevels.php:341 adminpages/membershiplevels.php:342
|
1432 |
#: adminpages/membershiplevels.php:365 adminpages/membershiplevels.php:375
|
1433 |
-
#: adminpages/membershiplevels.php:398 adminpages/membershiplevels.php:
|
1434 |
-
#: adminpages/membershiplevels.php:
|
1435 |
-
#: adminpages/membershiplevels.php:
|
|
|
1436 |
msgid "Initial Payment"
|
1437 |
msgstr ""
|
1438 |
|
@@ -1445,7 +1488,7 @@ msgstr ""
|
|
1445 |
#: adminpages/membershiplevels.php:340 adminpages/membershiplevels.php:350
|
1446 |
#: adminpages/membershiplevels.php:352 adminpages/membershiplevels.php:353
|
1447 |
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:386
|
1448 |
-
#: adminpages/membershiplevels.php:409
|
1449 |
msgid "The initial amount collected at registration."
|
1450 |
msgstr ""
|
1451 |
|
@@ -1458,7 +1501,7 @@ msgstr ""
|
|
1458 |
#: adminpages/membershiplevels.php:344 adminpages/membershiplevels.php:354
|
1459 |
#: adminpages/membershiplevels.php:356 adminpages/membershiplevels.php:357
|
1460 |
#: adminpages/membershiplevels.php:380 adminpages/membershiplevels.php:390
|
1461 |
-
#: adminpages/membershiplevels.php:413
|
1462 |
msgid "Recurring Subscription"
|
1463 |
msgstr ""
|
1464 |
|
@@ -1471,7 +1514,7 @@ msgstr ""
|
|
1471 |
#: adminpages/membershiplevels.php:345 adminpages/membershiplevels.php:355
|
1472 |
#: adminpages/membershiplevels.php:357 adminpages/membershiplevels.php:358
|
1473 |
#: adminpages/membershiplevels.php:381 adminpages/membershiplevels.php:391
|
1474 |
-
#: adminpages/membershiplevels.php:414
|
1475 |
msgid "Check if this level has a recurring subscription payment."
|
1476 |
msgstr ""
|
1477 |
|
@@ -1484,12 +1527,13 @@ msgstr ""
|
|
1484 |
#: adminpages/membershiplevels.php:359 adminpages/membershiplevels.php:361
|
1485 |
#: adminpages/membershiplevels.php:362 adminpages/membershiplevels.php:385
|
1486 |
#: adminpages/membershiplevels.php:395 adminpages/membershiplevels.php:418
|
|
|
1487 |
msgid "Billing Amount"
|
1488 |
msgstr ""
|
1489 |
|
1490 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1491 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1492 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
1493 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1494 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1495 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
@@ -1502,10 +1546,11 @@ msgstr ""
|
|
1502 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1503 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1504 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1505 |
-
#: adminpages/membershiplevels.php:
|
1506 |
-
#: adminpages/membershiplevels.php:
|
1507 |
-
#: adminpages/membershiplevels.php:
|
1508 |
-
#: adminpages/membershiplevels.php:
|
|
|
1509 |
#: classes/gateways/class.pmprogateway_stripe.php:521
|
1510 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
1511 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
@@ -1517,6 +1562,7 @@ msgstr ""
|
|
1517 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
1518 |
#: classes/gateways/class.pmprogateway_stripe.php:599
|
1519 |
#: classes/gateways/class.pmprogateway_stripe.php:637
|
|
|
1520 |
#: classes/gateways/class.pmprogateway_stripe.php:664
|
1521 |
#: classes/gateways/class.pmprogateway_stripe.php:671
|
1522 |
#: classes/gateways/class.pmprogateway_stripe.php:679
|
@@ -1528,7 +1574,7 @@ msgstr ""
|
|
1528 |
|
1529 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1530 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1531 |
-
#: classes/gateways/class.pmprogateway_stripe.php:
|
1532 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1533 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1534 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
@@ -1541,10 +1587,11 @@ msgstr ""
|
|
1541 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1542 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1543 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1544 |
-
#: adminpages/membershiplevels.php:
|
1545 |
-
#: adminpages/membershiplevels.php:
|
1546 |
-
#: adminpages/membershiplevels.php:
|
1547 |
-
#: adminpages/membershiplevels.php:511 adminpages/membershiplevels.php:535
|
6 |
msgstr ""
|
7 |
"Project-Id-Version: paid-memberships-pro\n"
|
8 |
"Report-Msgid-Bugs-To: info@paidmembershipspro.com\n"
|
9 |
+
"POT-Creation-Date: 2019-09-13 12:49-0400\n"
|
10 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
11 |
"Last-Translator: \n"
|
12 |
"Language-Team: Stranger Studios <info@paidmembershipspro.com>\n"
|
59 |
msgid "Check Again"
|
60 |
msgstr ""
|
61 |
|
62 |
+
#: adminpages/addons.php:93 adminpages/orders.php:994 adminpages/addons.php:76
|
63 |
#: adminpages/addons.php:79 adminpages/addons.php:92 adminpages/addons.php:93
|
64 |
#: adminpages/orders.php:605 adminpages/orders.php:712
|
65 |
#: adminpages/orders.php:741 adminpages/orders.php:850
|
103 |
#: adminpages/addons.php:112 adminpages/membershiplevels.php:296
|
104 |
#: adminpages/membershiplevels.php:298 adminpages/membershiplevels.php:300
|
105 |
#: adminpages/membershiplevels.php:324 adminpages/membershiplevels.php:334
|
106 |
+
#: adminpages/membershiplevels.php:356 adminpages/membershiplevels.php:358
|
107 |
msgid "Description"
|
108 |
msgstr ""
|
109 |
|
171 |
msgid "Activate %s"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: adminpages/addons.php:231 adminpages/discountcodes.php:771
|
175 |
+
#: adminpages/membershiplevels.php:762 adminpages/orders.php:1358
|
176 |
+
#: adminpages/addons.php:213 adminpages/addons.php:216
|
177 |
+
#: adminpages/addons.php:229 adminpages/addons.php:231
|
178 |
msgid "Delete"
|
179 |
msgstr ""
|
180 |
|
209 |
msgid "WordPress.org"
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: adminpages/addons.php:249 adminpages/orders.php:900
|
213 |
+
#: adminpages/orders.php:1429 adminpages/orders.php:1439
|
214 |
#: includes/profile.php:186 shortcodes/pmpro_account.php:158
|
215 |
#: adminpages/addons.php:231 adminpages/addons.php:234
|
216 |
#: adminpages/addons.php:247 adminpages/addons.php:249
|
350 |
msgstr ""
|
351 |
|
352 |
#: adminpages/admin_header.php:135
|
353 |
+
#: classes/gateways/class.pmprogateway_stripe.php:71
|
354 |
#: adminpages/admin_header.php:125 adminpages/admin_header.php:135
|
355 |
#: classes/gateways/class.pmprogateway_stripe.php:66
|
356 |
#: classes/gateways/class.pmprogateway_stripe.php:68
|
400 |
msgid "Members"
|
401 |
msgstr ""
|
402 |
|
403 |
+
#: adminpages/admin_header.php:196 adminpages/discountcodes.php:775
|
404 |
+
#: adminpages/orders.php:949 includes/adminpages.php:52
|
405 |
+
#: includes/adminpages.php:156 adminpages/admin_header.php:196
|
406 |
+
#: adminpages/orders.php:520 adminpages/orders.php:570
|
407 |
+
#: adminpages/orders.php:677 adminpages/orders.php:706
|
408 |
+
#: adminpages/orders.php:810 adminpages/orders.php:841
|
409 |
+
#: adminpages/orders.php:852 adminpages/orders.php:939
|
410 |
+
#: adminpages/orders.php:994 includes/adminpages.php:17
|
411 |
+
#: includes/adminpages.php:52 includes/adminpages.php:55
|
412 |
+
#: includes/adminpages.php:56 includes/adminpages.php:84
|
413 |
+
#: includes/adminpages.php:156 includes/adminpages.php:163
|
414 |
+
#: includes/adminpages.php:167 includes/adminpages.php:172
|
415 |
msgid "Orders"
|
416 |
msgstr ""
|
417 |
|
440 |
msgid "Levels"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: adminpages/admin_header.php:215 adminpages/membershiplevels.php:728
|
444 |
#: adminpages/pagesettings.php:85 includes/metaboxes.php:130
|
445 |
#: adminpages/admin_header.php:128 adminpages/admin_header.php:149
|
446 |
#: adminpages/admin_header.php:150 adminpages/admin_header.php:159
|
452 |
#: adminpages/membershiplevels.php:609 adminpages/membershiplevels.php:618
|
453 |
#: adminpages/membershiplevels.php:619 adminpages/membershiplevels.php:631
|
454 |
#: adminpages/membershiplevels.php:641 adminpages/membershiplevels.php:700
|
455 |
+
#: adminpages/membershiplevels.php:702 adminpages/pagesettings.php:69
|
456 |
+
#: adminpages/pagesettings.php:70 adminpages/pagesettings.php:71
|
457 |
+
#: adminpages/pagesettings.php:85 includes/adminpages.php:44
|
458 |
+
#: includes/adminpages.php:64 includes/adminpages.php:65
|
459 |
+
#: includes/adminpages.php:69 includes/adminpages.php:70
|
460 |
+
#: includes/adminpages.php:100 includes/adminpages.php:107
|
461 |
+
#: includes/adminpages.php:111 includes/adminpages.php:116
|
462 |
+
#: includes/metaboxes.php:126 includes/metaboxes.php:130
|
463 |
+
#: includes/metaboxes.php:131 includes/metaboxes.php:132
|
464 |
msgid "Membership Levels"
|
465 |
msgstr ""
|
466 |
|
504 |
msgstr ""
|
505 |
|
506 |
#: adminpages/admin_header.php:231 adminpages/memberslist.php:168
|
507 |
+
#: adminpages/orders.php:372 adminpages/orders.php:1365
|
508 |
#: shortcodes/pmpro_account.php:111 adminpages/admin_header.php:131
|
509 |
#: adminpages/admin_header.php:152 adminpages/admin_header.php:162
|
510 |
#: adminpages/admin_header.php:171 adminpages/admin_header.php:183
|
520 |
#: adminpages/admin_header.php:231 adminpages/emailsettings.php:83
|
521 |
#: includes/adminpages.php:61 adminpages/admin_header.php:231
|
522 |
#: adminpages/emailsettings.php:60 adminpages/emailsettings.php:69
|
523 |
+
#: adminpages/emailsettings.php:79 adminpages/emailsettings.php:83
|
524 |
+
#: includes/adminpages.php:12 includes/adminpages.php:50
|
525 |
+
#: includes/adminpages.php:51 includes/adminpages.php:59
|
526 |
+
#: includes/adminpages.php:61 includes/adminpages.php:121
|
527 |
+
#: includes/adminpages.php:128 includes/adminpages.php:132
|
528 |
+
#: includes/adminpages.php:137
|
529 |
msgid "Email Settings"
|
530 |
msgstr ""
|
531 |
|
540 |
#: includes/adminpages.php:62 adminpages/admin_header.php:235
|
541 |
#: adminpages/advancedsettings.php:79 adminpages/advancedsettings.php:86
|
542 |
#: adminpages/advancedsettings.php:88 adminpages/advancedsettings.php:91
|
543 |
+
#: adminpages/advancedsettings.php:107 adminpages/advancedsettings.php:109
|
544 |
+
#: includes/adminpages.php:13 includes/adminpages.php:51
|
545 |
+
#: includes/adminpages.php:52 includes/adminpages.php:62
|
546 |
+
#: includes/adminpages.php:64 includes/adminpages.php:128
|
547 |
+
#: includes/adminpages.php:135 includes/adminpages.php:139
|
548 |
+
#: includes/adminpages.php:144
|
549 |
msgid "Advanced Settings"
|
550 |
msgstr ""
|
551 |
|
564 |
#: adminpages/advancedsettings.php:61 adminpages/advancedsettings.php:35
|
565 |
#: adminpages/advancedsettings.php:42 adminpages/advancedsettings.php:43
|
566 |
#: adminpages/advancedsettings.php:46 adminpages/advancedsettings.php:60
|
567 |
+
#: adminpages/advancedsettings.php:61
|
568 |
msgid "Your advanced settings have been updated."
|
569 |
msgstr ""
|
570 |
|
571 |
#: adminpages/advancedsettings.php:87 adminpages/advancedsettings.php:66
|
572 |
#: adminpages/advancedsettings.php:68 adminpages/advancedsettings.php:71
|
573 |
+
#: adminpages/advancedsettings.php:85 adminpages/advancedsettings.php:87
|
574 |
#, php-format
|
575 |
msgid ""
|
576 |
"This content is for !!levels!! members only. <a href=\"%s\">Register here</"
|
579 |
|
580 |
#: adminpages/advancedsettings.php:92 adminpages/advancedsettings.php:71
|
581 |
#: adminpages/advancedsettings.php:73 adminpages/advancedsettings.php:76
|
582 |
+
#: adminpages/advancedsettings.php:90 adminpages/advancedsettings.php:92
|
583 |
#, php-format
|
584 |
msgid ""
|
585 |
"Please <a href=\"%s\">login</a> to view this content. (<a href=\"%s"
|
588 |
|
589 |
#: adminpages/advancedsettings.php:97 adminpages/advancedsettings.php:76
|
590 |
#: adminpages/advancedsettings.php:78 adminpages/advancedsettings.php:81
|
591 |
+
#: adminpages/advancedsettings.php:95 adminpages/advancedsettings.php:97
|
592 |
msgid ""
|
593 |
"This content is for members only. Visit the site and log in/register to read."
|
594 |
msgstr ""
|
596 |
#: adminpages/advancedsettings.php:115 adminpages/advancedsettings.php:85
|
597 |
#: adminpages/advancedsettings.php:92 adminpages/advancedsettings.php:94
|
598 |
#: adminpages/advancedsettings.php:97 adminpages/advancedsettings.php:113
|
599 |
+
#: adminpages/advancedsettings.php:115
|
600 |
msgid "Message for Logged-in Non-members"
|
601 |
msgstr ""
|
602 |
|
603 |
#: adminpages/advancedsettings.php:119 adminpages/advancedsettings.php:89
|
604 |
#: adminpages/advancedsettings.php:96 adminpages/advancedsettings.php:98
|
605 |
#: adminpages/advancedsettings.php:101 adminpages/advancedsettings.php:117
|
606 |
+
#: adminpages/advancedsettings.php:119
|
607 |
msgid ""
|
608 |
"This message replaces the post content for non-members. Available variables"
|
609 |
msgstr ""
|
611 |
#: adminpages/advancedsettings.php:124 adminpages/advancedsettings.php:94
|
612 |
#: adminpages/advancedsettings.php:101 adminpages/advancedsettings.php:103
|
613 |
#: adminpages/advancedsettings.php:106 adminpages/advancedsettings.php:122
|
614 |
+
#: adminpages/advancedsettings.php:124
|
615 |
msgid "Message for Logged-out Users"
|
616 |
msgstr ""
|
617 |
|
618 |
#: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:98
|
619 |
#: adminpages/advancedsettings.php:105 adminpages/advancedsettings.php:107
|
620 |
#: adminpages/advancedsettings.php:110 adminpages/advancedsettings.php:126
|
621 |
+
#: adminpages/advancedsettings.php:128
|
622 |
msgid "This message replaces the post content for logged-out visitors."
|
623 |
msgstr ""
|
624 |
|
625 |
#: adminpages/advancedsettings.php:133 adminpages/advancedsettings.php:103
|
626 |
#: adminpages/advancedsettings.php:110 adminpages/advancedsettings.php:112
|
627 |
#: adminpages/advancedsettings.php:115 adminpages/advancedsettings.php:131
|
628 |
+
#: adminpages/advancedsettings.php:133
|
629 |
msgid "Message for RSS Feed"
|
630 |
msgstr ""
|
631 |
|
632 |
#: adminpages/advancedsettings.php:137 adminpages/advancedsettings.php:107
|
633 |
#: adminpages/advancedsettings.php:114 adminpages/advancedsettings.php:116
|
634 |
#: adminpages/advancedsettings.php:119 adminpages/advancedsettings.php:135
|
635 |
+
#: adminpages/advancedsettings.php:137
|
636 |
msgid "This message replaces the post content in RSS feeds."
|
637 |
msgstr ""
|
638 |
|
639 |
#: adminpages/advancedsettings.php:143 adminpages/advancedsettings.php:122
|
640 |
#: adminpages/advancedsettings.php:125 adminpages/advancedsettings.php:141
|
641 |
+
#: adminpages/advancedsettings.php:143
|
642 |
msgid "Filter searches and archives?"
|
643 |
msgstr ""
|
644 |
|
645 |
#: adminpages/advancedsettings.php:147 adminpages/advancedsettings.php:126
|
646 |
#: adminpages/advancedsettings.php:129 adminpages/advancedsettings.php:145
|
647 |
+
#: adminpages/advancedsettings.php:147
|
648 |
msgid ""
|
649 |
"No - Non-members will see restricted posts/pages in searches and archives."
|
650 |
msgstr ""
|
651 |
|
652 |
#: adminpages/advancedsettings.php:148 adminpages/advancedsettings.php:127
|
653 |
#: adminpages/advancedsettings.php:130 adminpages/advancedsettings.php:146
|
654 |
+
#: adminpages/advancedsettings.php:148
|
655 |
msgid ""
|
656 |
"Yes - Only members will see restricted posts/pages in searches and archives."
|
657 |
msgstr ""
|
659 |
#: adminpages/advancedsettings.php:154 adminpages/advancedsettings.php:113
|
660 |
#: adminpages/advancedsettings.php:120 adminpages/advancedsettings.php:133
|
661 |
#: adminpages/advancedsettings.php:136 adminpages/advancedsettings.php:152
|
662 |
+
#: adminpages/advancedsettings.php:154
|
663 |
msgid "Show Excerpts to Non-Members?"
|
664 |
msgstr ""
|
665 |
|
666 |
#: adminpages/advancedsettings.php:158 adminpages/advancedsettings.php:117
|
667 |
#: adminpages/advancedsettings.php:124 adminpages/advancedsettings.php:137
|
668 |
#: adminpages/advancedsettings.php:140 adminpages/advancedsettings.php:156
|
669 |
+
#: adminpages/advancedsettings.php:158
|
670 |
msgid "No - Hide excerpts."
|
671 |
msgstr ""
|
672 |
|
673 |
#: adminpages/advancedsettings.php:159 adminpages/advancedsettings.php:118
|
674 |
#: adminpages/advancedsettings.php:125 adminpages/advancedsettings.php:138
|
675 |
#: adminpages/advancedsettings.php:141 adminpages/advancedsettings.php:157
|
676 |
+
#: adminpages/advancedsettings.php:159
|
677 |
msgid "Yes - Show excerpts."
|
678 |
msgstr ""
|
679 |
|
680 |
#: adminpages/advancedsettings.php:165 adminpages/advancedsettings.php:144
|
681 |
#: adminpages/advancedsettings.php:147 adminpages/advancedsettings.php:163
|
682 |
+
#: adminpages/advancedsettings.php:165
|
683 |
msgid "Hide Ads From Members?"
|
684 |
msgstr ""
|
685 |
|
686 |
#: adminpages/advancedsettings.php:169 adminpages/advancedsettings.php:228
|
687 |
+
#: adminpages/advancedsettings.php:240 adminpages/membershiplevels.php:779
|
688 |
+
#: adminpages/paymentsettings.php:253
|
689 |
+
#: classes/gateways/class.pmprogateway_stripe.php:321 includes/profile.php:125
|
690 |
#: adminpages/advancedsettings.php:128 adminpages/advancedsettings.php:135
|
691 |
#: adminpages/advancedsettings.php:148 adminpages/advancedsettings.php:151
|
692 |
+
#: adminpages/advancedsettings.php:167 adminpages/advancedsettings.php:169
|
693 |
+
#: adminpages/advancedsettings.php:187 adminpages/advancedsettings.php:194
|
694 |
+
#: adminpages/advancedsettings.php:199 adminpages/advancedsettings.php:206
|
695 |
+
#: adminpages/advancedsettings.php:207 adminpages/advancedsettings.php:210
|
696 |
+
#: adminpages/advancedsettings.php:219 adminpages/advancedsettings.php:222
|
697 |
+
#: adminpages/advancedsettings.php:226 adminpages/advancedsettings.php:228
|
698 |
+
#: adminpages/advancedsettings.php:238 adminpages/advancedsettings.php:240
|
699 |
+
#: adminpages/membershiplevels.php:563 adminpages/membershiplevels.php:569
|
700 |
+
#: adminpages/membershiplevels.php:571 adminpages/membershiplevels.php:578
|
701 |
+
#: adminpages/membershiplevels.php:598 adminpages/membershiplevels.php:658
|
702 |
+
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:662
|
703 |
+
#: adminpages/membershiplevels.php:667 adminpages/membershiplevels.php:668
|
704 |
+
#: adminpages/membershiplevels.php:672 adminpages/membershiplevels.php:684
|
705 |
+
#: adminpages/membershiplevels.php:694 adminpages/membershiplevels.php:744
|
706 |
+
#: adminpages/membershiplevels.php:746 adminpages/paymentsettings.php:210
|
707 |
#: adminpages/paymentsettings.php:219 adminpages/paymentsettings.php:236
|
708 |
#: adminpages/paymentsettings.php:414 adminpages/paymentsettings.php:429
|
709 |
#: adminpages/paymentsettings.php:434 adminpages/paymentsettings.php:436
|
719 |
#: classes/gateways/class.pmprogateway_stripe.php:222
|
720 |
#: classes/gateways/class.pmprogateway_stripe.php:249
|
721 |
#: classes/gateways/class.pmprogateway_stripe.php:281
|
722 |
+
#: classes/gateways/class.pmprogateway_stripe.php:283
|
723 |
#: classes/gateways/class.pmprogateway_stripe.php:289
|
724 |
#: classes/gateways/class.pmprogateway_stripe.php:291
|
725 |
#: classes/gateways/class.pmprogateway_stripe.php:297
|
732 |
#: adminpages/advancedsettings.php:170 adminpages/advancedsettings.php:129
|
733 |
#: adminpages/advancedsettings.php:136 adminpages/advancedsettings.php:149
|
734 |
#: adminpages/advancedsettings.php:152 adminpages/advancedsettings.php:168
|
735 |
+
#: adminpages/advancedsettings.php:170
|
736 |
msgid "Hide Ads From All Members"
|
737 |
msgstr ""
|
738 |
|
739 |
#: adminpages/advancedsettings.php:171 adminpages/advancedsettings.php:130
|
740 |
#: adminpages/advancedsettings.php:137 adminpages/advancedsettings.php:150
|
741 |
#: adminpages/advancedsettings.php:153 adminpages/advancedsettings.php:169
|
742 |
+
#: adminpages/advancedsettings.php:171
|
743 |
msgid "Hide Ads From Certain Members"
|
744 |
msgstr ""
|
745 |
|
746 |
#: adminpages/advancedsettings.php:178 adminpages/advancedsettings.php:137
|
747 |
#: adminpages/advancedsettings.php:144 adminpages/advancedsettings.php:157
|
748 |
#: adminpages/advancedsettings.php:160 adminpages/advancedsettings.php:176
|
749 |
+
#: adminpages/advancedsettings.php:178
|
750 |
msgid "Ads from the following plugins will be automatically turned off"
|
751 |
msgstr ""
|
752 |
|
753 |
#: adminpages/advancedsettings.php:179 adminpages/advancedsettings.php:138
|
754 |
#: adminpages/advancedsettings.php:145 adminpages/advancedsettings.php:158
|
755 |
#: adminpages/advancedsettings.php:161 adminpages/advancedsettings.php:177
|
756 |
+
#: adminpages/advancedsettings.php:179
|
757 |
msgid "To hide ads in your template code, use code like the following"
|
758 |
msgstr ""
|
759 |
|
760 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:149
|
761 |
#: adminpages/advancedsettings.php:156 adminpages/advancedsettings.php:169
|
762 |
#: adminpages/advancedsettings.php:172 adminpages/advancedsettings.php:188
|
763 |
+
#: adminpages/advancedsettings.php:190
|
764 |
msgid "Choose Levels to Hide Ads From"
|
765 |
msgstr ""
|
766 |
|
767 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:183
|
768 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:203
|
769 |
#: adminpages/advancedsettings.php:206 adminpages/advancedsettings.php:222
|
770 |
+
#: adminpages/advancedsettings.php:224
|
771 |
msgid "Redirect all traffic from registration page to /susbcription/?"
|
772 |
msgstr ""
|
773 |
|
774 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:183
|
775 |
#: adminpages/advancedsettings.php:190 adminpages/advancedsettings.php:203
|
776 |
#: adminpages/advancedsettings.php:206 adminpages/advancedsettings.php:222
|
777 |
+
#: adminpages/advancedsettings.php:224
|
778 |
msgid "multisite only"
|
779 |
msgstr ""
|
780 |
|
781 |
+
#: adminpages/advancedsettings.php:229 adminpages/membershiplevels.php:779
|
782 |
+
#: adminpages/paymentsettings.php:254
|
783 |
+
#: classes/gateways/class.pmprogateway_stripe.php:323 includes/profile.php:126
|
784 |
#: adminpages/advancedsettings.php:188 adminpages/advancedsettings.php:195
|
785 |
#: adminpages/advancedsettings.php:208 adminpages/advancedsettings.php:211
|
786 |
+
#: adminpages/advancedsettings.php:227 adminpages/advancedsettings.php:229
|
787 |
+
#: adminpages/membershiplevels.php:563 adminpages/membershiplevels.php:569
|
788 |
+
#: adminpages/membershiplevels.php:571 adminpages/membershiplevels.php:578
|
789 |
+
#: adminpages/membershiplevels.php:598 adminpages/membershiplevels.php:658
|
790 |
+
#: adminpages/membershiplevels.php:660 adminpages/membershiplevels.php:662
|
791 |
+
#: adminpages/membershiplevels.php:667 adminpages/membershiplevels.php:668
|
792 |
+
#: adminpages/membershiplevels.php:672 adminpages/membershiplevels.php:684
|
793 |
+
#: adminpages/membershiplevels.php:694 adminpages/membershiplevels.php:744
|
794 |
+
#: adminpages/membershiplevels.php:746 adminpages/paymentsettings.php:211
|
795 |
#: adminpages/paymentsettings.php:220 adminpages/paymentsettings.php:237
|
796 |
#: adminpages/paymentsettings.php:415 adminpages/paymentsettings.php:424
|
797 |
#: adminpages/paymentsettings.php:430 adminpages/paymentsettings.php:435
|
807 |
#: classes/gateways/class.pmprogateway_stripe.php:223
|
808 |
#: classes/gateways/class.pmprogateway_stripe.php:250
|
809 |
#: classes/gateways/class.pmprogateway_stripe.php:282
|
810 |
+
#: classes/gateways/class.pmprogateway_stripe.php:284
|
811 |
#: classes/gateways/class.pmprogateway_stripe.php:290
|
812 |
#: classes/gateways/class.pmprogateway_stripe.php:292
|
813 |
#: classes/gateways/class.pmprogateway_stripe.php:298
|
820 |
#: adminpages/advancedsettings.php:236 adminpages/advancedsettings.php:195
|
821 |
#: adminpages/advancedsettings.php:202 adminpages/advancedsettings.php:215
|
822 |
#: adminpages/advancedsettings.php:218 adminpages/advancedsettings.php:234
|
823 |
+
#: adminpages/advancedsettings.php:236
|
824 |
msgid "Use reCAPTCHA?"
|
825 |
msgstr ""
|
826 |
|
827 |
#: adminpages/advancedsettings.php:241 adminpages/advancedsettings.php:200
|
828 |
#: adminpages/advancedsettings.php:207 adminpages/advancedsettings.php:220
|
829 |
#: adminpages/advancedsettings.php:223 adminpages/advancedsettings.php:239
|
830 |
+
#: adminpages/advancedsettings.php:241
|
831 |
msgid "Yes - Free memberships only."
|
832 |
msgstr ""
|
833 |
|
834 |
#: adminpages/advancedsettings.php:242 adminpages/advancedsettings.php:201
|
835 |
#: adminpages/advancedsettings.php:208 adminpages/advancedsettings.php:221
|
836 |
#: adminpages/advancedsettings.php:224 adminpages/advancedsettings.php:240
|
837 |
+
#: adminpages/advancedsettings.php:242
|
838 |
msgid "Yes - All memberships."
|
839 |
msgstr ""
|
840 |
|
841 |
#: adminpages/advancedsettings.php:244 adminpages/advancedsettings.php:203
|
842 |
#: adminpages/advancedsettings.php:210 adminpages/advancedsettings.php:223
|
843 |
#: adminpages/advancedsettings.php:226 adminpages/advancedsettings.php:242
|
844 |
+
#: adminpages/advancedsettings.php:244
|
845 |
msgid "A free reCAPTCHA key is required."
|
846 |
msgstr ""
|
847 |
|
848 |
#: adminpages/advancedsettings.php:244 adminpages/advancedsettings.php:203
|
849 |
#: adminpages/advancedsettings.php:210 adminpages/advancedsettings.php:223
|
850 |
#: adminpages/advancedsettings.php:226 adminpages/advancedsettings.php:242
|
851 |
+
#: adminpages/advancedsettings.php:244
|
852 |
msgid "Click here to signup for reCAPTCHA"
|
853 |
msgstr ""
|
854 |
|
855 |
+
#: adminpages/advancedsettings.php:250 adminpages/advancedsettings.php:250
|
856 |
msgid "reCAPTCHA Version"
|
857 |
msgstr ""
|
858 |
|
859 |
+
#: adminpages/advancedsettings.php:252 adminpages/advancedsettings.php:252
|
860 |
msgid " v2 - Checkbox"
|
861 |
msgstr ""
|
862 |
|
863 |
+
#: adminpages/advancedsettings.php:253 adminpages/advancedsettings.php:253
|
864 |
msgid "v3 - Invisible"
|
865 |
msgstr ""
|
866 |
|
867 |
+
#: adminpages/advancedsettings.php:255 adminpages/advancedsettings.php:255
|
868 |
msgid "Changing your version will require new API keys."
|
869 |
msgstr ""
|
870 |
|
871 |
#: adminpages/advancedsettings.php:257 adminpages/advancedsettings.php:248
|
872 |
+
#: adminpages/advancedsettings.php:257
|
873 |
msgid "reCAPTCHA Site Key"
|
874 |
msgstr ""
|
875 |
|
876 |
#: adminpages/advancedsettings.php:260 adminpages/advancedsettings.php:251
|
877 |
+
#: adminpages/advancedsettings.php:260
|
878 |
msgid "reCAPTCHA Secret Key"
|
879 |
msgstr ""
|
880 |
|
881 |
#: adminpages/advancedsettings.php:266 adminpages/advancedsettings.php:218
|
882 |
#: adminpages/advancedsettings.php:225 adminpages/advancedsettings.php:238
|
883 |
#: adminpages/advancedsettings.php:241 adminpages/advancedsettings.php:257
|
884 |
+
#: adminpages/advancedsettings.php:266
|
885 |
msgid "Require Terms of Service on signups?"
|
886 |
msgstr ""
|
887 |
|
888 |
#: adminpages/advancedsettings.php:273 adminpages/advancedsettings.php:225
|
889 |
#: adminpages/advancedsettings.php:232 adminpages/advancedsettings.php:245
|
890 |
#: adminpages/advancedsettings.php:248 adminpages/advancedsettings.php:264
|
891 |
+
#: adminpages/advancedsettings.php:273
|
892 |
msgid ""
|
893 |
"If yes, create a WordPress page containing your TOS agreement and assign it "
|
894 |
"using the dropdown above."
|
895 |
msgstr ""
|
896 |
|
897 |
#: adminpages/advancedsettings.php:384 adminpages/pagesettings.php:315
|
898 |
+
#: adminpages/paymentsettings.php:284 adminpages/advancedsettings.php:284
|
899 |
#: adminpages/advancedsettings.php:355 adminpages/advancedsettings.php:359
|
900 |
#: adminpages/advancedsettings.php:368 adminpages/advancedsettings.php:375
|
901 |
+
#: adminpages/advancedsettings.php:384 adminpages/pagesettings.php:209
|
902 |
+
#: adminpages/pagesettings.php:223 adminpages/pagesettings.php:251
|
903 |
+
#: adminpages/pagesettings.php:254 adminpages/pagesettings.php:294
|
904 |
+
#: adminpages/pagesettings.php:295 adminpages/pagesettings.php:310
|
905 |
+
#: adminpages/pagesettings.php:315 adminpages/paymentsettings.php:238
|
906 |
+
#: adminpages/paymentsettings.php:250 adminpages/paymentsettings.php:267
|
907 |
+
#: adminpages/paymentsettings.php:485 adminpages/paymentsettings.php:526
|
908 |
+
#: adminpages/paymentsettings.php:532 adminpages/paymentsettings.php:534
|
909 |
msgid "Save Settings"
|
910 |
msgstr ""
|
911 |
|
993 |
msgstr ""
|
994 |
|
995 |
#: adminpages/dashboard.php:215 adminpages/memberslist.php:165
|
996 |
+
#: pages/checkout.php:118 shortcodes/pmpro_account.php:110
|
997 |
#: adminpages/dashboard.php:215 adminpages/dashboard.php:223
|
998 |
#: adminpages/memberslist.php:112 adminpages/memberslist.php:145
|
999 |
#: adminpages/memberslist.php:155 adminpages/memberslist.php:165
|
1063 |
msgstr ""
|
1064 |
|
1065 |
#: adminpages/dashboard.php:282 adminpages/discountcodes.php:447
|
1066 |
+
#: adminpages/discountcodes.php:747 adminpages/orders.php:409
|
1067 |
+
#: adminpages/orders.php:1308 adminpages/dashboard.php:282
|
1068 |
#: adminpages/dashboard.php:290 adminpages/discountcodes.php:311
|
1069 |
#: adminpages/discountcodes.php:314 adminpages/discountcodes.php:315
|
1070 |
#: adminpages/discountcodes.php:316 adminpages/discountcodes.php:321
|
1087 |
msgid "Code"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
+
#: adminpages/dashboard.php:283 adminpages/orders.php:1309
|
1091 |
#: adminpages/reports/login.php:179
|
1092 |
#: classes/gateways/class.pmprogateway_payflowpro.php:116
|
1093 |
#: adminpages/dashboard.php:283 adminpages/dashboard.php:291
|
1104 |
msgid "User"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
+
#: adminpages/dashboard.php:284 includes/privacy.php:241 pages/billing.php:49
|
1108 |
#: pages/cancel.php:60 pages/invoice.php:103 pages/levels.php:35
|
1109 |
#: shortcodes/pmpro_account.php:44 shortcodes/pmpro_account.php:128
|
1110 |
#: adminpages/dashboard.php:284 adminpages/dashboard.php:292
|
1113 |
#: pages/billing.php:27 pages/billing.php:28 pages/billing.php:30
|
1114 |
#: pages/billing.php:41 pages/billing.php:44 pages/billing.php:45
|
1115 |
#: pages/cancel.php:52 pages/cancel.php:60 pages/cancel.php:61
|
1116 |
+
#: pages/invoice.php:89 pages/invoice.php:102 pages/invoice.php:103
|
1117 |
+
#: pages/invoice.php:109 pages/levels.php:13 pages/levels.php:35
|
1118 |
+
#: shortcodes/pmpro_account.php:43 shortcodes/pmpro_account.php:44
|
1119 |
+
#: shortcodes/pmpro_account.php:123 shortcodes/pmpro_account.php:125
|
1120 |
+
#: shortcodes/pmpro_account.php:126 shortcodes/pmpro_account.php:128
|
1121 |
msgid "Level"
|
1122 |
msgstr ""
|
1123 |
|
1124 |
+
#: adminpages/dashboard.php:285 adminpages/orders.php:627
|
1125 |
+
#: adminpages/orders.php:1312 adminpages/templates/orders-email.php:64
|
1126 |
#: adminpages/templates/orders-print.php:93 includes/privacy.php:285
|
1127 |
#: pages/confirmation.php:96 pages/invoice.php:79 adminpages/dashboard.php:285
|
1128 |
#: adminpages/dashboard.php:293 adminpages/orders.php:320
|
1137 |
#: adminpages/orders.php:1236 adminpages/orders.php:1357
|
1138 |
#: adminpages/templates/orders-email.php:64
|
1139 |
#: adminpages/templates/orders-print.php:93 includes/privacy.php:285
|
1140 |
+
#: pages/confirmation.php:96 pages/invoice.php:78 pages/invoice.php:79
|
1141 |
+
#: pages/invoice.php:82 pages/invoice.php:84
|
1142 |
msgid "Total"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
+
#: adminpages/dashboard.php:286 adminpages/orders.php:712
|
1146 |
+
#: adminpages/orders.php:1316 includes/privacy.php:202 includes/privacy.php:309
|
1147 |
#: pages/invoice.php:29 shortcodes/pmpro_account.php:130
|
1148 |
#: adminpages/dashboard.php:286 adminpages/dashboard.php:294
|
1149 |
#: adminpages/orders.php:373 adminpages/orders.php:423
|
1156 |
#: adminpages/orders.php:1112 adminpages/orders.php:1143
|
1157 |
#: adminpages/orders.php:1149 adminpages/orders.php:1240
|
1158 |
#: adminpages/orders.php:1361 includes/privacy.php:202 includes/privacy.php:309
|
1159 |
+
#: pages/invoice.php:29 shortcodes/pmpro_account.php:130
|
1160 |
msgid "Status"
|
1161 |
msgstr ""
|
1162 |
|
1163 |
+
#: adminpages/dashboard.php:287 adminpages/orders.php:815
|
1164 |
+
#: adminpages/orders.php:1317 pages/invoice.php:101
|
1165 |
#: shortcodes/pmpro_account.php:127 adminpages/dashboard.php:287
|
1166 |
#: adminpages/dashboard.php:295 adminpages/orders.php:442
|
1167 |
#: adminpages/orders.php:492 adminpages/orders.php:493
|
1174 |
#: adminpages/orders.php:1113 adminpages/orders.php:1144
|
1175 |
#: adminpages/orders.php:1150 adminpages/orders.php:1241
|
1176 |
#: adminpages/orders.php:1362 pages/account.php:91 pages/invoice.php:87
|
1177 |
+
#: pages/invoice.php:100 pages/invoice.php:101 pages/invoice.php:105
|
1178 |
+
#: pages/invoice.php:107 shortcodes/pmpro_account.php:122
|
1179 |
+
#: shortcodes/pmpro_account.php:124 shortcodes/pmpro_account.php:125
|
1180 |
+
#: shortcodes/pmpro_account.php:127
|
1181 |
msgid "Date"
|
1182 |
msgstr ""
|
1183 |
|
1184 |
+
#: adminpages/dashboard.php:294 adminpages/orders.php:1462
|
1185 |
#: adminpages/dashboard.php:294 adminpages/dashboard.php:302
|
1186 |
#: adminpages/orders.php:674 adminpages/orders.php:977
|
1187 |
#: adminpages/orders.php:995 adminpages/orders.php:1005
|
1192 |
msgid "No orders found."
|
1193 |
msgstr ""
|
1194 |
|
1195 |
+
#: adminpages/dashboard.php:311 adminpages/orders.php:1345
|
1196 |
#: adminpages/dashboard.php:311 adminpages/dashboard.php:319
|
1197 |
#: adminpages/orders.php:630 adminpages/orders.php:933
|
1198 |
#: adminpages/orders.php:943 adminpages/orders.php:972
|
1202 |
msgid "deleted"
|
1203 |
msgstr ""
|
1204 |
|
1205 |
+
#: adminpages/dashboard.php:313 adminpages/orders.php:1347
|
1206 |
#: adminpages/dashboard.php:313 adminpages/dashboard.php:321
|
1207 |
#: adminpages/orders.php:1275 adminpages/orders.php:1397
|
1208 |
msgid "none"
|
1329 |
msgstr ""
|
1330 |
|
1331 |
#: adminpages/discountcodes.php:442 adminpages/discountcodes.php:746
|
1332 |
+
#: adminpages/membershiplevels.php:346 adminpages/membershiplevels.php:741
|
1333 |
+
#: adminpages/memberslist.php:164 adminpages/orders.php:1307
|
1334 |
#: adminpages/reports/login.php:178 adminpages/templates/orders-email.php:46
|
1335 |
#: adminpages/templates/orders-print.php:75 adminpages/discountcodes.php:306
|
1336 |
#: adminpages/discountcodes.php:309 adminpages/discountcodes.php:310
|
1344 |
#: adminpages/membershiplevels.php:284 adminpages/membershiplevels.php:286
|
1345 |
#: adminpages/membershiplevels.php:288 adminpages/membershiplevels.php:312
|
1346 |
#: adminpages/membershiplevels.php:322 adminpages/membershiplevels.php:344
|
1347 |
+
#: adminpages/membershiplevels.php:346 adminpages/membershiplevels.php:505
|
1348 |
+
#: adminpages/membershiplevels.php:511 adminpages/membershiplevels.php:513
|
1349 |
+
#: adminpages/membershiplevels.php:540 adminpages/membershiplevels.php:541
|
1350 |
+
#: adminpages/membershiplevels.php:583 adminpages/membershiplevels.php:629
|
1351 |
+
#: adminpages/membershiplevels.php:631 adminpages/membershiplevels.php:636
|
1352 |
+
#: adminpages/membershiplevels.php:637 adminpages/membershiplevels.php:641
|
1353 |
+
#: adminpages/membershiplevels.php:653 adminpages/membershiplevels.php:663
|
1354 |
+
#: adminpages/membershiplevels.php:713 adminpages/membershiplevels.php:715
|
1355 |
#: adminpages/memberslist.php:111 adminpages/memberslist.php:144
|
1356 |
#: adminpages/memberslist.php:154 adminpages/memberslist.php:164
|
1357 |
#: adminpages/orders.php:597 adminpages/orders.php:900
|
1366 |
msgid "ID"
|
1367 |
msgstr ""
|
1368 |
|
1369 |
+
#: adminpages/discountcodes.php:443 adminpages/orders.php:402
|
1370 |
#: adminpages/discountcodes.php:307 adminpages/discountcodes.php:310
|
1371 |
#: adminpages/discountcodes.php:311 adminpages/discountcodes.php:312
|
1372 |
#: adminpages/discountcodes.php:317 adminpages/discountcodes.php:382
|
1389 |
msgstr ""
|
1390 |
|
1391 |
#: adminpages/discountcodes.php:503
|
1392 |
+
#: classes/gateways/class.pmprogateway_braintree.php:479
|
1393 |
+
#: classes/gateways/class.pmprogateway_stripe.php:565 pages/billing.php:321
|
1394 |
+
#: pages/checkout.php:389 adminpages/discountcodes.php:367
|
1395 |
#: adminpages/discountcodes.php:370 adminpages/discountcodes.php:371
|
1396 |
#: adminpages/discountcodes.php:372 adminpages/discountcodes.php:377
|
1397 |
#: adminpages/discountcodes.php:442 adminpages/discountcodes.php:483
|
1419 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
1420 |
#: classes/gateways/class.pmprogateway_stripe.php:570
|
1421 |
#: classes/gateways/class.pmprogateway_stripe.php:597
|
1422 |
+
#: classes/gateways/class.pmprogateway_stripe.php:598
|
1423 |
#: classes/gateways/class.pmprogateway_stripe.php:613
|
1424 |
#: classes/gateways/class.pmprogateway_stripe.php:621
|
1425 |
#: classes/gateways/class.pmprogateway_stripe.php:628
|
1472 |
#: adminpages/membershiplevels.php:337 adminpages/membershiplevels.php:339
|
1473 |
#: adminpages/membershiplevels.php:341 adminpages/membershiplevels.php:342
|
1474 |
#: adminpages/membershiplevels.php:365 adminpages/membershiplevels.php:375
|
1475 |
+
#: adminpages/membershiplevels.php:398 adminpages/membershiplevels.php:400
|
1476 |
+
#: adminpages/membershiplevels.php:507 adminpages/membershiplevels.php:513
|
1477 |
+
#: adminpages/membershiplevels.php:515 adminpages/membershiplevels.php:542
|
1478 |
+
#: pages/levels.php:14
|
1479 |
msgid "Initial Payment"
|
1480 |
msgstr ""
|
1481 |
|
1488 |
#: adminpages/membershiplevels.php:340 adminpages/membershiplevels.php:350
|
1489 |
#: adminpages/membershiplevels.php:352 adminpages/membershiplevels.php:353
|
1490 |
#: adminpages/membershiplevels.php:376 adminpages/membershiplevels.php:386
|
1491 |
+
#: adminpages/membershiplevels.php:409 adminpages/membershiplevels.php:411
|
1492 |
msgid "The initial amount collected at registration."
|
1493 |
msgstr ""
|
1494 |
|
1501 |
#: adminpages/membershiplevels.php:344 adminpages/membershiplevels.php:354
|
1502 |
#: adminpages/membershiplevels.php:356 adminpages/membershiplevels.php:357
|
1503 |
#: adminpages/membershiplevels.php:380 adminpages/membershiplevels.php:390
|
1504 |
+
#: adminpages/membershiplevels.php:413 adminpages/membershiplevels.php:415
|
1505 |
msgid "Recurring Subscription"
|
1506 |
msgstr ""
|
1507 |
|
1514 |
#: adminpages/membershiplevels.php:345 adminpages/membershiplevels.php:355
|
1515 |
#: adminpages/membershiplevels.php:357 adminpages/membershiplevels.php:358
|
1516 |
#: adminpages/membershiplevels.php:381 adminpages/membershiplevels.php:391
|
1517 |
+
#: adminpages/membershiplevels.php:414 adminpages/membershiplevels.php:416
|
1518 |
msgid "Check if this level has a recurring subscription payment."
|
1519 |
msgstr ""
|
1520 |
|
1527 |
#: adminpages/membershiplevels.php:359 adminpages/membershiplevels.php:361
|
1528 |
#: adminpages/membershiplevels.php:362 adminpages/membershiplevels.php:385
|
1529 |
#: adminpages/membershiplevels.php:395 adminpages/membershiplevels.php:418
|
1530 |
+
#: adminpages/membershiplevels.php:420
|
1531 |
msgid "Billing Amount"
|
1532 |
msgstr ""
|
1533 |
|
1534 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1535 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1536 |
+
#: classes/gateways/class.pmprogateway_stripe.php:608
|
1537 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1538 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1539 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
1546 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1547 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1548 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1549 |
+
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:449
|
1550 |
+
#: adminpages/membershiplevels.php:476 adminpages/membershiplevels.php:477
|
1551 |
+
#: adminpages/membershiplevels.php:479 adminpages/membershiplevels.php:480
|
1552 |
+
#: adminpages/membershiplevels.php:501 adminpages/membershiplevels.php:511
|
1553 |
+
#: adminpages/membershiplevels.php:535 adminpages/membershiplevels.php:537
|
1554 |
#: classes/gateways/class.pmprogateway_stripe.php:521
|
1555 |
#: classes/gateways/class.pmprogateway_stripe.php:522
|
1556 |
#: classes/gateways/class.pmprogateway_stripe.php:532
|
1562 |
#: classes/gateways/class.pmprogateway_stripe.php:588
|
1563 |
#: classes/gateways/class.pmprogateway_stripe.php:599
|
1564 |
#: classes/gateways/class.pmprogateway_stripe.php:637
|
1565 |
+
#: classes/gateways/class.pmprogateway_stripe.php:655
|
1566 |
#: classes/gateways/class.pmprogateway_stripe.php:664
|
1567 |
#: classes/gateways/class.pmprogateway_stripe.php:671
|
1568 |
#: classes/gateways/class.pmprogateway_stripe.php:679
|
1574 |
|
1575 |
#: adminpages/discountcodes.php:607 adminpages/discountcodes.php:661
|
1576 |
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:537
|
1577 |
+
#: classes/gateways/class.pmprogateway_stripe.php:610
|
1578 |
#: adminpages/discountcodes.php:446 adminpages/discountcodes.php:466
|
1579 |
#: adminpages/discountcodes.php:467 adminpages/discountcodes.php:468
|
1580 |
#: adminpages/discountcodes.php:473 adminpages/discountcodes.php:492
|
1587 |
#: adminpages/membershiplevels.php:374 adminpages/membershiplevels.php:376
|
1588 |
#: adminpages/membershiplevels.php:377 adminpages/membershiplevels.php:400
|
1589 |
#: adminpages/membershiplevels.php:410 adminpages/membershiplevels.php:433
|
1590 |
+
#: adminpages/membershiplevels.php:435 adminpages/membershiplevels.php:449
|
1591 |
+
#: adminpages/membershiplevels.php:476 adminpages/membershiplevels.php:477
|
1592 |
+
#: adminpages/membershiplevels.php:479 adm
|
|