首页 > 代码库 > Android支付接入(三):电信爱游戏支付

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

原地址:http://blog.csdn.net/simdanfeg/article/details/9011977

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

 

[java] view plaincopy
 
  1. 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: [java] view plaincopy 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 [java] view plaincopy 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接入完成