실시간 상태 업데이트 구독(XUMM PHP SDK)
4. 실시간 상태 업데이트 구독
지금까지 결제 요청을 생성하고 "다음"URL을 클릭하고 XUMM 앱으로 QR 코드를 스캔하여 승인했습니다.
또는 요청을 거부합니다. 엄청난!
앱 개발자는 페이로드의 실시간 상태 업데이트를 구독하고 이에 반응할 수 있습니다. 예를 들어 다음과 같이 할 수 있습니다.
요청을 생성한 사용자에게 "결제 요청이 수락되었습니다! 🎉"라는 메시지를 보여줍니다.
귀하의 요청에 서명했거나 거부되었을 때 "결제 요청 거부됨 :(️").
그렇게 해보자.
4.1 콜백 함수 만들기
상태 업데이트 구독을 강력하게 만드는 것 중 하나는 콜백 함수를 다음으로 전달할 수 있다는 것입니다.
데이터를 처리합니다. 상태 업데이트 데이터는 다음의 인스턴스로 콜백에 전달됩니다.Xrpl\XummSdkPhp\Subscription\CallbackParams
.
스크립트 하단에 콜백을 정의해 보겠습니다.
$callback = function(CallbackParams $event): ?array
{
if (!isset($event->data['signed'])) {
return null; // Don't do anything, wait for the next message.
}
if ($event->data['signed'] === true) {
echo "🎉 Payment request accepted!\n";
return $event->data; // Returning a value ends the subscription.
}
echo "Payment request rejected :(\n";
return [];
};
4.2 구독 시작
이제 구독을 시작하고 들어오는 모든 이벤트를 처리하기 위해 콜백을 전달하겠습니다!
$subscription = $sdk->subscribe($createdPayload, $callback);
이제 사용자가 요청에 서명하거나 거부하면(URL을 따라 수행할 수 있음)
), 함수가 호출되고 구독이 종료됩니다.
4.3 사용자 토큰 획득 및 푸시 알림 보내기
다음에 이 사용자에게 서명 요청을 보낼 때 휴대폰에서 푸시 알림을 받길 원한다고 가정해 보겠습니다.
사용자 토큰을 가져와서 다음 페이로드에 전달하면 됩니다. 사용자 토큰은 다음과 같은 경우에 발행됩니다.
그들은 첫 서명 요청에 서명합니다. 반환된 이벤트 데이터를 사용하여 서명된 요청을 가져오기만 하면 됩니다.
콜백 함수.
참고: 이 부분은 Promises 을 사용합니다.
PHP. JavaScript로 비동기 코드를 작성했다면 익숙할 것입니다.
구독이 종료될 때까지 기다린 다음 다른 지불 요청을 보내십시오. 이번에는 A를 받겠습니다.
우리가 얻은 사용자 토큰을 전달하기 때문에 휴대전화에 푸시 알림이 표시됩니다.
$subscription->resolved()
->done(function (array $data) use ($sdk) {
$payloadId = $data['payload_uuidv4'] ?? false;
if (!$payloadId) {
return null;
}
$signedRequest = $sdk->getPayload($data['payload_uuidv4']);
$newRequest = $sdk->createPayload(new Payload(
[
'TransactionType' => 'Payment',
'Destination' => 'rGBiHBoEs238W7H1b4gMey55He97kWcoUb', // Use your own address here
'Amount' => '1000',
],
$signedRequest->application->issuedUserToken,
));
echo sprintf("The new request was %s\n", $newRequest->pushed ? 'pushed' : 'not pushed...');
});
실제 전화에서 이를 테스트하려면 XUMM에 대해 푸시 알림을 켜야 합니다. 그것은 또한
전화를 잠그고
들어오는 알림을 명확하게 확인하십시오.
--
크레딧: 감사합니다Pauline !
Reference
이 문제에 관하여(실시간 상태 업데이트 구독(XUMM PHP SDK)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/wietse/subscribe-to-live-status-updates-xumm-php-sdk-5131
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$callback = function(CallbackParams $event): ?array
{
if (!isset($event->data['signed'])) {
return null; // Don't do anything, wait for the next message.
}
if ($event->data['signed'] === true) {
echo "🎉 Payment request accepted!\n";
return $event->data; // Returning a value ends the subscription.
}
echo "Payment request rejected :(\n";
return [];
};
$subscription = $sdk->subscribe($createdPayload, $callback);
$subscription->resolved()
->done(function (array $data) use ($sdk) {
$payloadId = $data['payload_uuidv4'] ?? false;
if (!$payloadId) {
return null;
}
$signedRequest = $sdk->getPayload($data['payload_uuidv4']);
$newRequest = $sdk->createPayload(new Payload(
[
'TransactionType' => 'Payment',
'Destination' => 'rGBiHBoEs238W7H1b4gMey55He97kWcoUb', // Use your own address here
'Amount' => '1000',
],
$signedRequest->application->issuedUserToken,
));
echo sprintf("The new request was %s\n", $newRequest->pushed ? 'pushed' : 'not pushed...');
});
Reference
이 문제에 관하여(실시간 상태 업데이트 구독(XUMM PHP SDK)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wietse/subscribe-to-live-status-updates-xumm-php-sdk-5131텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)