解决 MWS GetEligibleShippingServices 返回 SignatureDoesNotMatch

今天写 MWS 的 Merchant Fulfillment ,调用  GetEligibleShippingServices 一直出错,返回 SignatureDoesNotMatch ,奇了怪?

后来对比 MWS scratchpad 工具发现 ShipmentRequestDetails.ShipFromAddress 输入中有空格,而我的是“+” ,MWS scratchpad 是“%20”,所以 SignatureDoesNotMatch 。

我php版本是5.3.3,不能在 http_build_query 函数使用 PHP_QUERY_RFC3986

enc_type
默认使用 PHP_QUERY_RFC1738。

如果 enc_type 是 PHP_QUERY_RFC1738,则编码将会以 » RFC 1738 标准和 application/x-www-form-urlencoded 媒体类型进行编码,空格会被编码成加号(+)。

如果 enc_type 是 PHP_QUERY_RFC3986,将根据 » RFC 3986 编码,空格会被百分号编码(%20)。

写个函数转换下,问题解决了。

function arr2url($arr){
	if(version_compare(PHP_VERSION, '5.4.0', '>=')){
		return http_build_query($arr, null, null, PHP_QUERY_RFC3986);
	}else{
		return str_replace('+', '%20', http_build_query($arr));
	}
}

在 FreeBSD 上安装 Magento2

下载 magento,解压缩。

安装前先将magento下的文件夹全改为777权限,和chown -R www:www ./*
# find . -type d -exec chmod 777 {} \;
安装后再将所有文件夹权限改为755,保留几个文件夹的777权限
# find . -type d -exec chmod 755 {} \;
# chmod 777 ./app/etc
# chmod 777 ./var
# chmod 777 ./var/.htaccess
# chmod 777 ./app/etc
# chmod 777 ./pub/media
# chmod 777 ./generated
# find ./var -type d -exec chmod 777 {} \;

参考:https://devdocs.magento.com/guides/v2.3/install-gde/install/legacy-file-system-perms.html

打开 magento/setup/ 开始安装,带有样本数据的安装多半会失败,可能php内存不够。先安装不带数据,再导入吧。

magento 安装期间显示例外。
清除<magento_root>/generated/code之下,其他目录var和generated如下:
# cd magento
# rm -rf ./generated/code/* ./generated/metadata/* ./var/cache/*

并且清除cookie,再重新安装。

导入样本数据库,参考教程, https://devdocs.magento.com/guides/v2.3/install-gde/install/cli/install-cli-sample-data-clone.html

# cd magento

# php bin/magento setup:upgrade

可能会提示php内存不够,重新设置下内存就好

# ee /usr/local/etc/php.ini
memory_limit = 2048M

# /usr/local/etc/rc.d/php-fpm restart

重启php,即可

装完 magento 2.3.2 第二天就删除了,因为不支持PostGreSQL数据库,而且运行速度极其慢。

.htaccess 和 .user.ini

FreeBSD 12 下

apache 2.4
ee /usr/local/etc/apache24/httpd.conf
<Directory />

AllowOverride None 改为 AllowOverride All

</Directory>
重启 apachectl restart

如果 .htaccess
php_flag display_errors on
报500错误了,查看apache的error_log找到了如下的错误信息:
.htaccess: Invalid command ‘php_flag’, perhaps misspelled or defined by a module not included in the server configuration
是suPHP的问题,写另外一个文件”.user.ini”
error_reporting = E_ALL
display_errors = On
更改过”.user.ini”要重启php-fpm生效
#/usr/local/etc/rc.d/php-fpm restart

https://www.php.net/manual/zh/configuration.file.per-user.php

Movable Type 直接用数据库转移到 WordPress

Movable Type悲剧了,不知道咋的,Perl整不起来。

折腾好几年了,Blog也一直不能更新。

终于想放弃Movable Type了。

但是Blog怎么迁移呢?打不开Movable Type的后台。

还好有数据库在,还好WordPress可以导入。

WordPress的安装很简单,Movable Type太变态了。

因为不知道Movable Type的导出格式,只能先下载一份WordPress的备份xml,依葫芦画瓢吧。

上代码吧Continue Reading

淘宝api登陆,下载最近2天订单的php源代码

最近在开发淘宝订单与本司erp对接的php程序,每一家的api都大同小异,不同之处在登陆也就是取得系统信任的session,之后就万事大吉了。

如何去淘宝申请api接口的,自己去http://open.taobao.com/折腾吧,我就不说了,申请还是比较简单的。记得要设置回调的页面,还有Secret和Key。

利用API取得用户名和ID做自己网站的OpenID也是不错的哦。

淘宝卖家现在日订单上百的不在少数,手工接订单,或者依赖淘宝或淘宝的第三方程序都不是正解,很多淘宝卖家不是只在淘宝折腾的。

废话少说,上代码,该代码由三个页面组成,该示例三个页面都在一个目录。

Continue Reading

试用 twitter 和 sina 微博的 api 服务

我在 twitter 和 sina 都有帐号,用 sina 实在是迫不得已,原因大家都知道了吧。我在想要是没有所谓的”墙”,国内一些 IT 公司还能活吗?我甚至怀疑,国内的 IT 公司是不是帮凶,或是始作俑者!

两个帐号或是多个帐号怎么同步呢?一个个发累死了,follow5 有同步功能,这也是它的卖点,但是都要提供用户名和密码,为什么不申请 twitter Connections applications 呢?让人费解。谁都号称自己不作恶,但谁放心呢!特别是这些还在测试中的网站。

twitter 和 sina 都有提供 api ,sina 的 api 基本跟 twitter 是一样的。

twitter API 文档

新浪微博 API 文档

请求信息之类的就简单了,这里不说,看着文档自己测试吧。新浪微博 API 文档基本就是 twitter API 文档的中文版,如果不懂英文的就看新浪的文档也能搞出个一二三。

下面分享一段代码,是如何发新微博的。系统要求:php,curl,json支持。Continue Reading

以IP 地址做为用户验证的条件是不可靠的

这几天有个网站服务器从新加坡迁移到美国,迁移之后就发生了问题,一个新加坡的用户反映说不能登陆,那位新加坡的用户很配合,我反复测试发现,原来是IP地址出错,那个程序的用户验证中有个IP对应的条件,而服务器如果在新加坡之外的国家就无法正确的获取IP地址,在新加坡的服务器就可以。

该问题应该是新加坡的国家局域网防火墙的原因。前段时间很多国外用户无法访问QQ农场,可能问题的原因也在此。我那个用户说,那段时间新加坡很多用户都上不了QQ农场,怎么解决都不行,QQ也没有办法解决,后来莫名其妙的就好了,我估计取消IP地址验证就ok了!
Continue Reading

PHP 条形码 Image_Barcode

# cd /usr/ports/graphics/pear-Image_Barcode && make install clean

<?php
require_once('Image/Barcode.php');
Image_Barcode::draw('RR651943036CN', 'Code39', 'gif');
exit;
?>