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

注意事项:
1.电信要求必须先启动电信的闪屏界面
2.非网络游戏不允许有Interent权限
3.电信没有提供测试计费点(小于一元的),文中index1是一个真实计费点(2元),支付会进行真实计费
 
[html]  view plain copy
  1. AndroidManifest.xml:  
  2.   
  3.   
  4. <application  
  5.         android:allowBackup="true"  
  6.         android:icon="@drawable/ic_launcher"  
  7.         android:label="@string/app_name"  
  8.         android:theme="@style/AppTheme" >  
  9.         <activity  
  10.             android:name="com.example.blogfordx.MainActivity"  
  11.             android:label="@string/app_name" >  
  12.               
  13.         </activity>  
  14.           
  15.         <!-- 电信 -->  
  16. <activity android:name="cn.game189.sms.SMS" android:theme="@android:style/Theme.Dialog" android:screenOrientation="portrait" ></activity>  
  17. <!-- 电信 -->  
  18. <!-- 启动闪屏界面 -->  
  19. <activity  
  20.             android:name="com.example.blogfordx.EgameSplash"  
  21.             android:configChanges="orientation"  
  22.             android:screenOrientation="portrait"  
  23.             android:theme="@android:style/Theme.NoTitleBar.Fullscreen">  
  24.             <intent-filter>  
  25.                 <action android:name="android.intent.action.MAIN" />  
  26.                 <category android:name="android.intent.category.LAUNCHER" />  
  27.             </intent-filter>  
  28.         </activity>  
  29.     </application>  
  30.       
  31.     <!-- 单机游戏不能有Internet等无关权限,若有特殊要求,平台申请时注明,审核通过后方可添加 -->  
  32. <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
  33. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  34. <uses-permission android:name="android.permission.SEND_SMS" />  

 

MainActivity.java

 

[java]  view plain copy
  1. package com.example.blogfordx;  
  2.   
  3. import android.net.Uri;  
  4. import android.os.Bundle;  
  5. import android.app.Activity;  
  6. import android.content.Intent;  
  7. import android.view.View;  
  8.   
  9. public class MainActivity extends Activity {  
  10.   
  11.     @Override  
  12.     protected void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.activity_main);  
  15.         findViewById(R.id.button1).setOnClickListener(  
  16.                 new View.OnClickListener() {  
  17.                     @Override  
  18.                     public void onClick(View v) {  
  19.                         // TODO Auto-generated method stub  
  20.                         Fiap fiap = new Fiap(MainActivity.this);  
  21.                         fiap.android_Pay(1);  
  22.                     }  
  23.                 });  
  24.         findViewById(R.id.button2).setOnClickListener(  
  25.                 new View.OnClickListener() {  
  26.                     @Override  
  27.                     public void onClick(View v) {  
  28.                         // TODO Auto-generated method stub  
  29.                         // 更多游戏接口  
  30.                         Uri uri = Uri  
  31.                                 .parse("http://wapgame.189.cn/c/index.html");  
  32.                         Intent in = new Intent(Intent.ACTION_VIEW, uri);  
  33.                         MainActivity.this.startActivity(in);  
  34.                     }  
  35.                 });  
  36.     }  
  37.   
  38. }  


EgameSplash.java:

 
[java]  view plain copy
  1. package com.example.blogfordx;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6.   
  7. public class EgameSplash extends Activity {  
  8.     private int count = 0;  
  9.   
  10.     @Override  
  11.     protected void onCreate(Bundle savedInstanceState) {  
  12.         // TODO Auto-generated method stub  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.splash);  
  15.         new Thread(new Runnable() {  
  16.             @Override  
  17.             public void run() {  
  18.                 // TODO Auto-generated method stub  
  19.                 while (count <= 2) {  
  20.                     count++;  
  21.                     try {  
  22.                         Thread.sleep(1000);  
  23.                     } catch (InterruptedException e) {  
  24.                         // TODO Auto-generated catch block  
  25.                         e.printStackTrace();  
  26.                     }  
  27.                 }  
  28.                 Intent intent = new Intent(EgameSplash.this, MainActivity.class);  
  29.                 startActivity(intent);  
  30.                 EgameSplash.this.finish();  
  31.             }  
  32.         }).start();  
  33.     }  
  34. }  

Fiap.java

 

[java]  view plain copy
  1. package com.example.blogfordx;  
  2.   
  3. import cn.game189.sms.SMS;  
  4. import cn.game189.sms.SMSListener;  
  5. import android.app.Activity;  
  6. import android.os.Handler;  
  7. import android.util.Log;  
  8. import android.widget.Toast;  
  9.   
  10. public class Fiap {  
  11.     private Activity mActivity;  
  12.     // 是否允许重复计费  
  13.     private boolean isRepeat;  
  14.     // 计费点短代码  
  15.     private String charge_Point;  
  16.     // 道具名称  
  17.     private String itemID = "";  
  18.     // 支付金额  
  19.     private int coin = 0;  
  20.   
  21.     public Fiap(Activity activity) {  
  22.         mActivity = activity;  
  23.     }  
  24.   
  25.     // index是三种计费点对应的标识  
  26.     // 此处只有购买200兑换币是可支付的,正式使用时请填写自己的申请的计费点短代码  
  27.     public void android_Pay(int index) {  
  28.         switch (index) {  
  29.   
  30.         case 0:  
  31.             // 激活游戏  
  32.             isRepeat = false;  
  33.             // 此处计费点填写电信平台申请的计费点的后三位作为计费点索引  
  34.             charge_Point = "000";  
  35.             itemID = "激活游戏";  
  36.             coin = 4;  
  37.             break;  
  38.         case 1:  
  39.             isRepeat = true;  
  40.             charge_Point = "0211C001271102517996991102517990080115127000000000000000000000000000";  
  41.             itemID = "购买200兑换币";  
  42.             coin = 2;  
  43.             break;  
  44.         case 2:  
  45.             isRepeat = true;  
  46.             charge_Point = "002";  
  47.             itemID = "购买400兑换币";  
  48.             coin = 3;  
  49.             break;  
  50.   
  51.         default:  
  52.             break;  
  53.         }  
  54.         fiapHandler.sendEmptyMessage(1);  
  55.     }  
  56.   
  57.     Handler fiapHandler = new Handler() {  
  58.         public void handleMessage(android.os.Message msg) {  
  59.             if (msg.what == 1) {  
  60.                 if (SMS.checkFee(itemID, mActivity, new SMSListener() {  
  61.   
  62.                     public void smsOK(String feeName) {  
  63.                         // 短代发送成功,此处填写支付成功后的逻辑  
  64.                         Log.i("SMSListener""模式" + feeName + "已计费完成,关卡已打开.");  
  65.                         Toast.makeText(mActivity, "支付成功", Toast.LENGTH_LONG)  
  66.                                 .show();  
  67.                     }  
  68.   
  69.                     public void smsFail(String feeName, int errorCode) {  
  70.                         // 短代发送失败,不给道具或不放行关卡  
  71.                         Log.e("SMSListener""计费失败!模式:[" + feeName + "] 错误码:"  
  72.                                 + errorCode);  
  73.                     }  
  74.   
  75.                     public void smsCancel(String feeName, int errorCode) {  
  76.                         Log.e("SMSListener""用户点击取消!计费点:" + feeName + " 错误码:"  
  77.                                 + errorCode);  
  78.                     }  
  79.                 }, charge_Point, itemID + ",点击确定将会发送一条" + coin + "元短信,不含信息费.",  
  80.                         "短信已成功发送", isRepeat)) {  
  81.                     // 已计过费  
  82.   
  83.                 }  
  84.             }  
  85.         };  
  86.     };  
  87.   
  88. }  

电信的计费sdk接入完成

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