手上有个产品, 产品的规划很庞大, 做一个贩卖销售认证为一体的 android 开放平台。
下面有一个子产品是移动支付, 集合认证和支付为一体, 并且以SDK的方式提供出来。
你只要在自己的app里面导入他的支付sdk, 就能在自己的app里集成移动支付功能。但是出于商业考量,支付的时候,需要验证当前是否是从我们的market上下载的啊。
做法是market 会捕获 系统发出的"android.intent.action.PACKAGE_ADDED" 的事件, 然后发广播, 把加密过的key发送出来。
支付sdk中会有一个receiver, 专门接受我们发出的广播, 把加密key发在自己app的shareperferns里面。
整套流程很简单,没什么多说的。
但是产品上线之后,各种奇怪的事情发生了, 运维小组经常接到开发者的投诉邮件, 说用sdk没法支付啦
让我们开发团队疲于奔命, 更要命的是开发者一般都不肯提供源代码给我们, 所以我们往往只能通过猜测来解决问题。 更有甚者,有的开发者对代码做过混淆之后,我们连反编译的机会也没有了。
比如我们遇到过,开发者用我们的sdk之后,跑起来会出错, 我们拿真机测试, 拉出log来一看, 是他们自己混淆的时候代码编译异常。
还有遇到过, 打开支付画面结果check出错。 关联4个系统,我们一条线走下来, 最后判断是自己webview里面request的时候, 没有按照我们的sdk帮助文档,从shareperferns中拿加密key,放到http header里面。
开放平台不好做,自己的产品要优化, 面向开发者的时候, 适当的引导和帮助也是必要的, 国内淘宝这边做的就很好。
#以上 # 蒋彪