小米账号注销接入服务的回调地地址是啥?

TECH2IPO/创见北京报道:6月5日,新浪微博(后文简称“微博”)正式向微博全站用户开放“微博支付”服务,将不再局限于以往具有营业执照的企事业单位认证账号和普通实名认证的个人账号,所有微博注册用户都可以申请开通,届时微博上的个人和企业账号都具备收款和交易的能力。微博商业平台及产品部总经理程昱在发布会上表示:希望通过支付及其他商业产品的全面开放,打造高效的社交商务平台,让每一个微博用户都具备向其粉丝和其他用户提供商业服务能力。今后微博将进一步发挥自身社交媒体和关系属性优势,做好用户平台,接入环境和闭环体系。为了确保生态健康和平衡,微博将与客户及第三方寻求共赢,不挤压第三方生存空间,尊重商业社会多元化多业态本质,尊重合作伙伴本身的业务逻辑和体验流程。对外对于移动互联网时代的创业者,微博将给予资源扶植具有较强开发能力的第三方,实现更多丰富化、多元化的社交商务服务场景。在以往的微博购买流程中,在支付环节往往需要跳转至第三方网站,这极易打断用户的购买流程,造成用户流失,而选择使用第三方通用型应用,则不能产生有效分享互动,没有完善的售后与服务机制。微博支付的推出,全面打破以上瓶颈。测试效果显示,用户对微博支付的接受度很高,微博支付的成交转化率大幅提升,较之前交易外跳的成交效果提升了3~4倍。对于大量有营销和交易需求的商户,微博支付打通了微博社交商务生态的闭环,帮助其实现微博营销价值最大化。今后,企业和商户在微博上不仅可以发布信息,通过互动打造品牌,还可以直接销售商品,为粉丝提供完善的服务。程昱表示,微博支付的全站开放,将不局限于以往具有经营执照的企事业单位认证账号和普通实名认证的个人账号,所有微博注册用户都可以申请接入,届时微博上的个人和企业账号都将具备收款和交易的能力。程昱在会上举了前一段时间魅族在微博上买手机的例子,这是一个比较完整的微博营销案例:第一步:在开放购买前开放预约功能,这个预约页面是 HTML5 开发的,同时适配 PC 版和移动版,方便用户随时随地预约。第二步:预约完成后引导用户参与“1分钱换10元”的优惠券活动,用户点击购买按钮后回弹出收银台,点击购买,购买的过程非常快速。同时会自动发一条微博提示预约成功,形成二次传播。实际上,魅族发起“1分钱换10元”的优惠券活动并不是为了用户的这一分钱,主要目的有两个,一是要知道到底谁有真正的购买意愿。对于微博来说,它也起到引导用户绑定微博支付的作用,等到正式购买的时候,可以减少用户在支付环节上遇到的问题,流程变得更快捷一些。第三步,正式换购手机阶段,活动页面上线,用户正式使用微博支付购买。购买之后用户会受到一个付款成功的私信,魅族发货后也会再发一条私信提醒,这也是微博所谓的粉丝沉淀下来的二次营销通道,有了这个通道,魅族可以在用户允许的情况下发出更多的信息,给予商家更多的附加价值。在这种情况下,商家营销的整个流程(售前,售中,售后)都会留在微博当中,也非常流量。同时,商户在推广的过程当中,微博也可以提供产品宣传和传播。微博目前依旧是一个高效的传播平台,商户通过微博的粉丝头条和话题进行微博营销。以此次魅族营销活动为例,整个活动的曝光量超过 4300 万人次,话题讨论量超过 33 万个。售前做预热,用各种手段,粉丝头条、展示广告、话题评论各种各样的手段做推广。售中,微博非常快的形成交易。售后,用微博的粉丝服务平台对他形成二次营销的通道,打通了整个环节。对于营销效果的展示呈现出一个金字塔的模式。活动曝光量 4300 万,话题 33 万,预约的人数远远超过 7 万的预约人数,并且这 7 万人每个人都是拿“1分钱换10元钱”的消费券,对魅族来讲这部分用户是非常精准的购买人群。7 万个人预约里面,订单高于 43000,远远高于魅族的库存量,最后订单是超过 3800 个(实际上魅族只有 2099 台的库存),首日销售超过 500 万元。这个效果其实对正常的营销通道来讲是非常惊人的,这一步,“1分钱购买”,因为有了 8 万 9用户,到这步手机换购用户 6 万多,这个购买的转化率超过 80%,对于电商平台来说这是一个很高的转化率。而微博支付的加入也大大提升了用户的转化率,如果微博销售的每一步都用外链的方式来做,流程非常长,中间用户流失非常高,转化率不到 10%,现在的转化率也高达 38%。今年 1 月,微博和支付宝联合推出移动支付产品微博支付,并将其定义为基于支付宝底层服务能力和微博社会化属性的关系型支付工具。自推出以来,微博支付邀请多家企业参与测试,覆盖了多个行业。除了魅族、小米等主打社会化营销的品牌厂商,还包括唯品会、乐蜂网等电商网站,五一期间,微博与草莓音乐节合作了票务售卖。此外,谢娜、苍井空等娱乐明星,以及鬼脚七、游戏风云 Miss等 个人用户也尝试通过微博支付售卖商品。至此,微博打造的“推广+支付+服务+二次营销”的概念宣告完成,“浏览-兴趣-下单-支付-分享”的社交商务闭环也正式成型。除了商户,微博支付的用户规模正在快速增长,在近期官方发起的 #1分钱变现金#活动中,7天之内有超过100万用户使用了微博支付。另有数据显示,微博绑定淘宝账号的用户超过 2300 万,上述用户几乎都拥有支付宝账号,因此都是微博支付的潜在用户。随着各领域用户的参与,微博上将会促成更多基于信任、关系和兴趣而产生的社交商务场景,微博用户也将获得更加丰富的体验选择。在微博上不仅可以浏览新闻,还可以买票、订餐、缴费、订酒店,甚至直接售卖商品,微博与用户生活将实现更加紧密的结合。随着微博支付的开放,微博正在全力打造更加丰富的社交商务场景。除了企业商户,明星名人以及各个行业的意见领袖将能玩转粉丝经济,自媒体也可以通过接入支付工具探寻出更多的变现方式,同时微博还将在个人电商创业、二手商品交易等方面展现出强大潜力。作为国内最具影响力的社交媒体平台,微博此前不仅为小米、乐视等提供了高效的营销渠道,还催生出了roseonly 花店、野兽派花店、雕爷牛腩、黄太吉、褚橙等全新品牌。电子商务观察者鲁振旺认为,微博已经具备了催熟品牌的能力。按照计划,除了支付和已经全面开放的粉丝通、粉丝头条等微博商业产品外,微博还将在近期全面开放粉丝服务平台,以此帮助用户提升营销效率,实现微博营销价值最大化。
广告:踏出创业第一步,从足不出户开始。
热门文章推荐数码教程子分类小米SDK接入常见问题汇总【技术】 - 游戏开发者 - MIUI论坛 -
Powered by Discuz! Archiver
小米SDK接入常见问题汇总【技术】
本帖最后由 豆饼帝 于
21:05 编辑
筛选出近期开发者比较常见的问题。若接入中仍存在问题无法解决,请将问题描述清楚后发送到论坛本版块或邮件发送至 game- 我们将在1-3个工作日内给予回复。您也可拨打技术支持电话获取帮助。
1、登录失败,总是报-102错误,怎么办?答:请在开发者站核对自己的参数appid\appkey\包名是否正确 。问题经常出在logcat里all message里errcode=的地方,请取出日志一并发送给我们。
比如一个常见的问题是errcode=1526,意思是apkName错误,请详细核实贵方的
appid,appkey和包名这三个参数,有时候是因为贵方还使用的demo里的值而引起的错误
2、登录时为什么总是提示“网络错误”?答:请多尝试几个机型并尽量使用小米机型,因为SDK优先针对小米进行了适配,可能存在部分机型不适配的现象 ,所以会导致登录不成功,网络错误的提示。保证小米机型的正常使用即可。
3、点击安装小米游戏安全插件无反应,不能正常安装答:请确认MiGameCenterSDKService.apk是不是没有放到assets文件夹下
4、SDK登录框显示时间过短,导致“切换”按钮不能及时点击而消失 答:请确认是否是米1手机,若是米1请在设置-开发者选项-强制cpu渲染-打开进行尝试
5、怎样切换账号?答:小米手机4.0以上的系统,可以手机-设置-账号与管理 中进行切换;非小米手机可以在设置-应用管理-小米游戏安全插件删除后进入游戏重新登录切换账号。
6、SDK登录时游戏背景为什么会黑屏?答:sdk是一个单独apk的存在,当调起sdk的时候游戏会退回到后台并停止运行,所以sdk的背景会黑掉,应该控制游戏不退回到后台并且是游戏在一个界面做刷新操作或者进行等待等到收到sdk回调时游戏继续,这样就不会出现黑屏的状况了,登录和充值都是一样的。
7、SDK横竖屏怎么设置?答:登陆界面可以设置成横屏,但支付的界面不支持横屏sdk初始化的时候加入appInfo.setOrientation(ScreenOrientation.horizontal )设置横屏显示:sdk初始化的时候加入appInfo.setOrientation( ScreenOrientation.horizontal )
8、支付订单返回的格式答:我们是 http get方式发送请求 参数拼接在url后面 你们的服务器返回的数据要求是json格式的{&errcode&:200}这种格式
9、签名php例子答:echo hash_hmac(&sha1&, $sign_str, $key,false).&\n&;
10、签名的格式答:p1=v1&p2=v2&p3=v3这种格式去进行签名
11、是否需要闪屏、logo、角标等答:不需要
12、请问充值的时候有测试帐号吗,只能真充钱?答:目前我平台还没有测试帐号,只能真实充值。后期我们会尽快优化。
13、单机的SDK可有检测用户是否登陆了的方法?答:没有,每次调用登陆方法就行
14、支付时米币与游戏币的转换是怎样?答:人民币转米币再转游戏币
15、为什么一点支付,获取订单的时候就失败了?答:手机的系统时间不对会导致ssl握手失败
16、一直显示登录账号错误,插件都删了重装还是这样答:支付需要调用系统帐户,这个需要一个授权,如果不授权就会支付失败,这个是在miui4.0的系统中会有,2.x的系统和v5不会有这个问题屏幕上方状态栏下拉,看是否有需要授权的询问,点击授权.,在小米云服务里一直绑定着那个账号,注销一下就可以了
17、进游戏弹出提示安装小米游戏插件,点安装的时候会发送LOGIN_FAIL的消息 ,该怎么处理?答:检查有没有&uses-permissionandroid:name=&android.permission.GET_TASKS& /&权限
18、游戏在调用SDK接口时出现黑屏,该怎么处理?答:尝试在AndroidManifest.xml中,为调用SDK接口的activity加入android:configChanges=&orientation|screenSize&属性
19、请问我们用 cocos2d-x 2.2.2 版本,调用小米SDK登陆成功回调之后,什么事情都不做,也会遇到这种错误:答:在AndroidManifest.xml文件里对应的Activity属性加上android:configChanges=&orientation|screenSize&。
20、请问下登录的时候,提示这个大概是什么问题呢?答:请清空一下小米游戏安全插件的数据,然后联网重新试试,这个问题多数是由于网络问题引起的。
21、这里的online.setCpUserInfo(“cpUserInfo”);参数是不是UID?答:不是,cpuserinfo是透传参数,你们设置就行,不能为空。
22、下面参数分别代表客户端传的什么参数?答:payFee是充值的金额,我们回调你们的单位是分,productCode是计费代码,如果是网游是一个默认值,你们不用管,productName就是你们的游戏代币名称,productCount是根据充值金额和兑换比例计算的,你们可以根据payFee自己决定给用户多少游戏代币
23、小米的小号uid是怎样的?小号的uid是唯一的吗?答:16位的long型,是唯一的。
24、我们的程序是用cocos2d-x写的 c++与java混调,我们4个小米手机,有2个调用toast无法显示出来 2个手机正常,是什么原因呢?会不会是签名后出什么问题?答:小米手机对同一个toast有次数限制,每天50次,如果急需验证,建议改个包名试试。
25、接入SDK后闪退,没有出现错误信息只是输出了:Skipped 465 frames! The application may be doing too much work on its main thread.
然后我把SDK去掉就没有任何问题了,请问怎么回事?答:这个是因为在ui线程中调用了SDK的接口,不要在ui线程中调用SDK的接口,放到handler的handleMessage里处理。
26、弹出登录界面了,后来输入密码后,客户端就崩溃了,报错:答:这个应该是java写越界,导致了问题。还需要CP方从程序方面解决,不是SDK的问题。
27、我们根据小米网络游戏demo写的untiy文件的登陆java代码,每次都返回MI_XIAOMI_GAMECENTER_ERROR_LOGIN_FAIL,但是安装上小米测试版本demo就能正常登陆。答:有很多开发者会遇到相类似的问题,SDK服务器是要校验appid,appkey和包名的,三者必须与申请时的保持一致才可以。
appInfo.setAppId( 2698 );
appInfo.setAppKey( &1a45711e-bef6-e2bb-70d9-& );
如果测试时使用这个appid和appkey,请保证包名和demo的包名一致
(androidmanifest中的package属性)
28、在使用3g网络的时候,小米的SDK登录会提示“网络不可用,请重新检查网络”,是怎么回事呢?答:小米SDK登录使用https协议,有些手机无https证书,会报这个错误。请换小米手机测试一下。
29、客户端登录不了,日志显示disconnect。答:isconnect是SDK的正常输出,不是错误输出,不能用这个判断错误。所以请查看logcat里all message里errcode=xxxx的地方之后参考一下接入手册最后的错误代码对照表就能查出问题所在。
30、为啥报1001系统错误?答:比较常见的原因是:
查看setcpuserinfo是否为空,这里不能为空,值CP来设置。
把请求参数打出来,有个CP的错误是在链接里多了个%3D。
31、日志报错:-18003 errcode=:35:48.623: D/cocos2d-x debug info(29665):
购买失败!,code = -18003
12-04 19:35:28.652: D/MiGameSDK(26997): Http Response Code 200
12-04 19:35:28.652: D/MiGameSDK(26997): errcode errmsg=答:最常见的是设置mibi为0元了。
mibi不能为0,最小为1。
32、单机的SDK,可有检测用户是否登陆了的方法啊?答:单机不用明确调用,直接调去支付就好了。
33、怎么实现注销账号功能答:目前的帐号与手机相关联。
注销功能不用接,
SDK里切换账号要依托手机系统账号的切换来实现。
34、进游戏弹出提示安装小米游戏插件,点安装的时候会发送LOGIN_FAIL的消息,该怎么处理?答:检查有没有&uses-permissionandroid:name=&android.permission.GET_TASKS&/&权限
35、miUniPayOffline方法写在哪里?答:这个看CP怎么调用,有些CP会在登录成功的回调中直接调用充值的接口,也可以单独写在对应的类中。因为miUniPayOffline是单机游戏接入,所以可以在游戏启动的时候调用登录,也可以在充值的时候调用登录。
36、从客户端获取的用户ID和session为什么验证不过?有什么方法么?答:这个问题只需要仔细查看接入文档即可。
1)请确认是否按接入文档的说明进行了签名。
2)请确认请求参数和接入文档中的说明是否一值,参数名称是区分大小写的。
37、支付成功了,为什么没有收到订单通知?答:请先确认订单是否支付成功,因为只有用户支付成功的订单才会回调通知游戏。
如果以上没有问题,请把游戏的appId和订单的回调地址发到邮箱game-由我们的运营人员确认是否正确配置了订单同步地址。
如过前两步都没有问题,请确认游戏服务程序的前端应用(例如:nginx、apache、IIS)的日志是否已经收到了通知请求。
38、请问一下,签名验证不成功怎么解决?答:这个问题也需要仔细查看接入文档。
请确认正确按文档的说明进行计算签名。
请确认申请时必须配置的信息完全配置正确,如游戏代币名称、代币兑换比例等。
39、签名是不是 把 appId=22180&session=NtwzSsb3wZFLQna7&uid= 这几个参数,用hash_hmac(&sha1&, $SignString, $this-&AppKey,false)生成加密?答:是的,注意顺序别写错了。
40、我现在发送登录认证交易,返回1525,说我签名错误,但是我反复检查了半天,没发现有什么问题。答:请求我们服务器的接口时,签名用AppSecrect,不要用appKey.
41、你好,想问一下,我这边在上传昨天发回过来的签名包,始终提示失败,请问是什么原因呢?答:请查看你们拿到的包的md5,ftp上传前的包的md5和上传后的md5是否相同。不同请和我方商务技术沟通后再试。
42、签名咋老验证不过去,求核对下hash_hmac( 'sha1', $str, $secret, true )服务器的验证,用的是php语言。答:请使用这个函数:hash_hmac(&sha1&, $sign_str,$key,false)
43、签名结果转换16进制是用大写的还是小写的?答:小写
44、SDK提示支付成功了,可是我服务器收到的通知,怎么没有任何参数的?(技术问题)这些都是你们的服务器IP吧?115.236.175.9.6.189是我用日志记下来的。答:1.我们回调服务的地址不是那些,请不要使用日志记下来的IP,和我方联系确认IP& & 2.确认是否忘记修改appid,如果还是使用demo的appid,也会导致这种情况发生。3.确认是否配置了回调地址
45、我们这边在接入游戏时,登陆出现错误,login的窗口都不显示,打印的log是:D/MiGameSDK(3531): errcode errmsg=。我们用的appId: 2000391答:1.请确认参数和包名是否正确。2.请确认是否设置了相关的计费信息。3.请确认assets目录下的MiGameCenterSDKService.apk是否已经更新为最新。
46、我们的这笔订单签名失败,乱码,麻烦看下咋回事?答:我们发送采用utf-8编码经过urlencode的字符串,你们需要对中文也进行编码处理,就可以了。
47、某些游戏的订单号码重复答:经过与CP的沟通后,发现目前某些游戏确实存在这个问题的,目前某些游戏充值的订单号是由客户端生成的,
客户端生成订单号的方法是用 UUID.randomUUID().toString() 这种方法出现重复的几率是非常小的,当然也不能保证永远唯一。
所以下个版本我们这边给订单号在加强 就是用 UUID+时间戳 保证了:
1.对在同一时空中的所有机器都是唯一的(UUID作用)
2.在不同时刻同一台机器唯一(时间戳),反馈给我们订单号重复问题,就是出在 同一台机器不同时刻订单号重复(也就是没有第2个保证),
因为订单号是由客户端生成的所以只能出新版本解决,静待4月底。
TV/盒子网络游戏SDK集成指南
手机单机游戏SDK集成指南
手机网络游戏SDK集成指南
princelefei
好东西& &有空得看看
本帖最后由 毫无保 于
12:29 编辑
& & 请教下 第三个问题3、点击安装小米游戏安全插件无反应,不能正常安装
答:请确认MiGameCenterSDKService.apk是不是没有放到assets文件夹下
我的MiGameCenterSDKService.apk确定放入assets目录下了,我反编后也能看到MiGameCenterSDKService.apk在assets目录下的,但就是安装没反应,请问下这种情况还有什么其他因素导致的呢,谢谢。
& & 问题已经解决:
& & 问题原因,使用的MiGameCenterSDKService的文件问题,官方提供的demo中的这个文件时.apk,官方给的ane中没有.apk,也不能使用.apk
& & 希望官方的ane注释一下这个问题。
& &还有一个问题横屏问题,我初始化的时候正确设置了横屏,登陆的时候已经正确横屏了,但每次充值的时候就被竖屏了,我的游戏也被强制竖屏过来了,我接其他平台的时候,也有竖屏的情况,但没有把我的游戏也强行竖屏过来,想请教下是什么原因。
开发者如果有问题请单独发帖。
大神!我也请教一下玩这游戏会黑屏以后开不了机怎么办!
SEILUYINGQI
毫无保 发表于
请教下 第三个问题3、点击安装小米游戏安全插件无反应,不能正常安装
答:请确认MiGameCenterSDKServic ...
官方有ane的?
路由的AC是不错。够远。但是经常突然上不了。只能切换到2.4G或者5G才正常。
查看完整版本:小米应用内支付接入手册 | 小米应用开发者文档
小米公司发行的虚拟货币,用于移动支付
米柚操作系统
由开发者产生
productCode
由开发者产生,保证在应用里的唯一性,仅按计费代码付费的商品需要申请商品代码
App的唯一编号
appId由小米开发者站后台生成,每个应用有一个唯一编号,字符串类型。
由小米开发者站后台生成,调用SDK时需要
APP签名密钥
由小米开发者站后台生成,应用服务器与平台服务器交互时使用
一、小米应用生态
1.1.小米开发者平台介绍
小米开发者站是小米公司面向小米生态开发者提供的综合性服务平台,为开发者提供了结构化存储、消息推送、小米账户接入等众多基础服务及应用在小米手机、MIUI系统上的分发渠道。
开发者站:
开发者文档:
开发者论坛:
1.2.小米账户
小米账户是小米公司为所有小米网、MIUI、米聊而开发的小米通行证账户系统,目前注册用户已经超过8000万,小米账户主要采取绑定手机号码或邮箱的方式,用户注册了小米账户同时会享受网盘、小米云存储、语音助理、米聊、游戏中心等多项优质免费服务。
小米账户即可使用小米ID登录,也可使用手机号码、邮箱作为用户名登录,十分方便快捷。
1.3.米币系统
米币是小米公司针对虚拟商品支付而发行的一种通用代币,类似于Q币。具有可在小米公司所有虚拟物品平台流通的特性。用户只要通过小米账号进行充值(用人民币购买米币),就可以在小米公司旗下各移动产品或合作产品平台中支付使用。
1元=1米币,米币最小单位是1元,即可定价为1米币。
开发者将所在应用中用户消费的米币数额作为应用收入的结算依据。
1.4.快速开始
在继续看文档之前,建议您先把随本文档一起分发的Demo程序安装到手机上,(SDK_Demo_MiApp.apk),这个程序完整演示了小米应用内支付SDK的工作流程,有助于您快速理解我们SDK支付的整个流程。
二、实现说明
2.1.登陆及支付
2.1.1流程概述
用户每次启动应用时,必须调用miLogin()来判断用户会话是否超时,在应用运行过程中,如果需要充值可以调用miUniPay(),一个典型的业务流程如下:
2.1.2用户开户及登录流程
UID不是小米ID,但与小米ID有对照关系;
请开发者一定要使用这个UID作为用户标识,不要使用本机IMEI或IMSI
2.1.3用户使用米币充值流程
2.1.4 SDK调用方法
对于开发者来说,只需要引入以下代码即可完成应用呃逆支付流程。
2.1.4.1初始化
请先联系我们获取AppId和AppKey,然后调用下面的SDK初始化代码进行初始化操作。
将SDK包中的MiGameCenterSDKService.apk放到应用工程的的assets目录下,SDK的jar包放到工程的libs下,在buildpath中引用,然后对SDK进行初始化,(注:检查应用的包名是否与开发者站后台数据配置的包名一致,appid与appkey是否与分配的一致,如果不一致会导致成功调用登录和其它SDK接口失败),请在Application.onCreate中调用以下初始化方法:
MiAppInfo appInfo = new MiAppInfo();
setAppId(“请申请获得”);
setAppKey(“请申请获得”);
setAppType(MiAppType.offline); // 应用内支付必须设置为这个属性
MiCommplatform.Init( this, appInfo );
SDK所需要的权限
&uses-permission android:name=”android.permission.GET_TASKS” /&&uses-permission android:name=”com.xiaomi.sdk.permission.PAYMENT” /&
2.1.4.1.1小米账户登录调用代码
MiCommplatform.getInstance().miLogin( context,
new OnLoginProcessListener()
{@Override
publicvoid finishLoginProcess( int code ,MiAccountInfo arg1)
{switch( code )
case MiErrorCode.MI_XIAOMI_PAYMENT_SUCCESS:
// 登陆成功
//获取用户的登陆后的UID(即用户唯一标识)
String uid = arg1.getUid();
//获取用户的登陆的Session(请参考
2.1.5.3流程校验Session有效性)
String session = arg1.getSessionId();
//请开发者完成将uid和session提交给开发者自己服务器进行session验证
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_LOGIN_FAIL:
// 登陆失败
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_CANCEL:
// 取消登录
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_ACTION_EXECUTED:
//登录操作正在进行中
// 登录失败
可以通过实现OnLoginProcessListener接口来捕获登录结果。
2.1.4.1.2虚拟币充值调用
按金额付费方式商品信息设置
MiBuyInfo miBuyInfo= new MiBuyInfo ();
miBuyInfo.setCpOrderId(“订单号”));//订单号唯一(不为空)
miBuyInfo.setCpUserInfo( “透传参数” ); //此参数在用户支付成功后会透传给CP的服务器
miBuyInfo.setAmount( 10 );
//必须是大于1的整数,10代表10元人民币(不为空)
按计费代码付费方式商品信息设置
MiBuyInfo mibuyInfo= new MiBuyInfo();
offline.setCpOrderId( “订单号” );//订单号唯一(不为空)
offline.setProductCode( “productCode” );//商品代码,开发者申请获得(不为空)
offline.setCount( 1 );//购买数量(只能为1)(不为空),商品类型为不可消耗商品时数量只能为1
支付接口调用
MiCommplatform.getInstance().miUniPay(activity, miBuyInfo,
new OnPayProcessListener()
publicvoid finishPayProcess( int code ) {
switch( code ) {
case MiErrorCode.MI_XIAOMI_PAYMENT_SUCCESS:
//购买成功
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_PAY_CANCEL:
//取消购买
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_PAY_FAILURE:
//购买失败
MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_ACTION_EXECUTED:
//操作正在进行中
//购买失败
参数说明:
开发方订单号
必填参数。
20~100字符以内,要求必须由开发者的业务服务器生成,因订单支付成功后支付平台服务器会直接将支付结果通知给开发者的业务服务器,通知参数的cpOrderId是重要信息。
cpUserInfo
给网游透传参数
必填参数。
用于透传用户信息,当用户支付成功后我们会将此参数透传给开发者业务服务器。(不能为null或“”)
必填参数。
且数量是int型,兑换虚拟币所需的金额,单位元
productCode
规则要求:
可由数字0-9,字母a-zA-Z以及特殊字符”_”,”.”,”-”组成,长度8~40位,同一款应用内productCode要求唯一,区分字母大小写。建议使用com.xiaomi.migc.xxx的格式命名。调用时请不要弄混非消耗类商品和可消耗类商品的productCode。
非消耗类商品,取值=1可消耗类商品,取值&=1
2.1.5 服务器接口
请开发者以小米服务器通知的结果为准为用户进行虚拟币充值。
2.1.5.1.订单支付结果通知接口
2.1.5.1.1流程说明:
在订单支付成功后,小米服务器会将支付结果通知给开发者预先提供的服务器上。若开发者所提供的服务器地址不可用,在一定时间段内应用内支付平台服务器会按照周期进行轮询(前10次,每分钟通知1次;10次后每小时通知1次)。
具体流程如下:
注:由于是异步通知模型,(3)和(4)不一定是按序号产生。因此(4)和(5)需要进行轮询处理或者使用接口进行支付结果查询。
相比后面提到的开发者主动查询订单的模式,我们推荐使用此模式。
2.1.5.1.2接口及参数说明:
接口地址:请在小米开发者站后台配置中设置
请求方法:GET
请求参数说明:
开发商订单ID
cpUserInfo
开发商透传信息
应用内商品订单ID
orderStatus
订单状态TRADE_SUCCESS代表成功
支付金额,单位为分,即0.01米币。
productCode
productName
productCount
支付时间,格式yyyy-MM-dd HH:mm:ss
orderConsumeType
订单类型:10:普通订单11:直充直消订单
签名,签名方法见后面说明
返回参数说明:
状态码,200成功
cpOrderId错误
signature错误
订单信息不一致,用于和CP的订单校验
注意:对于同一个订单号的多次通知,开发商要自己保证只处理一次发货。
2.1.5.2.主动查询订单支付状态接口
2.1.5.2.1流程说明:
此接口由小米开发者平台为开发者提供。
2.1.5.2.2接口及参数说明:
接口地址:http://mis./api/biz/service/queryOrder.do
请求方法:GET
请求参数说明:
开发商订单ID
签名,签名方法见后面说明
正确返回参数说明:
开发商订单ID
cpUserInfo
开发商透传信息
orderStatus
订单状态TRADE_SUCCESS
代表成功WAIT_BUYER_PAY 代表未支付REPEAT_PURCHASE 订购关系已经存在
支付金额,单位为分,即0.01米币
productCode
productName
productCount
支付时间,格式yyyy-MM-dd HH:mm:ss
orderConsumeType
订单类型:10:普通订单11:直充直消订单
签名,签名方法见后面说明
错误返回参数说明:
cpOrderId错误
signature错误
错误信息描述
2.1.5.3.用户session验证接口
2.1.5.3.1流程说明:
此接口由小米开发者平台为开发者提供,用于验证登录账户的有效性。
注意:用户的唯一标识是通过SDK获得的uid,而不是Session,Session用于校验登录验证的有效性,必须经过SDK、应用内支付服务器、开发者服务器进行三方验证,如果Session失效,需要重新调用miLogin()进行登录。
2.1.5.3.2接口及参数说明:
接口地址:http://mis./api/biz/service/verifySession.do
请求方法:GET
请求参数说明:
用户session ID
签名,签名方法见后面说明
返回参数说明:
session错误
signature错误
错误信息描述
接口格式说明:
?参数1=值1&参数2=值2&….&参数n=值n,如果遇到文本参数值,需要根据情况对参数值做UrlEncode。
返回参数:采用json格式,如:{“返回参数1″:”返回值1″,”返回参数2″:”返回值2″,….”返回参数n”:” 返回值n”}
签名方法说明:
1. 生成带签名字符串
表中各参数按字母顺序排序(不包含signature),如果第一个字母相同,按第二个字母排序,依次类推。排序后拼接成par1=val1&par2=val2&par3=val3的格式,所生成的字符串即为待签名的字符串。没有值的参数请不要参与签名。由于有些数据根据HTTP协议需求,需要进行URLencoding,这样接收方才可以接收到正确的参数,但如果这个参数参与签名,那么待签名字符串必须是字符串原值而非URLencoding的值。
2.签名算法
以appSecret(开发者站后台生成)作为key,使用hmac-sha1带密钥(secret)的哈希算法对代签字符串进行签名计算。签名的结果由16进制表示。hmac-sha1 带密钥(secret)哈希算法的实现参考附录。
3.1.APK打包及发布
需要注意,SDK 包是以jar 包提供给开发者,此jar包本身已为混淆状态,您在混淆自己应用的APK包时,需要在proguard.cfg 里加入,以避免二次混淆。
public &init&(…);
-keepclassmembers enum * {
publicstatic **[] values();publicstatic ** valueOf(java.lang.String);
-keep class * implements android.os.Parcelable {
publicstaticfinal android.os.Parcelable$Creator *;
3.2.服务器签名函数
Hmac-SHA1算法java实现参考:
import javax.crypto.M
import javax.crypto.SecretK
import javax.crypto.spec.SecretKeySpublicclass HmacSHA1Encryption {
privatestaticfinal String MAC_NAME = “HmacSHA1″;
privatestaticfinal String ENCODING = “UTF-8″;
* 使用 HMAC-SHA1 签名方法对对encryptText进行签名*
@param encryptText 被签名的字符串
* @param encryptKey 密钥
* @return返回被加密后的字符串
* @throws Exception
publicstatic String HmacSHA1Encrypt( String encryptText,
String encryptKey ) throws Exception{
byte[] data = encryptKey.getBytes( ENCODING );
// 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
SecretKey secretKey = new SecretKeySpec( data, MAC_NAME );
// 生成一个指定 Mac 算法的 Mac 对象
Mac mac = Mac.getInstance( MAC_NAME );
// 用给定密钥初始化 Mac 对象
mac.init( secretKey );
byte[] text = encryptText.getBytes( ENCODING )
// 完成 Mac 操作
byte[] digest = mac.doFinal( text );
StringBuilder sBuilder = bytesToHexString( digest );
return sBuilder.toString();
* 转换成Hex
* @param bytesArray
publicstatic StringBuilder bytesToHexString( byte[] bytesArray ){
if ( bytesArray == null ){
StringBuilder sBuilder = new StringBuilder();
for ( byte b : bytesArray ){
String hv = String.format(“%02x”, b);
sBuilder.append( hv );
* 使用 HMAC-SHA1 签名方法对对encryptText进行签名
* @param encryptData 被签名的字符串
* @param encryptKey 密钥
* @return返回被加密后的字符串
* @throws Exception
public static String hmacSHA1Encrypt( byte[] encryptData, String encryptKey ) throws Exception{
byte[] data = encryptKey.getBytes( ENCODING );
// 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
SecretKey secretKey = new SecretKeySpec( data, MAC_NAME );
// 生成一个指定 Mac 算法的 Mac 对象
Mac mac = Mac.getInstance( MAC_NAME );
// 用给定密钥初始化 Mac 对象
mac.init( secretKey );
// 完成 Mac 操作
byte[] digest = mac.doFinal( encryptData );
StringBuilder sBuilder = bytesToHexString( digest );
return sBuilder.toString();
3.3错误代码对照表
CP编号错误
充值金额错误
产品不存在或已经下线
充值类型错误
米粒账户金额错误
数据库错误
内部用户编号错误(uid错误)
充值订单号错误
auth验证失败
缓存处理错误
渠道号错误
获取用户米粒账户错误
http请求错误
账户状态错误
分页查询最大id
订单创建错误
产品id错误
每页记录条数错误
卡支付调用错误
json解析错误
session错误
支付时间错误
订单处理中
RSA签名公钥或私钥错误
手机号码错误
分页时多少页
订单处理超时
未输入请求参数
产品单价错误
订单失败,未知原因
IP鉴权错误
购买数量错误
订单不存在
消息号错误
没有signature参数
订单请求时间错误
订单已支付
验证signature错误
已下线的应用
输入参数miBi错误
小米id错误
apkName错误
订购关系已经存
cp订单号错误
apkSign错误
authToken过期
订单金额错误
sdkVersionCode错误
authToken非法
支付方式错误
卡面值错误
serviceToken过期
订单id错误
cpUserInfo错误,透传参数
充值订单不存在
获取serviceToken失败
支付订单id错误
对账开始时间错误
充值订单状态不存在
验证serviceToken失败
支付结果错误
对账结束时间错误
业务系统公钥不存在
支付金额错误
计费系统私钥不存在
修改用户信息错误
单类型错误
订单描述信息错误
网元不存在
订单信息不一致,用于和CP的订单校验
This entry was posted in

我要回帖

更多关于 小米账号怎么注销 的文章

 

随机推荐