#ios #ionic-framework #stripe-payments #wkwebview #cordova-ios
#iOS #ionic-framework #stripe-платежи #wkwebview #кордова-ios
Вопрос:
мы переходим с нашим приложением на новый wkweview из-за требований Apple.
Одно из приложений использует StripeJS sdk, чтобы разрешить оплату в приложении. Проблема возникает, когда приложение загружается, а stripe SDK включен со следующим кодом:
// Payment service is not initialized yet
$.ajax({
type: "GET",
cache: true,
url: "https://js.stripe.com/v3/",
dataType: "script",
error: function(XMLHttpRequest, textStatus, errorThrown) {
Logger.error("An error ocurred during SDK download");
def.reject();
},
success: function() {
Logger.debug("Stipe JDK downloaded correctly");
initialized = true;
def.resolve();
}
});
Мы уже пытались использовать » тег head в index.html или динамически создает один ТЕГ скрипта и добавляет его к телу: но никто не устраняет проблему.
Тесты включения скрипта
[Метод Angular $http]
$http({
method: "GET",
url: "https://js.stripe.com/v3/"
}).then(
function(res) {
angular.element("body").append("<script>" res.data "</script>");
}, function(err) {
def.reject();
});
[index.html ]
<html>
<head>
<script type="text/javascript" src="https://js.stripe.com/v3/"></script>
...
Проблема
Открывается страница браузера, и приложение остается в фоновом режиме; более конкретно, случай «METRICS_CONTROLLER» находится в переключателе в строке 767 (см. Библиотеку по URL < https://js.stripe.com/v3 / > ).
У кого-нибудь есть идея, почему, включая этот скрипт, открывается страница браузера?
Комментарии:
1. Вы пытаетесь загрузить Stripe.js из локальной кэшированной копии с использованием этого метода? Это не сработает, поскольку Stripe.js всегда должен включаться напрямую с серверов Stripe.
2. Приведенный выше метод является лишь примером — тег head или способ загрузки angular $ http не кэшируются, но проблема сохраняется:(
3. Если это пример, можете ли вы предоставить точный код, который вы используете для включения Stripe.js ? Он всегда должен включаться непосредственно с сайта Stripe, а не загружаться локально (к чему, похоже, приводит этот пример).
4. Спасибо taintedzodiac за ответ. Я редактирую сообщение, добавляя скрипт, добавляя тест. Саймон
5. Я также переместил приложение Ionic 3 на Ionic 4, и возникла проблема. Я также попытался динамически вставить скрипт, и страница открывается. Даже после возврата в приложение, если вы попытаетесь произвести платеж, это снова откроет новые страницы. Служба поддержки Stripe заявила, что они активно не поддерживают интеграцию с cordova. Мое решение состояло в том, чтобы создать форму кредитной карты в приложении и управлять всем процессом stripe (назначение платежа, способ оплаты, подписка …) в моем серверной части
Ответ №1:
просто чтобы ответить на мой вопрос, мы обнаружили проблему.
Проблема заключалась в разрешении навигации по URL, не разрешенному конфигурацией cordova ( файл ‘config.xml ‘ ). Более конкретно, нам нужно добавить следующую строку в нашу конфигурацию. файл
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
Итак, наконец, наше определение разрешения CORS:
<access origin="*" />
<allow-intent href="sms:*" />
<allow-intent href="tel:*" />
<allow-intent href="geo:*" />
<allow-intent href="mailto:*" />
<allow-intent href="file://*/*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
‘*’ связано с тем, что приложение может запускать внешний ресурс, поэтому мы не можем знать, какой URL-адрес будет открыт пользователем в приложении.
Надеюсь, это поможет @saperlipopette Саймон