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

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

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

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

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

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

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

 

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

AndroiManifest.xml

[html] view plaincopy
  1.   
  2.         <activity  
  3.             android:name="com.gfan.sdk.payment.PaymentsActivity"  
  4.             android:configChanges="orientation|keyboardHidden" />  
  5.         <activity  
  6.             android:name="com.gfan.sdk.charge.ChargeActivity"  
  7.             android:configChanges="orientation|keyboardHidden" />  
  8.         <activity  
  9.             android:name="com.gfan.sdk.account.LoginActivity"  
  10.             android:configChanges="orientation|keyboardHidden"  
  11.             android:windowSoftInputMode="adjustUnspecified" />  
  12.   
  13.           
  14.         <meta-data  
  15.             android:name="gfan_pay_appkey"  
  16.             android:value="XXX" />  
  17.   
  18.           
  19.         <meta-data  
  20.             android:name="gfan_type"  
  21.             android:value="paysdk" />  
  22.   
  23.           
  24.         <meta-data  
  25.             android:name="gfan_cpid"  
  26.             android:value="testcpid" />  
  27.   
  28.   
  29.    
  30.   
  31.     <uses-permission android:name="android.permission.INTERNET"/>  
  32.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
  33.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
  34.   
  35.   

 

Fiap.java

 

[java] view plaincopy
  1. package com.example.blogforgfan;  
  2.   
  3. // 机锋应用内支付  
  4. import com.gfan.sdk.payment.PaymentInfo;  
  5. import com.gfan.sdk.payment.PaymentsActivity;  
  6. import android.annotation.SuppressLint;  
  7. import android.app.Activity;  
  8. import android.app.AlertDialog;  
  9. import android.content.Context;  
  10. import android.content.Intent;  
  11. import android.net.ConnectivityManager;  
  12. import android.net.NetworkInfo;  
  13. import android.os.Bundle;  
  14. import android.os.Handler;  
  15. import android.view.View;  
  16.   
  17. @SuppressLint("HandlerLeak")  
  18. public class Fiap extends Activity {  
  19.   
  20.     final int CATCAP_ANDROID_PAY = 0// 跳转Activity请求码  
  21.     int catcap_android_pay_catcap_coin = 0// 购买的猫币  
  22.   
  23.     @Override  
  24.     protected void onCreate(Bundle savedInstanceState) {  
  25.         // TODO Auto-generated method stub  
  26.         super.onCreate(savedInstanceState);  
  27.         setContentView(R.layout.activity_main);  
  28.         findViewById(R.id.button1).setOnClickListener(  
  29.                 new View.OnClickListener() {  
  30.   
  31.                     @Override  
  32.                     public void onClick(View v) {  
  33.                         // TODO Auto-generated method stub  
  34.                         android_pay(2);  
  35.                     }  
  36.                 });  
  37.     }  
  38.   
  39.     // ===================================  
  40.     // JAVA  
  41.     // ===================================  
  42.   
  43.     public void android_pay(int index) {  
  44.         if (!is_can_internet(Fiap.this)) {  
  45.             fiapHandler.sendEmptyMessage(1);  
  46.             return;  
  47.         }  
  48.         int coin = 0;  
  49.         switch (index) {  
  50.         case 0:  
  51.             coin = 2;  
  52.             this.catcap_android_pay_catcap_coin = 50;  
  53.             break;  
  54.         case 1:  
  55.             coin = 4;  
  56.             this.catcap_android_pay_catcap_coin = 120;  
  57.             break;  
  58.         case 2:  
  59.             coin = 6;  
  60.             this.catcap_android_pay_catcap_coin = 200;  
  61.             break;  
  62.         case 3:  
  63.             coin = 8;  
  64.             this.catcap_android_pay_catcap_coin = 300;  
  65.             break;  
  66.   
  67.         default:  
  68.             break;  
  69.         }  
  70.         // coin *= 10;此处coin是人民币,换算成机锋券需*10  
  71.         // 设置购买信息(购买的道具名,付费描写叙述,支付金额,订单号)  
  72.         // PS:这里须要自己组织订单号,所以需保证每次订单号是唯一的,此处传入的金额是机锋券(1元=10机锋券)  
  73.         PaymentInfo info = new PaymentInfo("猫币""购买游戏所用猫币", coin,  
  74.                 get_order_id());  
  75.         // 到购买页面  
  76.         Intent intent = new Intent(this, PaymentsActivity.class);  
  77.         intent.putExtra(PaymentsActivity.EXTRA_KEY_PAYMENTINFO, info);  
  78.         startActivityForResult(intent, CATCAP_ANDROID_PAY);  
  79.     }  
  80.   
  81.     // ===================================  
  82.     // Android  
  83.     // ===================================  
  84.     @Override  
  85.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  86.         if (requestCode == CATCAP_ANDROID_PAY) { // 保证结果码跟请求码一致  
  87.             if (resultCode == RESULT_OK) { // 支付成功,这里填写支付成功后的逻辑  
  88.   
  89.                 new AlertDialog.Builder(this).setTitle("感谢购买猫币")  
  90.                         .setPositiveButton("确定"null).create().show();  
  91.   
  92.             }  
  93.         }  
  94.         // 清空数据  
  95.         this.catcap_android_pay_catcap_coin = 0;  
  96.         super.onActivityResult(requestCode, resultCode, data);  
  97.     }  
  98.   
  99.     public boolean is_can_internet(final Context context) {  
  100.         try {  
  101.             ConnectivityManager manger = (ConnectivityManager) context  
  102.                     .getSystemService(Context.CONNECTIVITY_SERVICE);  
  103.             NetworkInfo info = manger.getActiveNetworkInfo();  
  104.             return (info != null && info.isConnected());  
  105.         } catch (Exception e) {  
  106.             return false;  
  107.         }  
  108.     }  
  109.   
  110.     public String get_order_id() {  
  111.         long ran1 = get_round(11119999);  
  112.         long ran2 = get_round(11119999);  
  113.         // return android_get_umeng_channel () + "_" + ran1 +  
  114.         // System.currentTimeMillis () + ran2;  
  115.         return "_" + ran1 + System.currentTimeMillis() + ran2;  
  116.     }  
  117.   
  118.     public long get_round(int min, int max) {  
  119.         return Math.round(Math.random() * (max - min) + min);  
  120.     }  
  121.   
  122.     Handler fiapHandler = new Handler() {  
  123.   
  124.         public void handleMessage(android.os.Message msg) {  
  125.             if (msg.what == 1) {  
  126.                 new AlertDialog.Builder(Fiap.this).setTitle("提示")  
  127.                         .setMessage("连接不到网络。").setPositiveButton("确定"null)  
  128.                         .create().show();  
  129.             }  
  130.         };  
  131.     };  
  132. }  



 

