def pay(self, params, trade_type='APP'): if not isinstance(params, dict): raise Exception('params must be a dict') # check params params_keys = self.BASE_PARAMS_KEYS[:] params_keys.extend(self.PARAMS_DICT.get(trade_type, [])) self._check_params(params_keys, params) retries = params.pop('retries', 3) # params udpate config params.update({ 'appid': self.appid, 'mch_id': self.mch_id, 'nonce_str': get_noncestr(), 'body': self.get_body(params.get('body', u'Test Request')), }) if trade_type != 'MICRO': params.update(notify_url=self.notify_url, trade_type=trade_type) url = self.MICRO_PAY_URL if trade_type == 'MICRO' else self.PAY_URL return self._request(url, params, retries=retries)
def short_url(self, long_url): # document: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_9&index=8 params = { 'appid': self.appid, 'mch_id': self.mch_id, 'nonce_str': get_noncestr(), 'long_url': long_url, } return self._request(url, params)
def short_url(self, long_url): # document: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_9&index=8 params = { 'appid': self.appid, 'mch_id': self.mch_id, 'nonce_str': get_noncestr(), 'long_url': long_url, } url = 'https://api.mch.weixin.qq.com/tools/shorturl' return self._request(url, params)
def order_query(self, transaction_id=None, out_trade_no=None): # ducument: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_2 params = self._check_choose_params(transaction_id=transaction_id, out_trade_no=out_trade_no) url = 'https://api.mch.weixin.qq.com/pay/orderquery' params.update({ 'appid': self.appid, 'mch_id': self.mch_id, 'nonce_str': get_noncestr(), }) return self._request(url, params)
def order_reverse(self, out_trade_no, transaction_id=None): # document: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_11&index=3 params = { 'appid': self.appid, 'mch_id': self.mch_id, 'nonce_str': get_noncestr(), } if transaction_id: params.update(transaction_id=transaction_id) else: params.update(out_trade_no=out_trade_no) url = 'https://api.mch.weixin.qq.com/secapi/pay/reverse' return self._request(url, params, is_cert=True)
def refund_order_query(self, params): # document: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_5 keys = ['transaction_id', 'out_trade_no', 'out_refund_no', 'out_refund_no'] is_True = False for key in keys: is_True = True if params.get(key) else is_True if not is_True: raise Exception('%s must have one' % ','.join(keys)) params.update({ 'appid': self.appid, 'mch_id': self.mch_id, 'nonce_str': get_noncestr(), }) url = 'https://api.mch.weixin.qq.com/pay/refundquery' return self._request(url, params)
def order_refund(self, params): # document: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_4 transaction_id = params.pop('transaction_id', None) out_trade_no = params.pop('out_trade_no', None) params.update(self._check_choose_params(transaction_id=transaction_id, out_trade_no=out_trade_no)) params_keys = ['out_refund_no', 'total_fee', 'refund_fee'] self._check_params(params_keys, params) params['op_user_id'] = params.get('op_user_id', self.mch_id) url = 'https://api.mch.weixin.qq.com/secapi/pay/refund' params.update({ 'appid': self.appid, 'mch_id': self.mch_id, 'nonce_str': get_noncestr(), }) return self._request(url, params, is_cert=True)
def refund_order_query(self, params): # document: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_5 keys = [ 'transaction_id', 'out_trade_no', 'out_refund_no', 'out_refund_no' ] is_True = False for key in keys: is_True = True if params.get(key) else is_True if not is_True: raise Exception('%s must have one' % ','.join(keys)) params.update({ 'appid': self.appid, 'mch_id': self.mch_id, 'nonce_str': get_noncestr(), }) url = 'https://api.mch.weixin.qq.com/pay/refundquery' return self._request(url, params)
def order_refund(self, params): # document: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_4 transaction_id = params.pop('transaction_id', None) out_trade_no = params.pop('out_trade_no', None) params.update( self._check_choose_params(transaction_id=transaction_id, out_trade_no=out_trade_no)) params_keys = ['out_refund_no', 'total_fee', 'refund_fee'] self._check_params(params_keys, params) params['op_user_id'] = params.get('op_user_id', self.mch_id) url = 'https://api.mch.weixin.qq.com/secapi/pay/refund' params.update({ 'appid': self.appid, 'mch_id': self.mch_id, 'nonce_str': get_noncestr(), }) return self._request(url, params, is_cert=True)
def pay(self, params, trade_type='APP'): if not isinstance(params, dict): raise Exception('params must be a dict') # check params params_keys = self.BASE_PARAMS_KEYS[:] params_keys.extend(self.PARAMS_DICT.get(trade_type, [])) self._check_params(params_keys, params) retries = params.pop('retries', 3) # params udpate config params.update({ 'appid': self.appid, 'mch_id': self.mch_id, 'nonce_str': get_noncestr(), 'body': self.get_body(params.get('body')), }) if trade_type != 'MICRO': params.update(notify_url=self.notify_url, trade_type=trade_type) url = self.MICRO_PAY_URL if trade_type == 'MICRO' else self.PAY_URL return self._request(url, params, retries=retries)