Você estava faltando uma resposta de cabeçalho e um retorno dentro de sua instrução if. Caso contrário, ele cai e recebe 400 todas as vezes.
Function redeem() {
// Check for required parameters
if (isset($_POST["product_name"])) {
// Put parameters into local variables
$rw_app_id = $_POST["product_name"];
// Add tracking of redemption
$stmt = $this->db->prepare("INSERT INTO inventory (product_name) VALUES (?)");
$stmt->bind_param($rw_app_id);
$stmt->execute();
$stmt->close();
sendResponse(200, 'Ok');
return true;
}
sendResponse(400, 'Invalid request');
return false;
}