xrplwin / xumm-sdk-php
A PHP SDK for Xumm by XRPLabs.
Requires
- php: ^8.2.0
- guzzlehttp/guzzle: ^7.4
- monolog/monolog: ^2.3|^3.0
- ratchet/pawl: ^0.4.1
- symfony/property-access: ^6.0
- symfony/serializer: ^6.0
- symfony/yaml: ^6.0|^7.0
- vlucas/phpdotenv: ^5.4
Requires (Dev)
- behat/behat: ^3.10
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: dev-master
- wyrihaximus/async-test-utilities: ^4.2
README
Xumm SDK (PHP)
This is fork of this repo
Requirements
- PHP 8.2 or higher
- Composer
- Docker and docker compose if you want to run acceptance tests
Installation
To install, run:
composer require xrplwin/xumm-sdk-php
Usage
First obtain Xumm API credentials by registering your app.
Initialize the Xumm SDK in your application:
// Either pass API credentials through the constructor $sdk = new XummSdk($apiKey, $apiSecret); // Or set them as environment variables. See .env.example for the expected variable names. // Note: the .env file is mostly applicable when contributing to the SDK itself. $sdk = XummSdk();
Each call on the SDK object will return a corresponding value object implementing the XummResponse
interface.
Create a payload
To create a payload, pass an instance of Xrpl\XummSdkPhp\Payload
to XummSdk::createPayload()
. This instance
should hold an associative array transactionBody
, and can hold some options and custom metadata. For more
elaborate documentation on how to construct a payload, please refer to
the API docs.
A simple example could look like this:
$sdk->createPayload( new Payload( transactionBody: [ 'TransactionType' => 'Payment', 'Destination' => 'rPdvC6ccq8hCdPKSPJkPmyZ4Mi1oG2FFkT', 'Fee' => '12' ], customMeta: new CustomMeta(identifier: 'my-custom-identifier'), ) );
This will return an instance of Xrpl\XummSdkPhp\Response\CreatePayload\CreatedPayload
.
Subscribe to a payload
After you create a payload, you can pass the returned CreatedPayload
to XummSdk::subscribe()
to subscribe to live
payload status changes. This returns an instance of Xrpl\XummSdkPhp\Subscriber\Subscription
.
Changes to a payload status include:
- The payload was by a XUMM App user (web page)
- The payload was by a XUMM App user (in the app)
- Payload expiration updates (remaining time in seconds)
- The payload was resolved by rejecting
- The payload was resolved by accepting (signing)
Status updates can be handled by passing a callback function as a second argument to XummSdk::subscribe
.
The subscription ends by either:
- returning non-void from the callback function, or
- explicitly calling
Subscription::end()
.
Other methods
The SDK also supports the XUMM API's helper methods, such as ping
, getCuratedAssets
, and getRates
. Again, these
will all return corresponding implementations of XummResponse
.
Contributing
For contributing to development of this package, refer to CONTRIBUTING.md.