PAYATHON 2026

Payex payment integration 最终付款页面返回错误

支付小周

结论

Access_MissingAccessProperties 与付款页面或 XML 解析无关,表示 PayEx 拒绝当前商户调用该方法。错误信息已经说明原因:

Merchant does not have access to the method.

一般需要联系 PayEx,为商户账户开通相应的支付产品或 API 方法权限。同时检查商户凭据、运行环境和接口地址是否匹配。

可能原因

常见原因有:

  • 商户协议中没有启用 MPFinalize.php 最终调用的支付方法。
  • accountNumber、商户编号或其他身份凭据有误。
  • 测试环境使用了生产凭据,或生产环境使用了测试凭据。
  • 支付产品已经开通,但最终确认、捕获或完成交易的方法没有单独授权。
  • PayEx 后台配置尚未生效,或权限开通在另一个商户账户上。

请求已经到达 PayEx,因此应先排查账户权限,不必先修改 SimpleXMLElement 的处理逻辑。

解决步骤

1. 确认实际调用的方法

打开 MPFinalize.php,找到向 PayEx 发起最终请求的位置,并记录:

  • API 方法名称
  • 请求地址
  • accountNumber 或商户编号
  • 当前使用的是测试环境还是生产环境

权限通常与具体方法或支付产品有关。只向 PayEx 提供 PHP 文件名,通常不足以定位问题。

2. 检查环境和凭据是否配套

确认以下配置来自同一环境:

$accountNumber = 'YOUR_ACCOUNT_NUMBER';
$encryptionKey = 'YOUR_ENCRYPTION_KEY';
$endpoint = 'PAYEX_ENDPOINT_FOR_THE_SAME_ENVIRONMENT';

不要混用测试和生产配置。测试账户、测试密钥和测试接口地址必须配套使用。

还要检查配置文件或环境变量是否在部署时被覆盖,特别是最终付款页面与前序页面使用不同配置文件的情况。

3. 联系 PayEx 开通权限

如果凭据和环境都正确,请联系 PayEx 商户支持或账户负责人,确认:

  • 当前商户是否有权调用该 API 方法;
  • 对应的支付产品是否已加入商户协议;
  • 权限是否配置到了正确的测试或生产账户;
  • 最终确认、完成或捕获交易是否需要额外授权。

提交问题时,可以附上:

  • 错误代码:Access_MissingAccessProperties
  • 返回描述:Merchant does not have access to the method.
  • PayEx 返回的请求 ID:2dd334b571cb4e809a5d13c3bc7a51dd
  • 返回时间:2018-04-09 05:53:28
  • 实际调用的 API 方法和环境

PayEx 可以根据请求 ID 在服务端日志中查找这次调用。

建议的错误处理

不要把整个 SimpleXMLElement 直接输出给最终用户。可以识别状态码,并将诊断信息写入日志:

<?php

$response = simplexml_load_string($responseXml);

$statusCode = (string) $response->status->code;
$description = (string) $response->status->description;
$requestId = (string) $response->header->id;

if ($statusCode === 'Access_MissingAccessProperties') {
    error_log(sprintf(
        'PayEx access denied: requestId=%s, code=%s, description=%s',
        $requestId,
        $statusCode,
        $description
    ));

    exit('当前支付方式尚未开通,请联系商户客服。');
}

将 $responseXml 替换为项目中实际收到的 PayEx XML 响应。日志里不要记录完整密钥、签名、银行卡信息或其他敏感数据。

注意事项

  • 重复提交同一请求通常无法解决权限问题,还可能带来重复交易风险。
  • 不要修改返回的 XML、跳过状态检查或伪造成功结果来绕过错误。
  • 权限开通后,应先在对应的测试环境中重新执行完整支付流程,再切换到生产环境。
  • 同一凭据可以调用其他 PayEx 方法,并不代表它也有权调用当前方法。具体授权范围仍需由 PayEx 确认。

备注:内容仅供参考。