邵珠庆の博客

邵珠庆の博客 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier

15三/170

最好的 ss-panel 部署教程

发布在 邵珠庆

续・为最好ss-panel 部署教程献上更新!
本文最后更新与 2016-02-08,更新内容详见博文底部。

今天折腾了好久 ss-panel,期间遇到了一些奇奇怪怪的问题,但是网上都没有好的解决方法。

网上那么多教程有些是写得笼统,有些还是瞎复制的。

由此萌生了想要写一篇配置 ss-panel 和 ss-manyuser 的教程,希望能够帮到需要的人。

注意,本教程 不是 图文并茂的面向小白的教程,窝希望你能够有足够的 linux 操作经验再来看这篇教

[......]阅读全文

9三/170

jQuery源码分析

发布在 邵珠庆

前言

有时候我在想jQuery为什么可以直接$操作,可以拥有比原生js更便利的DOM操作,而且只要你想就可以直接链式操作下去

核心框架

揭开一万多行代码的jQuery核心代码:

(function(window, undefined) {
	function jQuery(selector){
		return new jQuery.fn.init(selector)
	}
	jQuery.fn = jQuery.prototype = {
		init: function () {

		}
	}
	jQuery.fn.init.prototype = jQuery.fn;
	window.jQuery = window.$ = jQuery;
})(window)
  • 闭包结构传参window
    • 闭包结构传入实参window,然后里面用形参接收
      • 减少内部每次引用window的查询时间
      • 方便压缩代码
  • 形参undefined
    • 因为ie低版本的浏览器可以给undefined赋值成功,所以为了

[......]阅读全文

9三/170

Linux技巧:Vimdiff 使用

发布在 邵珠庆

在 IBM Bluemix 云平台上开发并部署您的下一个应用。

开始您的试用

源程序文件(通常是纯文本文件)比较和合并工具一直是软件开发过程中比较重要的组成部分。现在市场上很多功能很强大的专用比较和合并工具,比如 BeyondCompare;很多IDE 或者软件配置管理系统,比如Eclipse, Rational ClearCase都提供了内建的功能来支持文件的比较和合并。

当远程工作在Unix/Linux平台上的时候,恐怕最简单而且到处存在的就是命令行工具,比如dif[......]阅读全文

7三/170

大型网站架构系列:消息队列

发布在 邵珠庆

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。

