最近用PHP开发的网上商城要添加建设银行网上支付,本人在一个小问题上花了一天多时间,左找原因右找原因,最后发现却单引号与双引号的问题导致的,哎,悲痛啊。。。。。
错误:Warning: socket_read() unable to read from socket [104]: Connection reset by peer in
主 要是验签的过程,商户开通建设银行的账户后会得到一些资料:1.中国建设银行支付接口多操作系统版本V1.3;2.网上商户接口文档 2009.05;3.Socket验签jar包。在中国建设银行支付接口多操作系统版本V1.3中有windows平台验签过程,Socket验签jar 包可针对LINUX平台验签,而我主要的问题是socket_read时,传的$send_data使用“\n”结束,我的\n是用单引号添加 在$send_data后面的,所以验签一直不成功。小问题大跟头。
现在来看看PHP单引号与双引号的区别:
1.双引号 里的东西 输入的时候能判断是否 包含 变量,如果包含 变量 就一起输出
2.单引号里的就不一样,不判断是否有变量,就全部当成 字符串 输出
3.单引号解析的时间比双引号快
4.单引号支持\转义符,双引号支持的转义符多
$a = 'a\nb';
$b = "a\nb";
echo $a;
/输出a\nb
echo $b;
//输出
a
b
(换行了。)
与建行给的例子代码相比较,我也发现了双引号的问题,可就是没想到去修正代码后再测试一次,结果一直纠缠在$socket_read上面,花了太多时间。思维在那个时候太固化了,原地圈圈转。