调用Opayo接口使用curl返回5080错误但表单提交正常如何解决
Opayo接口5080错误原因及修复方案
错误根本原因
你调用的vspform-register.vsp属于Opayo VSP Form集成模式的接口,该接口不支持JSON格式的请求参数,要求必须使用application/x-www-form-urlencoded格式的表单参数提交,这也是你直接用表单提交能成功、curl发JSON请求报错的核心原因。
Opayo官方定义5080错误码的含义为:请求格式无效,服务端无法解析传入的参数。
代码存在的问题
- 错误地将参数序列化为JSON格式提交,接口无法识别参数
- 额外添加了
Authorization: Basic请求头,VSP Form模式不需要Basic认证,多余的请求头可能触发接口校验拦截 - 请求头
Content-Type设置为application/json,不符合接口要求
修复后的代码示例
$postArray = [ 'VPSProtocol' => '4.00', 'TxType' => 'Payment', 'vendor' => 'rusticstone', 'Crypt' => $Crypt ]; // 改为表单参数编码 $postBody = http_build_query($postArray); $curl = curl_init(); curl_setopt_array($curl, array( //CURLOPT_URL => "https://test.sagepay.com/gateway/service/vspform-register.vsp", CURLOPT_URL => "https://live.sagepay.com/gateway/service/vspform-register.vsp", CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $postBody, CURLOPT_HTTPHEADER => array( "Cache-Control: no-cache", "Content-Type: application/x-www-form-urlencoded" ), ));
内容的提问来源于stack exchange,提问作者P Whittaker
相关产品推荐
相关产品推荐

