Skip to content

Commit

Permalink
Merge e84aa66 into 57db16c
Browse files Browse the repository at this point in the history
  • Loading branch information
solancer committed Oct 29, 2020
2 parents 57db16c + e84aa66 commit 25f236e
Show file tree
Hide file tree
Showing 12 changed files with 94 additions and 63 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Expand Up @@ -144,4 +144,5 @@ cython_debug/
.idea/

#example.py file
example.py
example.py
sdk_dev.py
54 changes: 27 additions & 27 deletions paypayopa/client.py
Expand Up @@ -12,12 +12,10 @@
from pkg_resources import DistributionNotFound

from types import ModuleType
from .constants import URL, HTTP_STATUS_CODE, ERROR_CODE
from .constants import URL, HTTP_STATUS_CODE

from . import resources

from .errors import ServerError


def capitalize_camel_case(string):
return "".join(map(str.capitalize, string.split('_')))
Expand Down Expand Up @@ -138,7 +136,7 @@ def auth_header(self, api_key, api_secret,
header = ":".join(header_list)
return "{}:{}".format(auth_type, header)

def request(self, method, path, auth_header, **options):
def request(self, method, path, auth_header, api_id, **options):
"""
Dispatches a request to the PayPay HTTP API
"""
Expand All @@ -152,71 +150,73 @@ def request(self, method, path, auth_header, **options):
(response.status_code < HTTP_STATUS_CODE.REDIRECT)):
return response.json()
else:
msg = ""
code = ""
print(response.status_code)
json_response = response.json()
print(json_response)
if 'resultInfo' in json_response:
if 'message' in json_response['resultInfo']:
msg = json_response['resultInfo']['message']
if 'code' in json_response['resultInfo']:
code = str(json_response['resultInfo']['code'])
# More error will be returned by API response
if str.upper(code) == ERROR_CODE.SERVER_ERROR:
raise ServerError(msg)

def get(self, path, params, **options):
resolve_url = "{}?api-id={}&code={}&code-name={}".format(
URL.RESOLVE,
api_id,
json_response['resultInfo']['code'],
json_response['resultInfo']['codeId'])
print("This link should help you to troubleshoot the error: " + resolve_url)
return json_response

