一、游戏申报
1.1.本平台单机产品申报

1.登录商务合作管理平台,点击左侧 普通单产品-创建产品

创建产品

2.按要求申报产品并上传截图、提交

截图上传

注意事项

  • 产品类型请选择“单机游戏”
  • 游戏包名请正确填写,提交后不能修改包名为(工程文件MainActivity.java中的“package=”)
  • 支付类型请选择“根据关卡或道具计费(试玩转激活)”
  • 计费类型选择“短信计费”
  • 道具别名系统会自动生成。
  • 游戏截图请按要求截取上传
  • 游戏ICON图请使用游戏安装后的图标

3.获取配置文件

审核通过后,点击左侧 普通单产品-产品管理(厂商),下载系统生成的配置文件,即“

feeInfo.dat<”。>

创建产品
1.2.外放产品申报

登录商务平台,点击左侧 产品发行(CP)-产品管理-创建产品;其他步骤及注意与本平台单机产品类似。

外放产品申报

若没有“产品发行(CP)” 说明暂无发行产品权限,请联系渠道经理申请权限。获得到权限后进入产品发行(CP)- “申请发行”(注:第一次登陆产品发行(CP)中只操作一次)。 创建产品时,使用原游戏名即可,无需添加[爱游戏]后缀。审核通过后,可通过系统获取配置文件。可参见流程图。

外放产品申报

外放产品包名特别注意事项

包名校验注意事项:如果申报时候包名为com.egame.zhijian那么在打渠道外放包的时候包名只要满足如下条件,计费SDK校验就可以通过:包名已com.egame.zhijian开头后面可以包含数字字母和一个点(.)。能通过的包名如下:com.egame.zhijian360,com.egame.zhijian91,com.egame.zhijianaz,com.egame.zhijian.az;

不能通过的包名:com.egame.zhijian.az.360

二、计费SDK嵌入过程
2.1.放置资源文件

将从商务平台上获取到的“feeInfo.dat”文件放入Android项目中的assets文件夹内。

注意!本平台产品和渠道产品使用不同的feeinfo.dat
计费SDK支付流程

将SDK包中res目录下的资源文件放到Android项目中的res文件夹内。

计费SDK支付流程

将SDK包中的lib目录下的so文件放到Android项目中的lib文件夹内。

计费SDK支付流程
2.2.配置AndroidManifest.xml

在AndroidManifest.xml文件中增加以下两个权限的申明,并添加Activity申明。

<uses-permission

android:name

=

"android.permission.READ_PHONE_STATE"

/>
<uses-permission

android:name

=

"android.permission.SEND_SMS"

/>
<activity

android:name

=

"cn.egame.terminal.paysdk.EgamePayActivity"


android:theme

=

"@android:style/Theme.Translucent.NoTitleBar.Fullscreen"

>
</activity>
在AndroidManifest.xml文件中增加渠道号

仅外放游戏使用,本平台游戏切勿添加任何渠道号,请在配置文件中注释或直接去掉以下代码。

<meta-data

android:name

=

"EGAME_CHANNEL"

android:value

=

"8001001"

/>
关于支付二次确认

如本平台需要添加二次确认,请添加“EGAME_CONFIRM”标签,并将值改为“true”。

如渠道包需要添加二次确认,请添加“CHANNEL_CONFIRM”标签,并将值改为“true”。

如分省产品需要添加二次确认,请添加“PROVINCE_CONFIRM”标签,并将值改为“true”。

SDK默认为一次确认。如无要求,配置文件中不需要写。

<meta-data

android:name

=

"EGAME_CONFIRM"

android:value

=

"true"

/>
<meta-data

android:name

=

"CHANNEL_CONFIRM"

android:value

=

"true"

/>
<meta-data

android:name

=

"PROVINCE_CONFIRM"

android:value

=

"true"

/>

一次确认图例:

一次确认图例

二次确认图例

二次确认图例 二次确认图例
2.3.调用支付方法
Activity thisActivity;
Button payButton1, payButton2;
String payAlias = "";

@Override

protected void

onCreate

(Bundle savedInstanceState)}{

super

.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
thisActivity =

this

;
payButton1 = (Button) findViewById(R.id.button1);
payButton1.setOnClickListener(button1_OnClickListener);
payButton2 = (Button) findViewById(R.id.button2);
payButton2.setOnClickListener(button2_OnClickListener);
}

private

OnClickListener button1_OnClickListener =

new

