GithubHelp home page GithubHelp logo

isabella232 / xsolla-sdk-php Goto Github PK

View Code? Open in Web Editor NEW

This project forked from own3d/xsolla-sdk-php

0.0 0.0 0.0 588 KB

Xsolla SDK for PHP

Home Page: https://developers.xsolla.com/doc/sdk/#php_sdk

License: MIT License

PHP 100.00%

xsolla-sdk-php's Introduction

Xsolla SDK for PHP

Latest Stable Version Build Status Code Coverage Scrutinizer Code Quality Downloads Join the chat at https://gitter.im/xsolla/xsolla-sdk-php GitHub license

An official PHP SDK for interacting with Xsolla API

Payment UI screenshot

Features

  • Full customisation of Payment UI with the help of different methods of getting token.
  • Client for all API methods, making your integration easy and convenient. You can use it for setting up and updating virtual currency, items and subscription plans, for managing the users balance, for checking the finance information with the help of Report API and so on.
  • Convenient webhook server:
    • To start you need only one callback function.
    • All security checking already implemented: signature authentication and IP whitelisting.
    • Full customisation of notification processing logic, if standard server class doesn’t suit you.
  • SDK is built on Guzzle v3, and utilizes many of its features, including persistent connections, parallel requests, events and plugins (via Symfony2 EventDispatcher), service descriptions, over-the-wire logging, caching, flexible batching, and request retrying with truncated exponential back off.

Requirements

  • PHP ^7.3 or ^8.0
  • The following PHP extensions are required:
    • curl
    • json

Getting Started

Please register your Publisher Account and create the project. In order to use the PHP SDK Library you'll need:

  • MERCHANT_ID
  • API_KEY
  • PROJECT_ID
  • PROJECT_KEY

You can obtain these parameters using the information in your Company Profile and Project Settings.

Installation

Installing via Composer

The recommended way to install Xsolla SDK for PHP is through Composer.

$ cd /path/to/your/project
$ composer require xsolla/xsolla-sdk-php

After installing, you need to require Composer's autoloader:

require '/path/to/vendor/autoload.php';

Installing via Phar

You can download the packaged phar and include it in your scripts to get started:

require '/path/to/xsolla.phar';

Installing via Zip

You can download the zip file, unzip it into your project to a location of your choosing, and include the autoloader:

require '/path/to/xsolla-autoloader.php';

Quick Examples

Integrate Payment UI

To integrate Payment UI into your game you should obtain an access token. An access token is a string that identifies game, user and purchase parameters.

There are number of ways for getting token. The easiest one is to use the createCommonPaymentUIToken method, you will need to pass only ID of project in Xsolla system and ID of the user in your game:

<?php

use Xsolla\SDK\API\XsollaClient;

$client = XsollaClient::factory(array(
    'merchant_id' => MERCHANT_ID,
    'api_key' => API_KEY
));
$paymentUIToken = $client->createCommonPaymentUIToken(PROJECT_ID, USER_ID, $sandboxMode = true);

Render Payment UI script in your page:

<html>
<head lang="en">
    <meta charset="UTF-8">
</head>
<body>
    <button data-xpaystation-widget-open>Buy Credits</button>
    
    <?php \Xsolla\SDK\API\PaymentUI\PaymentUIScriptRenderer::send($paymentUIToken, $isSandbox = true); ?>
</body>
</html>

Receive webhooks

There is a build in server class to help you to handle the webhooks.

<?php

use Xsolla\SDK\Webhook\WebhookServer;
use Xsolla\SDK\Webhook\Message\Message;
use Xsolla\SDK\Exception\Webhook\XsollaWebhookException;

$callback = function (Message $message) {
    switch ($message->getNotificationType()) {
        case Message::USER_VALIDATION:
            /** @var Xsolla\SDK\Webhook\Message\UserValidationMessage $message */
            // TODO if user not found, you should throw Xsolla\SDK\Exception\Webhook\InvalidUserException
            break;
        case Message::PAYMENT:
            /** @var Xsolla\SDK\Webhook\Message\PaymentMessage $message */
            // TODO if the payment delivery fails for some reason, you should throw Xsolla\SDK\Exception\Webhook\XsollaWebhookException
            break;
        case Message::REFUND:
            /** @var Xsolla\SDK\Webhook\Message\RefundMessage $message */
            // TODO if you cannot handle the refund, you should throw Xsolla\SDK\Exception\Webhook\XsollaWebhookException
            break;
        default:
            throw new XsollaWebhookException('Notification type not implemented');
    }
};

$webhookServer = WebhookServer::create($callback, PROJECT_KEY);
$webhookServer->start();

Once you've finished the handling of notifications on your server, please set up the URL that will receive all webhook notifications on the Settings page for your project.

Troubleshooting

You can find solutions for the most frequently encountered errors in our documentation.

Contributing

Please take a look at the CONTRIBUTING.md to see how to get your changes merged in.

Additional resources

xsolla-sdk-php's People

Contributors

aanisimova avatar abetsxsolla avatar amoseev avatar anastasiatw avatar aszhvakin avatar bralva avatar coocos100500 avatar craaazy19 avatar derpierre65 avatar doncode avatar ghostzero avatar ipanyukov avatar katerinapsperm avatar kokspflanze avatar l-malinin avatar nanaya avatar nasyrovyuri avatar renatko avatar s-kachulin avatar sanagrishin avatar sebalas avatar shionyr avatar shlykov avatar slatyshev avatar timur987 avatar valetanddama avatar vlepigeo avatar zakharovvi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.