def get(self, path, params, api_id, **options):
"""
Parses GET request options and dispatches a request
"""
method = "GET"
data, auth_header = self._update_request(None, path, method, options)
return self.request('get',
return self.request("get",
path,
params=params,
auth_header=auth_header,
api_id=api_id,
**options)

def post(self, path, data, **options):
def post(self, path, data, api_id, **options):
"""
Parses POST request options and dispatches a request
"""
method = "POST"
data, auth_header = self._update_request(data, path, method, options)
return self.request('post',
return self.request("post",
path,
data=data,
auth_header=auth_header,
api_id=api_id,
**options)

def patch(self, path, data, **options):
def patch(self, path, data, api_id, **options):
"""
Parses PATCH request options and dispatches a request
"""
method = "PATCH"
data, auth_header = self._update_request(data, path, method, options)
return self.request(method, path, auth_header=auth_header, **options)
return self.request("patch",
path,
auth_header=auth_header,
api_id=api_id,
**options)

def delete(self, path, data, **options):
def delete(self, path, data, api_id, **options):
"""
Parses DELETE request options and dispatches a request
"""
method = "DELETE"
data, auth_header = self._update_request(data, path, method, options)
return self.request('delete',
return self.request("delete",
path,
data=data,
auth_header=auth_header,
api_id=api_id,
**options)

def put(self, path, data, **options):
def put(self, path, data, api_id, **options):
"""
Parses PUT request options and dispatches a request
"""
method = "PUT"
data, auth_header = self._update_request(data, path, method, options)
return self.request('put',
return self.request("put",
path,
data=data,
auth_header=auth_header,
Expand Down
2 changes: 2 additions & 0 deletions paypayopa/constants/__init__.py
@@ -1,9 +1,11 @@
from .http_status_code import HTTP_STATUS_CODE
from .error_code import ERROR_CODE
from .url import URL
from .api_list import API_NAMES

__all__ = [
'HTTP_STATUS_CODE',
'ERROR_CODE',
'URL',
'API_NAMES',
]
22 changes: 22 additions & 0 deletions paypayopa/constants/api_list.py
@@ -0,0 +1,22 @@
class API_NAMES(object):
CANCEL_PAYMENT = "v2_cancelPayment"
CAPTURE_PAYMENT = "v2_captureAuthorizedOrder"
CREATE_PAYMENT = "v2_createPayment"
CREATE_QRCODE = "v2_createDynamicQRCode"
DELETE_QRCODE = "v2_deleteDynamicQRCode"
GET_PAYMENT = "v2_getPaymentDetail"
GET_QR_PAYMENT = "v2_getQRPaymentDetails"
GET_REFUND = "v2_getRefundDetails"
REFUND_PAYMENT = "v2_createRefundPayment"
REVERT_AUTHORIZE = "v2_revertAuthorizedOrder"
PREAUTHORIZE_PAYMENT = "v2_createOrderAndAuthorize"
CREATE_CONTINUOUS_PAYMENT = "v1_createSubscriptionPayment"
CREATE_REQUEST_ORDER = "v1_createRequestOrder"
GET_REQUEST_ORDER = "v1_getRequestOrder"
CANCEL_REQUEST_ORDER = "v1_cancelRequestOrder"
REFUND_REQUEST_ORDER = "v1_createRequestOrderRefund"
GET_SECURE_USER_PROFILE = "v2_getSecureUserProfile"
CHECK_BALANCE = "v2_checkWalletBalance"
GET_USER_AUTH_STATUS = "v2_userAuthStatus"
UNLINK_USER = "v2_unlinkUser"
CREATE_QR_SESSION = "v1_qrSession"
1 change: 1 addition & 0 deletions paypayopa/constants/error_code.py
Expand Up @@ -2,3 +2,4 @@ class ERROR_CODE(object):
BAD_REQUEST_ERROR = "BAD_REQUEST_ERROR"
GATEWAY_ERROR = "GATEWAY_ERROR"
SERVER_ERROR = "SERVER_ERROR"
UNAUTHORIZED = "UNAUTHORIZED"
1 change: 1 addition & 0 deletions paypayopa/constants/url.py
@@ -1,6 +1,7 @@
class URL(object):
SANDBOX_BASE_URL = 'https://stg-api.sandbox.paypay.ne.jp'
PRODUCTION_BASE_URL = 'https://api.paypay.ne.jp'
RESOLVE = 'https://developer.paypay.ne.jp/develop/resolve'
CODE = "/v2/codes"
PAYMENT = "/v2/payments"
ACCOUNT_LINK = "/v1/qr/sessions"
Expand Down
28 changes: 14 additions & 14 deletions paypayopa/resources/base.py
Expand Up @@ -6,31 +6,31 @@ def __init__(self, client=None):
def all(self, data, **kwargs):
return self.get_url(self.base_url, data, **kwargs)

def fetch(self, id, url=None, data={}, **kwargs):
def fetch(self, id, url=None, data={}, api_id=None, **kwargs):
if(url):
self.url = url
else:
self.url = "{}/{}".format(self.base_url, id)
return self.get_url(self.url, data, **kwargs)
return self.get_url(self.url, data, api_id, **kwargs)

def get_url(self, url, data, **kwargs):
return self.client.get(url, data, **kwargs)
def get_url(self, url, data, api_id, **kwargs):
return self.client.get(url, data, api_id, **kwargs)

def patch_url(self, url, data, **kwargs):
return self.client.patch(url, data, **kwargs)
def patch_url(self, url, data, api_id, **kwargs):
return self.client.patch(url, data, api_id, **kwargs)

def post_url(self, url, data, **kwargs):
return self.client.post(url, data, **kwargs)
def post_url(self, url, data, api_id, **kwargs):
return self.client.post(url, data, api_id, **kwargs)

def put_url(self, url, data, **kwargs):
return self.client.put(url, data, **kwargs)
def put_url(self, url, data, api_id, **kwargs):
return self.client.put(url, data, api_id, **kwargs)

def delete_url(self, url, data, **kwargs):
return self.client.delete(url, data, **kwargs)
def delete_url(self, url, data, api_id, **kwargs):
return self.client.delete(url, data, api_id, **kwargs)

def delete(self, id, url=None, data={}, **kwargs):
def delete(self, id, url=None, data={}, api_id=None, **kwargs):
if(url):
self.url = url
else:
self.url = "{}/{}/".format(self.base_url, id)
return self.delete_url(self.url, data, **kwargs)
return self.delete_url(self.url, data, api_id **kwargs)
8 changes: 4 additions & 4 deletions paypayopa/resources/code.py
@@ -1,8 +1,8 @@
from ..resources.base import Resource
from ..constants.url import URL
from ..constants.api_list import API_NAMES
import datetime


class Code(Resource):
def __init__(self, client=None):
super(Code, self).__init__(client)
Expand Down Expand Up @@ -39,18 +39,18 @@ def create_qr_code(self, data=None, **kwargs):
if "currency" not in item["unitPrice"]:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for orderItem.amount.currency")
return self.post_url(url, data, **kwargs)
return self.post_url(url, data, API_NAMES.CREATE_QRCODE, **kwargs)

def get_payment_details(self, id, **kwargs):
url = "{}/{}/{}".format(self.base_url, 'payments', id)
if id is None:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for merchantPaymentId")
return self.fetch(None, url, **kwargs)
return self.fetch(None, url, None, API_NAMES.GET_QR_PAYMENT, **kwargs)

def delete_qr_code(self, id=None, **kwargs):
if id is None:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for codeId")
url = "{}/{}".format(self.base_url, id)
return self.delete(None, url, **kwargs)
return self.delete(None, url, API_NAMES.DELETE_QRCODE, **kwargs)
19 changes: 10 additions & 9 deletions paypayopa/resources/payment.py
@@ -1,5 +1,6 @@
from .base import Resource
from ..constants.url import URL
from ..constants.api_list import API_NAMES
import datetime


Expand Down Expand Up @@ -27,21 +28,21 @@ def create(self, data={}, **kwargs):
if "currency" not in data["amount"]:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for currency")
return self.post_url(url, data, **kwargs)
return self.post_url(url, data, API_NAMES.CREATE_PAYMENT, **kwargs)

def get_payment_details(self, id, **kwargs):
url = "{}/{}".format(self.base_url, id)
if id is None:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for merchantPaymentId")
return self.fetch(None, url, **kwargs)
return self.fetch(None, url, None, API_NAMES.GET_PAYMENT, **kwargs)

def cancel_payment(self, id, **kwargs):
url = "{}/{}".format(self.base_url, id)
if id is None:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for merchantPaymentId")
return self.delete(None, url, **kwargs)
return self.delete(None, url, None, API_NAMES.CANCEL_PAYMENT, **kwargs)

def refund_payment(self, data={}, **kwargs):
url = "{}/".format('/v2/refunds')
Expand All @@ -62,14 +63,14 @@ def refund_payment(self, data={}, **kwargs):
if "currency" not in data["amount"]:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for currency")
return self.post_url(url, data, **kwargs)
return self.post_url(url, data, API_NAMES.REFUND_PAYMENT, **kwargs)

def refund_details(self, id=None, **kwargs):
if id is None:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for merchantRefundId")
url = "{}/{}".format('/v2/refunds', id)
return self.fetch(None, url, **kwargs)
return self.fetch(None, url, None, API_NAMES.GET_REFUND, **kwargs)

def capture_payment(self, data=None, **kwargs):
if data is None:
Expand All @@ -95,12 +96,12 @@ def capture_payment(self, data=None, **kwargs):
if "currency" not in data["amount"]:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS "
"\x1b[0m for currency")
return self.post_url(url, data, **kwargs)
return self.post_url(url, data, API_NAMES.CAPTURE_PAYMENT, **kwargs)

def create_continuous_payment(self, data=None, **kwargs):
if data is None:
data = {}
url = "{}/{}".format('v1/subscription', 'payments')
url = "{}/{}".format('/v1/subscription', 'payments')
if "requestedAt" not in data:
data['requestedAt'] = int(datetime.datetime.now().timestamp())
if "merchantPaymentId" not in data:
Expand All @@ -118,7 +119,7 @@ def create_continuous_payment(self, data=None, **kwargs):
if "currency" not in data["amount"]:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS "
"\x1b[0m for currency")
return self.post_url(url, data, **kwargs)
return self.post_url(url, data, API_NAMES.CREATE_CONTINUOUS_PAYMENT, **kwargs)

def revert_payment(self, data=None, **kwargs):
if data is None:
Expand All @@ -132,4 +133,4 @@ def revert_payment(self, data=None, **kwargs):
if "paymentId" not in data:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for merchantPaymentId")
return self.post_url(url, data, **kwargs)
return self.post_url(url, data, API_NAMES.REVERT_AUTHORIZE, **kwargs)
11 changes: 6 additions & 5 deletions paypayopa/resources/pending.py
@@ -1,5 +1,6 @@
from .base import Resource
from ..constants.url import URL
from ..constants.api_list import API_NAMES
import datetime


Expand Down Expand Up @@ -27,21 +28,21 @@ def create_pending_payment(self, data={}, **kwargs):
if "currency" not in data["amount"]:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for currency")
return self.post_url(url, data, **kwargs)
return self.post_url(url, data, API_NAMES.CREATE_REQUEST_ORDER, **kwargs)

def get_payment_details(self, id, **kwargs):
url = "{}/{}".format(self.base_url, id)
if id is None:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for merchantPaymentId")
return self.fetch(None, url, **kwargs)
return self.fetch(None, url, None, API_NAMES.GET_REQUEST_ORDER, **kwargs)

def cancel_payment(self, id, **kwargs):
url = "{}/{}".format(self.base_url, id)
if id is None:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for merchantPaymentId")
return self.delete(None, url, **kwargs)
return self.delete(None, url, None, API_NAMES.CANCEL_REQUEST_ORDER, **kwargs)

def refund_payment(self, data={}, **kwargs):
url = "{}/{}".format(self.base_url, 'refunds')
Expand All @@ -62,11 +63,11 @@ def refund_payment(self, data={}, **kwargs):
if "currency" not in data["amount"]:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for currency")
return self.post_url(url, data, **kwargs)
return self.post_url(url, data, API_NAMES.REFUND_REQUEST_ORDER, **kwargs)

def refund_details(self, id=None, **kwargs):
if id is None:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for merchantRefundId")
url = "{}/{}".format(self.base_url, id)
return self.fetch(None, url, **kwargs)
return self.fetch(None, url, None, API_NAMES.CANCEL_REQUEST_ORDER, **kwargs)
3 changes: 2 additions & 1 deletion paypayopa/resources/preauth.py
@@ -1,5 +1,6 @@
from .base import Resource
from ..constants.url import URL
from ..constants.api_list import API_NAMES
import datetime


Expand Down Expand Up @@ -30,4 +31,4 @@ def pre_authorize_create(self, data={}, **kwargs):
if "currency" not in data["amount"]:
raise ValueError("\x1b[31m MISSING REQUEST PARAMS"
" \x1b[0m for currency")
return self.post_url(url, data, **kwargs)
return self.post_url(url, data, API_NAMES.PREAUTHORIZE_PAYMENT **kwargs)

0 comments on commit 25f236e

Please sign in to comment.