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

使用Volume API支付验签时遭遇OpenSSL错误求助

Volume API支付签名验证OpenSSL错误解决方案求助

背景说明

我正在尝试使用Volume API进行支付签名验证,根据官方要求,需使用Volume提供的公钥对其发送的原始未修改payload进行验证,公钥地址如下:

  • 沙箱环境:https://api.sandbox.volumepay.io/.well-known/signature/pem
  • 生产环境:https://api.volumepay.io/.well-known/signature/pem

遇到的错误

当前出现两个OpenSSL错误:

OpenSSL error: error:02000068:rsa routines::bad signature

OpenSSL error: error:1C880004:Provider routines::RSA lib

我的实现代码

private function verifySignature($payload, $signature) {

    $pemUrl= 'https://api.sandbox.volumepay.io/.well-known/signature/pem';
    $pemContent = file_get_contents($pemUrl);
    $pemContent = trim(preg_replace('/\s+/', '', $pemContent)); 

    if (empty($pemContent)) {
        custom_log_message('ERROR', "O conteúdo do PEM está vazio.");
        return false;
    }
    
    $publicKey = "-----BEGIN PUBLIC KEY-----\n" . $pemContent . "\n-----END PUBLIC KEY-----";

    $publicKeyResource = openssl_pkey_get_public($publicKey);
    if ($publicKeyResource === false) {
        while ($error = openssl_error_string()) {
          custom_log_message('ERROR', "\n OpenSSL error: {$error} \n ");
        }
        return false;
    }
    $hashedPayload = hash('sha256', $payload, true);
    
    $result = openssl_verify($hashedPayload, base64_decode($signature), $publicKeyResource, OPENSSL_ALGO_SHA256);
 
    if ($result === 1) {
        custom_log_message('SUCCESS', 'OpenSSL Aceito: ' . " \n");
        return true;  
    } else {
        custom_log_message('ERROR', 'OpenSSL error: ' . openssl_error_string() ." \n");
        return false;  
    }
}

收到的请求信息

请求头

{"Connection":"close","X-Varnish":"36059175","X-Groupone-Reqid":"0-1728345217-f1f4d43736059174","X-Groupone-Host":"realmoneytransfer.co.uk","X-Original-Url":"\/volumePayment\/webhook","X-Groupone-Forwarded-Ip":"52.30.246.188","X-Onecom-Host":"realmoneytransfer.co.uk","X-Groupone-Brand":"ome.com","X-Onecom-Brand":"ome.com","X-Forwarded-Proto":"https","X-Onecom-Forwarded-Proto":"https","Via":"1.1 webcache1 (Varnish\/trunk)","X-Forwarded-For":"52.30.246.188","Tracestate":"dd=s:1;p:3d4ec978861e3f2d;t.dm:-1;t.tid:6704748100000000","Traceparent":"00-6704748100000000082bb5817a305ad0-3d4ec978861e3f2d-01","X-Datadog-Tags":"_dd.p.dm=-1,_dd.p.tid=6704748100000000","X-Datadog-Sampling-Priority":"1","X-Datadog-Parent-Id":"4417689803980422957","X-Datadog-Trace-Id":"588763744007379664","Content-Length":"414","Content-Type":"application\/json","Accept":"*\/*","Host":"realmoneytransfer.co.uk","User-Agent":"ReactorNetty\/dev","Authorization":"SHA256withRSA aa0ILSmN6vaQPktyCYQ9g8qEEAZX7D8fa4GMNKTaba9LweEtH+UMCEYDLDa1BzVX1bO3eYP8EndOhrG3fC8Ce5hCeMSQml9xnYvsojEnIBzI256QaHYYz5APatt512s8XW3A9w0JX3+rxSQdBurGVDEgCjT5sYRGWN1thH2FIEIktE43TPHdDRY0Ywz5fdhO2jU46eESQNS02B0uCF2tmoW8Y\/ifkTSaogvDv\/GcIYhBzaCd8qhz9EObEDbFbDKvP82KbZQoId1e2\/EMG6csIAsqWAWG5JkKH2UmRSwNn6egQJWuJngAgXFzUSWI0nX4hyorkqEz7oL8Pvmkh1aNfQ=="}

