微信H5支付报错“商家参数格式有误,请联系商家解决”的解决方法[PHP]

此报错通常由于微信中转页面缺少符合要求的referer。

因此得到中转网址,复制打开是不行的,必须得跳转,且跳转前得那个页面得符合腾讯的要求。

排查1 是否已对域名开放H5支付

打开微信支付后台

->产品大全

->开发配置

->H5支付域名

->添加使用的域名

排查2 检查跳转方式

经测试,在php中用header跳转是不好使的,但是用js跳转是好使的;可用示例如下:

$uri = $info['mweb_url'];
echo "<script>window.location.href='$uri'</script>";

挂载阿里云NAS到ECS

这里说的nas不是一般家里用的nas,

而是阿里云的一种产品:是可以挂载到ECS的盘。

即便是性能通用型的NAS,其性能仍不如最便宜的高效云盘;其优点就是不用一次买20GB,空间自由。

nas与ecs的云盘有点像,但它按照文件占用空间来收费;nas挂载后是这样式儿的:

nas比ecs云盘要贵一点儿,价格试算如下:

购买100GB普通云盘1个月:0.038*24*30=27.36元

使用90GB通用容量型nas 1个月:90*0.35≈31.5元

但是云盘最小买20GB, 假如你的应用较小,只有不到1G, 应该是nas划算。

目前建议nas用来放应用,oss用来放静态文件和备份。

挂载nas步骤如下:

Step1 在阿里云控制台->打开ECS管理,查看并记录,要挂载NAS的ECS的VPC和交换机

Step2 控制台->新建nas文件系统, 如下图

注意交换机,选择刚才记录的ECS的

请注意规格,有的规则是很贵的

Step3 点击刚创建的文件系统

->挂载使用

->点“添加挂载点”,选择刚才记录的ECS的

->点“挂载文件系统到ECS”

Step4 以ssh连接ECS, 安装nfs-utils(已安装则略过),指令如下

sudo yum install nfs-utils

Step5 运行如下指令

sudo echo "options sunrpc tcp_slot_table_entries=128" >>  /etc/modprobe.d/sunrpc.conf 
sudo echo "options sunrpc tcp_max_slot_table_entries=128" >>  /etc/modprobe.d/sunrpc.conf

Step6 创建一个文件夹,用于挂载,如/nas

mkdir /nas

Step7 挂载

sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 挂载点网址:/ 挂载文件夹

可以按照阿里云的提示来写

然后就可以在ecs使用nas啦

PHP将数组转为XML

示例代码 如下

/**
 * 数组转xml
 * @param   $arr     参数数组
 * return   string   返回组装的xml
 **/
function array2xml($arr)
{
  if (!is_array($arr) || count($arr) <= 0)
    return false;

  $xml = "<xml>";
  foreach ($arr as $k => $v)
    $xml .= is_numeric($v) ? "<$k>$v</$k>" : "<$k><![CDATA[$v]]></$k>";
  $xml .= "</xml>";

  return $xml;
}

$arr = ['a' => 'b', 'c' => 2];
$xml = array2xml($arr);
$arr = ['a' => 'b', 'c' => 2];
$xml = array2xml($arr);
header("Content-type: text/xml");
die($xml);