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

注意事项:
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 = "0211C001271102517996991102517990080115127000000000000000000000000000";
			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接入完成


你可能感兴趣的:(Android支付接入(三):电信爱游戏支付)