ステータスの更新を購読する


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);
今、ユーザーがログインまたは要求を拒否するとき
の場合は、関数が呼び出され、サブスクリプションが終了します.

4.3ユーザトークンを取得し、プッシュ通知を送信する


次回は、このユーザーにサインリクエストを送ってください.
ユーザトークンを取得し、次のペイロードに渡すことによって行うことができます.ユーザトークンは
彼らは最初のサインリクエストにサインします.我々は、我々が返す我々のイベントデータを使用して、署名された要求をフェッチしなければなりません
コールバック関数.
ご注意:この部分は使用しますPromises , これはかなり新しいコンセプトです
PHPあなたがJavaScriptでasyncコードを書いたならば、あなたはそれに精通しています.
サブスクリプションが終了するまで待ちましょう.今回は、私たちは
我々が得たユーザートークンを渡すので、我々の電話で通知を押してください.
$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のためにオンにする必要があります知ってください.また
短くするのを手伝うsleep() ステートメントは、新しい要求をプッシュする前に、あなたの電話をロックするためにいくつかの時間があります
明らかに通知が来るを参照してください.
--
ありがとうございますPauline !