PAYATHON 2026

如何使用 Flex/AIR HTML component 访问 HTTPS 网站?

支付老李

结论

可以。Flex/AIR 的 HTML component 可以加载远程 HTTPS 页面,使用方式与普通 HTTP 页面基本相同,只需将目标地址设为以 https:// 开头的 URL。

支付页面能否正常运行,还要看服务器证书、TLS 兼容性、页面依赖的 JavaScript 和 Web 功能,以及支付服务商是否允许嵌入页面。涉及信用卡支付时,不要在 AIR 应用中自行采集或处理卡号。建议加载支付服务商托管的结账页面,或者直接通过系统默认浏览器完成支付。

基本用法

在 MXML 中可以直接设置 location:

<mx:HTML
    id="paymentView"
    width="100%"
    height="100%"
    location="https://payments.example.com/checkout"
/>

也可以在 ActionScript 中动态加载支付地址:

private function openPayment(paymentUrl:String):void
{
    if (paymentUrl.indexOf("https://") != 0)
    {
        throw new ArgumentError("Payment URL must use HTTPS");
    }

    paymentView.location = paymentUrl;
}

使用 HTMLLoader 时,写法如下:

import flash.html.HTMLLoader;
import flash.net.URLRequest;

var loader:HTMLLoader = new HTMLLoader();
loader.width = 800;
loader.height = 600;
loader.load(new URLRequest(
    "https://payments.example.com/checkout"
));

addChild(loader);

具体可用的组件名称和属性取决于 Flex/AIR SDK 版本,但加载 HTTPS 地址不需要设置特殊的协议参数。

推荐的支付流程

不要自行拼接含有卡号、CVV 或其他敏感信息的 URL。通常应由后端先向支付服务商创建支付会话,再把服务商返回的 HTTPS 结账地址交给 AIR 应用:

private function showHostedCheckout(checkoutUrl:String):void
{
    var urlPattern:RegExp = /^https:\/\/payments\.example\.com\//i;

    if (!urlPattern.test(checkoutUrl))
    {
        throw new ArgumentError("Unexpected payment URL");
    }

    paymentView.location = checkoutUrl;
}

支付完成后,服务端应通过支付服务商的回调或 Webhook 确认最终状态。不能只因为内嵌页面跳转到“支付成功”地址,就认定付款已经成功,因为页面跳转可能被伪造,也可能在中途被打断。

如果支付服务商不支持嵌入式浏览器,可以改用系统默认浏览器:

import flash.net.URLRequest;
import flash.net.navigateToURL;

navigateToURL(
    new URLRequest("https://payments.example.com/checkout"),
    "_blank"
);

系统浏览器通常更能兼容现代登录、3-D Secure 验证、弹窗和多因素认证流程。

证书与 TLS 限制

HTTPS 页面提供的证书必须能被操作系统和 AIR 运行环境验证。以下情况可能导致加载失败:

  • 使用自签名证书,或者证书链不完整。
  • 证书已经过期、域名不匹配或不受信任。
  • 支付网站只支持较新的 TLS、加密套件或浏览器能力,而当前 AIR 运行时的内嵌 HTML 引擎不支持。
  • 页面依赖现代 JavaScript、Cookie、弹窗、跨窗口通信或浏览器安全 API。
  • 支付服务商主动禁止 WebView、内嵌浏览器或过旧的 User-Agent。

不要通过忽略证书错误来处理支付页面的加载问题。生产环境应使用受信任 CA 签发的证书,并确保域名匹配、证书链完整。

安全注意事项

  • 只允许跳转到预先配置的支付服务商域名,不要接受任意 URL。
  • 检查重定向后的目标地址,防止支付页面跳转到仿冒域名。
  • 不要将卡号、CVV、访问令牌或会话密钥写入 URL、日志或本地存储。
  • 不要向远程页面暴露无关的 AIR 本地接口或高权限对象。
  • 通过服务端 API 或 Webhook 核实支付结果,同时校验订单号、金额和币种。
  • 使用内嵌页面前,确认支付服务商明确支持这种模式及当前使用的 AIR 运行时。
  • 如果目标服务依赖现代浏览器特性,应优先使用系统浏览器,再通过自定义 URL Scheme、轮询服务端状态或其他受支持的方式返回应用。

HTML component 从协议层面可以访问 HTTPS 页面,但能打开页面,并不代表它适合用于安全支付集成。具体方案应根据支付服务商的接入要求、当前 AIR 运行时的兼容性和服务端支付确认机制确定。

备注:内容仅供参考。