You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP集成Telenor EasyPay:哈希算法选型及无效请求问题咨询

解决Telenor EasyPay集成中的「invalid request」错误及PHP哈希实现方案

我之前帮几个开发者处理过Telenor EasyPay的集成问题,你遇到的「invalid request」大概率就是因为缺少正确的请求签名(哈希验证)。针对EasyPay的要求,你需要使用SHA-256哈希算法来生成请求签名,这是他们官方指定的标准算法。

下面给你梳理PHP里的具体实现步骤,确保你能快速搞定:

  • 整理并排序请求参数
    首先要把所有要发送的请求参数(除了签名本身)按照参数名的ASCII升序排序,比如参数amount、order_id、timestamp,要排成amount → order_id → timestamp的顺序。这一步很关键,因为网关那边会用同样的顺序验证,顺序不对签名肯定不匹配。

  • 拼接参数与密钥
    把排序后的参数按照「参数名=参数值」的格式拼接成一个字符串,然后在末尾追加你的EasyPay商户密钥(测试环境和生产环境的密钥是不同的,别搞混了)。比如:

    amount=1000&order_id=ORD12345&timestamp=1699999999your_secret_key
    
  • 生成SHA-256哈希值
    在PHP里用hash()函数生成SHA-256哈希,注意要输出小写的十六进制字符串(这是EasyPay要求的格式)。代码示例:

    // 假设你的参数数组
    $params = [
        'amount' => '1000',
        'order_id' => 'ORD12345',
        'timestamp' => time(),
        'merchant_id' => 'YOUR_MERCHANT_ID'
    ];
    
    // 按参数名升序排序
    ksort($params);
    
    // 拼接成字符串
    $stringToHash = '';
    foreach ($params as $key => $value) {
        $stringToHash .= $key . '=' . $value;
    }
    // 追加商户密钥
    $stringToHash .= 'YOUR_EASYPAY_SECRET_KEY';
    
    // 生成SHA-256哈希
    $signature = hash('sha256', $stringToHash);
    
    // 把签名加入请求参数
    $params['signature'] = $signature;
    
  • 额外注意事项

    • 测试环境和生产环境的密钥、商户ID要严格区分,不要混用;
    • 如果参数值为空字符串,要不要包含进拼接字符串?建议参考EasyPay官方文档,一般是忽略空值参数;
    • 确保请求时的编码是UTF-8,避免因字符编码问题导致哈希不匹配;
    • 发送请求时,要把所有参数(包括生成的signature)一起提交给EasyPay服务器。

按照这个步骤处理后,应该就能解决「invalid request」的问题了。如果还是有问题,可以检查参数排序是否正确、密钥是否输入正确,或者有没有遗漏必填参数。

内容的提问来源于stack exchange,提问作者Muhammad Ismail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 20:32:29