예제 #1
0
 def retrieve_refund(cls, id, refund_id, api_key=None, **params):
     requestor = api_requestor.APIRequestor(api_key)
     url = "%s/%s/order_refunds/%s" % (cls.class_url(),
                                       quote_plus(util.utf8(id)),
                                       quote_plus(util.utf8(refund_id)))
     response, api_key = requestor.request('get', url, params)
     return util.convert_to_pingpp_object(response, api_key)
예제 #2
0
 def instance_url(self):
     self.id = util.utf8(self.id)
     self.charge = util.utf8(self.charge)
     base = Charge.class_url()
     cust_extn = quote_plus(self.charge)
     extn = quote_plus(self.id)
     return "%s/%s/refunds/%s" % (base, cust_extn, extn)
예제 #3
0
 def retrieve_transfer_channel(cls,
                               sub_app,
                               channel,
                               api_key=None,
                               app=None,
                               **params):
     requestor = api_requestor.APIRequestor(api_key)
     url = "%s/%s/transfer_channels/%s" % (cls.class_url(app),
                                           quote_plus(util.utf8(sub_app)),
                                           quote_plus(util.utf8(channel)))
     response, api_key = requestor.request('get', url, params)
     return util.convert_to_pingpp_object(response, api_key)
예제 #4
0
    def retrieve(self, id, **params):
        base = self.get('url')
        id = util.utf8(id)
        extn = quote_plus(id)
        url = "%s/%s" % (base, extn)

        return self.request('get', url, params)
예제 #5
0
    def instance_url(self):
        id = self.get('id')
        if not isinstance(id, six.string_types):
            raise error.InvalidRequestError(
                'Could not determine which URL to request: %s instance '
                'has invalid ID: %r, %s. ID should be of type `str` (or'
                ' `unicode`)' % (type(self).__name__, id, type(id)), 'id')

        id = util.utf8(id)
        base = self.class_url()
        extn = quote_plus(id)
        return "%s/%s" % (base, extn)
예제 #6
0
    def create_oauth_url_for_code(app_id, redirect_url, more_info=False):
        """
        用于获取授权 code 的 URL 地址,此地址用于用户身份鉴权,获取用户身份信息,同时重定向到 redirect_url
        :param app_id: 微信公众号应用唯一标识
        :param redirect_url: 授权后重定向的回调链接地址,重定向后此地址将带有授权 code 参数,
                             该地址的域名需在微信公众号平台上进行设置,
                             步骤为:登陆微信公众号平台 => 开发者中心 => 网页授权获取用户基本信息 => 修改
        :param more_info: False 不弹出授权页面,直接跳转,这个只能拿到用户 openid
                          True 弹出授权页面,这个可以通过 openid 拿到昵称、性别、所在地,
        :return: 用于获取授权 code 的 URL 地址
        """
        data = []
        data.append('appid=' + app_id)
        data.append('redirect_uri=' + quote_plus(redirect_url, ''))
        data.append('response_type=code')
        data.append('scope=' +
                    ('snsapi_userinfo' if more_info else 'snsapi_base'))
        data.append('state=STATE#wechat_redirect')
        query_str = '&'.join(data)

        return 'https://open.weixin.qq.com/connect/oauth2/authorize?' \
            + query_str
예제 #7
0
 def create_channel(cls, sub_app, api_key=None, app=None, **params):
     requestor = api_requestor.APIRequestor(api_key)
     url = "%s/%s/channels" % (cls.class_url(app),
                               quote_plus(util.utf8(sub_app)))
     response, api_key = requestor.request('post', url, params)
     return util.convert_to_pingpp_object(response, api_key)
예제 #8
0
 def delete(cls, id, api_key=None, app=None, **params):
     requestor = api_requestor.APIRequestor(api_key)
     url = "%s/%s" % (cls.class_url(app), quote_plus(util.utf8(id)))
     response, api_key = requestor.request('delete', url, params)
     return util.convert_to_pingpp_object(response, api_key)
예제 #9
0
 def list_charges(cls, id, api_key=None, **params):
     requestor = api_requestor.APIRequestor(api_key)
     url = "%s/%s/charges" % (cls.class_url(), quote_plus(util.utf8(id)))
     response, api_key = requestor.request('get', url, params)
     return util.convert_to_pingpp_object(response, api_key)
예제 #10
0
 def reverse(cls, id, api_key=None, **params):
     url = cls.class_url() + '/%s/reverse' % quote_plus(util.utf8(id))
     requestor = api_requestor.APIRequestor(api_key)
     response, api_key = requestor.request('post', url, params)
     return util.convert_to_pingpp_object(response, api_key)
예제 #11
0
 def modify(cls, sid, api_key=None, app=None, **params):
     url = "%s/%s" % (cls.class_url(app), quote_plus(util.utf8(sid)))
     return cls._modify(url, api_key=api_key, **params)
예제 #12
0
 def class_name(cls):
     if cls == APIResource:
         raise NotImplementedError(
             'APIResource is an abstract class.  You should perform '
             'actions on its subclasses (e.g. Charge, Customer)')
     return str(quote_plus(cls.__name__.lower()))
예제 #13
0
 def class_url(cls, app=None):
     cls_name = cls.class_name()
     if not app:
         from pingpp import app_id
         app = app_id
     return "/v1/apps/%s/%ss" % (quote_plus(app), cls_name)