本次分享大纲

  1. 消息队列概述
  2. 消息队列应用场景
  3. 消息中间件示例
  4. JMS消息服务(见第二篇:大型网站架构系列:分布式消息队列(二)
  5. 常用消息队列(见第二篇:大型网站架构系列:分布式消息队列(二)
  6. 参考(推荐)资料(见第二篇:大型网站架构系列:分布式消息队列(二)
  7. 本次分享总结(见第二篇:大型网站架构系列:分布式消息队列(二)

一、消息队列概述

消[......]阅读全文

27二/170

PHP命名空间namespace/类别名 use/框架自动载入 机理

发布在 邵珠庆

摘要: PHP 命名空间 namespace / 类别名 use / 框架自动载入 机理

相比 PHP5.2 版本 PHP5.3 新增了三大主要新特性

命名空间 

延迟静态绑定 

lambda匿名函数

命名空间的出现也使PHP可以更加合理的组织项目结构,同时通过命名空间自动载入机制一大批 PHP 的 MVC 框架也随之出现,明了的项目结构的同时也按需载入,进一步减轻内存压力,加快执行效率。

因为命名空间是对目录结构友好的

[......]阅读全文

15二/170

25个最重要的 SaaS 度量指标

发布在 邵珠庆

 

 

我在本文中将深入探讨我们选择添加到Kilometer的若干度量指标和图表,并介绍了它们的重要性。

想弄清楚哪些度量指标很重要、如何衡量它们,这并非易事。

最近我们历时6个月研究了哪些度量指标最重要,这些度量指标SaaS公司弄清楚业务开展情况绝对必不可少。

我们之所以开展这项研究,是因为我们在构建Kilometer.io,“即世界上最简单的分析工具”。

Kilometer可以为SaaS公司自动衡量、估算和显示最重要度量指标和图

[......]阅读全文

17一/170

PHP生成随机红包高级方法

发布在 邵珠庆

/** 传输数字必须为正整数,需要小数通过$bonus_float传值进行换算
* @param $bonus_total (必填) 红包总额
* @param $bonus_count (必填) 红包个数
* @param $bonus_max   (选填) 每个小红包的最大额 最大值要大于平均值
* @param $bonus_min   (选填) 每个小红包的最小额
* @param $bonus_float (选填 Y元J角F分) 红包传[......]阅读全文

15十二/160

微信支付开发 国内服务商接入H5支付

发布在 邵珠庆

服务商模式,适用于有软件开发能力的公司帮助其他商户接入微信支付。

  目前官方的政策是达到一定条件可以获取返佣,并且微信支付刚刚公布了星火计划,拿出资金帮助服务商做运营,同时微信支付也在和滴滴进行跨界的合作。
  1. 服务商在商户平台的特约商户管理里,可以帮助商户提交公司或者个体户的资料,申请通过后可以获得特约商户号和商户平台密码。
  2. 服务商可以在开发配置里配置默认关注的服务号appid,这个默认关注是使用服务商接口发生微信支付时的默认功能。
     目前刷卡支付没有金额门槛就可以默认关注,其他支付方式需要金额大于5元(具体推荐关注的规则,请看之前的一篇文章)。
  3. 设置默认关注时提示主体不一致,无法设置?
     微信规定这里默认关注服务号的公司主体和申请这个特约商户的主体是一样的,不然会报这个错。
     遇到这个错误找对接的商务经理解决, 需要签署额外的推荐关注的协议。
  4. 如果特约商户没有服务号,这里默认关注可以不设置,那么支付成功后没有默认关注。
  5. 服务商模式支持刷卡支付,公众号支付,扫码支付模式二(模式一不支持),APP支付(请咨询商户经理,额外开通权限)。
  6. 特约商户的开发配置里,有一个特约商户appid配置的按钮(接口里的sub_appid)是否需要绑定呢?
     首先要明确,这里添加sub_appid的作用,是为了微信支付返回sub_openid(用户在sub_appid下的openid)
     6.1 通常情况下不需要绑定特约商户appid
     6.2 一些特殊情况下,需要绑定特约商户appid
  以下分别说明这2点。
  7 针对6.1中提到的没有绑定特约商户appid,接口参数如何传?
     a . 特约商户没有服务号(appid)或者商户不需要知道用户在特约商户服务号(sub_appid)下的openid,那么appid是可以不绑定的
     b. 对于没有绑定特约商户appid,刷卡支付和扫码支付接口传如下参数:
        mchid 服务商商户号
        appid 服务商的appid
        sub_mch_id 特约商户的商户号
        key: 服务商的密钥
        证书: 服务商的证书
     c. 对于没有绑定特约商户appid,公众号支付的统一下单接口传如下参数:
        mchid 服务商商户号
        appid 服务商的appid
        openid 用户在服务商appid下的openid(授权获取用户信息接口)
        sub_mch_id 特约商户的商户号
        key: 服务商的密钥
        证书: 服务商的证书
  8. 针对6.2中提到的绑定特约商户appid,哪些情况下需要绑定appid?接口如何传?
     a. 哪些情况下需要绑定appid?
        一定需要获取用户在特约商户服务号(sub_appid)下的openid。
        常见的情况有2种:
        一是商户需要用这个openid和自己的CRM打通,
        二是很多商户都用一个服务号运营,为了方便运营需要拿到用户在这个服务号下的openid
     b. 绑定的时候遇到提示主体不一致?
        服务商在绑定的时候,也是需要绑定的服务号appid和特约商户的主体一致的,如果不一致会提示主体不一致的错误。
        遇到这个错误找对接的商务经理解决, 需要签署额外的联合运营函
     c. 有些极端的情况,一个特约商户号,绑定多个appid(可能商户希望运营到不同的服务号,这种情况也是允许的,不过比较少见,不建议这么做)
     d. 对于绑定了特约商户appid,刷卡支付和扫码支付接口传如下参数:
        mchid 服务商商户号
        appid 服务商的appid
        sub_appid 特约商户的appid
        sub_mch_id 特约商户的商户号
        key: 服务商的密钥
        证书: 服务商的证书
        此时,提交刷卡支付的微信回复里,会返回sub_openid (商户在特约商户sub_appid下的openid)
     e. 对于绑定了特约商户appid,公众号接口传如下参数:
        mchid 服务商商户号
        appid 服务商的appid
        sub_appid 特约商户的appid
        sub_openid 用户在特约商户sub_appid下的openid(授权获取用户信息接口)
        sub_mch_id 特约商户的商户号
        key: 服务商的密钥
        证书: 服务商的证书
  9. 服务商在商户平台申请开通的特约商户,这些特约商户本身是没有普通微信支付权限的服务商本身自己也是没有普通微信支付权限的
  10. 结算和退款
     结算: 资金默认结算到特约商户的对公账户
     退款: API接口退款权限和商户平台页面退款权限都默认在子商户身上。
     如果需要服务商用接口发起退款的权限,请联系商务经理,需要签署额外的协议.
  11. 服务商模式发红包
     服务商模式发红包是指,钱在子商户的微信账户上,而受理商代发红包
     目前这个功能也需要向商务经理申请,请咨询各自对接的商务经理
  12. 注意事项
      (0)demo里设置的参数全部都要填服务商的,而不是子商户的。
      (1)第一个区别是openid,demo里直接传的openid,服务商模式需要传sub_openid,获取的方式就不说明了,总之获取所需都是子商户即特约商户的appid,appsecret。
      (2)需要在传入页面多传一个sub_mch_id参数。
      (3)将调用的类中判断openid那里的代码注释掉,不然永远进不到下一步。
      (4)在服务商的微信支付商户后台设置授权目录,而不是像普通商户那样在公众平台后台来设置。

   13. 问题:使用商户支付,签名错误:
   按照微信的错误提示,在签名算法里面把参数和算的签名打印出来
   然后在微信的调试接口里与打印出来的参数,https://pay.weixin.qq.com/wiki/tools/signverify/
   核对发现最后的生成的签名其实是一致,当时就觉得微信的返回提示好坑
   后来又是各种尝试,appid、key各种参数的核对,证书位置,Linux文件目录权限之类的,发现都没有解决问题。
   最后在微信商户平台,重置了一下密钥就可以了

   14. 商户错误信息:
   [return_msg] => 普通商户不允许传sub_mch_id
   [return_msg] => 不识别的参数sub_mchid
   [return_msg] => 商户号mch_id与appid不匹配
   [return_msg] => 签名错误


[......]阅读全文

   下一页