Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Payout Link and Transaction #192

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ on:

jobs:
deploy:

runs-on: ubuntu-latest
runs-on: ubuntu-latest # nosemgrep : semgrep.dev/s/swati31196:github_provided_runner
strategy:
max-parallel: 4
matrix:
Expand All @@ -30,4 +29,4 @@ jobs:
pip install responses
python3 setup.py install
- name: Run Tests
run: python3 -m unittest
run: python3 -m unittest
51 changes: 51 additions & 0 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: SecurityChecks
on:
pull_request: {}
push:
branches: ["master"]
schedule:
- cron: '30 20 * * *'
jobs:
semgrep:
name: Scan
runs-on: [ubuntu-latest] # nosemgrep : semgrep.dev/s/swati31196:github_provided_runner
steps:
- uses: actions/checkout@v2
- uses: returntocorp/semgrep-action@v1
with:
publishToken: ${{ secrets.SEMGREP_APP_TOKEN }}
publishDeployment: 339
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

workflow_status:
runs-on: [ ubuntu-latest ] # nosemgrep : semgrep.dev/s/swati31196:github_provided_runner
name: Update Status Check
needs: [ semgrep ]
if: always()
env:
githubCommit: ${{ github.event.pull_request.head.sha }}
steps:
- name: Set github commit id
run: |
if [ "${{ github.event_name }}" = "push" ] || [ "${{ github.event_name }}" = "schedule" ]; then
echo "githubCommit=${{ github.sha }}" >> $GITHUB_ENV
fi
exit 0
- name: Failed
id: failed
if: (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) && github.ref != 'refs/heads/master'
run: |
echo 'Failing the workflow for github security status check.'
curl -X POST -H "Content-Type: application/json" -H "Authorization: token ${{ github.token }}" \
-d '{ "state" : "failure" , "context" : "github/security-status-check" , "description" : "github/security-status-check", "target_url" : "https://github.com/${{ github.repository }}" }' \
https://api.github.com/repos/${{ github.repository }}/statuses/${{ env.githubCommit }}
exit 1
- name: Success
if: steps.failed.conclusion == 'skipped' || github.ref != 'refs/heads/master'
run: |
echo 'Status check has passed!'
curl -X POST -H "Content-Type: application/json" -H "Authorization: token ${{ github.token }}" \
-d '{ "state" : "success" , "context" : "github/security-status-check" , "description" : "github/security-status-check", "target_url" : "https://github.com/${{ github.repository }}" }' \
https://api.github.com/repos/${{ github.repository }}/statuses/${{ env.githubCommit }}
exit 0
4 changes: 4 additions & 0 deletions razorpay/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
from .resources import Item
from .resources import Qrcode
from .resources import FundAccount
from .resources import PayoutLink
from .resources import Transaction
from .utility import Utility
from .constants import ERROR_CODE
from .constants import HTTP_STATUS_CODE
Expand All @@ -39,6 +41,8 @@
'RegistrationLink',
'Plan',
'FundAccount',
'PayoutLink',
'Transaction',
'Settlement',
'Item',
'Qrcode',
Expand Down
4 changes: 2 additions & 2 deletions razorpay/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def _update_user_agent_header(self, options):

def _get_version(self):
version = ""
try:
try: # nosemgrep : gitlab.bandit.B110
version = pkg_resources.require("razorpay")[0].version
except DistributionNotFound: # pragma: no cover
pass
Expand Down Expand Up @@ -137,7 +137,7 @@ def request(self, method, path, **options):
raise BadRequestError(msg)
elif str.upper(code) == ERROR_CODE.GATEWAY_ERROR:
raise GatewayError(msg)
elif str.upper(code) == ERROR_CODE.SERVER_ERROR:
elif str.upper(code) == ERROR_CODE.SERVER_ERROR: # nosemgrep : python.lang.maintainability.useless-ifelse.useless-if-body
raise ServerError(msg)
else:
raise ServerError(msg)
Expand Down
2 changes: 2 additions & 0 deletions razorpay/constants/url.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@ class URL(object):
QRCODE_URL = "/payments/qr_codes"
REGISTRATION_LINK_URL = "/subscription_registration"
FUND_ACCOUNT_URL = "/fund_accounts"
PAYOUT_LINKS_URL = "/payout-links"
TRANSACTION_URL = "/transactions"
6 changes: 5 additions & 1 deletion razorpay/resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
from .settlement import Settlement
from .item import Item
from .fund_account import FundAccount
from .payout_link import PayoutLink
from .transaction import Transaction

__all__ = [
'Payment',
Expand All @@ -35,5 +37,7 @@
'Settlement',
'Item',
'QrCode',
'FundAccount'
'FundAccount',
'PayoutLink',
'Transaction'
]
4 changes: 2 additions & 2 deletions razorpay/resources/payment.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def fetch(self, payment_id, data={}, **kwargs):
"""
return super(Payment, self).fetch(payment_id, data, **kwargs)

def capture(self, payment_id, amount, data={}, **kwargs):
def capture(self, payment_id, amount, data={}, **kwargs): # nosemgrep : python.lang.correctness.common-mistakes.default-mutable-dict.default-mutable-dict
""""
Capture Payment for given Id

Expand All @@ -49,7 +49,7 @@ def capture(self, payment_id, amount, data={}, **kwargs):
data['amount'] = amount
return self.post_url(url, data, **kwargs)

def refund(self, payment_id, amount, data={}, **kwargs): # pragma: no cover
def refund(self, payment_id, amount, data={}, **kwargs): # pragma: no cover # nosemgrep : python.lang.correctness.common-mistakes.default-mutable-dict.default-mutable-dict
""""
Refund Payment for given Id

Expand Down
47 changes: 47 additions & 0 deletions razorpay/resources/payout_link.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import warnings

from .base import Resource
from ..constants import URL


class PayoutLink(Resource):
def __init__(self, client=None):
super(PayoutLink, self).__init__(client)
self.base_url = URL.PAYOUT_LINKS_URL

def create(self, data={}, **kwargs):
""""
Create Payout link from given dict

Returns:
Payout link Dict which was created
"""
url = self.base_url
return self.post_url(url, data, **kwargs)

def fetch(self, payoutlink_id, data={}, **kwargs):
""""
Fetch Payout link for given Id

Args:
payoutlink_id : Id for which payout link object has to be retrieved

Returns:
Payout link dict
"""
return super(PayoutLink, self).fetch(payoutlink_id, data, **kwargs)

def fetch_all(self, data={}, **kwargs): # pragma: no cover
warnings.warn("Will be Deprecated in next release, use all",
DeprecationWarning)
return self.all(data, **kwargs)

def cancel(self, payoutlink_id,data={}, **kwargs):
"""
Cancel a Payout link.

Returns:
Payout link dict of cancelled Payout link
"""
url = "{}/{}/cancel".format(self.base_url, payoutlink_id)
return self.post_url(url, data, **kwargs)
27 changes: 27 additions & 0 deletions razorpay/resources/transaction.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import warnings

from .base import Resource
from ..constants import URL


class Transaction(Resource):
def __init__(self, client=None):
super(Transaction, self).__init__(client)
self.base_url = URL.TRANSACTION_URL

def fetch(self, transaction_id, data={}, **kwargs):
""""
Fetch transaction for given Id

Args:
transaction_id : Id for which transaction object has to be retrieved

Returns:
transaction dict
"""
return super(Transaction, self).fetch(transaction_id, data, **kwargs)

def fetch_all(self, data={}, **kwargs): # pragma: no cover
warnings.warn("Will be Deprecated in next release, use all",
DeprecationWarning)
return self.all(data, **kwargs)