文档章节

Android支付接入(五):机锋网支付

piggybear
 piggybear
发布于 2015/02/16 10:28
字数 1176
阅读 11
收藏 1

 前边已经陆续跟大家走了一遍运营商和支付宝付费接入,今天跟大家一起看看机锋网的支付接入。其实付费接入本身并没有太多需要注意的地方,做的多了以后你会发现套路都是大同小异的。而需要注意的地方在于怎么跟游戏兼容及后期的维护,包括增减支付方式。现在谈下我个人理解(说的不对希望大家猛喷),付费界面及逻辑尽量不要给一个单独的Activity,因为

1.界面的频繁跳转会费时(尤其对于用cocos2d-x写的游戏来说界面跳出跳进延时很大,会影响游戏性);

2.开启新Activity会涉及到数据的传递,新Activity的维护及销毁,这里力求简洁,频繁的数据传递难免会出错(大家都知道,支付的逻辑是不允许出现丁点错误的),如果单一渠道的付费逻辑上很简单,如果集合了5、6个甚至更多的付费方式的时候以及掺杂游戏逻辑之后,支付逻辑不够简洁会使你头疼。

3.正在尝试的让cocos2d-x的游戏跟Unity3D的游戏使用一套付费接口,这样的话Activity多了不会是一个好的选择

4.如果使用Activity那么AndroidManifest里边必须要注意注册此Activity,这是一个定时炸弹,因为不同支付方式都需要在Manifest里边注册相关配置,当配置量大了以后难免会漏掉次Activity的声明,SDK的接入是批量的你可能会同时接不同的游戏和不同的付费方式,这就需要在最短的时间里准确的接好多种游戏及付费方式,因此注意事项越少越好。

 

好了,废话不多说了,简洁才是王道!

 

机锋SDK接入demo在百度网盘:http://pan.baidu.com/share/link?shareid=438410&uk=473193131

 

机锋的支付是比较简单的一种支付方式,而且其本身已经集成了支付宝和充值卡支付,现在我们来看下代码:

 

AndroiManifest:

 <!-- 机锋网 -->
        <activity
            android:name="com.gfan.sdk.payment.PaymentsActivity"
            android:configChanges="orientation|keyboardHidden" />
        <activity
            android:name="com.gfan.sdk.charge.ChargeActivity"
            android:configChanges="orientation|keyboardHidden" />
        <activity
            android:name="com.gfan.sdk.account.LoginActivity"
            android:configChanges="orientation|keyboardHidden"
            android:windowSoftInputMode="adjustUnspecified" />

        <!-- 请替换gfan_pay_appkey为开发者平台中的appKey -->
        <meta-data
            android:name="gfan_pay_appkey"
            android:value="XXX" />

        <!-- 不用动 -->
        <meta-data
            android:name="gfan_type"
            android:value="paysdk" />

        <!-- 不用动 -->
        <meta-data
            android:name="gfan_cpid"
            android:value="testcpid" />

这里是Activity的声明及机锋参数配置

 

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

权限的配置,第三方平台支付都是走的网络,所以需要联网权限,及获取是否联网的权限

 

Fiap:

 

package com.example.blogforgfan;
// 机锋应用内支付
import com.gfan.sdk.payment.PaymentInfo;
import com.gfan.sdk.payment.PaymentsActivity;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;


@SuppressLint("HandlerLeak")
public class Fiap extends Activity {
 
