Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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)