Editar registosPHP
Exemplo em PHP 7.1
// Função para obter a versão do registo
function getRecordVersion($recordID) {
// Define o URL para obter a versão do registo
$url_get_version = CYCLOS_BASE_URL . "records/" . $recordID .
"/data-for-edit?fields=record.version";
// Define os cabeçalhos da requisição HTTP
$headers = [
Accept: application/json',
'Authorization: Basic
'. base64_encode(USERNAME . ':'. PASSWORD),
'Content-Type: application/json
];
// Inicia uma sessão cURL para o pedido GET
$ch_get = curl_init($url_get_version);
cur1_setopt($ch_get, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch_get, CURLOPT_RETURNTRANSFER, true);
cur1_setopt($ch_get, CURLOPT_SSL_VERIFYPEER, false);
cur1_setopt($ch_get, CURLOPT_SSL_VERIFYHOST, 2);
// Executa a requisição e armazena a resposta na variável $response
$response_get = curl_exec($ch_get);
$httpcode_get = curl_getinfo($ch_get, CURLINFO_HTTP_CODE);
cur1_close($ch_get);
// Verifica se a requisição foi bem sucedida
if ($httpcode_get == 200) {
$data = json_decode($response_get, true);
return $data['record']['version'] ?? null;
} else {
error_log("Erro ao obter a versão do registo. HTTP Status:
$httpcode_get);
return null;
// Funcao para atualizar o estado de pagamento
function updatePaymentStatus($recordID, $version, $paymentFormUrl,
Surl_id, SorderId, Semail, $chosen_payment_method, $payment_status)
// Prepara os dados para o pedido PUT
$dados = [
"customValues" => [
"URL" => $_SESSION['paymentFormUr1'],
"OID" => $_SESSION['orderId'],
"PE" => $_SESSION['ema1l'],
"CPM" => $mpagamento_escolhido,
"SD" => $start_date,
"ED" => $final_date,
"pS" => "pending",
"URL_S" => "active",
'version' => $version
// Define o URL para o pedido PUT
$url_put = CYCLOS_BASE_URL . 'records/' . $recordID;
// Define os cabecalhos da requisicao HTTP
$headers - [
'Accept: application/json',
Authorization: Basic ' . base64_encode(USERNAME
PASSWORD),
'Content-Type: application/json'
// Inicia uma sessao cURL para o pedido PUT
$ch_put = curl_init($url_put);
curl_setopt($ch_put, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch_put, CURLOPT_POSTFIELDS, json_encode($dados));
curl_setopt($ch_put, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch_put, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch_put, CURLOPT_SSL_VERIFYPEER, 2);
curl_setopt($ch_put, CURLOPT_SSL_VERIFYHOST, 2);
// Executa a requisicao e armazena a resposta na variavel $response_pu
$response_put = curl_exec($ch_put);
$httpcode_put = curl_getinfo($ch_put, CURLINFO_HTTP_CODE);
curl_close($ch_put);
// Verifica se a requisicao foi bem-sucedida
if ($httpcode_put == 200 || $httpcode_put == 204) {
return true;
}else {
error_log("Erro ao atualizar os dados: " . $response_put);
return false;
// Parâmetros de exemplo (estes seriam dinamicamente obtidos no seu codigo real)
$publicIdentifier = $_SESSION['publicIdentifier'] ?? "';
$paymentFormUr1 = $_SESSION['paymentFormUr1'] ?? '';
$paybylink_ID = $_SESSION['paybylink_ID'] ?? "';
$orderId = $_SESSION['orderId'] ?? ";
$email = $_SESSION['email'] ?? '';
$chosen_payment = $_SESSION['chosen_payment' ] ?? 'multibanco';
$payment_status = 'paid'; // Exemplo de novo estado de pagamento
$recordID = '5741493202915805803'; // Exemplo de ID de registo
// Verifica se os parâmetros necessários estão presentes
if ($publicIdentifier && $paymentFormUrl && $paybylink_ID) {
// Obtém a versão do registo
$version = getRecordVersion($recordID);
if ($version !== null) {
// Atualiza o estado de pagamento
$atualizacao_sucesso = updatePaymentStatus($recordID, $version,
$paymentFormUr1, $paybylink_ID, $orderId, $email, $mpagamento_escolhido,
$payment_status);
if ($atualizacao_sucesso) {
echo "Estado de pagamento atualizado com sucesso.";
} else {
echo "Erro ao atualizar o estado de pagamento.";
} else {
echo "Erro ao obter a versao do registo.";
} else {
echo "Parametros necessarios não fornecidos.";
}