Skip to content

Krukov/yandex-money-sdk-python

Repository files navigation

Build Status Coverage Status

Python Yandex.Money API SDK

Requirements

  1. Python 2.7 or Python 3.x
  2. pip

Links

  1. Yandex.Money API page: Ru, En

Getting started

Installation

  1. Install it with pip install yandex-money-sdk
  2. Paste from yandex_money.api import WalletPayment, ExternalPayment to your source code

Payments from the Yandex.Money wallet

Using Yandex.Money API requires following steps

  1. Obtain token URL and redirect user's browser to Yandex.Money service. Note: client_id, redirect_uri, client_secret are constants that you get, when register app in Yandex.Money API.

    scope = ['account-info', 'operation-history'] # etc..
    auth_url = WalletPayment.build_obtain_token_url(client_id, redirect_uri, scope)
  2. After that, user fills Yandex.Money HTML form and user is redirected back to REDIRECT_URI?code=CODE.

  3. You should immediately exchange CODE with ACCESS_TOKEN.

    access_token = WalletPayment.get_access_token(client_id, code, redirect_uri,
        client_secret=None)
  4. Now you can use Yandex.Money API.

    api = WalletPayment(access_token)
    account_info = api.account_info()
    balance = account_info['balance'] # and so on
    
    request_options = {
        "pattern_id": "p2p",
        "to": "410011161616877",
        "amount_due": "0.02",
        "comment": "test payment comment from yandex-money-python",
        "message": "test payment message from yandex-money-python",
        "label": "testPayment",
        "test_payment": true,
        "test_result": "success"
    }
    request_result = api.request(request_options)
    # check status
    
    process_payment = api.process({
        "request_id": request_result['request_id'],
    })
    # check result
    if process_payment['status'] == "success":
        # show success page
    else:
        # something went wrong

Payments from bank cards without authorization

  1. Create ExternalPayment instance

    external_payment = ExternalPayment(client_id)

    1.1 We are recommend you to store 'instance_id' in safe storage (usually it is only once for every client).

    external_payment = ExternalPayment(client_id, instance_id=Db.get('instance_id'))
  2. Make request payment

    payment_options = {
        # pattern_id, etc..
    }
    response = external_payment.request(payment_options)
    if response.status == "success":
        request_id = response.request_id
    else:
        # throw exception with response->message
  3. Process the request with process-payment.

    process_options = {
        "request_id": request_id
        # other params..
    }
    result = external_payment.process(process_options)
    # process result according to docs

Running tests

  1. Clone this repo.
  2. Create tests/constants.py file with ACCESS_TOKEN and CLIENT_ID constants.
  3. Install tox
  4. Run tox in repo root directory

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages