文档章节

Android支付接入(三):电信爱游支付

piggybear
 piggybear
发布于 2015/02/16 10:28
字数 970
阅读 16
收藏 0
刚过完51,公司还没什么气氛,人好少啊。。。好了废话不多说了,今天跟大家一起走一遍电信的爱游戏支付。其实三大运营商的支付接口是类似的,均以付费计费点短代码标识计费,然后调用支付接口,实现支付结果回调,上一篇跟大家一起走了一遍移动的支付可以看的出来运营商的支付逻辑是很简单的,只是界面、功能点的要求比较多,电信计费跟移动一样我会为大家整理好付费接入要求。文中所用到的资源及demo照旧放到了百度网盘中,地址: http://pan.baidu.com/share/link?shareid=429716&uk=473193131

注意事项:
1.电信要求必须先启动电信的闪屏界面
2.非网络游戏不允许有Interent权限
3.电信没有提供测试计费点(小于一元的),文中index1是一个真实计费点(2元),支付会进行真实计费

上代码:

AndroidManifest.xml:

<application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                  android:name="com.example.blogfordx.MainActivity"
                  android:label="@string/app_name" >
                  
            </activity>
            
            <!-- 电信 -->
<activity android:name="cn.game189.sms.SMS" android:theme=" @android :style/Theme.Dialog" android:screenOrientation="portrait" ></activity>
<!-- 电信 -->
<!-- 启动闪屏界面 -->
<activity
                  android:name="com.example.blogfordx.EgameSplash"
                  android:configChanges="orientation"
                  android:screenOrientation="portrait"
                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
                  <intent-filter>
                        <action android:name="android.intent.action.MAIN" />
                        <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
            </activity>
      </application>
      
      <!-- 单机游戏不能有Internet等无关权限,若有特殊要求,平台申请时注明,审核通过后方可添加 -->
      <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS" />

MainActivity.java:

package com.example.blogfordx;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Fiap fiap = new Fiap(MainActivity.this);
fiap.android_Pay(1);
}
});
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//更多游戏接口
Uri uri = Uri.parse("http://wapgame.189.cn/c/index.html");
Intent in = new Intent(Intent.ACTION_VIEW, uri);
MainActivity.this.startActivity(in);
}
});
}

}

EgameSplash.java:

package com.example.blogfordx;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class EgameSplash extends Activity{
private int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(count <= 2){
count ++ ;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Intent intent = new Intent(EgameSplash.this,MainActivity.class);
startActivity(intent);
EgameSplash.this.finish();
}
}).start();
}
}

Fiap.java:

package com.example.blogfordx;

import cn.game189.sms.SMS;
import cn.game189.sms.SMSListener;
import android.app.Activity;
import android.os.Handler;
import android.util.Log;
import android.widget.Toast;

public class Fiap {
private Activity mActivity;
//是否允许重复计费
private boolean isRepeat;
//计费点短代码
private String charge_Point;
//道具名称
private String itemID = "";
//支付金额
private int coin = 0;
public Fiap(Activity activity){
mActivity = activity;
}
//index是三种计费点对应的标识
//此处只有购买200兑换币是可支付的,正式使用时请填写自己的申请的计费点短代码
public void android_Pay(int index){
switch (index) {

case 0:
//激活游戏
isRepeat = false;
//此处计费点填写电信平台申请的计费点的后三位作为计费点索引
charge_Point = "000";
itemID = "激活游戏";
coin = 4;
break;
case 1:
isRepeat = true;
charge_Point = "0211C0012711025179969911 025179900801151270000000 00000000000000000000";
itemID = "购买200兑换币";
coin = 2;
break;
case 2:
isRepeat = true;
charge_Point = "002";
itemID = "购买400兑换币";
coin = 3;
break;

default:
break;
}
fiapHandler.sendEmptyMessage(1);
}
Handler fiapHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
if (msg.what == 1) {
if (SMS.checkFee(itemID, mActivity, new SMSListener() {

public void smsOK(String feeName) {
// 短代发送成功,此处填写支付成功后的逻辑
Log.i("SMSListener", "模式" + feeName + "已计费完成,关卡已打开.");
Toast.makeText(mActivity, "支付成功", Toast.LENGTH_LONG).show();
}

public void smsFail(String feeName, int errorCode) {
// 短代发送失败,不给道具或不放行关卡
Log.e("SMSListener", "计费失败!模式:[" + feeName + "] 错误码:" + errorCode);
}

public void smsCancel(String feeName, int errorCode) {
Log.e("SMSListener", "用户点击取消!计费点:" + feeName + " 错误码:"+ errorCode );
}
}, charge_Point, itemID + ",点击确定将会发送一条"+ coin + "元短信,不含信息费.", "短信已成功发送", isRepeat)) {
// 已计过费

}
}
};
};

}

     至此,电信的计费sdk接入完成,可以看得出跟移动的计费流程区别不大,只是接口和细节有些差别,下一篇我们来接一下联通计费

