zoukankan      html  css  js  c++  java
  • 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接入完成

  • 相关阅读:
    MVC是什么?
    Slice Header中的field_pic_flag的含义?
    Slice header 中的frame_num的含义?
    上下文管理器 contextlib
    mixin模式特点
    Flask中路由原理
    使用Docker搭建Django,Nginx,R,Python部署环境
    使用Docker+Jenkins自动构建部署
    Jenkins 关闭和重启
    使用pipenv管理python项目
  • 原文地址:https://www.cnblogs.com/123ing/p/3850462.html
Copyright © 2011-2022 走看看