月度归档: 2012 年 1 月

创业之2011年总结

现在已是2012年的1月底了,似乎现在写2011年的总结有些晚,但还是写一下吧,也算一个心灵备忘录。

2011年我仍然在创业路上,相比2010年,11年确实有了不少的进步,首先表现在团队方面,在去年的上半年,我都还在为团队头疼,主要是人力缺乏,招不到人,同时已有成员能力不足,详细可见我之前的一篇文章《创业之用人之困》,到后半年,经过不断的大浪淘沙,研发团队的骨干力量终于开始形成了,出现了几个优秀的可以挑起大梁的人物,剩下的年轻工程师虽然经验有限,但在态度上和责任心上表现的不错,也非常上进,愿意学习,我终于可以把手中的一些事情交给他们去做了。

产品方面,我们除了已有的星点调查,在2011年,推出了社会化网络营销平台–“星点网”和移动互联网应用–“星点无线iPhone版”,“星点网”还在不断深入,“星点无线”也即将推出Android版本,总体来说,产品布局在2011年已经形成。

个人技能上来说,主要的提高是掌握iOS开发技术,已经独立的开发公司的iOS应用,并在App Store上架了2款应用,分别是“星点无线”和“星点调查 for iPad”,Java方面没有过多的研究,似乎新的框架和技术出来的也比较少。PHP一直在用,我们使用的框架也比较固定,不会生疏。一直很想对NoSQL有更深入的研究,比如我们已经在使用的MongoDB,和现在非常热门的Redis,由于平时太忙,没有做更多的测试。在系统架构方面,现在表现尚可,但也想做更多的测试,以验证当前架构的稳定性,特别是将来会遇到的大访问量情况的应对策略。

一年中,时刻感受着创业的各种压力,应对各种之前没有遇到过的问题,创业确实是对人最大承受力的考验,我的最大感受是,不是每个人都能创业,在不能创业的大多数来说,能成为人才的人也很少,优秀的人才都是大家求之不得的。

在2012年中,我仍然要着力做的事情是团队建设,只有团队真正起来了,我们创业的目标才能实现,同时要专注、专注、专注,沉下心来把各个产品做好,真正的满足用户的需求,在无线和O2O领域有所建树,同时在运营方面也多参与,找到突破点。总的来说,还是要建设优秀的企业文化,我们公司已经成立快2年时间了,只有优秀的文化才是我们真正前进的动力。

支付宝无线商户接入遇到的问题总结

最近我在为“星点无线”产品增加手机支付功能,支付当然首先想到的是支付宝,而且也在其他类似无线产品里看到集成支付宝应用。

首先在支付宝无线商户平台里签约,我们分别签了“手机网页支付”和“手机应用内支付”,所在行业的费率会有所不同,请根据实际情况选择,“手机网页支付”和“手机应用内支付”的费率也不同,“手机应用内支付”低一些。

最开始,我只想简单一点,在iOS应用里内嵌Web,采用手机网页支付,服务器端是用PHP,手机网页支付,采用MD5和RSA两种签名方式,MD5相对简单,但安全性不如RSA,我最开始测试MD5,而且之前在网站上集成支付宝,也没啥问题,开始是比较顺利的,到支付宝支付时,支付宝默认选择了短信支付方式(可能和我们签约的分类有关),也就是支付宝会通过手机短信发送一个验证码,然后回复验证码,支付宝再会发送一个短信,短信里包含一个URL,点击这个URL,会提示支付完成,然后转到我们网站的回调地址,我方程序完整成个订单,但支付宝提供的这个URL,有时候打开会报错误,而且也不是每次都错,非常的奇怪,更大的问题是在成功后回调我服务器程序时报签名不对,我仔细检查了配置,没有问题,只能一点点排错,最后发现支付宝提供的Demo包里alipay_function.php的para_filter方法有问题,这个方法会漏掉回传的out_trade_no参数,非常的奇怪,只有修改这个方法为

function para_filter($parameter) {
  $para = array();
  foreach ($parameter as $key=>$val) {
    if($key == "sign" || $key == "sign_type" || $val == "") {
      continue;
    } else {
      $para[$key] = $parameter[$key];
    }
  }
  return $para;
}

签名问题解决,但由于短信支付最后这个URL的诡异表现,我为此专门询问支付宝客户支持,得到的回答是他们也发现这个问题,但不知道是什么原因造成的,技术也解决不了,竟然也有支付宝解决不了的问题啊!

这个问题不能解决,确实对用户的体验不太好,我只能选择“手机应用内支付”,支付宝提供了iOS的集成代码,文档也算详尽,但iOS的签名采用RSA,所以在服务器端先要改为RSA的(RSA的alipay_function.php para_filter方法有同样的问题),生成公钥、私钥的方法在文档里比较清楚,就是注意上传商户公钥时一定要删除文件头“—–BEGIN PUBLIC KEY—–”与文件尾“—–END PUBLIC KEY—–”还有空格、换行,变成一行字符串并保存为TXT文件,商户私钥在PHP程序不需要转为PKCS8格式,而在其他语言里(比如Objective-C)需要转为PKCS8格式,并在iOS应用里设置plist文件中RSA private key变量时,要把PKCS8格式私钥的换行和头尾的“—–BEGIN PRIVATE KEY—–”与“—–END PRIVATE KEY—–”删除。

在iPhone真机调试过程中,跳到支付宝应用时报签名错误,我又仔细检查了好几遍,确定没什么问题,后来在支付宝的指导下先测试运行他们提供的Demo程序,没有问题,说明签名密钥没问题,肯定是要签名的数据有问题,我对比了一下发现AlixPayOrder中的productDescription不能为空,也就是传输数据中的body变量不能为空,终于完成了无线支付的集成。

支付宝提供的文档还算比较全面,但有些地方还是有些含糊,如果是iOS集成的话,先测试它提供的Demo程序,以确定密钥的正确性,仔细调试,记录Log,还是比较容易集成的。