页面说明

项目说明
用途承接支付跳转,展示订单金额与支付方式。
交互用户确认后完成支付,结果通过通知和查询同步。
返回支付成功后可跳转 redirectUrl。

自定义域名(VIP 权限)

已开通 VIP 的商户可在商户后台开启自定义域名绑定,开启后用户可通过以下两种方式访问收银台,功能完全一致,支付流程与回调通知均不受域名影响。

访问方式URL 示例说明
平台主域名 https://xpay.plus/payment?id={cashier_suffix} 默认方式,无需额外配置
自定义域名 https://{商户绑定域名}/payment?id={cashier_suffix} 需在商户后台完成域名绑定与 DNS 验证(VIP)

HTTPS 证书配置方案

商户绑定自定义域名时,如需 HTTPS,可选择以下任一方案:

方案 A(推荐):CNAME + Let's Encrypt DNS-01 自动签发证书

商户在域名服务商将自定义域名 CNAME 指向平台分配的域名后,可使用 acme.sh 等工具通过 DNS-01 挑战自动申请 Let's Encrypt 泛域名证书,全程无需手动续期。

商户申请到证书后,将证书文件提供给平台管理员,平台在 nginx 配置中为该域名加载证书:

server {
    listen 443 ssl;
    server_name pay.mystore.com;   # 商户自定义域名

    ssl_certificate     /path/to/certs/pay.mystore.com/fullchain.pem;
    ssl_certificate_key /path/to/certs/pay.mystore.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

平台管理员收到商户证书后,将 .pem.key 文件上传至服务器(如 /etc/nginx/ssl/certs/),然后在 nginx 配置文件中添加对应 server_name 块并 nginx -t && nginx -s reload 即可生效。

注意:商户需确保在域名服务商处配置 CNAME 记录将 pay.mystore.com 指向平台分配的域名,否则 HTTPS 访问将无法到达平台服务器。

方案 B:平台统一泛域名证书 + SNI 动态加载

平台为 *.{main-domain} 申请一张泛域名证书(如 *.xpay.plus),nginx 使用同一证书服务所有自定义域名(通过 TLS SNI 匹配)。只要商户域名的 CNAME 指向平台主域名,浏览器即可通过泛域名证书完成 TLS 握手,无需为每个商户单独配置证书。

nginx 配置示例(复用泛域名证书):

server {
    listen 443 ssl;
    server_name ~^([a-zA-Z0-9-]+)\.xpay\.plus$;   # 泛域名正则匹配

    ssl_certificate     /etc/nginx/ssl/wildcard.xpay.plus.pem;
    ssl_certificate_key /etc/nginx/ssl/wildcard.xpay.plus.key;

    ssl_protocols TLSv1.2 TLSv1.3;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

此方案对商户最友好,商户只需配置 CNAME,无需提供证书文件,由平台统一管理证书续期。