    final int CATCAP_ANDROID_PAY = 0;               // 跳转Activity请求码
    int catcap_android_pay_catcap_coin = 0;         // 购买的猫币
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
     // TODO Auto-generated method stub
     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
    android_pay(2);
   }
  });
    }
   
    // ===================================
    // JAVA
    // ===================================
   
    public void android_pay (int index){
        if (!is_can_internet (Fiap.this)){
            fiapHandler.sendEmptyMessage(1);
            return;
        }
        int coin = 0;
        switch (index){
            case 0:
                coin = 2;
                this.catcap_android_pay_catcap_coin = 50;
                break;
            case 1:
                coin = 4;
                this.catcap_android_pay_catcap_coin = 120;
                break;
            case 2:
                coin = 6;
                this.catcap_android_pay_catcap_coin = 200;
                break;
            case 3:
                coin = 8;
                this.catcap_android_pay_catcap_coin = 300;
                break;
           
            default:
                break;
        }
        //coin *= 10;此处coin是人民币,换算成机锋券需*10
        // 设置购买信息(购买的道具名,付费描述,支付金额,订单号)
        //PS:这里需要自己组织订单号,所以需保证每次订单号是唯一的,此处传入的金额是机锋券(1元=10机锋券)
        PaymentInfo info = new PaymentInfo ("猫币", "购买游戏所用猫币", coin, get_order_id ());
        // 到购买页面
        Intent intent = new Intent (this, PaymentsActivity.class);
        intent.putExtra (PaymentsActivity.EXTRA_KEY_PAYMENTINFO, info);
        startActivityForResult (intent, CATCAP_ANDROID_PAY);
    }
   
    // ===================================
    // Android
    // ===================================
    @Override
    protected void onActivityResult (int requestCode, int resultCode, Intent data){
        if (requestCode == CATCAP_ANDROID_PAY){   //保证结果码跟请求码一致
            if (resultCode == RESULT_OK){     // 支付成功,这里填写支付成功后的逻辑
             
                new AlertDialog.Builder (this).setTitle ("感谢购买猫币").setPositiveButton ("确定", null).create ().show ();
           
            }
        }
        // 清空数据
        this.catcap_android_pay_catcap_coin = 0;
        super.onActivityResult(requestCode, resultCode, data);
    }
   
   
    public boolean is_can_internet (final Context context){
        try{
            ConnectivityManager manger = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE);
            NetworkInfo info = manger.getActiveNetworkInfo ();
            return (info != null && info.isConnected ());
        } catch (Exception e){
            return false;
        }
    }
   
   
    public String get_order_id (){
        long ran1 = get_round (1111, 9999);
        long ran2 = get_round (1111, 9999);
        //return android_get_umeng_channel () + "_" + ran1 + System.currentTimeMillis () + ran2;
        return "_"+ran1+System.currentTimeMillis()+ran2;
    }
   
   
    public long get_round (int min, int max){
        return Math.round (Math.random () * (max - min) + min);
    }
   
    Handler fiapHandler = new Handler(){
     
     public void handleMessage(android.os.Message msg) {
      if (msg.what == 1) {
       new AlertDialog.Builder (Fiap.this).setTitle ("提示").setMessage ("连接不到网络。").setPositiveButton ("确定", null).create ().show ();
   }
     };
    };
}
    机锋的支付就这么多了,比起运营商的要求限制要少得多,比起支付宝的支付逻辑也要简单的多,后边会陆续跟大家一起看看其它支付方式及分享云云。。。

本文转载自:http://blog.csdn.net/aa294194253/article/details/39211481

piggybear
粉丝 3
博文 237
码字总数 37552
作品 0
西安
技术主管
私信 提问
机锋支付服务评测

详情猛戳我本站的博客:http://my.oschina.net/u/1756192/blog/263608 一 如何嵌入客户端SDK 1.1 集成之前, 请在 http://tongji.gfan.com 获取AppKey和密钥key 如果只是进行测试,使用demo中...

devstore
2014/05/12
123
0
Android 应用商店半年消失近半 从疯长到冷静

由于特殊的“国情”,Andnoid系统中的原装商店Google Play在所有的行货手机中消失,这给了中国开发者巨大的市场空间。2011年,应用程序分发成了团购之外中国野蛮疯长最严重的领域。 李志是一...

oschina
2012/05/28
2.1K
17
Android开发:使用EasyPay打造全能移动支付框架

前言 在这之前,笔者发布了两篇移动app支付相关博文,得到一些关注,但是由于博文中代码零碎,有些读者私信博主,以及加笔者qq咨询相关问题。考虑到这些,笔者把之前项目中的支付相关代码从业...

MichaelX
2018/10/30
0
0
quick-cocos2d-x 接入支付宝(android)

quick-cocos2d-x 实现在lua里面完成android支付宝的接入 一、支付宝注册是很麻烦的一个过程,本文就不解释了,想了解的去官网看下注册流程。然后下载他们的sdk-WSSECUREPAY_SDK。 二、开始集...

小房小田
2014/09/23
6.2K
7
个人开发者即时到账收款方案 BufPay.com

前言 作为独立开发者,一般只有一个人独立奋战,做出了产品需要收款是非常麻烦的,接入支付宝微信支付都需要公司公户,而注册公司、开公户等一系列操作非常麻烦,成本也很高一年也要 1w 左右...

bufpay
2018/07/10
21
0

没有更多内容

加载失败,请刷新页面

加载更多

浅谈Visitor访问者模式

一、前言 什么叫访问,如果大家学过数据结构,对于这点就很清晰了,遍历就是访问的一般形式,单独读取一个元素进行相应的处理也叫作访问,读取到想要查看的内容+对其进行处理就叫作访问,那么...

青衣霓裳
32分钟前
6
0
JS内嵌多个页面,页面之间如何更快捷的查找相关联的页面

假设parent为P页面, P页面有两个子页面,分别为B页面和C页面; B页面和C页面分别内嵌一个iframe,分别为:D页面和E页面 现在通过B页面的内嵌页面D的方法refreshEpage(eUrl)来加载内嵌页面E的内容...

文文1
33分钟前
7
0
Hibernate 5 升级后 getProperties 错误

升级到 Hibernate 5 后,提示有错误: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map; 完整的错误栈为: java.lang.NoSuchMethodError: org.hibernate......

honeymoose
35分钟前
6
0
mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
38分钟前
7
0
Spring中BeanFactory与FactoryBean的区别

在Spring中有BeanFactory和FactoryBean这2个接口,从名字来看很相似,比较容易搞混。 一、BeanFactory BeanFactory是一个接口,它是Spring中工厂的顶层规范,是SpringIoc容器的核心接口,它定...

大王叫下
40分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部