我正在尝试结帐 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)));
错误保持不变: 缺少必需的请求正文:
问题已解决: 正确掩盖 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语法的工具,这向我展示了正确的方法。