diff --git a/src/ovoid/services/payment.py b/src/ovoid/services/payment.py index aa59488..f41d203 100644 --- a/src/ovoid/services/payment.py +++ b/src/ovoid/services/payment.py @@ -29,6 +29,11 @@ class PaymentService: def __init__(self, client: OVOClient) -> None: self._client = client + @staticmethod + def _path_segment(value: str) -> str: + """Encode an identifier before inserting it into a URL path.""" + return quote(value, safe="") + def do_qr_payment( self, body_request: dict[str, Any], @@ -67,15 +72,17 @@ def get_payment_method(self) -> dict[str, Any]: def get_payment_method_by_merchant(self, merchant_id: str) -> dict[str, Any]: """``GET wallet/payment-method/merchant/{id}``.""" - return self._client.get(self._PATH_PAYMENT_METHOD_MERCHANT + merchant_id) + return self._client.get(self._PATH_PAYMENT_METHOD_MERCHANT + self._path_segment(merchant_id)) def get_payment_method_by_merchant_deal(self, merchant_id: str, deal_id: str) -> dict[str, Any]: """``GET wallet/payment-method/merchant/{id}/deals/{deal_id}``.""" - return self._client.get(self._PATH_PAYMENT_METHOD_MERCHANT + merchant_id + "/deals/" + deal_id) + merchant = self._path_segment(merchant_id) + deal = self._path_segment(deal_id) + return self._client.get(self._PATH_PAYMENT_METHOD_MERCHANT + merchant + "/deals/" + deal) def get_remaining_timeout(self, order_id: str) -> dict[str, Any]: """Remaining order time (``GET wallet/order/{orderID}/expiry``).""" - return self._client.get(self._PATH_ORDER_EXPIRY + order_id + "/expiry") + return self._client.get(self._PATH_ORDER_EXPIRY + self._path_segment(order_id) + "/expiry") def get_tip(self, client_id: str, request: dict[str, Any]) -> dict[str, Any]: """Suggested tip (``POST v1.0/reference/master/amounts`` with ``clientId`` header)."""