SUMUP 与 php 中的curl 集成

问题描述 投票:0回答:1

我正在尝试结帐 SUMUP 付款并始终获得:

*{"title":"错误请求","status":400,"detail":"缺少必需的请求正文:public org.springframework.http.ResponseEntity com.sumup.cloak.controllers.ProcessCheckoutController.chargev1(java .lang.String,jakarta.servlet.http.HttpServletRequest)"} *

$curl = curl_init();

$urlToSend = "https://api.sumup.com/v0.1/checkouts/".checkout_id_from_prev_call;

$curlHeaders  = [
  'Authorization: Bearer '. my_access_token,             
  'Content-Type: application/json'
];

$postData ='{
   "payment_type": "card",
   "card": {
   "name": "Boaty McBoatface",
   "number": "4200000000000042",
   "expiry_month": "12",
   "expiry_year": "23",
   "cvv": "123"
   }
}';

curl_setopt($curl, CURLOPT_URL, $urlToSend);
curl_setopt($curl, CURLOPT_HTTPHEADER, $curlHeaders);
curl_setopt($curl, CURLOPT_POSTFIELDS, (urldecode($postData)));        
curl_setopt($curl, CURLOPT_PUT, true);
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);

$response = curl_exec($curl);

响应将是 缺少必需的请求正文

我也尝试按如下方式设置数据:

$postData = [
   'payment_type' => 'card',
   'card' => [
        'name' => 'Boaty McBoatface',
        'number' => '4200000000000042',
        'expiry_month' => '12',
        'expiry_year' => '23',
        'cvv' => '123'   
   ]                  
];

然后:

curl_setopt($curl, CURLOPT_POSTFIELDS, (http_build_query($postData))); 

错误保持不变: 缺少必需的请求正文:

php checkout php-curl
1个回答
0
投票

问题已解决: 正确掩盖 fld。

 curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"payment_type\": \"card\",\"card\": {\"name\": \"Boaty McBoatface\",\"number\": \"4200000000000042\",\"expiry_month\": \"12\",\"expiry_year\": \"23\",\n          \"cvv\": \"123\"}}");

顺便说一句,这里有一个将curl转换为php语法的工具,这向我展示了正确的方法。

https://incarnate.github.io/curl-to-php/

© www.soinside.com 2019 - 2024. All rights reserved.