<?php
/**
 * 云汇宝聚合支付 SDK
 * @version 1.0
 */
class YunhuibaoClient {
    private $merchantNo;
    private $merchantKey;
    private $baseUrl;

    public function __construct($merchantNo, $merchantKey, $baseUrl = 'https://yunhuibao.com/api/') {
        $this->merchantNo = $merchantNo;
        $this->merchantKey = $merchantKey;
        $this->baseUrl = $baseUrl;
    }

    private function sign(array $params) {
        ksort($params);
        $str = http_build_query($params) . '&key=' . $this->merchantKey;
        return md5($str);
    }

    private function request($path, array $params) {
        $params['merchant_no'] = $this->merchantNo;
        $params['timestamp'] = time();
        $params['sign'] = $this->sign($params);
        $ch = curl_init($this->baseUrl . $path);
        curl_setopt_array($ch, [
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => json_encode($params),
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
            CURLOPT_TIMEOUT => 30,
        ]);
        $resp = curl_exec($ch);
        curl_close($ch);
        return json_decode($resp, true);
    }

    public function createOrder(array $data) {
        return $this->request('create_order.php', $data);
    }

    public function queryOrder(array $data) {
        return $this->request('query_order.php', $data);
    }
}