转载于:https://www.cnblogs.com/mfrbuaa/p/3852707.html

更多相关:

  • android:id 为控件指定相应的IDandroid:text 指定控件的文本,置尽量使用strings.xmlandroid:grivity 指定控件的基本位置 ,比如举重,居右,android:padding 指定控件的内边距,控件当中的内容android:singleLine 如果设置为真的话,则将控件的内容在同一行当中显示...

  • 布局主要分两个 其中主布局是

  • 大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它。它的使用更加简单,只需要创建一个 AnimationDrawabledF对象来表示Frame动画,然后通过addFrame 方法把每一帧要显示的内容添加进去,并设置播放间隔时间,本例子中间隔时间为5S, 最后通过start 方法就可。 以播放这个动画了,...

  • 作业要求: 作一个显示框里面分成三行 一二行占这个框的1/2 第三行独占1/2 第三行里面分成两列第一列占25%,第二列占75%。 屏幕显示效果 实现步骤:  

  • 一:Service简介 Android开发中,当需要创建在后台运行的程序的时候,就要使用到Service。 1:Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交...

  • 每一个支付平台都有自己的加密、解密的原理;还有各种签名的原理;通过各种内容发送数据,防止恶意攻击等功能的原理。 接下来对于部署支付方式,首先要分清几个名词: 集成接入:支付宝已经集成好各种原理和函数,集成一个个的具体的功能。 比如:支付宝的即时到账、当面付、分享给好友支付、移动登陆等。具体详见:支付宝集成接入 下载DEMO后可以通过样...

  • 上一篇我们将了支付宝集成,集成后我们当然要使用它了。下面我们就来看看支付宝的调用了 (1)保留支付宝的oder文件,我们可以知道他需要的参数是那些(自己看无需废话) (2)好了,让我们的目光回到支付宝的iOSDEMO中 (3)上干货: if ([partner length] == 0 ||[seller length] =...

  • 在安全领域有两个基本的原则: 1、 没有绝对安全,安全是相对的; 2、 所有的简单、方便都是以牺牲安全程度为代价的,只是看你如何权衡罢了。 个人认为,在手机上支付,各种条件尚有欠缺,环境尚不成熟,为时过早。(钱袋、盒子支付、拉卡拉推广的卡槽式手机支付理论上属于传统的POS机支付,不属于严格意义上的手机支付,不属于这里涵盖的范围...