本文转载自:http://blog.csdn.net/aa294194253/article/details/39211455

piggybear
粉丝 3
博文 237
码字总数 37552
作品 0
西安
技术主管
私信 提问
OGEngine举办手游开发、发行交流会议

由OGEngine举办的第二次手游开发者交流会议以圆桌会议方式在深圳高新园举行。会议不仅吸引了手游开发者,也有海外支付商,国内外的手游发行商参加。 会议环绕三大主题展开讨论和交流。主题分...

橙游OrangeGame
2014/11/03
2
0
BestSDK推出一站式SDK搜索服务

BestSDK平台针对目前移动开发应用接入难度大、流程繁琐、上线慢等现状,BestSDK平台已经正式开放,互动式SDK一站式搜索服务,使平台具备开发者SDK的搜索、讨论等系列功能。 BestSDK通过建立移...

老官
2015/04/26
278
1
应用内支付-个人开发者福利

其实很多应用都可以实现盈利。 比如某些特定功能的开放权限、游戏内商品或道具的购买、VIP会员的购买和续费或整个应用的付费使用等等。 相信了解或接触过这些支付文档的人应该知道,支付宝、...

2013020735
2017/02/10
693
2
Android开发:使用EasyPay打造全能移动支付框架

前言 在这之前,笔者发布了两篇移动app支付相关博文,得到一些关注,但是由于博文中代码零碎,有些读者私信博主,以及加笔者qq咨询相关问题。考虑到这些,笔者把之前项目中的支付相关代码从业...

MichaelX
2018/10/30
0
0
个人开发者即时到账收款方案 BufPay.com

前言 作为独立开发者,一般只有一个人独立奋战,做出了产品需要收款是非常麻烦的,接入支付宝微信支付都需要公司公户,而注册公司、开公户等一系列操作非常麻烦,成本也很高一年也要 1w 左右...

bufpay
2018/07/10
21
0

没有更多内容

加载失败,请刷新页面

加载更多

【2019年8月版本】OCP 071认证考试最新版本的考试原题-第9题

Choose three Which three statements are true about views in an Orade batabase? A) A SELECT statement cannot contain a where clause when querying a view contaning a WHERE clause ......

oschina_5359
25分钟前
5
0
[JSON].connectionValue()

本文转载于:专业的前端网站➭[JSON].connectionValue() 语法: [JSON].connectionValue() 说明: 将对象的所有键值接连成新的字符串值 返回: [String] 示例: Set a = toJson()c = Array(1,2,...

前端老手
26分钟前
4
0
云计算给大数据分析工具带来了什么

如果大数据是一块蛋糕,那么大数据分析工具就是切蛋糕的刀叉。人们都期待着能用“刀叉”从大数据中挖出自己想要的“价值”,因此大数据分析工具被人们寄予厚望。而云计算技术的兴起似乎又给大...

青果云小潘
28分钟前
4
0
centOS7下es的使用

安装启动es7.4.0 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.4.0docker run -d -p 9200:9200 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elast......

无畏的老巨人
36分钟前
4
0
iptables删除命令中的相关问题

最近在做一个中间件的配置工作,在配置iptables的时候,当用户想删除EIP(即释放当前连接),发现使用iptables的相关命令会提示错误。iptables: Bad rule (does a matching rule exist in t...

xiangyunyan
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部