diff --git a/extend/payment/WeixinMini.php b/extend/payment/WeixinMini.php
index caa907756172e24c79e309fa8b929ab6de320a85..50fe508691e7af862fbedf221b96eccf31a1fc42 100644
--- a/extend/payment/WeixinMini.php
+++ b/extend/payment/WeixinMini.php
@@ -149,25 +149,8 @@ class WeixinMini
}
// xml
- $xml = '
- '.$this->config['appid'].'
- '.$data['data']['data']['name'].'
- '.$this->config['mch_id'].'
- '.$data['data']['data']['nonce_str'].'
- '.$data['data']['data']['notify_url'].'
- '.$data['data']['data']['user_openid'].'
- '.$data['data']['data']['order_no'].'
- '.$data['data']['data']['spbill_create_ip'].'
- '.$data['data']['data']['total_price'].'
- '.$data['data']['data']['trade_type'].'
- '.$data['data']['data']['attach'].'
- '.$data['data']['data']['sign_type'].'
- '.$data['data']['sign'].'
- ';
+ $xml = $this->ArrayToXml($data['data']);
$result = $this->XmlToArray($this->HttpRequest('https://api.mch.weixin.qq.com/pay/unifiedorder', $xml));
-
- print_r($xml);
- print_r($result);die;
if(!empty($result['return_code']) && $result['return_code'] == 'SUCCESS' && !empty($result['prepay_id']))
{
// 返回数据
@@ -185,6 +168,26 @@ class WeixinMini
return DataReturn('参数不能为空', -1);
}
+ /**
+ * 数组转xml
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2019-01-07
+ * @desc description
+ * @param [array] $data [数组]
+ */
+ private function ArrayToXml($data)
+ {
+ $xml = '';
+ foreach($data as $k=>$v)
+ {
+ $xml .= '<'.$k.'>'.$v.''.$k.'>';
+ }
+ $xml .= '';
+ return $xml;
+ }
+
/**
* 获取支付参数
* @author Devil
@@ -196,19 +199,21 @@ class WeixinMini
*/
private function GetPayParams($params = [])
{
- if(empty($params)) return '';
-
- $params['appid'] = $this->config['appid'];
- $params['mch_id'] = $this->config['mch_id'];
- $params['nonce_str'] = md5(time().rand().$params['order_no']);
- $params['spbill_create_ip'] = GetClientIP();
- $params['trade_type'] = empty($params['trade_type']) ? 'JSAPI' : $params['trade_type'];
- $params['attach'] = empty($params['attach']) ? 'shopxo-attach' : $params['attach'];
- $params['sign_type'] = 'MD5';
- $data = array(
- 'sign' => $this->GetSign($params),
- 'data' => $params,
- );
+ $data = [
+ 'appid' => $this->config['appid'],
+ 'mch_id' => $this->config['mch_id'],
+ 'body' => $params['name'],
+ 'nonce_str' => md5(time().rand().$params['order_no']),
+ 'notify_url' => $params['notify_url'],
+ 'openid' => $params['user_openid'],
+ 'out_trade_no' => $params['order_no'],
+ 'spbill_create_ip' => GetClientIP(),
+ 'total_fee' => $params['total_price'],
+ 'trade_type' => empty($params['trade_type']) ? 'JSAPI' : $params['trade_type'],
+ 'attach' => empty($params['attach']) ? 'shopxo-attach' : $params['attach'],
+ 'sign_type' => 'MD5',
+ ];
+ $data['sign'] = $this->GetSign($data),
return DataReturn('success', 0, $data);
}