"""
云汇宝聚合支付 SDK
@version 1.0
"""
import time
import hashlib
import json
import urllib.request

class YunhuibaoClient:
    def __init__(self, merchant_no, merchant_key, base_url='https://yunhuibao.com/api/'):
        self.merchant_no = merchant_no
        self.merchant_key = merchant_key
        self.base_url = base_url

    def _sign(self, params):
        params['merchant_no'] = self.merchant_no
        params['timestamp'] = int(time.time())
        sorted_str = '&'.join(f'{k}={v}' for k, v in sorted(params.items()))
        sorted_str += f'&key={self.merchant_key}'
        params['sign'] = hashlib.md5(sorted_str.encode()).hexdigest()
        return params

    def _request(self, path, params):
        params = self._sign(params)
        data = json.dumps(params).encode('utf-8')
        req = urllib.request.Request(self.base_url + path, data=data, headers={'Content-Type': 'application/json'})
        with urllib.request.urlopen(req) as resp:
            return json.loads(resp.read())

    def create_order(self, **kwargs):
        return self._request('create_order.php', kwargs)

    def query_order(self, **kwargs):
        return self._request('query_order.php', kwargs)