gpt4 book ai didi

php - SagePay API - 创建交易时请求格式不正确 - Php

转载 作者:行者123 更新时间:2023-12-04 01:55:21 25 4
gpt4 key购买 nike

我重新发布这个问题是因为它已经被问过了。但没有人回答这个问题。我在将 Sage pay api 集成到我的网页时遇到了问题。

我正在关注 sage pay 的文档。一切都很顺利,但是当我要进行交易并请求链接时 https://pi-test.sagepay.com/api/v1/transactions它给我响应错误

stdClass 对象 ( [description] => 请求格式不正确 [code] => 1000 )

我做了与他们文档中提到的相同的事情,即使我尝试使用他们在示例中使用的相同 key 和凭据,但它在交易时给了我同样的错误。

我的交易请求码是

curl_setopt_array($curl, array(
CURLOPT_URL => "https://pi-test.sagepay.com/api/v1/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{' .
'"transactionType": "Payment",' .
'"paymentMethod": {' .
' "card": {' .
' "merchantSessionKey": "' . $merchant_session_key . '",' .
' "cardIdentifier": "' . $cardIdentifier . '",' .
' "save": "false",' .
' }' .
'},' .
'"vendorTxCode": "demotransaction' . time() . '",' .
'"amount": 10000,' .
'"currency": "GBP",' .
'"description": "Demo transaction",' .
'"apply3DSecure": "UseMSPSetting",' .
'"customerFirstName": "Sam",' .
'"customerLastName": "Jones",' .
'"billingAddress": {' .
' "address1": "407 St. John Street",' .
' "city": "London",' .
' "postalCode": "EC1V 4AB",' .
' "country": "GB"' .
'},' .
'"entryMethod": "Ecommerce"' .
'}',
CURLOPT_HTTPHEADER => array(
"Authorization: Basic aEpZeHN3N0hMYmo0MGNCOHVkRVM4Q0RSRkxodUo4RzU0TzZyRHBVWHZFNmhZRHJyaWE6bzJpSFNyRnliWU1acG1XT1FNdWhzWFA1MlY0ZkJ0cHVTRHNocktEU1dzQlkxT2lONmh3ZDlLYjEyejRqNVVzNXU=",
"Cache-Control: no-cache",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);
$err = curl_error($curl);

谁能帮我解决这个问题。我无法解决我做错了什么。到目前为止,我在文档中使用的是相同的代码。

文档链接是 https://test.sagepay.com/documentation/

最佳答案

POST 正文中发送的 JSON 字符串不是有效的 JSON。

"save": "false", 后有一个非法尾随逗号。

一个更好的方式来表达你的请求是这样的:

$postArray = [
'transactionType' => 'Payment',
'paymentMethod' => [
'card' => [
'merchantSessionKey' => '1234',
'cardIdentifier' => '555',
'save' => 'false',
],
],
'vendorTxCode' => 'demotransaction1529515635',
'amount' => 10000,
'currency' => 'GBP',
'description' => 'Demo transaction',
'apply3DSecure' => 'UseMSPSetting',
'customerFirstName' => 'Sam',
'customerLastName' => 'Jones',
'billingAddress' => [
'address1' => '407 St. John Street',
'city' => 'London',
'postalCode' => 'EC1V 4AB',
'country' => 'GB',
],
'entryMethod' => 'Ecommerce',
];

$postBody = json_encode($postArray);

curl_setopt_array($curl, array(
CURLOPT_URL => "https://pi-test.sagepay.com/api/v1/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $postBody,
CURLOPT_HTTPHEADER => array(
"Authorization: Basic xyz=",
"Cache-Control: no-cache",
"Content-Type: application/json"
),
));

将数据设置为数组,然后通过json_encode()发送使修改和更改变得更加容易。这也将处理任何特殊字符的正确编码。

关于php - SagePay API - 创建交易时请求格式不正确 - Php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50952574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com