4399手机开放平台
网游支付SDK
网游支付SDK,主要面向网络游戏开发者,包括有服务器端和客户端两部分。支持支付宝、短信充值(移动/联通/电信)、财付通、网银、4399一卡通、手机充值卡、骏网一卡通、游币兑换。数据准,收入稳,转化高。
1。申请支付接口
登录4399手机开放平台http://open.4399.cn,点击 [新建游戏] 填写相关信息完成游戏创建, 进入游戏详细页面,选择 [支付SDK 配置管理] 填写配置并提交申请。
平台会将所提交申请,先审核成为测试模式,测试模式主要是服务器端回调接口联调,该模式下客户端调用支付接口直接模拟充值,无充值界面。 测试模式联调成功后,告知平台开通正式模式后进行RMB充值测试。
2。环境搭建
下载SDK包
SDK下载地址: http://open.4399.cn/doc/download/
关联类库项目
假设现在你的工程目录名字叫project,下面将具体介绍如何将SDK接入project中
① 将m4399RechargeSDK工程关联到project
② 将m4399RechargeSDK导入到eclipse中
③ 右键点击m4399RechargeSDK工程名→Properties→Android
④ 勾选Is Library→OK
⑤ 右键点击project工程名→Properties→Add
⑥ 在弹出的对话框中点选资源工程m4399RechargeSDK→OK
若游戏仅支持部分指令集,需要在引入资源工程后将m4399RechargeSDK\lib\目录下未使用的指令集文件夹删除。
如游戏仅支持arm6(armeabi),即可将其余的x86、arm64-v8a、armeabi-v7a文件夹删除。
包名要求
联运游戏apk包名必须以 m4399 结尾,如 com.xxx.xxx.m4399
配置Androidmanifest.xml
添加SDK所需权限
<!-- Common permission --> <uses-permission android:name=“android.permission.MOUNT_UNMOUNT_FILESYSTEMS” /> <uses-permission android:name=“android.permission.WRITE_EXTERNAL_STORAGE” /> <uses-permission android:name=“android.permission.INTERNET” /> <uses-permission android:name=“android.permission.ACCESS_WIFI_STATE” /> <uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE” /> <uses-permission android:name=“android.permission.CHANGE_CONFIGURATION” /> <!-- For Dial custom service hotline --> <uses-permission android:name=“android.permission.CALL_PHONE” /> <!-- SMS pay permission --> <uses-permission android:name=“android.permission.SEND_SMS” /> <uses-permission android:name=“android.permission.READ_SMS” /> <uses-permission android:name=“android.permission.READ_PHONE_STATE” /> <uses-permission android:name=“android.permission.RECEIVE_BOOT_COMPLETED” /> <!-- Alipay permission --> <uses-permission android:name=“android.permission.ACCESS_COARSE_LOCATION” />
注册SDK相关Activity&Service,注意必须放入元素区块内
<!-- For 4399 recharging SDK。 请不要在此处修改RechargeActivity的方向设置,因为某些2。3的机型启动Activity总是先启动 竖屏,然后强制转换成横屏,这会导致潜在问题。 --> <activity android:name=“cn.m4399.recharge.ui.activity.RechargeActivity” android:configChanges=“orientation|screenSize|keyboardHidden” android:launchMode=“singleTask” android:exported=“true” android:theme=“@style/m4399ActivityTheme” /> <!-- For 4399 Operation SDK --> <activity android:name=“cn.m4399.operate.ui.activity.LoginActivity” android:configChanges=“orientation|screenSize|keyboardHidden” android:launchMode=“singleTask” android:theme=“@style/m4399TransparentStyle” /> <activity android:name=“cn.m4399.operate.ui.activity.UserCenterActivity” android:hardwareAccelerated=“false” android:launchMode=“singleTask” android:configChanges=“orientation|screenSize|keyboardHidden” android:theme=“@android:style/Theme.NoTitleBar.Fullscreen” /> <activity android:name=“cn.m4399.operate.ui.activity.CustomWebActivity” android:launchMode=“singleTask” android:configChanges=“orientation|screenSize|keyboardHidden” android:theme=“@android:style/Theme.NoTitleBar.Fullscreen” /> <service android:name=“cn.m4399.recharge.service.smsm.SmsmService” android:enabled=“true” android:exported=“false” android:process=“system” > </service> <receiver android:name=“cn.m4399.recharge.service.smsm.SmsmStartReceiver” > <intent-filter> <action android:name=“android.intent.action.BOOT_COMPLETED” /> </intent-filter> </receiver> <!--------以下为第三方支付SDK Activity&Service配置------------> <activity android:name=“com.alipay.sdk.app.H5PayActivity” android:configChanges=“orientation|keyboardHidden|navigation|screenSize” android:exported=“false” android:screenOrientation=“behind” android:windowSoftInputMode=“adjustResize|stateHidden” />
注:第三方支付SDK的Activity需在AndroidManifest.xml中强制配置横竖屏,请游戏方根据游戏的横竖屏要求手工配置landscape|portrait
3。代码实现
初始化SDK
初始化推荐在游戏初始化过程中进行,析构函数则在游戏退出前执行。
mOpeCenter = OperateCenter.getInstance(); mOpeConfig = new OperateCenterConfig.Builder(this) 。setGameKey(“APPKEY”) //设置AppKey 。setDebugEnabled(false) //设置DEBUG模式,用于接入过程中开关日志输出,发布前必须设置为false或删除该行。默认为false。 。setOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) //设置横竖屏方向,默认为横屏,现支持横竖屏,和180度旋转 。setSupportExcess(true) //设置服务端是否支持处理超出部分金额,默认为false 。setPopLogoStyle(PopLogoStyle.POPLOGOSTYLE_ONE) //设置悬浮窗样式,现有四种可选 。setPopWinPosition(PopWinPosition.POS_LEFT) //设置悬浮窗默认显示位置,现有四种可选 。build(); mOpeCenter.setConfig(mOpeConfig); mOpeCenter.init(new OperateCenter.OnInitGloabListener() { // 初始化结束执行后回调 @Override public void onInitFinished(boolean isLogin, User userInfo) { assert(isLogin == mOpeCenter.isLogin()); } // 注销帐号的回调, 包括个人中心里的注销和logout()注销方式 // fromUserCenter区分是否是从个人中心注销的,若是则为true,不是为false @Override public void onUserAccountLogout(boolean fromUserCenter, int resultCode) { } // 个人中心里切换帐号的回调 @Override public void onSwitchUserAccountFinished(User userInfo) { } });
是否支持处理超出部分金额也可单独设置
mOpeCenter.setSupportExcess(support);
能否支持处理超出部分金额指在使用SDK充值时,由于用户选择的充值渠道不同,可能造成实际充值金额超出游戏下单时传入的金额。如果游戏服务端能够正确处理超出部分的金额,则本接口传入true。如果无法支持处理超出部分的金额,则传入false,SDK将会根据传入金额自动隐藏无法满足充值金额的渠道(例:开发者设置SupportExcess为false,充值时传入7元,此时4399一卡通中无7元面额的充值卡,此时4399一卡通的充值渠道将自动隐藏)。SupportExcess默认为false。
注:代码中MainActivity为当前Activity。下文的mOpeCenter指OperateCenter实例,通过getInstance()静态方法获得。
用户登录接口
用户在触发登录时,调用该接口,如果SDK内已包含未注销的用户凭证,将自动返回用户信息。如需强制调出登录界面,请使用[用户切换]接口。
mOpeCenter.login(MainActivity。this, new OnLoginFinishedListener() { @Override public void onLoginFinished(boolean success, int resultCode, User userInfo) { //登录结束后的游戏逻辑 } });
SDK会自动识别用户手机中是否安装了新版的4399游戏盒1.4.1以上版本,如果已安装,自动跳转至游戏盒授权登录。如果未安装,则弹出Web版4399统一登录界面。 在登录成功后,监听器返回的User类型的用户信息中将包含State登录凭证,该信息可用于游戏服务端进行用户信息二次验证
注:登录后如果未注销,登录状态将一直保持直至登录凭证过期或失效(若用户修改平台账户密码,所有游戏授权凭证将失效,需重新登录)。建议游戏在初始化完成后调用登录状态查询接口查询用户当前登录状态。
获取用户信息
在SDK处于登录状态时,可通过该接口获取当前用户的信息(UID、用户名、昵称、登录凭证)。
User user = mOpeCenter.getCurrentAccount();
账号切换
当用户需要注销当前登录状态,且同时弹出登录界面时,使用本接口。本接口的监听器类型与[用户登录]接口相同。
mOpeCenter.switchAccount(MainActivity。this, new OnLoginFinishedListener() { @Override public void onLoginFinished(boolean success, int resultCode, User userInfo) { //用户账号切换结束后的游戏逻辑 } });
用户注销
当用户需要注销当前登录状态时,使用本接口,注销回调在初始化接口回调中统一处理。
mOpeCenter.logout();
游戏关闭
如果游戏已经配置游戏圈, 则在关闭前,SDK会弹出对话框询问“退出游戏”还是“前往游戏圈,如果还没有配置,SDK弹框会提示“退出游戏”还是“留在游戏”。
mOpeCenter.shouldQuitGame(MainActivity。this, new OnQuitGameListener() { @Override public void onQuitGame(boolean shouldQuit) { // 点击“退出游戏”时,shouldQuit为true,游戏处理自己的退出业务逻辑 // 点击“前往游戏圈”时,shouldQuit为false,SDK会进入游戏圈或者下载 // 游戏盒子界面,游戏可以不做处理。 // 点击“留在游戏”时,shouldQuit为false,SDK和游戏都不做任何处理 // 点击右上角的关闭图标,shouldQuit为false,SDK和游戏都不做任何处理 } });
登录状态查询
查询当前客户端是否有账号登录
boolean isLogin = mOpeCenter.isLogin();
设置服务器ID
当游戏有分服时,在用户选择角色进入分服时,请务必立即通过本接口设置所在服的ID。如果无分服,则可不设置。
//serverid为整型,长度不超过8位 mOpeCenter.setServer(“SERVER_ID”);
充值接口
当用户需要充值时,可调用本接口启动充值中心界面。特别注意:mark为游戏方订单号,最大长度32位,由包含字母或数字组成的唯一字符串,该字段不可为空,不可重复。
mOpeCenter.recharge(MainActivity。this, je, //充值金额(元) mark, //游戏方订单号 productName, //商品名称 new OnRechargeFinishedListener() { @Override public void onRechargeFinished( boolean success, int resultCode, String msg) { if(success){ //请求游戏服,获取充值结果 }else{ //充值失败逻辑 } } });
je充值金额:4399充值中心仅支持整数金额充值,最小充值金额1元,最大不超过50000元。
mark订单号:最大长度32位,支持大小写字母、数字、‘|’(竖线)、‘-’(中划线)、‘_’(下划线),该字段不可为空,不可重复。
productName商品名称:最长不超过8个字符。 如果传入商品名,充值中心将直接显示改商品名称,如果充值金额大于下单时传入的je时,将显示商品名+XXX游戏币,相关游戏币的兑换比例在接入时提供给运营人员配置。如果未传入商品名,则直接显示XXX游戏币。
测试模式
何为测试模式? 游戏申请支付接口,平台会先将该申请设置为测试模式。测试模式需要使用平台指定的账号进行登录,方可测试充值接口,测试模式调用充值接口不会弹出充值界面,直接模拟充值,主要是与服务器端进行联调,客户端会根据服务器端返回的状态进行显示成功还是异常。 测试模式联调成功后,平台会开通正式模式,进行RMB测试。
移动短代需要以下处理
注意:由于移动短代的jar包中包含了assets和iap_corp.xml的资源文件,u3d需将assets拷贝到对于的Plugin目录下,u3d以及apktool工具打包的游戏,需要添加以下步骤,否则短代会出现“0.1元”的现象。 1、将Cartoonsmsbilling1。0.0。jar包解开,提取里面的iap_corp.xml 2、将iap_corp.xml追加到游戏APK中:。/aapt a yourgame.apk iap_corp.xml 3、删除原有的失效的签名文件:zip -d yourgame.apk “META-INF*” 4、重新签名:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore your_keystore.keystore compiled.apk your_alias_name 5、后期处理: 。/zipalign -v 4 compiled.apk yourgame_resigned.apk
获取状态信息
工具接口,用于将回调函数中的resultCode解析为中文的说明(充值接口recharge的resultCode对应的中文是回调中的msg)。
String resultMessage = OperateCenter.getResultMsg(resultCode);
获取SDK版本号
mOpeCenter.getVersion();
析构
游戏退出时调用本接口,释放SDK资源以及保存相关数据。
mOpeCenter.destroy();
检查更新
SDK包含自动更新模块,SDK将检查后台是否有新版本游戏上线,如果有,则显示更新内容,并提示用户升级。
该升级为增量升级,后台在提交新版游戏时自动制作差分包,更新时用户只需下载APK文件中新旧版本有差异的部分。
相关更新内容和版本提交事宜,请联系4399相关运营对接人员。
4399SDK的增量升级为全自动增量更新(无需操作,默认初始化完成)
代码混淆
如果您的应用使用了混淆, 请不混淆SDK代码,可以在proguard.cfg文件里追加以下配置。
-dontwarn android.support.v4。** -keep class android.support.v4。** { *; } -keep public class * extends android。support。v4。** -dontwarn com。unipay。** -keep class cn。m4399。operate。** {*;} -keep class cn.m4399.recharge。** {*;} -keepclassmembers class cn.m4399.recharge.R$* {*;}
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 下一页
0