为什么在游戏中充值时会现Mi闪付pass apple paypay启动失败。!

midascft是什么意思!为什么我充值游戏会显示启动失败_百度知道
midascft是什么意思!为什么我充值游戏会显示启动失败
您的回答被采纳后将获得:
系统奖励20(财富值+经验值)+难题奖励30(财富值+经验值)
我有更好的答案
0.12.1。无法充值midascft是一款非常棒的游戏,在这里你能像创世神一样
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁4399网页游戏资讯中心
4399网页游戏充值常见问题FAQ
网银充值Q: 网银、支付宝充值一次最少充值多少人民币?A:单笔充值,网银、支付宝充值一次最少是5元,最多是50000元Q: 银行卡没有开通网上银行功能可以充值吗?A:没有开通网银,暂不支持直接使用银行卡网上充值,建议您可以到选择银行卡快捷支付方式充值。Q:我网银充值已经扣费了,为什么没到帐呢?A:请您重新登录游戏查看游戏币是否到帐,若仍未到帐,请联系我们充值客服提供游戏帐号和银行扣费订单号码协助您查询。Q:怎么查询网银扣费订单号?A:请登录您的网上个人银行,在个人网银交易明细里查询相关的银行扣费订单,银行扣费订单一般是12位数字组成的。可以打开网址参考网银订单的查询方法:Q:网银充值有没有优惠?A:目前充值都是以页面上的比例为准的,如果游戏里有充值活动,充值达到要求就可以获得奖励优惠的,充值活动请到游戏官网查看。Q:网银充值提示:“对不起,由于商家订单的提交信息不正确,交易不能进行,请联系商家,错误代码:80001,错误信息:当前交易属于非法交易,请与商户网站联系。”怎么解决?A:出现此提示可能是您浏览器限制问题,建议更换浏览器重新提交即可。Q:为什么有些游戏充值时网银和其它方式充值的比例不一样的?A:您好,每个充值方式的比例都会有所不同,您可到/#27选择游戏查看系统提示对应元宝比例。Q:游币怎么兑换到游戏里呢?A:请登陆我司充值页面登陆游戏帐号后,点击“游币兑换”,再将游币兑换到相关的游戏中。Q:什么是游币?A:您好,游币是4399网页游戏推出的一种虚拟货币。Q:怎么充值游币?A: 您可在充值时选择“充值到4399游币”,之后可将游币兑换到相应的游戏中进行消费。(目前只有网银充值、快捷支付、支付宝可以充值游币)。Q:我可以查询到我帐号的充值记录吗?A:抱歉,如果充值时是直接选择充值到游戏里的记录,为了保障玩家帐号安全,目前官方暂无提供玩家自行查询充值记录的入口。如果您是使用网银或支付宝充值,您可以登录您的网银或支付宝里查看;如果您是充值到您的账户当中的话,您可以登录用户中心在账户信息里查看;如有疑问可联系官方咨询。支付宝充值Q:什么是支付宝?A:支付宝(中国)网络技术有限公司是国内领先的独立第三方支付平台,由阿里巴巴集团创办。支付宝致力于为中国电子商务提供“简单、安全、快速”的在线支付解决方案。有关支付宝更详细说明请点击:Q:如何使用支付宝充值A:凡是拥有支付宝帐号的用户,都可以进行网上直充,方便快捷,支付宝方式同时也支持网银。具体充值网址:。Q:支付宝充值显示失败怎么办?A:当您使用支付宝余额进行支付失败时,请先查看支付宝余额是否足够支付,如足够支付,再检查下您是否有下载支付宝数字证书,如没有下载,请登录支付宝官网:,点击安全中心---&数字证书进行下载。Q:支付宝显示支付成功了,但怎么还没有到账?A:当您支付成功后未收到游戏币,请先退出游戏重新进入后查询;若仍未收到,请登录您的支付宝帐户,在交易明细里查询您的支付成功的支付宝交易号和商家订单号后,提交给我们为您核实处理。银行快捷支付充值Q、什么是快捷支付?A:是一种安全、快捷的充值方式,只需将您的4399账号与银行账户绑定,无需网银,只需回复手机校验码即可轻松完成充值(如支付宝快充业务)。Q:如何使用快捷支付充值A:登录4399账号,打开充值页面选择银行卡快捷支付方式,填写好充值信息,确认订单,跳转到银行页面,选择对应的银行,输入银行卡卡号、持卡人姓名、持卡人身份证号码、银行预留手机、短信验证码,核对信息正确后,确定支付,即可完成支付。Q:如在充值过程中提示卡号被锁定或被冻结A:可及时致电财付通人工服务:0-#-3-1-1-0进行咨询。微信支付Q: 什么是微信支付?A: 微信支付是集成在微信客户端的支付功能,用户可以通过手机完成快速的支付流程。微信支付以绑定银行卡的快捷支付为基础,向用户提供安全、快捷、高效的支付服务。Q: 如何进行微信充值?A: 请先打开微信支付提交对应充值金额,同时打开手机微信“扫一扫”,弹出支付界面,支付即可。Q: 微信支付可以充值游币吗?A: 暂不支持。若需要充值游币可使用网银充值、支付宝、银行快捷支付、微信支付方式。Q: 微信支付一次最少可以充值多少人民币?A: 单日单笔充值,最少5元,最多3000元。Q: 微信显示支付成功了,但怎么还没有到账?A: 当您支付成功后未收到游戏币,请先退出游戏重新进入后查询;若仍未收到,请您登录微信钱包——点开“右上角省略号”的交易记录,在交易详情里查询您的支付成功的商户单号后,提交给我们为您核实处理。如是需要联系微信支付客服请拔打3。(若核实扣费失败会在1-5工作日原路退回)手机充值卡Q:支持的卡类型A:支持卡种:(1)全国联通卡:卡号15位、密码19位;面额10、20、30、50、100、300、500元全国移动卡:卡号17位、密码18位;面额10、20、30、50、100、300、500元全国电信卡:卡号19位、密码18位;面额10、20、30、50、100、300、500元移动充值卡Q:我买的是20元面值充值卡,页面上没有20元选择怎么办?A:可通过手机充值卡方式选择【充值卡类别】下方【选择其它服务商】选择【易宝支付】的方式提交充值。(如下图所示)Q:购买的移动充值卡已经将一半的费用充值手机话费,可以使用这张卡的余额充值4399游戏吗?A:不可以,您需要购买一张全新未使用过的移动充值卡才能支付。易宝联通充值卡Q:联通充值卡支付支持哪些充值卡?A:支持全国所有省份联通一卡充卡号为15位,密码19位(即:可拨打10011充值话费的卡)。支持面额为20元、30元、50元、100元、200元、300元和500元。Q:联通充值卡如何支付?A: (1)登录4399充值中心选择【手机充值卡】充值,充值卡类别选择【联通】,具体网址/#4(2)选择需要充值的游戏名称,服区,输入充值账号,选择充值面值,(请务必正确的选择您所使用的卡面额,避免交易失败或交易余额丢失)点击立刻充值跳转到核对页面,(请记录订单号码以便日后核对使用)如核对信息无误,点击确认充值跳转到支付平台;(3)按照页面提示输入联通充值卡卡号、密码、选择面值(请认真填写充值卡序列号及密码,错误两次该卡将无法继续提交)点击确认支付即可完成对游戏账户的充值操作。Q:充值显示失败怎么办?A:若充值失败,请登陆网页:输入卡号和密码查询卡的使用情况;若页面查询结果提示有撤销订单或继续支付,可选择撤销订单或者是继续支付,请在撤销订单后再到易宝联通卡支付页面选择正确的订单面额进行充值。Q:易宝联通充值卡充值一次性可以提交多少张卡充值?A:易宝联通卡支付支持组合支付。易宝渠道不限定卡类型,一次性最多可提交10张卡同时支付。4399一卡通Q:4399一卡通的卡号和密码是多少位的?A:官方发行的4399一卡通卡号和密码都是16位。Q:在哪里可以买到4399一卡通?A:请到4399一卡通购卡页面查看您当地经销商信息;同时您可以到当地报刊亭、网吧、电脑城和学校周边零售店等地方购买;也可以通过4399一卡通或购买;Q:4399一卡通有虚拟卡出售吗?A:我司发行的是4399一卡通实体卡,若您想购买虚拟卡,可到或购买。若您不是通过官方网店购买,而是到其他网店购买虚拟充值卡请在购买前在网址输入卡号和密码查询是否是我们官方的4399一卡通。Q:4399一卡通里是否可以分多次充值?A:抱歉,4399一卡通只支持一次充值,不支持一张卡多次提交充值。Q:我用4399一卡通充值提示“卡状态异常”,是什么情况?A:请您联系我司提供您的卡号为您查询。也可在输入卡号和密码查询4399一卡通的状态。Q:4399一卡通有哪些面值?A:市面通行的4399一卡通只有4种面额:10元、30元、50元、100元,但官方在某些特殊的活动中,可能会根据需要发行一定量的5元面值虚拟卡密。Q:怎么查询我的4399一卡通是否有使用呢?A:您可以打开网址在卡状态查询处,通过输入卡号和密码查询卡的使用情况。Q:我用4399一卡通充值提示“卡号错误”,“系统错误”,对过明明是正确的。A:请先打开网址输入卡号和密码查询是否是4399一卡通,若查询不到可能是其他的充值卡。Q:4399一卡通官方购买网址是多少?A:4399一卡通网页官方出售地址:淘宝店:;拍拍店:。骏网一卡通充值Q:为什么我使用骏网一卡通充值显示该卡为其他产品专用充值卡,不能充值本产品?A:抱歉,4399官方只支持卡号和密码都是16位的非专属骏网官方卡充值的。Q:为什么我充值骏网一卡通显示卡密不正确或充值卡已被使用?A:建议您登陆网页输入您的充值卡号和卡密进行查询,若显示充值卡号或者卡密错误,可能是记错充值卡信息,建议您确认正确的卡密再进行充值。Q:我使用卡号16位,密码12位的骏网一卡通充值为什么显示充值失败?A:您的充值卡不支持我司游戏充值,建议您可以购买卡号和密码都是16位的非专属骏网卡充值我司的游戏。Q:贵州骏网一卡通可以充值你们的游戏吗?A:抱歉,贵州骏网一卡通不支持我司游戏充值,您可以购买卡号和密码都是16位的非专属骏网卡充值我司的游戏。Q:骏网一卡通在哪里买?A:骏网一卡通、4399一卡通可以到网吧或是报刊亭、电脑城、学校周边的零售店购买;联通充值卡可以到报刊亭或联通营业厅购买。Q:天宏一卡通或者QB可以充值吗?A:抱歉,不支持的。目前支持我司游戏的充值卡有手机移动充值卡、联通充值卡、电信卡、骏网一卡通和4399一卡通,其它充值卡暂不支持我司平台充值;同时我司所有的充值方式都在这个网页上,网页上没有显示的充值方式暂不支持我司平台充值。游币兑换Q:充值游币有哪些方式?A:游币充值可以通过网银充值,支付宝,银行卡快捷支付、人工充值方式进行充值。游币充值最低金额为5元,游币兑换最低为1元。Q:游币怎么兑换到游戏里呢?A:请登陆我司充值页面/#96登陆游戏帐号后,点击“游币兑换”,再将游币兑换到相关的游戏中,仅支持整数兑换。Q:为什么我游戏盒兑换的游币没有充值到账?A:游戏盒子兑换的游币是属于游戏吧平台的游币,麻烦您到游戏吧充值平台游币兑换核实您兑换的游币是否到账,网址为:人工充值Q:你们可以人工直接充值吗?A:可以。您可以银行转帐到我司的银行帐号上,我们支持的汇款银行有建设银行,工商银行,招商银行、兴业银行,具体请到网址:了解相关信息。Q:我银行转帐了,怎么充值呢?A:您好,为了提高玩家账号安全、确保人工充值快速准确,建议您登录/#99,选择对应的充值方式(银行转账、paypal转账、西联汇款)提交充值信息,我们会尽快处理您的充值。Q:我是国外的玩家怎么充值呢?A:您可以选择paypal转账或者使用西联汇款的方式进行充值。Q:你们PAYPAL的帐户是多少?A:我司PAYPAL帐户地址是:,请到人工充值流程页面了解关于PAYPAL转帐的相关信息。Q:我想通过西联汇款的方式充值你们的游戏,银行说要你们的信息,请提供给我?A:我司西联汇款的相关信息:First name:chenlu &;Lastname:wu;Address:厦门市思明区软件园二期望海路2号楼 (Building No.2, Wanghai Road, the SecondPhaseSoftwarePark,SimingDistrict,Xiamen)请到人工充值流程页面了解相关信息。Q:银行转帐汇款是需要填写真实名字,那要填什么?A:我司银行账户属公司账户,收款人姓名请填写:四三九九网络股份有限公司。Q:我可以柜员机转账吗?A:因为银行账户属公司账户,不支持柜员机转账,只支持网银或银行柜台转账。如仍有其他充值疑问,请及时联系4399充值客服充值客服电话:400-655-4399转188 (服务时间:9:00-18:00)TV&盒子游戏内支付接入指南
快速访问:
有任何技术问题,欢迎到游戏开发者论坛吐槽,寻求帮助。
若您是游戏开发者,以下信息需要注意:
(接入前请务必查看)
在继续看文档之前,建议您先把随本文档一起分发的Demo程序安装到盒子或TV上,(MiSdkDemoForAppPayment.apk),这个程序完整演示了小米支付的工作流程,有助于您快速理解我们SDK支付的整个流程。单机游戏或网络游戏也可以参考SampleForMiSdkOffline、SampleForMiSdkOnline
一、接入前准备
1、小米游戏介绍
1.1 小米游戏平台介绍
小米游戏平台是小米公司推出的面向所有小米手机、小米盒子、小米TV以及MIUI用户的游戏平台,整个游戏平台整合了MIUI系统、开发SDK、互联网网站、小米论坛等各方面优质资源,力求打造一个良好的安卓游戏生态系统。
小米游戏平台提供游戏下载、游戏搜索、游戏计费(支持单机游戏和网络游戏)等多种平台支撑能力,接入简单快捷,是众多游戏开发商最优的选择。
————————————————————————
1.2 小米账户介绍
小米账户是小米公司为所有小米网、MIUI、米聊而开发的小米通行证账户系统,目前注册用户已经超过7000万,小米账户主要采取绑定手机号码或邮箱的方式,用户注册了小米账户同时会享受网盘、小米云存储、语音助理、米聊、游戏中心等多项优质免费服务。
小米账户即可使用小米ID登录,也可使用手机号码、邮箱作为用户名登录,十分方便快捷。
若没有项目账号,可以访问 / 进行注册。
————————————————————————
1.3米币系统介绍
米币是小米公司针对虚拟商品支付而发行的一种通用代币。具有可在小米公司所有虚拟物品平台流通的特性。用户只要通过小米账号进行充值(用人民币购买米币),就可以在小米公司旗下各移动产品或合作产品平台中支付使用。
1元=1米币,米币最小单位是1分,即可定价为0.01米币。
开发者将所在应用中用户消费的米币数额作为应用收入的结算依据。
目前给米币充值的方式包括:支付宝、财付通、银行卡、信用卡、话费充值卡、手机短信充值等。 用户可以在MIUI手机里内置的‘米币中心’进行充值,也可以访问 / 进行充值。
2、配置商品代码
2.1 在小米开发者站注册帐号,地址:()
2.2 在电视应用中创建应用:
2.3 获得AppId、AppKey、AppSecret,并配置支付的商品:
注意:AppId、AppKey用来初始化SDK、AppSecret在服务器与服务器通信签名生成signature时使用,游戏PackageName必须以“.mitv”结尾。
添加商品,保存即可
注意:如果是按金额付费必须配置回调地址,按计费代码付费可选。
3、联运合同签署
开发者可根据以下项完成计费SDK的合同签署(接入与合同签署可以同步进行):
合同模板下载:
合同签署联系人QQ:;E-mail:
二、接入流程与实现
1、快速开始
在继续看文档之前,建议您先把随本文档一起分发的Demo程序安装到盒子或TV上,(MiSdkDemoForAppPayment.apk),这个程序完整演示了小米应用支付的工作流程,有助于您快速理解我们SDK支付的整个流程。单机游戏或网络游戏也可以参考SampleForMiSdkOffline、SampleForMiSdkOnline
应用内支付SDK由两部分组成,其一是SDK_MIBOX_2.0.0.jar(位于sdk_lib目录下),需要将此jar包放入游戏App的工程中,我们已将要使用的接口封装好,而另一部分是MiGameCenterSDKService.apk(位于sdk_service目录下),这个apk对jar提供了登录、支付等各方面的服务,此apk程序负责完成与小米服务器的数据交互,小米电视和盒子内置了这个apk程序。
2、产品设计及实现说明
2.1 登录及支付
2.1.1 登录流程概述
1)单机游戏:单机游戏开发者在支付前要调用miLogin()函数进行登陆,登陆成功后才可以调用miUniPay()函数进行支付
2)网络游戏:网络游戏开发者需要管理用户登录,并且需要记录用户登录状态,用户每次启动游戏时,必须调用miLogin()来判断用户会话是否超时,在游戏过程中如果需要充值可以调用miUniPay()
3)应用:用户每次启动应用时,必须调用miLogin()来判断用户会话是否超时,在应用运行过程中,如果需要充值可以调用miUniPay()。
4)登录实现请参考『3.2.2.2小米账户登录调用代码』,注意:调取miLogin()登录前需要:
在开发者站申请并绑定有效的appId/appKey;
配置应用内支付模块,否则会报告 -102 错误。
5)用户开户及登录流程
UID不是小米ID,但与小米ID有对照关系;
请开发者一定要使用这个UID作为用户标识,不要使用本机的IMEI、IMSI或Mac地址,我们的审核团队会严格测试。
2.1.2 支付流程概述
1)计费方式:
按金额付费:必须配置回调地址,推荐网游使用
按计费代码付费:支持可消耗类商品代码与不可消耗类商品代码,回调地址配置可选,推荐单机和应用使用。
2)按金额付费流程
2.2 SDK调用方法
对于开发者来说只需要引入以下代码即可完成应用内支付
2.2.1初始化
1)在小米开发者创建应用并获取 AppId 、AppKey和AppSecret(注意AppSecret是用于服务器端签名,不要在客户端里使用),创建应用时如果是游戏PackageName必须以“.mitv”为后缀。 将 zip 包中sdk_service目录下的 MiGameCenterSDKService.apk 放到应用工程的的 assets 目录下, zip sdk_lib目录下SDK_MIBOX_x.x.x.jar 包放到工程的 libs 下,在 buildpath 中引用,然后对 SDK 进行初始化。
2)注意: 需要检查下面的一致性,如果不一致会导致调用登录和其它 SDK 接口失败
在小米开发者站后台配置好AppId/AppKey和包名(包名必须以.mitv结尾);
检查AndroidManifest.xml里面所设置的package必须与开发者站配置的一致;
必须配置应用内消费,否则无法成功登陆(会返回1515);
3)然后在Application.onCreate中调用以下初始化方法
————————————————————————
MiAppInfo appInfo = new MiAppInfo();
appInfo.setAppId("请申请获得");
appInfo.setAppKey("请申请获得");
MiCommplatform.Init( this, appInfo );
————————————————————————
4)SDK所需要的权限
————————————————————————
& uses-permission android:name="android.permission.GET_TASKS"
& uses-permission android:name="com.xiaomi.sdk.permission.PAYMENT" /&
& uses-permission android:name="android.permission.READ_PHONE_STATE" /&
————————————————————————
2.2.2 小米账户登录调用代码
可以通过实现OnLoginProcessListener接口来捕获登录结果。
MiCommplatform.getInstance().miLogin( context,
new OnLoginProcessListener()
public void finishLoginProcess( int code ,MiAccountInfo arg1)
switch( code )
case MiErrorCode.MI_XIAOMI_PAYMENT_SUCCESS:
// 登陆成功
//获取用户的登陆后的UID(即用户唯一标识)
long uid = arg1.getUid();
/**以下为获取session并校验流程,如果是网络游戏必须校验,如果是单机游戏或应用可选**/
//获取用户的登陆的Session(请参考『2.3.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:
//登录操作正在进行中
// 登录失败
2.2.3 按金额付费调用
MiBuyInfo miBuyInfo= new MiBuyInfo();
miBuyInfo.setCpOrderId(UUID.randomUUID().toString());//订单号唯一(不为空)
miBuyInfo.setCpUserInfo( “cpUserInfo” ); //此参数在用户支付成功后会透传给CP的服务器
miBuyInfo.setAmount( 10 ); //必须是大于1的整数,10代表10米币,即10元人民币(不为空)
//用户信息,网游必须设置、单机游戏或应用可选
Bundle mBundle = new Bundle();
mBundle.putString( GameInfoField.GAME_USER_BALANCE, "1000" );
//用户余额
mBundle.putString( GameInfoField.GAME_USER_GAMER_VIP, "vip0" );
mBundle.putString( GameInfoField.GAME_USER_LV, "20" );
//角色等级
mBundle.putString( GameInfoField.GAME_USER_PARTY_NAME, "猎人" );
//工会,帮派
mBundle.putString( GameInfoField.GAME_USER_ROLE_NAME, "meteor" ); //角色名称
mBundle.putString( GameInfoField.GAME_USER_ROLEID, "123456" );
mBundle.putString( GameInfoField.GAME_USER_SERVER_NAME, "峡谷" );
//所在服务器
miBuyInfo.setExtraInfo( mBundle ); //设置用户信息
MiCommplatform.getInstance().miUniPay(activity, miBuyInfo,
new OnPayProcessListener()
public void 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型,即最少只能购买1米币对应的虚拟币.
2.2.4 按计费代码购买可消耗商品(例如:血瓶,法瓶等可重复购买的商品)
MiBuyInfo miBuyInfo = new MiBuyInfo();
miBuyInfo.setCpOrderId( UUID.randomUUID().toString() );//订单号唯一(不为空)
miBuyInfo.setProductCode( “productCode” );//商品代码,开发者申请获得(不为空)
miBuyInfo.setCount( 3 );//购买数量(商品数量最大9999,最小1)(不为空)
MiCommplatform.getInstance().miUniPay( activiy, miBuyInfo,
new OnPayProcessListener()
public void 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:
//购买失败
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_ACTION_EXECUTED:
//操作正在执行
//购买失败
2.2.5 按计费代码购买非可消耗商品(例如:关卡等不可重复购买的商品)
MiBuyInfo miBuyInfo = new MiBuyInfo();
miBuyInfo.setCpOrderId( UUID.randomUUID().toString() );//订单号唯一(不为空)
miBuyInfo.setProductCode( “productCode” );//商品代码,开发者申请获得(不为空)
miBuyInfo.setCount( 1 );//购买数量(只能为1)(不为空)
MiCommplatform.getInstance().miUniPay(activiy, miBuyInfo,
new OnPayProcessListener()
public void 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:
//购买失败
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_PAY_REPEAT:
//已购买过,无需购买,可直接使用
case MiErrorCode.MI_XIAOMI_PAYMENT_ERROR_ACTION_EXECUTED:
//操作正在执行
//购买失败
参数说明:
开发方订单号
20~100字符以内,开发方生成,要求不能重复,可根据开发方规则自行生成。
productCode
规则要求:可由数字 0-9,字母 a-zA-Z 以及特殊字符”_”,”.”,”-”组成, 长度8~40位,同一款 游戏内 productCode要求唯一,区分字母大小写。建议使 用com.xiaomi.migc.xxx 的格式命名。调用时请不要弄混非消耗类商品和可 消耗类商品的productCode。
非消耗类商品,取值=1 可消耗类商品,取值&=1
2.3 服务器接口
按金额付费,以小米应用支付服务器通知的结果为准为用户进行虚拟币充值。所以必须提供接收订单支付结果通知的地址(必选)。
按计费代码计费,也可以提供接收订单支付结果通知的地址(可选)。
2.3.1 订单支付结果通知接口
2.3.1.1 流程说明
此接口由开发者负责开发并在开发者后台进行配置。在订单支付成功后,小米应用支付服务器会将支付结果通知给开发者预先提供的服务器上。若开发者所提供的服务器地址不可用,在一定时间段内游戏平台服务器会按照周期进行轮询(前10次,每分钟通知1次;10次后每小时通知1次)。 具体流程如下:
注:由于是异步通知模型,(3)和(4)不一定是按序号产生。因此(4)和(5)需要进行轮询处理或者使用接口进行支付结果查询。 相比后面提到的开发者主动查询订单的模式,我们推荐使用此模式。
2.3.1.2 接口及参数说明
接口地址:各开发者服务器的通知地址(提前申请,在小米开发者站进行配置)
请求方法:GET
————————————————————————
请求参数说明:
|参数名称|
重要性 |说明|
|---|---|---|
|必须 |游戏ID|
|cpOrderId| 必须
|开发商订单ID|
|cpUserInfo |可选 |开发商透传信息|
|必须 |用户ID|
|游戏平台订单ID|
|orderStatus|
|订单状态,TRADE_SUCCESS 代表成功|
|支付金额,单位为分,即0.01 米币。|
|productCode|
必须| 商品代码|
|productName|
|商品名称|
|productCount
|必须 |商品数量|
|支付时间,格式 yyyy-MM-dd HH:mm:ss|
|orderConsumeType
订单类型:10:普通订单11:直充直消订单|
|partnerGiftConsume |可选|
使用游戏券金额 (如果订单使用游戏券则有,long型),如果有则参与签名|
|signature| 必须
|签名,签名方法见后面说明|
注意:如果开发者允许使用游戏礼券则必须使用partnerGiftConsume参数,否则使用游戏礼券的消费订单会出现掉单情况。
/notify.do?appId=7239138&cpOrderId=9786bffc-996d-4553-aa33-f7e92c0b29d5&orderConsumeType=10&orderId=&orderStatus=TRADE_SUCCESS&payFee=1&payTime=%&productCode=com.demo_1&productCount=1&productName=%E9%93%B6%E5%AD%901%E4%B8%A4&uid=100010&signature=021c20aa885d9b3e1b70cec751496
————————————————————————
返回参数说明:
状态码,200 成功1506 cpOrderId 错误1515 appId 错误1516 uid 错误1525 signature 错误3515 订单信息不一致,用于和 CP 的订单校验
注意:对于同一个订单号的多次通知,开发商要自己保证只处理一次发货。
{“errcode”:200}
————————————————————————
服务器IP地址:
42.62.48.246 223.202.68.237 42.62.103.0/26(42.62.103.1 ~ 42.62.103.62) 120.134.34.0/26(120.134.34.1 ~ 120.134.34.62),请开发商服务器开发人员加到ip白名单内,以免因为ip限制造成回调不成功。
2.3.2 订单支付结果通知接口
此接口由小米为开发者提供。
2.3.2.1流程说明
2.3.2.2接口及参数说明:
接口地址:http://mis./api/biz/service/queryOrder.do
请求方法:GET
————————————————————————
请求参数说明:
开发商订单ID
签名,签名方法见后面说明
http://mis./api/biz/service/queryOrder.do?appId=7239138&cpOrderId=9786bffc-996d-4553-aa33-f7e92c0b29d5&uid=100010&signature=e91d68b864b272b6ec03f35ee5aa0a1
————————————————————————
正确返回参数说明:
开发商订单ID
cpUserInfo
开发商透传信息
游戏平台订单ID
orderStatus
订单状态,TRADE_SUCCESS 代表成功WAIT_BUYER_PAY 代表未支付REPEAT_PURCHASE 订购关系已经存在
支付金额,单位为分,即0.01 米币。
productCode
productName
productCount
支付时间,格式 yyyy-MM-dd HH:mm:ss
orderConsumeType
订单类型:10:普通订单11:直充直消订单
签名,签名方法见后面说明
"signature": "eb30240cff8c66f856ec0e4cf037f",
"uid": "100010",
"appId": 7239300,
"cpOrderId": "9786bffc-996d-4553-aa33-f7e92c0b29d5",
"productCode": "com.demo_1",
"orderStatus": "TRADE_SUCCESS",
"productName": "%E9%93%B6%E5%AD%901%E4%B8%A4",
"productCount": 1,
"orderConsumeType": "10",
"orderId": "",
"payFee": 1,
"payTime": " 15:20:27"
————————————————————————
错误返回参数说明:
状态码1506 cpOrderId 错误1515 appId 错误1516 uid 错误1525 signature 错误
2.3.3用户session验证接口
此接口由小米应用支付为开发者提供,用于验证登录账户的有效性。 注意:用户的唯一标识是通过SDK获得的uid,而不是Session,Session用于校验登录验证的有效性,必须经过SDK、游戏中心服务器、开发者服务器进行三方验证,如果Session失效,需要重新调用miLogin()进行登录。
2.3.3.1流程说明
2.3.3.2接口及参数说明
接口地址:http://mis./api/biz/service/verifySession.do
请求方法:GET
————————————————————————
请求参数说明:
用户sessionID
签名,签名方法见后面说明
http://mis./api/biz/service/verifySession.do?appId=7239138&session=1nlfxuAGmZk9IR2L&uid=100010&signature=b560b14efb18ee2eb8f85e51c5f7c11f697abcfc
————————————————————————
返回参数说明:
状态码200 验证正确1515 appId 错误1516 uid 错误1520 session 错误1525 signature 错误
“errcode”: 200
2.3.4 接口格式说明
输入参数: ?参数1=值1&参数2=值2&….&参数n=值n,如果遇到文本参数值,需要根据情况对参数值做 UrlEncode。 返回参数:在回调的时候,是 http get方式发送请求 ,参数拼接在url后面,你们的服务器返回的数据 要求是json格式的,如:{“errcode”:200}这种格式
2.3.5 signature签名方法说明
1、生成带签名字符串 表中各参数按字母顺序排序(不包含signature),如果第一个字母相同,按第二个字母排序,依次类推。排序后拼接成par1=val1&par2=val2&par3=val3的格式,所生成的字符串即为待签名的字符串。没有值的参数请不要参与签名。由于有些数据根据HTTP协议需求,需要进行URLencoding,这样接收方才可以接收到正确的参数,但如果这个参数参与签名,那么待签名字符串必须是字符串原值而非URLencoding的值。
例如: 在订单通知接口收到的回调信息如下:
appId=7239138&cpOrderId=9786bffc-996d-4553-aa33-f7e92c0b29d5&orderConsumeType=10&orderId=&orderStatus=TRADE_SUCCESS&payFee=1&payTime=%&productCode=com.demo_1&productCount=1&productName=%E9%93%B6%E5%AD%901%E4%B8%A4&uid=100010&signature=021c20aa885d9b3e1b70cec751496
这时候需要对每个参数的值进行URLdecode,
decode后的字符如下:
appId=7239138&cpOrderId=9786bffc-996d-4553-aa33-f7e92c0b29d5&orderConsumeType=10&orderId=&orderStatus=TRADE_SUCCESS&payFee=1&payTime= 15:20:27&productCode=com.demo_1&productCount=1&productName=银子1两&uid=100010&signature=021c20aa885d9b3e1b70cec751496
而需要进行签名的字符串为:
appId=7239138&cpOrderId=9786bffc-996d-4553-aa33-f7e92c0b29d5&orderConsumeType=10&orderId=&orderStatus=TRADE_SUCCESS&payFee=1&payTime= 15:20:27&productCode=com.demo_1&productCount=1&productName=银子1两&uid=100010
2、签名算法 以AppSecret作为key,使用hmac-sha1带密钥(secret)的哈希算法对代签字符串进行签名计算。签名的结果由16进制表示。hmac-sha1 带密钥(secret)哈希算法的实现请参考『3.2服务器签名函数』。
3、常见问题
3.1 APK打包及发布
需要注意,SDK 包是以 jar 包提供给开发者,此jar包本身已为混淆状态,您在混淆自己游戏的 APK包时,需要在proguard.cfg 里加入,以避免二次混淆。
————————————————————————
public (...);
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
3.2 服务器签名函数
Hmac-SHA1算法java实现参考:
————————————————————————
import javax.crypto.M
import javax.crypto.SecretK
import javax.crypto.spec.SecretKeyS
public class HmacSHA1Encryption {
private static final String MAC_NAME = "HmacSHA1";
private static final String ENCODING = "UTF-8";
* 使用 HMAC-SHA1 签名方法对对encryptText进行签名
* @param encryptText 被签名的字符串
* @param encryptKey 密钥
* @return 返回被加密后的字符串
* @throws Exception
public static 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
public static 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();
Documentation built with .

我要回帖

更多关于 pay.swiftpass.cn 的文章

 

随机推荐