РЕДАКТИРОВАТЬ: Используя curl, я обнаружил, что проблема в эхо ... эхо для печати на экране, а не для этого варианта использования ... проблема все еще сохраняется, как я могу вызвать функции javascript для обновления моей базы данных firebase
РЕДАКТИРОВАТЬ 2: Я только что обнаружил, что облачные функции могут подходить для меня, без необходимости устанавливать Firebase Admin SDK.Я уточню ответ, когда узнаю, как использовать облачные функции.Если кто-нибудь может дать мне ответ с облачными функциями для моего сценария, я с радостью выберу его в качестве ответа.
У меня проблема со страницей подтверждения PayU.Это информация, которую они предоставляют на своем веб-сайте для интеграции .
Страница подтверждения позволяет обновить базы данных в вашей системе.Из-за этого он не должен включать HTML-код и никогда не будет виден покупателю.Эта страница не является обязательной.Когда транзакция завершена (то есть, когда она одобрена, отклонена или отменена), наша платформа отправляет переменные с помощью метода HTTP POST.На странице подтверждения вы должны захватить данные, которые вы хотите сохранить в базе данных.Этот захват будет зависеть от используемого языка программирования.
Это мой код для сбора информации ... Это даже копия уже работающего кода, но за исключением того, что я использую JavaScript для обновления своей базы данных,так как я использую firebase.
<script src="https://www.gstatic.com/firebasejs/5.5.8/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "apikey",
authDomain: "domain",
databaseURL: "database",
projectId: "poject",
storageBucket: "storage",
messagingSenderId: "123"
};
firebase.initializeApp(config);
function seachEnsayoIDSSC(identifier){
var updates = {};
updates['/recibido/' + identifier ] = 'funciono';
return firebase.database().ref().update(updates);
let ref = firebase.database().ref('ensayos').orderByChild('ensayoId');
ref.equalTo(identifier).on("value", function(snapshot) {
console.log(snapshot.val());
snapshot.forEach(function(data) {
console.log(data.key);
});
});
}
</script>
<?php
$to = "testing@gmail.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@testing.com";
mail($to,$subject,$txt,$headers);
echo "<script>var updates = {};
updates['/estoseestaprobandoenpost/estamosmaso' ] = 'funciono';
firebase.database().ref().update(updates);</script>";
if(isset($_REQUEST['sign'])){
echo "<script>var updates = {};
updates['/estoseestaprobandoenpost/estamosmaso' ] = 'funciono';
firebase.database().ref().update(updates);</script>";
$confirmationMD = $_REQUEST['sign'];
$merchantId = $_REQUEST["merchant_id"];
$state = $_REQUEST["state_pol"];
$ensayoIDSSC = $_REQUEST["reference_sale"];
$currency = $_REQUEST["currency"];
$valor = $_REQUEST["value"];
updateEnsayo();
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
echo "<script>var updates = {};
updates['/estoseestaprobandoenpost/estamosmaso' ] = 'funciono';
firebase.database().ref().update(updates);</script>";
$merchantId = $_POST["merchant_id"];
$state = $_POST["state_pol"];
$ensayoIDSSC = $_POST["reference_sale"];
$currency = $_POST["currency"];
$valor = $_POST["value"];
$confirmationMD = $_POST["sign"];
updateEnsayo();
}
function updateEnsayo(){
echo "<script>seachEnsayoIDSSC(". $ensayoIDSSC .")</script>";
}
?>
Это форма, которую PayU получает для захвата платежа (ПРИМЕР)
<form method="post" action="https://sandbox.checkout.payulatam.com/ppp-web-gateway-payu/">
<input name="merchantId" type="hidden" value="508029" >
<input name="accountId" type="hidden" value="512321" >
<input name="description" type="hidden" value="Test PAYU" >
<input name="referenceCode" type="hidden" value="TestPayU" >
<input name="amount" type="hidden" value="20000" >
<input name="tax" type="hidden" value="3193" >
<input name="taxReturnBase" type="hidden" value="16806" >
<input name="currency" type="hidden" value="COP" >
<input name="signature" type="hidden" value="7ee7cf808ce6a39b17481c54f2c57acc" >
<input name="test" type="hidden" value="1" >
<input name="buyerEmail" type="hidden" value="test@test.com" >
<input name="responseUrl" type="hidden" value="http://www.test.com/response" >
<input name="confirmationUrl" type="hidden" value="http://www.test.com/confirmation" >
<input name="Submit" type="submit" value="Enviar" >
</form>
Во входе 'validUrl' я установил свой URL с помощьюкод, упомянутый ранее.Проблема здесь заключается в том, что по неизвестным причинам я не получаю никаких обновлений в моей базе данных Firebase и даже по электронной почте из почтового кода.На самом деле, я использую свою собственную электронную почту, а не ту, что в коде, и я проверил URL с почтовым запросом, даже без почтового запроса, чтобы проверить, работает ли он, и это было .. Пожалуйста, помогите!Спасибо!