zoukankan      html  css  js  c++  java
  • Android支付接入(三):电信爱游戏支付

    刚过完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 = "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接入完成,可以看得出跟移动的计费流程区别不大,只是接口和细节有些差别,下一篇我们来接一下联通计费
  • 相关阅读:
    Java
    Java
    Python 浮点数类型的精度问题
    Ubuntu下pip的更新问题
    初章
    第二次结对编程作业
    第一次结对编程作业
    Shengnan的《构建之法》读书笔记
    Backend事后诸葛亮
    ASE Alpha Sprint
  • 原文地址:https://www.cnblogs.com/riskyer/p/3304028.html
Copyright © 2011-2022 走看看