dever 6 years ago
parent
commit
edeb07225c
3 changed files with 15 additions and 4 deletions
  1. 1 1
      lib/Wechat.php
  2. 12 1
      sdk/wechat.php
  3. 2 2
      sdk/wechat/WxPay.Api.php

+ 1 - 1
lib/Wechat.php

@@ -46,7 +46,7 @@ class Wechat extends Core
 		$input->SetTotal_fee($cash * 100);
 		$input->SetTime_start(date("YmdHis"));
 		$input->SetTime_expire(date("YmdHis", time() + $this->config->GetTimeOut()));
-		$input->SetSpbill_create_ip(Dever::ip());
+		//$input->SetGoods_tag($name);
 		$input->SetNotify_url($this->config->GetNotifyUrl());
 		$input->SetTrade_type($trade_type);
 		$input->SetProduct_id($product_id);

+ 12 - 1
sdk/wechat.php

@@ -1,5 +1,16 @@
 <?php
-
+function get_client_ip() {
+    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
+        $ip = getenv('HTTP_CLIENT_IP');
+    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
+        $ip = getenv('HTTP_X_FORWARDED_FOR');
+    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
+        $ip = getenv('REMOTE_ADDR');
+    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
+        $ip = $_SERVER['REMOTE_ADDR'];
+    }
+    return preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
+}
 Dever::apply('sdk/wechat/WxPay.Api', 'pay');
 Dever::apply('sdk/wechat/WxPay.JsApiPay', 'pay');
 Dever::apply('sdk/wechat/WxPay.Config', 'pay');

+ 2 - 2
sdk/wechat/WxPay.Api.php

@@ -50,7 +50,7 @@ class WxPayApi
 		
 		$inputObj->SetAppid($config->GetAppId());//公众账号ID
 		$inputObj->SetMch_id($config->GetMerchantId());//商户号
-		$inputObj->SetSpbill_create_ip($_SERVER['REMOTE_ADDR']);//终端ip	   	    
+		$inputObj->SetSpbill_create_ip(get_client_ip());//终端ip	   	    
 		$inputObj->SetNonce_str(self::getNonceStr());//随机字符串
 		
 		//签名
@@ -261,7 +261,7 @@ class WxPayApi
 			throw new WxPayException("提交被扫支付API接口中,缺少必填参数auth_code!");
 		}
 		
-		$inputObj->SetSpbill_create_ip($_SERVER['REMOTE_ADDR']);//终端ip
+		$inputObj->SetSpbill_create_ip(get_client_ip());//终端ip
 		$inputObj->SetAppid($config->GetAppId());//公众账号ID
 		$inputObj->SetMch_id($config->GetMerchantId());//商户号
 		$inputObj->SetNonce_str(self::getNonceStr());//随机字符串