爱贝云计费支付基础功能~
*初始化SDK
1、功能介绍
首先需要您的游戏启动页面先调用该功能,在接入之前,您需要在爱贝开发者中心注册应用获得appid。此接口完成安全支付服务SDK屏幕方向的设置,登录和应用内购买接口都需要在此接口之后调用。
初始化功能主要处理应用维度数据,终端软硬件维度收集等。
2、参数说明
参数名称 |
类型 |
说明 |
Activity |
Activity |
开发者游戏启动页的Activity |
sdkType |
Int |
支付SDK的横竖屏类型。参数如下SDKApi .PORTRAIT和SDKApi .LANDSCAPE |
appid |
String |
应用编号 |
3、示例代码
1 |
@Override |
2 |
public voidonCreate(Bundle savedInstanceState) { |
3 |
super .onCreate(savedInstanceState); |
4 |
this .setContentView(R.layout.welcome); |
5 |
|
6 |
//调用爱贝初始化接口 |
7 |
init(Activity activity, int sdkType,String appid); |
*爱贝预读接口调用
1、功能简介
预读功能需要在预读启动页面调用,appid为应用在爱贝开发者中心获取。此接口放在用户点击购买之前,进行预读加载。
2、参数说明
参数名称 |
类型 |
说明 |
activity |
Activity |
调用商城的Activity |
3、接口调用
1 |
@Override |
2 |
public voidonCreate(Bundle savedInstanceState) { |
3 |
super .onCreate(savedInstanceState); |
4 |
this .setContentView(R.layout.welcome); |
5 |
|
6 |
//调用爱贝预读接口 |
7 |
SDKApi.preGettingData(Test. this ); |
8 |
} |
*登录接口
1、功能简介
登陆接口主要提供给用户登录功能,登录功能分为强制登录和非强制登录,isForce为判断是否强制登录的标识。强制登录是指用户必须登录才能进入收银台,非强制性登录是指用户可以直接进入收银台进行应用支付。
2、参数说明
参数名称 |
类型 |
说明 |
备注 |
activity |
Activity |
调用登录的Activity |
|
appid |
String |
应用代码 |
见创建商品的说明 |
iaccountCallback |
IAccountExCallback |
回调接口 3、uid用户编号 long型 |
用户登录注册完成后的回调 |
isForce |
boolean |
是否强制登录 提供给应用的登录接口 |
如果是为true,则必须登录成功,否则界面一直显示。 |
3、示例代码:
01 |
SDKApi.loginUI(AcconutActivity. this , new IAccountExCallback() { |
02 |
@Override |
03 |
public void onCallBack( int retcode, String username, long uid) { |
04 |
if (retcode == IAccountExCallback.RETCODE_SUCCESS) { |
05 |
Toast.makeText(AcconutActivity. this , username + ":" + uid + "登录成功! " ,Toast.LENGTH_SHORT).show(); |
06 |
} else if (retcode == IAccountExCallback.RETCODE_CANCEL) { |
07 |
|
08 |
} else { |
09 |
|
10 |
} |
11 |
} |
12 |
}, false ); |
4、状态码
对应的状态码 |
描述 |
IAccountExCallback.RETCODE_SUCCESS |
登录成功 |
IAccountExCallback.RETCODE_CANCEL |
登录支付 |
IAccountExCallback.RETCODE_FAIL |
登录失败 |
*支付接口调用
1、功能简介
支付功能主要提供用户支付功能,并且同步等待支付结果。
2、交易流程
目前提供的支付模式为同步购买。在调用支付接口后,应用程序需要同步等待支付结果的通知。在玩家使用爱贝快捷支付,支付成功后,支付平台会通知应用程序客户端,如果应用有服务端对接,支付结果也会通知到游戏服务端的地址。具体流程如下:
3、参数说明:
请确认下表对应的参数已经从商户自服务获取。
参数名称 |
类型 |
说明 |
appkey |
String |
应用密钥 |
appid |
String(20) |
应用代码,长度为20位的字符串,本字段不能为空 |
waresid |
int |
商品编码,本字段不能为空 |
以下参数请根据实际情况设定
notifyurl |
String |
交易结果同步回调地址。 |
可选字段。如果客户端不设置,那么取服务端配置同步的地址。 |
exorderno |
String |
外部订单号,长度小于50字节的字符串,本字段不能为空,且字段中不能有“&”或者“=”字符。 |
外部订单号作为区分订单的标志,同时作为在支付成功后,应用对支付结果签名的校验字段,关系到支付安全,请务必定义。 |
price |
int |
开放价格策略填真实兑换的金额(单位为分)。 |
单位为分 |
quantity |
int |
购买商品的数量 |
一次购买商品的数量.注意:这里是购买的商品的数量,不是金币等虚拟币的数量.一般填1 |
cpprivateinfo |
String |
商户私有信息。最大长度128 |
可选字段。商户私有信息在做交易结果同步的时候会回传给开发者 |
appuserid |
String |
应用的用户名 |
可选字段。应用内的用户名,如游戏角色名。 |
4、接口调用
01 |
PayRequest payRequest = new PayRequest(); |
02 |
payRequest.addParam( "notifyurl" , notifyurl); |
03 |
payRequest.addParam( "appid" , PayConfig.appid); |
04 |
payRequest.addParam( "waresid" , waresid); |
05 |
payRequest.addParam( "exorderno" , exorderno); |
06 |
payRequest.addParam( "price" , price); |
07 |
payRequest.addParam( "cpprivateinfo" , "123456" ); |
08 |
String params = payRequest.genSignedOrdingParams(PayConfig.appkey); |
09 |
/** |
10 |
* 调用SDK进行支付 |
11 |
*/ |
12 |
SDKApi.startPay(GoodsActivity. this , params, new IPayResultCallback() { |
13 |
@Override |
14 |
public void onPayResult( int resultCode, String signValue, String resultInfo) { |
15 |
//resultInfo = 应用编号&商品编号&外部订单号 |
16 |
if (SDKApi.PAY_SUCCESS == resultCode) { |
17 |
Log.e( "xx" , "signValue = " + signValue); |
18 |
if ( null == signValue) { |
19 |
// 没有签名值,默认采用finish(),请根据需要修改 |
20 |
Log.e( "xx" , "signValue is null " ); |
21 |
Toast.makeText(GoodsActivity. this , "没有签名值" , Toast.LENGTH_SHORT).show(); |
22 |
// //finish(); |
23 |
} |
24 |
Log.e( "yyy" , signValue + "" ); |
25 |
if (PayRequest.isLegalSign(signValue, PayConfig.appkey)) { |
26 |
Log.e( "payexample" , "islegalsign: true" ); |
27 |
// 合法签名值,支付成功,请添加支付成功后的业务逻辑 |
28 |
Toast.makeText(GoodsActivity. this , "支付成功" , Toast.LENGTH_SHORT).show(); |
29 |
} else { |
30 |
// 非法签名值,默认采用finish(),请根据需要修改 |
31 |
Toast.makeText(GoodsActivity. this , "支付成功,但是验证签名失败" , |
32 |
Toast.LENGTH_SHORT).show(); |
33 |
} |
34 |
} else if (SDKApi.PAY_CANCEL == resultCode) { |
35 |
// 取消支付处理,默认采用finish(),请根据需要修改 |
36 |
Toast.makeText(GoodsActivity. this , "取消支付" , Toast.LENGTH_SHORT).show(); |
37 |
Log.e( "fang" , "return cancel" ); |
38 |
} else if (SDKApi.PAY_HANDLING == resultCode) { |
39 |
// 支付正在处理,默认采用finish(),请根据需要修改 |
40 |
Toast.makeText(GoodsActivity. this , "稍后返回支付结果" , Toast.LENGTH_SHORT).show(); |
41 |
Log.e( "fang" , "return handling" ); |
42 |
} else { |
43 |
// 计费失败处理,默认采用finish(),请根据需要修改 |
44 |
Toast.makeText(GoodsActivity. this , "支付失败" , Toast.LENGTH_SHORT).show(); |
45 |
Log.e( "fang" , "return Error" ); |
46 |
} |
47 |
} |
48 |
}); |
5、状态码
对应的状态码 |
描述 |
SDKApi.PAY_SUCCESS |
支付成功 |
SDKApi.PAY_CANCEL |
取消支付 |
SDKApi.PAY_FAIL |
支付失败 |
回调获取支付结果~>>>查看余下全文
原文地址:http://blog.csdn.net/demon614/article/details/39290261