編集: 特に PayPal のエラーの一番下に到達しました。何らかの理由で、このエラーはテスト カード番号が (サンドボックス モードで) 使用された場合にのみ発生し、実際のクレジット カード番号を試すとエラーが解消されます。これは、iFrame を使用する PayPal の新しい通貨選択機能によるものだと思います。
webview_flutter を使用して PayPal チェックアウト ページを通過しています。以前は機能していましたが、おそらく PayPal 側の更新によって機能しなくなり、次のコンテンツ セキュリティ ポリシー エラーが発生しました。
cancelBuffer: slot 1
I/chromium(19561): [INFO:CONSOLE(425)] "Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'nonce-PHXXXXXXXXXXXXXia13HX3l2n4' 'self' https://*.paypal.com https://*.paypalobjects.com 'unsafe-inline' 'unsafe-eval'". Note that 'unsafe-inline' is ignored if either a hash or nonce value is present in the source list.
I/chromium(19561): ", source: https://www.paypal.com/webapps/xoonboarding?token=EC-1G3XXXXXX5C&country.x=CA&locale.x=en_CA&fromSignupLite=true&fallback=1&reason=dW5oYW5XXXXXZ2VuY3k%3D (425)
"Refused to connect to 'https://www.google-analytics.com/collect' because it violates the following Content Security Policy directive: "connect-src 'self' https://*.paypal.com https://*.paypalobjects.com https://*.qualtrics.com".
プラグインのさまざまなバージョンとさまざまなデバイスを試しましたが、毎回このエラーに遭遇します。(PayPal で支払い情報を入力した後、チェックアウト ボタンをクリックしたとき)。
私のフラッターコード:
body: WebView(
initialUrl: checkoutUrl,
javascriptMode: JavascriptMode.unrestricted,
navigationDelegate: (NavigationRequest request) {
if (request.url.contains(returnURL)) {
final uri = Uri.parse(request.url);
final payerID = uri.queryParameters['PayerID'];
if (payerID != null) {
services
.executePayment(executeUrl, payerID, accessToken)
.then((id) {
widget.onFinish(id);
Navigator.of(context).pop();
});
} else {
Navigator.of(context).pop();
}
Navigator.of(context).pop();
}
if (request.url.contains(cancelURL)) {
Navigator.of(context).pop();
}
return NavigationDecision.navigate;
},
),