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)
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)
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)
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)
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)
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
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)
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)
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)
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)
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)
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()))
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)