|
1 | | -<div x-data="{amount: 30, currency: 'EUR', frequency: 'once', oneTimePayment: null, oneTimePaymentStatus: {validCardNum: false, captcha: null, errorMessage: '', inProgress: false, success: false}, recurringPayment: new RecurringPayment(), acceptTerms: false, captchaState: null}" x-init="oneTimePayment = new OneTimePayment(oneTimePaymentStatus)"> |
| 1 | +<div x-data="{amount: 30, currency: 'EUR', frequency: 'once', oneTimePayment: null, oneTimePaymentStatus: {validCardNum: false, captcha: null, errorMessage: '', inProgress: false, success: false}, recurringPayment: null, recurringPaymentStatus: {captcha: null, errorMessage: '', inProgress: false}, acceptTerms: false, oneTimeCaptchaState: null, recurringCaptchaState: null}" x-init="oneTimePayment = new OneTimePayment(oneTimePaymentStatus); recurringPayment = new RecurringPayment(recurringPaymentStatus)"> |
2 | 2 | <div x-show="!oneTimePaymentStatus.success"> |
3 | 3 | <div class="flex flex-wrap md:flex-nowrap"> |
4 | 4 | <div class="w-full mb-4 md:w-1/2 md:pr-3"> |
|
30 | 30 | </div> |
31 | 31 | </div> |
32 | 32 |
|
33 | | - <form x-show="frequency === 'once'" @submit.prevent="oneTimePayment.charge(amount, currency); $refs.captcha.reset()"> |
| 33 | + <form x-show="frequency === 'once'" @submit.prevent="oneTimePayment.charge(amount, currency); $refs.oneTimeCaptcha.reset()"> |
34 | 34 | <div class="mb-4"> |
35 | 35 | <label class="label-uppercase mb-2">{{ i18n "donate_creditcard_number" }}</label> |
36 | 36 | <div> <!-- wrapper needed for stripe text field --> |
|
43 | 43 |
|
44 | 44 | <p class="font-p mb-4">{{ partial "checkbox.html" (dict "context" . "alpineVariable" "acceptTerms" "label" (i18n "accept_privacy" | safeHTML)) }}</p> |
45 | 45 |
|
46 | | - <button :disabled="oneTimePaymentStatus.inProgress || !oneTimePaymentStatus.validCardNum || !acceptTerms || captchaState == 'verifying'" type="submit" class="btn btn-primary w-full md:w-64" data-umami-event="donate-creditcard-onetime-checkout"> |
| 46 | + <button :disabled="oneTimePaymentStatus.inProgress || !oneTimePaymentStatus.validCardNum || !acceptTerms || oneTimeCaptchaState == 'verifying'" type="submit" class="btn btn-primary w-full md:w-64" data-umami-event="donate-creditcard-onetime-checkout"> |
47 | 47 | <i :class="{'fa-credit-card': !oneTimePaymentStatus.inProgress, 'fa-spinner fa-spin': oneTimePaymentStatus.inProgress}" class="fa-solid" aria-hidden="true"></i> |
48 | 48 | {{ i18n "donate_creditcard_once_paynow" }} |
49 | 49 | </button> |
50 | 50 |
|
51 | | - {{ $challengeUrl := printf "%s/donations/stripe/payments/challenge" .Site.Params.apiBaseUrl }} |
52 | | - {{ partial "captcha.html" (dict "challengeUrl" $challengeUrl "captchaPayload" "oneTimePaymentStatus.captcha" "captchaState" "captchaState") }} |
| 51 | + {{ $oneTimeChallengeUrl := printf "%s/donations/stripe/payments/challenge" .Site.Params.apiBaseUrl }} |
| 52 | + {{ partial "captcha.html" (dict "challengeUrl" $oneTimeChallengeUrl "captchaPayload" "oneTimePaymentStatus.captcha" "captchaState" "oneTimeCaptchaState" "ref" "oneTimeCaptcha") }} |
53 | 53 |
|
54 | 54 | <p class="text-sm text-red-600 mt-2" x-text="oneTimePaymentStatus.errorMessage"></p> |
55 | 55 | </div> |
56 | 56 | </form> |
57 | 57 |
|
58 | | - <div x-show="frequency === 'recurring'" class="text-center"> |
| 58 | + <form x-show="frequency === 'recurring'" @submit.prevent="recurringPayment.checkout(amount, currency, '{{ .Site.Language.Lang }}'); $refs.recurringCaptcha.reset()" class="text-center"> |
59 | 59 | <p class="font-p mb-4">{{ i18n "donate_creditcard_recurring_instruction" | safeHTML }}</p> |
60 | 60 | <p class="font-p mb-4">{{ partial "checkbox.html" (dict "context" . "alpineVariable" "acceptTerms" "label" (i18n "accept_privacy" | safeHTML)) }}</p> |
61 | | - <button type="button" class="btn btn-primary w-full md:w-64" data-umami-event="donate-creditcard-recurring-checkout" @click="recurringPayment.checkout(amount, currency, '{{ .Site.Language.Lang }}')" :disabled="!acceptTerms"> |
62 | | - <i class="fa-solid fa-external-link" aria-hidden="true"></i> {{ i18n "donate_creditcard_recurring_calltoaction" }} |
| 61 | + <button type="submit" class="btn btn-primary w-full md:w-64" data-umami-event="donate-creditcard-recurring-checkout" :disabled="!acceptTerms || recurringPaymentStatus.inProgress || recurringCaptchaState == 'verifying'"> |
| 62 | + <i :class="{'fa-external-link': !recurringPaymentStatus.inProgress, 'fa-spinner fa-spin': recurringPaymentStatus.inProgress}" class="fa-solid" aria-hidden="true"></i> {{ i18n "donate_creditcard_recurring_calltoaction" }} |
63 | 63 | </button> |
64 | | - </div> |
| 64 | + |
| 65 | + {{ $recurringChallengeUrl := printf "%s/donations/stripe/subscriptions/challenge" .Site.Params.apiBaseUrl }} |
| 66 | + {{ partial "captcha.html" (dict "challengeUrl" $recurringChallengeUrl "captchaPayload" "recurringPaymentStatus.captcha" "captchaState" "recurringCaptchaState" "ref" "recurringCaptcha") }} |
| 67 | + |
| 68 | + <p class="text-sm text-red-600 mt-2" x-text="recurringPaymentStatus.errorMessage"></p> |
| 69 | + </form> |
65 | 70 | </div> |
66 | 71 |
|
67 | 72 | <div x-show="oneTimePaymentStatus.success" x-cloak> |
|
0 commit comments