请求体

{"paymentId":"8e54f2d2-ce52-4355-b42c-d4ecff926ad8","merchantPaymentId":"payment_6704727a90e6a9.50903431","paymentStatus":"FAILED","errorDescription":"Failed to create payment authorization - payment provider returned an error","paymentRequest":{"amount":43.21,"currency":"GBP","reference":"Payment Reference"},"paymentRefundData":null,"paymentMetadata":null,"applicationId":"96c1e0d-93au-417e-aae5-aa02aa317ff6"}

服务器环境信息

{COM_DOMAIN_NAME":"real.com","COM_DOMAIN_ROOT":"\/real.com\/",COM_MEMORYLIMIT":"2147483648",COM_CPU_SHARES":"2048",COM_EXEC":"php8.0",COM_CONFIG_MTIME":"1727265261702181",COM_DOCUMENT_ROOT":"\/customers\/a\/2\/c\/real.com\/httpd.www","HTTP_CONNECTION":"close","SCRIPT_NAME":"\/index.php","REQUEST_URI":"\/volumePayment\/webhook","QUERY_STRING":"","REQUEST_METHOD":"PUT","SERVER_PROTOCOL":"HTTP\/1.1","GATEWAY_INTERFACE":"CGI\/1.1","REDIRECT_QUERY_STRING":"volumePayment\/webhook","REDIRECT_URL":"\/volumePayment\/webhook","REMOTE_PORT":"47356","SCRIPT_FILENAME":"\/customers\/a\/2\/c\/real.com\/httpd.www\/index.php","SERVER_ADMIN":"support@one.com","CONTEXT_DOCUMENT_ROOT":"\/var\/www","CONTEXT_PREFIX":"","REQUEST_SCHEME":"https","REMOTE_ADDR":"52.30.246.188","SERVER_PORT":"80","SERVER_ADDR":"10.27.5.21","SERVER_NAME":"real.com","SERVER_SOFTWARE":"Apache","SERVER_SIGNATURE":"","PATH":"\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin","HTTP_X_VARNISH":"36059175","HTTP_X_GROUPONE_REQID":"0-1728345217-f1f4d43736059174","HTTP_X_GROUPONE_HOST":"real.com","HTTP_X_ORIGINAL_URL":"\/volumePayment\/webhook","HTTP_X_GROUPONE_FORWARDED_IP":"52.30.246.188","HTTP_X_ONECOM_HOST":"real.com","HTTP_X_GROUPONE_BRANDS":".com","HTTP_X_ONECOM_BRANDS":".com","HTTP_X_FORWARDED_PROTO":"https","HTTP_X_ONECOM_FORWARDED_PROTO":"https","HTTP_VIA":"1.1 webcache1 (Varnish\/trunk)","HTTP_X_FORWARDED_FOR":"52.30.246.188","HTTP_TRACESTATE":"dd=s:1;p:3d4ec978861e3f2d;t.dm:-1;t.tid:6704748100000000","HTTP_TRACEPARENT":"00-6704748100000000082bb5817a305ad0-3d4ec978861e3f2d-01","HTTP_X_DATADOG_TAGS":"_dd.p.dm=-1,_dd.p.tid=6704748100000000","HTTP_X_DATADOG_SAMPLING_PRIORITY":"1","HTTP_X_DATADOG_PARENT_ID":"4417689803980422957","HTTP_X_DATADOG_TRACE_ID":"588763744007379664","CONTENT_LENGTH":"414","CONTENT_TYPE":"application\/json","HTTP_ACCEPT":"*\/*","HTTP_HOST":"real.com","HTTP_USER_AGENT":"ReactorNetty\/dev","ENV_VCV_ENV_ADDONS_ID":".com","ENV_VCV_TOKEN_URL":"https:\/\/wpapi.one.com\/api\/v1.0\/plugins\/visualcomposer\/activate",COM_WP_ADDONS_API":"https:\/\/wpapi.one.com",COM_WEBSHOP_HOST":"webshop2.cst.webpod13-cph3.one.com","HTTPS":"on",COM_PHP_WORKERS":"8","GROUPONE_BRAND_NAME":".com",COM_BRAND_ID":"1",COM_TMPDIR":"\/customers\/a\/2\/c\/real.com\\/tmp","DOMAIN_NAME":"real.com","DOCUMENT_ROOT":"\/customers\/a\/2\/c\/real.com\/httpd.www","HTTP_AUTHORIZATION":"SHA256withRSA aa0ILSmN6vaQPktyCYQ9g8qEEAZX7D8fa4GMNKTaba9LweEtH+UMCEYDLDa1BzVX1bO3eYP8EndOhrG3fC8Ce5hCeMSQml9xnYvsojEnIBzI256QaHYYz5APatt512s8XW3A9w0JX3+rxSQdBurGVDEgCjT5sYRGWN1thH2FIEIktE43TPHdDRY0Ywz5fdhO2jU46eESQNS02B0uCF2tmoW8Y\/ifkTSaogvDv\/GcIYhBzaCd8qhz9EObEDbFbDKvP82KbZQoId1e2\/EMG6csIAsqWAWG5JkKH2UmRSwNn6egQJWuJngAgXFzUSWI0nX4hyorkqEz7oL8Pvmkh1aNfQ==","REDIRECT_STATUS":"200","REDIRECT_ENV_VCV_ENV_ADDONS_ID":".com","REDIRECT_ENV_VCV_TOKEN_URL":"https:\/\/wpapi.one.com\/api\/v1.0\/plugins\/visualcomposer\/activate","REDIRECT_ONECOM_WP_ADDONS_API":"https:\/\/wpapi.one.com","REDIRECT_ONECOM_WEBSHOP_HOST":"webshop2.cst.webpod13-cph3.one.com","REDIRECT_HTTPS":"on","REDIRECT_ONECOM_CPU_SHARES":"2048","REDIRECT_ONECOM_MEMORYLIMIT":"2147483648","REDIRECT_ONECOM_PHP_WORKERS":"8","REDIRECT_GROUPONE_BRAND_NAME":".com","REDIRECT_ONECOM_BRAND_ID":"1","REDIRECT_ONECOM_CONFIG_MTIME":"1727265261702181","REDIRECT_ONECOM_EXEC":"php8.0","REDIRECT_ONECOM_TMPDIR":"\/customers\/a\/2\/c\/real.com\\/tmp","REDIRECT_COM_DOMAIN_ROOT":"\/real.com\/","REDIRECT_ONECOM_DOMAIN_NAME":"real.com","REDIRECT_DOMAIN_NAME":"real.com","REDIRECT_ONECOM_DOCUMENT_ROOT":"\/customers\/a\/2\/c\/real.com\/httpd.www","REDIRECT_DOCUMENT_ROOT":"\/customers\/a\/2\/c\/real.com\/httpd.www","REDIRECT_HTTP_AUTHORIZATION":"SHA256withRSA aa0ILSmN6vaQPktyCYQ9g8qEEAZX7D8fa4GMNKTaba9LweEtH+UMCEYDLDa1BzVX1bO3eYP8EndOhrG3fC8Ce5hCeMSQml9xnYvsojEnIBzI256QaHYYz5APatt512s8XW3A9w0JX3+rxSQdBurGVDEgCjT5sYRGWN1thH2FIEIktE43TPHdDRY0Ywz5fdhO2jU46eESQNS02B0uCF2tmoW8Y\/ifkTSaogvDv\/GcIYhBzaCd8qhz9EObEDbFbDKvP82KbZQoId1e2\/EMG6csIAsqWAWG5JkKH2UmRSwNn6egQJWuJngAgXFzUSWI0nX4hyorkqEz7oL8Pvmkh1aNfQ==","FCGI_ROLE":"RESPONDER","PHP_SELF":"\/index.php","REQUEST_TIME_FLOAT":1728345217.8310699462890625,"REQUEST_TIME":1728345217}

希望能得到解决上述OpenSSL验签错误的方案。


内容的提问来源于stack exchange,提问作者Cleber Castiglioni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:42:02