Commit b3bb6fc9 by 冷斌

fix bug

parent 87e21a2c
<?php <?php
require dirname(dirname(dirname(__DIR__))) . 'vendor/autoload.php';
class Api_Charge extends PhalApi_Api { class Api_Charge extends PhalApi_Api {
public function getRules() { public function getRules() {
return array( return array(
'getAliOrder' => array( 'getAliOrder' => array(
'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'), 'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
'changeid' => array('name' => 'changeid', 'type' => 'int', 'require' => true, 'desc' => '充值规则ID'), 'changeid' => array('name' => 'changeid', 'type' => 'int', 'require' => true, 'desc' => '充值规则ID'),
'coin' => array('name' => 'coin', 'type' => 'string', 'require' => true, 'desc' => '钻石'), 'coin' => array('name' => 'coin', 'type' => 'string', 'require' => true, 'desc' => '钻石'),
'money' => array('name' => 'money', 'type' => 'string', 'require' => true, 'desc' => '充值金额'), 'money' => array('name' => 'money', 'type' => 'string', 'require' => true, 'desc' => '充值金额'),
), ),
'getWxOrder' => array( 'getWxOrder' => array(
'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'), 'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
'changeid' => array('name' => 'changeid', 'type' => 'string', 'require' => true, 'desc' => '充值规则ID'), 'changeid' => array('name' => 'changeid', 'type' => 'string', 'require' => true, 'desc' => '充值规则ID'),
'coin' => array('name' => 'coin', 'type' => 'string', 'require' => true, 'desc' => '钻石'), 'coin' => array('name' => 'coin', 'type' => 'string', 'require' => true, 'desc' => '钻石'),
'money' => array('name' => 'money', 'type' => 'string', 'require' => true, 'desc' => '充值金额'), 'money' => array('name' => 'money', 'type' => 'string', 'require' => true, 'desc' => '充值金额'),
), ),
'getIosOrder' => array( 'getIosOrder' => array(
'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'), 'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
'changeid' => array('name' => 'changeid', 'type' => 'string', 'require' => true, 'desc' => '充值规则ID'), 'changeid' => array('name' => 'changeid', 'type' => 'string', 'require' => true, 'desc' => '充值规则ID'),
'coin' => array('name' => 'coin', 'type' => 'string', 'require' => true, 'desc' => '钻石'), 'coin' => array('name' => 'coin', 'type' => 'string', 'require' => true, 'desc' => '钻石'),
'money' => array('name' => 'money', 'type' => 'string', 'require' => true, 'desc' => '充值金额'), 'money' => array('name' => 'money', 'type' => 'string', 'require' => true, 'desc' => '充值金额'),
), ),
'update' => array( 'update' => array(
'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'), 'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
'changeid' => array('name' => 'changeid', 'type' => 'string', 'require' => true, 'desc' => '充值规则ID'), 'changeid' => array('name' => 'changeid', 'type' => 'string', 'require' => true, 'desc' => '充值规则ID'),
...@@ -39,14 +38,14 @@ class Api_Charge extends PhalApi_Api { ...@@ -39,14 +38,14 @@ class Api_Charge extends PhalApi_Api {
'token' => array('name' => 'token', 'type' => 'string', 'require' => true, 'desc' => '用户Token'), 'token' => array('name' => 'token', 'type' => 'string', 'require' => true, 'desc' => '用户Token'),
'id' => array('name' => 'id', 'type' => 'int', 'require'=>true ,'desc' => 'id'), 'id' => array('name' => 'id', 'type' => 'int', 'require'=>true ,'desc' => 'id'),
), ),
); );
} }
/* 获取订单号 */ /* 获取订单号 */
protected function getOrderid($uid){ protected function getOrderid($uid){
$orderid=$uid.'_'.date('YmdHis').rand(100,999); $orderid=$uid.'_'.date('YmdHis').rand(100,999);
return $orderid; return $orderid;
} }
protected function getWx($configpri, $configpub) protected function getWx($configpri, $configpub)
{ {
...@@ -59,258 +58,260 @@ class Api_Charge extends PhalApi_Api { ...@@ -59,258 +58,260 @@ class Api_Charge extends PhalApi_Api {
]); ]);
} }
/** /**
* 微信支付 * 微信支付
* @desc 用于 微信支付 获取订单号 * @desc 用于 微信支付 获取订单号
* @return int code 操作码,0表示成功 * @return int code 操作码,0表示成功
* @return array info * @return array info
* @return string info[0] 支付信息 * @return string info[0] 支付信息
* @return string msg 提示信息 * @return string msg 提示信息
*/ */
public function getWxOrder() { public function getWxOrder() {
$rs = array('code' => 0, 'msg' => '', 'info' => array()); $rs = array('code' => 0, 'msg' => '', 'info' => array());
$uid=$this->uid; $uid=$this->uid;
$changeid=$this->changeid; $changeid=$this->changeid;
$coin=checkNull($this->coin); $coin=checkNull($this->coin);
$money=checkNull($this->money); $money=checkNull($this->money);
$orderid=$this->getOrderid($uid); $orderid=$this->getOrderid($uid);
$type=2; $type=2;
if($coin==0){ if($coin==0){
$rs['code']=1002; $rs['code']=1002;
$rs['msg']='信息错误'; $rs['msg']='信息错误';
return $rs; return $rs;
} }
$configpri = getConfigPri(); $configpri = getConfigPri();
$configpub = getConfigPub(); $configpub = getConfigPub();
//配置参数检测 //配置参数检测
if($configpri['wx_appid']== "" || $configpri['wx_mchid']== "" || $configpri['wx_key']== ""){ if($configpri['wx_appid']== "" || $configpri['wx_mchid']== "" || $configpri['wx_key']== ""){
$rs['code'] = 1002; $rs['code'] = 1002;
$rs['msg'] = '微信未配置'; $rs['msg'] = '微信未配置';
return $rs;
}
var_dump($this->getWx($configpri, $configpub));
die;
$orderinfo=array(
"uid"=>$uid,
"touid"=>$uid,
"money"=>$money,
"coin"=>$coin,
"orderno"=>$orderid,
"type"=>$type,
"status"=>0,
"addtime"=>time()
);
$domain = new Domain_Charge();
$info = $domain->getOrderId($changeid,$orderinfo);
if($info==1003){
$rs['code']=1003;
$rs['msg']='订单信息有误,请重新提交';
return $rs; return $rs;
}else if(!$info){ }
$rs['code']=1001;
$rs['msg']='订单生成失败'; var_dump(dirname(dirname(dirname(__DIR__))) . 'vendor/autoload.php');
// var_dump($this->getWx($configpri, $configpub));
die;
$orderinfo=array(
"uid"=>$uid,
"touid"=>$uid,
"money"=>$money,
"coin"=>$coin,
"orderno"=>$orderid,
"type"=>$type,
"status"=>0,
"addtime"=>time()
);
$domain = new Domain_Charge();
$info = $domain->getOrderId($changeid,$orderinfo);
if($info==1003){
$rs['code']=1003;
$rs['msg']='订单信息有误,请重新提交';
return $rs; return $rs;
} }else if(!$info){
$rs['code']=1001;
$rs['msg']='订单生成失败';
return $rs;
}
$noceStr = md5(rand(100,1000).time());//获取随机字符串 $noceStr = md5(rand(100,1000).time());//获取随机字符串
$time = time(); $time = time();
$paramarr = array( $paramarr = array(
"appid" => $configpri['wx_appid'], "appid" => $configpri['wx_appid'],
"body" => "充值{$coin}虚拟币", "body" => "充值{$coin}虚拟币",
"mch_id" => $configpri['wx_mchid'], "mch_id" => $configpri['wx_mchid'],
"nonce_str" => $noceStr, "nonce_str" => $noceStr,
// "notify_url" => $configpub['site'].'/Appapi/pay/notify_wx', // "notify_url" => $configpub['site'].'/Appapi/pay/notify_wx',
"notify_url" => $configpub['site'].'/index.php?g=Appapi&m=pay&a=notify_wx', "notify_url" => $configpub['site'].'/index.php?g=Appapi&m=pay&a=notify_wx',
"out_trade_no"=> $orderid, "out_trade_no"=> $orderid,
"total_fee" => $money*100, "total_fee" => $money*100,
"trade_type" => "APP" "trade_type" => "APP"
); );
$sign = $this -> sign($paramarr,$configpri['wx_key']);//生成签名 $sign = $this -> sign($paramarr,$configpri['wx_key']);//生成签名
$paramarr['sign'] = $sign; $paramarr['sign'] = $sign;
$paramXml = "<xml>"; $paramXml = "<xml>";
foreach($paramarr as $k => $v){ foreach($paramarr as $k => $v){
$paramXml .= "<" . $k . ">" . $v . "</" . $k . ">"; $paramXml .= "<" . $k . ">" . $v . "</" . $k . ">";
} }
$paramXml .= "</xml>"; $paramXml .= "</xml>";
$ch = curl_init (); $ch = curl_init ();
@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
@curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在 @curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
@curl_setopt($ch, CURLOPT_URL, "https://api.mch.weixin.qq.com/pay/unifiedorder"); @curl_setopt($ch, CURLOPT_URL, "https://api.mch.weixin.qq.com/pay/unifiedorder");
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); @curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@curl_setopt($ch, CURLOPT_POST, 1); @curl_setopt($ch, CURLOPT_POST, 1);
@curl_setopt($ch, CURLOPT_POSTFIELDS, $paramXml); @curl_setopt($ch, CURLOPT_POSTFIELDS, $paramXml);
@$resultXmlStr = curl_exec($ch); @$resultXmlStr = curl_exec($ch);
if(curl_errno($ch)){ if(curl_errno($ch)){
//print curl_error($ch); //print curl_error($ch);
file_put_contents('./wxpay.txt',date('y-m-d H:i:s').' 提交参数信息 ch:'.json_encode(curl_error($ch))."\r\n",FILE_APPEND); file_put_contents('./wxpay.txt',date('y-m-d H:i:s').' 提交参数信息 ch:'.json_encode(curl_error($ch))."\r\n",FILE_APPEND);
} }
curl_close($ch); curl_close($ch);
$result2 = $this->xmlToArray($resultXmlStr); $result2 = $this->xmlToArray($resultXmlStr);
if($result2['return_code']=='FAIL'){ if($result2['return_code']=='FAIL'){
$rs['code']=1005; $rs['code']=1005;
$rs['msg']=$result2['return_msg']; $rs['msg']=$result2['return_msg'];
return $rs;
}
$time2 = time();
$prepayid = $result2['prepay_id'];
$sign = "";
$noceStr = md5(rand(100,1000).time());//获取随机字符串
$paramarr2 = array(
"appid" => $configpri['wx_appid'],
"noncestr" => $noceStr,
"package" => "Sign=WXPay",
"partnerid" => $configpri['wx_mchid'],
"prepayid" => $prepayid,
"timestamp" => $time2
);
$paramarr2["sign"] = $this -> sign($paramarr2,$configpri['wx_key']);//生成签名
$rs['info'][0]=$paramarr2;
return $rs;
}
/**
* sign拼装获取
*/
protected function sign($param,$key){
$sign = "";
foreach($param as $k => $v){
$sign .= $k."=".$v."&";
}
$sign .= "key=".$key;
$sign = strtoupper(md5($sign));
return $sign;
}
/**
* xml转为数组
*/
protected function xmlToArray($xmlStr){
$msg = array();
$postStr = $xmlStr;
$msg = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
return $msg;
}
/**
* 支付宝支付
* @desc 用于支付宝支付 获取订单号
* @return int code 操作码,0表示成功
* @return array info
* @return string info[0].orderid 订单号
* @return string msg 提示信息
*/
public function getAliOrder() {
$rs = array('code' => 0, 'msg' => '', 'info' => array());
$uid=$this->uid;
$changeid=$this->changeid;
$coin=checkNull($this->coin);
$money=checkNull($this->money);
$orderid=$this->getOrderid($uid);
$type=1;
if($coin==0){
$rs['code']=1002;
$rs['msg']='信息错误';
return $rs;
}
$orderinfo=array(
"uid"=>$uid,
"touid"=>$uid,
"money"=>$money,
"coin"=>$coin,
"orderno"=>$orderid,
"type"=>$type,
"status"=>0,
"addtime"=>time()
);
$domain = new Domain_Charge();
$info = $domain->getOrderId($changeid,$orderinfo);
if($info==1003){
$rs['code']=1003;
$rs['msg']='订单信息有误,请重新提交';
}else if(!$info){
$rs['code']=1001;
$rs['msg']='订单生成失败';
}
$rs['info'][0]['orderid']=$orderid;
return $rs;
}
/**
* 苹果支付
* @desc 用于苹果支付 获取订单号
* @return int code 操作码,0表示成功
* @return array info
* @return string info[0].orderid 订单号
* @return string msg 提示信息
*/
public function getIosOrder() {
$rs = array('code' => 0, 'msg' => '', 'info' => array());
$uid=$this->uid;
$changeid=$this->changeid;
$coin=checkNull($this->coin);
$money=checkNull($this->money);
$orderid=$this->getOrderid($uid);
$type=3;
if($coin==0){
$rs['code']=1002;
$rs['msg']='信息错误';
return $rs; return $rs;
} }
$time2 = time();
$prepayid = $result2['prepay_id']; $configpri = getConfigPri();
$sign = "";
$noceStr = md5(rand(100,1000).time());//获取随机字符串 $orderinfo=array(
$paramarr2 = array( "uid"=>$uid,
"appid" => $configpri['wx_appid'], "touid"=>$uid,
"noncestr" => $noceStr, "money"=>$money,
"package" => "Sign=WXPay", "coin"=>$coin,
"partnerid" => $configpri['wx_mchid'], "orderno"=>$orderid,
"prepayid" => $prepayid, "type"=>$type,
"timestamp" => $time2 "status"=>0,
); "addtime"=>time(),
$paramarr2["sign"] = $this -> sign($paramarr2,$configpri['wx_key']);//生成签名 "ambient"=>$configpri['ios_sandbox']
);
$rs['info'][0]=$paramarr2;
return $rs; $domain = new Domain_Charge();
} $info = $domain->getOrderId($changeid,$orderinfo);
if($info==1003){
/** $rs['code']=1003;
* sign拼装获取 $rs['msg']='订单信息有误,请重新提交';
*/ }else if(!$info){
protected function sign($param,$key){ $rs['code']=1001;
$sign = ""; $rs['msg']='订单生成失败';
foreach($param as $k => $v){ }
$sign .= $k."=".$v."&";
} $rs['info'][0]['orderid']=$orderid;
$sign .= "key=".$key; return $rs;
$sign = strtoupper(md5($sign)); }
return $sign;
public function update()
}
/**
* xml转为数组
*/
protected function xmlToArray($xmlStr){
$msg = array();
$postStr = $xmlStr;
$msg = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
return $msg;
}
/**
* 支付宝支付
* @desc 用于支付宝支付 获取订单号
* @return int code 操作码,0表示成功
* @return array info
* @return string info[0].orderid 订单号
* @return string msg 提示信息
*/
public function getAliOrder() {
$rs = array('code' => 0, 'msg' => '', 'info' => array());
$uid=$this->uid;
$changeid=$this->changeid;
$coin=checkNull($this->coin);
$money=checkNull($this->money);
$orderid=$this->getOrderid($uid);
$type=1;
if($coin==0){
$rs['code']=1002;
$rs['msg']='信息错误';
return $rs;
}
$orderinfo=array(
"uid"=>$uid,
"touid"=>$uid,
"money"=>$money,
"coin"=>$coin,
"orderno"=>$orderid,
"type"=>$type,
"status"=>0,
"addtime"=>time()
);
$domain = new Domain_Charge();
$info = $domain->getOrderId($changeid,$orderinfo);
if($info==1003){
$rs['code']=1003;
$rs['msg']='订单信息有误,请重新提交';
}else if(!$info){
$rs['code']=1001;
$rs['msg']='订单生成失败';
}
$rs['info'][0]['orderid']=$orderid;
return $rs;
}
/**
* 苹果支付
* @desc 用于苹果支付 获取订单号
* @return int code 操作码,0表示成功
* @return array info
* @return string info[0].orderid 订单号
* @return string msg 提示信息
*/
public function getIosOrder() {
$rs = array('code' => 0, 'msg' => '', 'info' => array());
$uid=$this->uid;
$changeid=$this->changeid;
$coin=checkNull($this->coin);
$money=checkNull($this->money);
$orderid=$this->getOrderid($uid);
$type=3;
if($coin==0){
$rs['code']=1002;
$rs['msg']='信息错误';
return $rs;
}
$configpri = getConfigPri();
$orderinfo=array(
"uid"=>$uid,
"touid"=>$uid,
"money"=>$money,
"coin"=>$coin,
"orderno"=>$orderid,
"type"=>$type,
"status"=>0,
"addtime"=>time(),
"ambient"=>$configpri['ios_sandbox']
);
$domain = new Domain_Charge();
$info = $domain->getOrderId($changeid,$orderinfo);
if($info==1003){
$rs['code']=1003;
$rs['msg']='订单信息有误,请重新提交';
}else if(!$info){
$rs['code']=1001;
$rs['msg']='订单生成失败';
}
$rs['info'][0]['orderid']=$orderid;
return $rs;
}
public function update()
{ {
$rs = array('code' => 0, 'msg' => '', 'info' => array()); $rs = array('code' => 0, 'msg' => '', 'info' => array());
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
* Some rights reserved:www.thinkcmf.com * Some rights reserved:www.thinkcmf.com
*/ */
require './vendor/autoload.php';
if (ini_get('magic_quotes_gpc')) { if (ini_get('magic_quotes_gpc')) {
function stripslashesRecursive(array $array){ function stripslashesRecursive(array $array){
...@@ -44,7 +45,6 @@ define("THINKCMF_CORE_TAGLIBS", 'cx,Common\Lib\Taglib\TagLibSpadmin,Common\Lib\T ...@@ -44,7 +45,6 @@ define("THINKCMF_CORE_TAGLIBS", 'cx,Common\Lib\Taglib\TagLibSpadmin,Common\Lib\T
//uc client root //uc client root
define("UC_CLIENT_ROOT", './api/uc_client/'); define("UC_CLIENT_ROOT", './api/uc_client/');
require './vendor/autoload.php';
if(file_exists(UC_CLIENT_ROOT."config.inc.php")){ if(file_exists(UC_CLIENT_ROOT."config.inc.php")){
include UC_CLIENT_ROOT."config.inc.php"; include UC_CLIENT_ROOT."config.inc.php";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment