微信扫码支付 invalid spbill_create_ip

南苑 2016-12-02 02:11:07
通信出错:invalid spbill_create_ip ,求大神怎么解决呢?

$unifiedOrder = new UnifiedOrder_pub();
$type= 'yb';//$_POST['type'];
session_start();
$rand = mt_rand(10, 99);
$total_fee= 10;//$_POST['price'];

if ($type=='yb') {
$unifiedOrder->setParameter("body", "元宝");//商品描述
$unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址
$out_trade_no='102'.date('ymdHis').str_repeat("0", 3-strlen($total_fee)).$total_fee.$rand;
} else if($type=='vip'){
$unifiedOrder->setParameter("body", "会员直充");//商品描述
$unifiedOrder->setParameter("notify_url",WxPayConf_pub::callback);//通知地址
$out_trade_no='103'.date('ymdHis').str_repeat("0", 3-strlen($total_fee)).$total_fee.$rand;
}

//设置统一支付接口参数
//设置必填参数
//appid已填,商户无需重复填写
//mch_id已填,商户无需重复填写
//noncestr已填,商户无需重复填写
//spbill_create_ip已填,商户无需重复填写
//sign已填,商户无需重复填写
$account = addslashes($_POST['userid']);

$config = require('../../lib/config.php');
$client = new ApiClient($config);
$client->setParam('app_method', 'np.user.info');
$client->setParam('areaid', 1000);
$client->setParam('userid', $account);
$client->setParam('type', 43);
$client->setParam('gameids', 350);
$result = $client->request('POST');

//if ($result->errno == 0) {
$numid = intval($result->data->base->numid);
$_SESSION["numid"] = $numid;
$conn = mysqli_connect(WxPayConf_pub::host,WxPayConf_pub::user,WxPayConf_pub::pwd,WxPayConf_pub::database,WxPayConf_pub::port) or die("error");
mysqli_set_charset($conn, "utf8");
$sql = "select * from userrecord where orderid='" . $out_trade_no . "'"; //sql语句
$rs = mysqli_query($conn, $sql); //将查询sql语句的结果存到$rs变量中
$num = mysqli_num_rows($rs); //mysql_num_rows函数的作用就是返回记录笔数.就是你的数据表中的总笔数
if ($num > 0) {
echo "<script>alert('订单已处理,请勿重复提交!');window.close();</script>";
} else {
if (isset($_COOKIE["cookie_" . $numid . "_pay"])) {
//echo "<script>alert('请勿频繁提交订单');window.close();</script>";
exit;
}
$sql = "insert into userrecord (numid,username,orderid,uporder,downorder,fee,bigchannel,smallchannel,paytime,payresult,czresult,cardno) value ($numid,'$account','$out_trade_no','$out_trade_no','$out_trade_no',$total_fee,'支付宝','$subject',now(),0,0,'')";
$data = mysqli_query($conn, $sql);
if ($data) {

//自定义订单号,此处仅作举例

$unifiedOrder->setParameter("out_trade_no", $out_trade_no);//商户订单号
$unifiedOrder->setParameter("total_fee", $total_fee*100);//总金额
//$unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址
$unifiedOrder->setParameter("trade_type", "NATIVE");//交易类型
$unifiedOrder->setParameter("spbill_create_ip", $_SERVER["HTTP_VIA"]);
//$unifiedOrder->setParameter("spbill_create_ip",$_SERVER['SERVER_ADDR']);
//非必填参数,商户可根据实际情况选填
//$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号
//$unifiedOrder->setParameter("device_info","XXXX");//设备号
//$unifiedOrder->setParameter("attach","XXXX");//附加数据
//$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间
//$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间
//$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记
//$unifiedOrder->setParameter("openid","XXXX");//用户标识
//$unifiedOrder->setParameter("product_id","XXXX");//商品ID

//获取统一支付接口结果
$unifiedOrderResult = $unifiedOrder->getResult();

//商户根据实际情况设置相应的处理流程
if ($unifiedOrderResult["return_code"] == "FAIL") {
//商户自行增加处理流程
echo "通信出错:" . $unifiedOrderResult['return_msg'] . "<br>";
} elseif ($unifiedOrderResult["result_code"] == "FAIL") {
//商户自行增加处理流程
echo "错误代码:" . $unifiedOrderResult['err_code'] . "<br>";
echo "错误代码描述:" . $unifiedOrderResult['err_code_des'] . "<br>";
} elseif ($unifiedOrderResult["code_url"] != NULL) {
//从统一支付接口获取到code_url
$code_url = $unifiedOrderResult["code_url"];
//商户自行增加处理流程
//......
}
}
}
//}else {

//echo "<script>alert('" . $account . "不存在,请检查您充值的用户名是否正确!');window.history.go(-1)</script>";
//}
...全文
5494 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
keep^Agg 2017-08-04
  • 打赏
  • 举报
回复
楼主,怎么解决的
南苑 2016-12-06
  • 打赏
  • 举报
回复
引用 1 楼 fdipzone 的回复:
$unifiedOrder->setParameter("spbill_create_ip", $_SERVER["HTTP_VIA"]); 改为 $unifiedOrder->setParameter("spbill_create_ip", gethostbyname($_ENV['COMPUTERNAME'])); 试试
谢谢,已解决了。
傲雪星枫 2016-12-02
  • 打赏
  • 举报
回复
$unifiedOrder->setParameter("spbill_create_ip", $_SERVER["HTTP_VIA"]); 改为 $unifiedOrder->setParameter("spbill_create_ip", gethostbyname($_ENV['COMPUTERNAME'])); 试试

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