• 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

    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.         <!-- 请替换gfan_pay_appkey为开发人员平台中的appKey -->  
    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. <!--这里是Activity的声明及机锋參数配置-->  
    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

     

    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. }  


     

    <!-- 转载完成-->
  • 相关阅读:
    000-ESP32学习开发(SDK)-ESP32开发板使用说明
    2-STM32 替换说明-CKS32, HK32, MM32, APM32, CH32, GD32, BLM32, AT32(推荐), N32, HC华大系列
    002-CH579M学习开发-官方资料学习说明,开发板蓝牙(蓝牙定位),网口通信测试
    001-CH579M学习开发-硬件使用说明,下载和运行第一个程序
    STM32+CH395Q(以太网)基本控制篇(自建物联网平台)-硬件使用说明
    17-网络芯片CH395Q学习开发-片内EEPROM读写实验
    16-网络芯片CH395Q学习开发-低功耗实验
    15-网络芯片CH395Q学习开发-DNS 域名解析
    14-1-网络芯片CH395Q学习开发-WEB服务器-网页到底是啥, web服务器是啥, 网页如何显示的显示图片和视频
    13-网络芯片CH395Q学习开发-模块使用Socket0作为MAC RAW
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3852707.html
Copyright © 2020-2023  润新知