OnClickListener() {
@Override

public

void

onClick

(View v) {
payAlias=

"108462"

;

//硬计费点,激活游戏,1元,试玩三分钟后弹出


EgamePay.pay(thisActivity, payAlias,

new

EgamePayListener() {
@Override
public void

paySuccess

(String alias) {
Toast.makeText(thisActivity,

"道具("


+ alias +

")支付成功。"

,Toast.LENGTH_LONG).show();
}

@Override
public void

payFailed

(String alias, int errorInt) {
Toast.makeText(thisActivity,

"道具("


+ alias +

")支付失败:"

+ errorInt,
Toast.LENGTH_LONG).show();
}
@Override
public void

payCancel

(String alias) {
Toast.makeText(thisActivity,

"道具("


+ alias +

")支付操作被取消。"

,
Toast.LENGTH_LONG).show();
}
});
}
};
private OnClickListener button2_OnClickListener = new OnClickListener() {
@Override
public void

onClick

(View v) {
payAlias=

"108463"

;
//软计费点,复活,2元,主角死亡后主动点击
EgamePay.pay(thisActivity, payAlias, new EgamePayListener() {
@Override
public void

paySuccess

(String alias) {
Toast.makeText(thisActivity,

"道具("


+ alias +

")支付成功。"

,Toast.LENGTH_LONG).show();
}

@Override
public void

payFailed

(String alias, int errorInt) {
Toast.makeText(thisActivity,

"道具("


+ alias +

")支付失败:"

+ errorInt,
Toast.LENGTH_LONG).show();
}
@Override
public void

payCancel

(String alias) {
Toast.makeText(thisActivity,

"道具("


+ alias +

")支付操作被取消。"

,
Toast.LENGTH_LONG).show();
}
});
}
};

PayAlias为计费点的道具别名,具体内容在登录平台-产品管理-消费信息中获取。

道具别名
三、常见问题
3.1.代码混淆配置

feeInfo.dat配置文件必须嵌入在指定包名的项目中,如Demo中提供了项目包名为cn.paly.SMSOnline,若CP将Dmo中的feeInfo.dat文件直接覆盖,依然不能运行,必须将Demo项目的包名改为CP在平台中申报的包名才能正确运行。

请确保在平台上申报的包名与实际包名一致。如你在平台上申报时,包名填写的是cn.play.abc,却把下载的配置文件feeInfo.dat放在了cn.play.xyz的项目中,在在支付时,SDK会报-103错误。

项目中的包名为AndroidManifest.xml文件中的package值。

<?xml version="1.0" encoding="utf-8"?>
<manifest

xmlns:android

=

"http://schemas.android.com/apk/res/android"


package

=

"cn.play.egamesmsoffline"


android:versionCode

=

"1"


android:versionName

=

"1.0"

>
3.2.代码混淆配置
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-ignorewarnings
-allowaccessmodification

-libraryjars libs/egame.terminal.szpay.jar
-dontwarn cn.egame.terminal.szpay.**
-keep class cn.egame.terminal.szpay.**{*;}


-libraryjars libs/smspayforonlinegame.jar
#-libraryjars libs/smspayforegame.jar
-dontwarn cn.egame.terminal.smspay.**
-keep class cn.egame.terminal.smspay.**{*;}
-keep class egame.terminal.jni.protocal.**{*;}


-libraryjars libs/egame.terminal.alipay.jar
-dontwarn cn.egame.terminal.alipay.**
-keep class cn.egame.terminal.alipay.**{*;}


-libraryjars libs/alipay_plugin.jar
-dontwarn com.alipay.android.app.**
-keep class com.alipay.android.app.**{*;}


-libraryjars libs/egameforonlinegame.jar
-dontwarn cn.egame.terminal.egameforonlinegame.**
-keep class cn.egame.terminal.egameforonlinegame.**{*;}

-keepclasseswithmembernames class * {
native <methods>;
}
3.3.外放游戏查看短信上行渠道号

安装SKD开发包中的渠道号查看插件。

运行后,按返回键退出前台。

运行外放游戏,弹出计费点。

渠道号查看插件会Toast弹出相关信息。

道具别名
附录
计费错误代码说明
错误代码 错误描述
-100 Activity对象为空
-101 feeInfo.dat计费文件未找到或者数据读取异常
-102 无法读取当前应用信息
-103 应用校验失败,申报信息和当前产品不一致
-104 非电信用户
-105 单击:道具别名错误
-200 初始化失败,无法进行计算
-201 计费回调对象为空
-202 计费道具别名错误
-203 渠道ID数据异常
-204 SERVICE_CODE数据异常
-205 自定义参数格式异常
-206 计费方法调用过快
-207 计费短信发送失败
SDK相关资源文件下载
努力加载中...