npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

robokassa-rn

v0.1.9

Published

My new module

Readme

robokassa-rn

Expo module для оплаты через Robokassa Android SDK.

Поддерживаемая платформа:

  • Android only.

Установка

npm install robokassa-rn

Подключение в приложении (Expo)

Добавьте плагин в app.json или app.config.ts:

{
  "expo": {
    "plugins": [
      [
        "robokassa-rn",
        {
          "autoVerify": false,
          "returnUrls": [
            "https://pay.example.com/robokassa/success",
            "https://pay.example.com/robokassa/fail"
          ],
          "redirectUrl": "https://pay.example.com/robokassa/success"
        }
      ]
    ]
  }
}

Затем выполните:

npx expo prebuild

После изменений в plugins снова запускайте npx expo prebuild.

Параметры плагина:

  • returnUrls — URL'ы для intent-filter.
  • redirectUrl — URL, который будет передан в paymentParams.redirectUrl (по умолчанию берется первый returnUrls).
  • autoVerify — верификация app links Android (false удобнее, если домен не настроен через assetlinks.json).

Быстрый пример оплаты

import RobokassaRn from 'robokassa-rn';
import { Platform, ToastAndroid } from 'react-native';

async function pay(currentUserId: string) {
  if (Platform.OS !== 'android') return;

  const result = await RobokassaRn.startPaymentAsync({
    merchantLogin: 'YOUR_MERCHANT_LOGIN',
    password1: 'YOUR_PASSWORD_1',
    password2: 'YOUR_PASSWORD_2',
    // invoiceId можно не передавать: Robokassa сгенерирует его автоматически
    // invoiceId: 12345,
    orderSum: 499.0,
    description: 'Оплата заказа #12345',
    email: '[email protected]',
    culture: 'ru',
    testMode: false,
    toolbarText: 'Оплата заказа',
    toolbarBgColor: '#111111',
    toolbarTextColor: '#FFFFFF',
    hasToolbar: true,
    extra: {
      userId: currentUserId,
      Shp_subscriptionType: 'premium'
    }
  });

  if (result.status === 'success') {
    ToastAndroid.show('Оплата успешна', ToastAndroid.SHORT);
    return;
  }

  if (result.status === 'cancelled') {
    ToastAndroid.show('Оплата отменена', ToastAndroid.SHORT);
    return;
  }

  ToastAndroid.show(result.errorDescription ?? 'Ошибка оплаты', ToastAndroid.LONG);
}

Что означают поля оплаты

  • merchantLogin — логин магазина из личного кабинета Robokassa.
  • password1 — пароль #1 из личного кабинета Robokassa.
  • password2 — пароль #2 из личного кабинета Robokassa.
  • invoiceId — необязательный ID счета. Если передаете вручную, он должен быть уникальным для платежа.
  • orderSum — сумма платежа.
  • description — описание платежа.
  • email — email покупателя.
  • testMode — тестовый режим Robokassa (true для тестовой оплаты).

Пользовательские параметры (extra)

  • Используйте extra: Record<string, string>.
  • Ключи отправляются в Robokassa как Shp_*.
  • Если ключ уже с префиксом Shp_, он будет отправлен как пользовательский параметр.
  • Если ключ без префикса, модуль автоматически добавит Shp_.
  • Параметры из extra включаются в SignatureValue.

Пример:

extra: {
  userId: '12345',            // -> Shp_userId=12345
  Shp_plan: 'premium'         // -> Shp_plan=premium
}

Настройка внешнего вида окна оплаты

  • toolbarText — заголовок в верхней панели.
  • toolbarBgColor — цвет фона верхней панели (#RRGGBB).
  • toolbarTextColor — цвет текста верхней панели (#RRGGBB).
  • hasToolbar — показывать верхнюю панель (true/false).

Результат startPaymentAsync

  • success — успешная оплата, может вернуть invoiceId.
  • cancelled — пользователь отменил оплату.
  • error — ошибка, вернет errorCode и/или errorDescription.
  • Для errorCode вида result:1000|...: это серверная ошибка проверки статуса в Robokassa. Даже если в WebView был «успешный экран», операция еще не подтверждена.

Публикация обновлений в npm

  1. Обновите версию пакета:
npm version patch

Для обычных релизов используйте patch, для новых фич minor, для ломающих изменений major.

  1. Проверьте сборку перед публикацией:
npm run build
npm run lint
  1. Авторизуйтесь в npm (если не авторизованы):
npm login
  1. Опубликуйте пакет:
npm publish --access public

Если у аккаунта включен 2FA:

npm publish --access public --otp <код_из_приложения>
  1. Отправьте изменения и тег версии в git:
git push
git push --tags

Примечание: во время npm publish автоматически сработает prepublishOnly из package.json.

Важные замечания

  • На iOS/web метод возвращает ошибку unsupported platform.
  • Для returnUrls используйте реальные URL вашего backend.
  • Если на странице оплаты видите ошибку авторизации, проверьте merchantLogin/password1/password2 и режим магазина в Robokassa.