首页 > 代码库 > 爱贝云计费支付功能及实现
爱贝云计费支付功能及实现
爱贝云计费支付基础功能~
*初始化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 | 支付失败 |
回调获取支付结果~>>>查看余下全文
爱贝云计费支付功能及实现