mirror of
				https://github.com/v2board/v2board.git
				synced 2025-10-31 17:31:49 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace Library;
 | |
| 
 | |
| class BitpayX {
 | |
|     private $bitpayxAppSecret;
 | |
|     private $bitpayxGatewayUri;
 | |
|     /**
 | |
| 	 * 签名初始化
 | |
| 	 * @param merKey	签名密钥
 | |
| 	 */
 | |
| 	public function __construct($bitpayxAppSecret) {
 | |
| 		$this->bitpayxAppSecret = $bitpayxAppSecret;
 | |
| 		$this->bitpayxGatewayUri = 'https://api.mugglepay.com/v1/';
 | |
| 	}
 | |
| 	
 | |
|     public function prepareSignId($tradeno)
 | |
|     {
 | |
|         $data_sign = array();
 | |
|         $data_sign['merchant_order_id'] = $tradeno;
 | |
|         $data_sign['secret'] = $this->bitpayxAppSecret;
 | |
|         $data_sign['type'] = 'FIAT';
 | |
|         ksort($data_sign);
 | |
|         return http_build_query($data_sign);
 | |
|     }
 | |
|     public function sign($data)
 | |
|     {
 | |
|         return strtolower(md5(md5($data) . $this->bitpayxAppSecret));
 | |
|     }
 | |
|     public function verify($data, $signature)
 | |
|     {
 | |
|         $mySign = $this->sign($data);
 | |
|         return $mySign === $signature;
 | |
|     }
 | |
|     public function mprequest($data)
 | |
|     {
 | |
|         $headers = array('content-type: application/json', 'token: ' . $this->bitpayxAppSecret);
 | |
|         $curl = curl_init();
 | |
|         $url = $this->bitpayxGatewayUri . 'orders';
 | |
|         curl_setopt($curl, CURLOPT_URL, $url);
 | |
|         curl_setopt($curl, CURLOPT_POST, 1);
 | |
|         $data_string = json_encode($data);
 | |
|         curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
 | |
|         curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
 | |
|         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 | |
|         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 | |
|         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
 | |
|         $data = curl_exec($curl);
 | |
|         curl_close($curl);
 | |
|         return json_decode($data, true);
 | |
|     }
 | |
|     public function mpcheckout($orderId, $data)
 | |
|     {
 | |
|         $headers = array('content-type: application/json', 'token: ' . $this->bitpayxAppSecret);
 | |
|         $curl = curl_init();
 | |
|         $url = $this->bitpayxGatewayUri . 'orders/' . $orderId . '/checkout';
 | |
|         curl_setopt($curl, CURLOPT_URL, $url);
 | |
|         curl_setopt($curl, CURLOPT_POST, 1);
 | |
|         $data_string = json_encode($data);
 | |
|         curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
 | |
|         curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
 | |
|         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 | |
|         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 | |
|         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
 | |
|         $data = curl_exec($curl);
 | |
|         curl_close($curl);
 | |
|         return json_decode($data, true);
 | |
|     }
 | |
|     public function refund($merchantTradeNo) {
 | |
|         // TODO
 | |
|         return true;
 | |
|     }
 | |
|     public function buildHtml($params, $method = 'post', $target = '_self'){
 | |
|         // var_dump($params);exit;
 | |
| 		$html = "<form id='submit' name='submit' action='".$this->gatewayUri."' method='$method' target='$target'>";
 | |
| 		foreach ($params as $key => $value) {
 | |
| 			$html .= "<input type='hidden' name='$key' value='$value'/>";
 | |
| 		}
 | |
| 		$html .= "</form><script>document.forms['submit'].submit();</script>";
 | |
| 		return $html;
 | |
|     }
 | |
| } |