Заблокирован кадр от доступа к кадру с источником "https://www.paypal.com". Протоколы, домены и порты должны совпадать. Что это значит? - PullRequest
1 голос
/ 08 апреля 2020

У меня есть веб-сайт, на котором я использую умные кнопки PayPal. При тестировании в среде «Песочница» он работал отлично, но когда я изменил идентификатор клиента с «песочницы» на идентификатор реального клиента, платежи не будут go through.

Кнопки PayPal по-прежнему отображаются, и они по-прежнему переносят вас в окно оформления заказа и позволяют оплачивать, но когда вы нажимаете кнопку оплаты, окно закрывается, и покупатель получает электронное письмо, в котором говорится, что PayPal Нашли какие-то риски, связанные с оплатой? Нажмите кнопки PayPal, в журнале консоли JavaScript я получаю эту ошибку 3 раза:

Blocked a frame with origin "https://www.mobilemastersshop.com" from accessing a frame with origin "https://www.paypal.com". Protocols, domains, and ports must match.

. По этой причине она не работает и, если да, то как ее исправить? Я использую SSL-сертификат от Let's Encrypt, поэтому URL-адрес является безопасным, но нужно ли что-либо изменить в файле .htaccess для работы PayPal?

После комментариев

Я думаю, что проблема заключается в том, что это не этот раздел:

enter image description here

Но я не знаю, куда включить эти переменные. Мой код рендеринга кнопки PayPal:

<script>
        paypal.Buttons({
            createOrder: function(data, actions) {
                // This function sets up the details of the transaction, including the amount and line item details.
                return actions.order.create({
                    "purchase_units": [{
                        "amount": {
                            "value": applyDiscount(),
                            "currency_code": "USD",
                            "breakdown": {
                                "item_total": {
                                    "currency_code": "USD",
                                    "value": applyDiscount()
                                },
                            },
                        },
                        "items": PayPalItems()
                    }
                    ]
                });
            },
            onApprove: function(data, actions) {
                // This function captures the funds from the transaction.
                return actions.order.capture().then(function(details) {
                    // This function shows a transaction success message to your buyer.
                    alert('Transaction completed by ' + details.payer.name.given_name);
                    window.location.href = "orderConfirmed.php";
                    clearCart()
                });
            }
        }).render('#paypal-button-container');
        //This function displays Smart Payment Buttons on your web page.
    </script>

Я догадался, что в этом сценарии переменные должны иметь go, поэтому мой сценарий Live Client ID выглядит следующим образом:

<script src="https://www.paypal.com/sdk/js?client-id=AU25a1zm8IuMS_HHl-90AUaHjQBdA-TnzsaSkF2do60t7VS8IukeuBhUY552W1pY_CE0QIY2h9i5p1cK">
    // Add your client ID and secret
    let PAYPAL_CLIENT = 'AU25a1zm8IuMS_HHl-90AUaHjQBdA-TnzsaSkF2do60t7VS8IukeuBhUY552W1pY_CE0QIY2h9i5p1cK';
    let PAYPAL_SECRET = 'EIwsaGfAw7tiNBJBBb7jVWxrH6fqSLJ0fg-oNAJ-pQc37nM0ndSwqN6L0tRIvrNv9y5l2rXJdw914NUE';

    // Point your server to the PayPal API
    let PAYPAL_ORDER_API = 'https://api.paypal.com/v2/checkout/orders/';
</script>

1 Ответ

0 голосов
/ 09 апреля 2020
<script src="https://www.paypal.com/sdk/js?client-id=AU25a1zm8IuMS_HHl-90AUaHjQBdA-TnzsaSkF2do60t7VS8IukeuBhUY552W1pY_CE0QIY2h9i5p1cK">
    // Add your client ID and secret
    let PAYPAL_CLIENT = 'AU25a1zm8IuMS_HHl-90AUaHjQBdA-TnzsaSkF2do60t7VS8IukeuBhUY552W1pY_CE0QIY2h9i5p1cK';
    let PAYPAL_SECRET = 'EIwsaGfAw...redacted';

    // Point your server to the PayPal API
    let PAYPAL_ORDER_API = 'https://api.paypal.com/v2/checkout/orders/';
</script>

Интеграция на стороне клиента использует только идентификатор клиента, который находится в первой строке скрипта. Вся остальная информация, которую вы добавили, предназначена для интеграции на стороне сервера, здесь не используется и поэтому не нужна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...