版本:UnipaySDK_2.0.1_不带账户_三网_2.0.1U2111B0319

中国联通沃商店UniPay支付SDK开发者帮助文档V2.0.1

开发者社区

参考帮助文档

1、将SDK添加到工程

本SDK包,包含如下jar包:

Multimode_UniPay_base.jar(基本jar)

miniapay.jar(电信支付)

alipaysdk.jar(支付宝用)

MobileSecSdk.jar(支付宝用)

utdid4all-1.0.4.jar(支付宝用)

2、将这些包放入工程libs目录

如果您的工程已经包含支付宝的jar包,那就保留最新版本的jar包,将旧的jar包删除。

3、在EclipseAndroid工程,可以参照下面的步骤添加jar包:

1)  在“Package Explore”页签中右击你的工程并选择“Properties”;

2)  在左侧面板中选择“Java Build Path”;

3)  在主窗口中选择“Libraries”页签;

4)  点击“Add JARs…”按钮;

5)  选择 这些jar包

6)  点击“OK”完成。

4、拷贝assets目录下的资源到工程的assets目录下(移动支付)

5、拷贝armeabi目录下的so到工程libs/armeabi目录下(电信和移动支付)

6、拷贝res目录下的资源到工程res对应的目录下(电信和移动支付)

7、配置AndroidManifest.xml文件

文件如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="你的包名"android:versionCode="19"android:versionName="1.1.9"android:installLocation="preferExternal"><uses-sdk android:minSdkVersion="9"/><uses-feature android:glEsVersion="0x00020000" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.SEND_SMS"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />   <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <application android:name="你的包名.MyApplication"android:allowBackup="true"android:label="@string/app_name"android:icon="@drawable/icon"><!-- Tell Cocos2dxActivity the name of our .so --><meta-data android:name="android.app.lib_name"android:value="cocos2dcpp" /><activity   android:name="com.unicom.dcLoader.welcomeview"android:label="@string/app_name"android:screenOrientation="portrait"android:theme="@android:style/Theme.NoTitleBar.Fullscreen"android:configChanges="keyboardHidden|screenSize|navigation|orientation" ><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter><meta-data android:name="UNICOM_DIST_ACTIVITY"  android:value="org.cocos2dx.cpp.AppActivity"/></activity><activity android:name="org.cocos2dx.cpp.AppActivity"android:label="@string/app_name"android:screenOrientation="portrait"android:theme="@android:style/Theme.NoTitleBar.Fullscreen"android:configChanges="orientation"></activity><service android:name="com.unicom.wostore.unipay.paysecurity.SecurityServiceFramework">    <intent-filter><action android:name="你的包名.unicom.wostore.unipay.securityserviceframework" /></intent-filter></service><meta-data android:name="wostore_billing_otherpay" android:value="false"/><meta-data android:name="wostore_billing_chinaunicom" android:value="true"/><meta-data android:name="wostore_billing_chinamobile"  android:value="true" /><meta-data android:name="wostore_billing_chinatele"  android:value="true" /></application><supports-screens android:anyDensity="true"android:smallScreens="true"android:normalScreens="true"android:largeScreens="true"android:xlargeScreens="true"/></manifest>

注意:你的包名   此处填写你的工程的包名

8、初始化sdk,调用计费接口

注意事项:

初始化接口必须在Application onCreate方法中调用,不可在Activity的onCreate方法中调用。

1)、cocos2dx创建的工程在src下一般只有org.cocos2dx.cpp包,在src下再创建一个包,包名为你的游戏包名,再在此包下创建MyApplication.java文件

内容如下:

package 你的包名;import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import android.util.Log;import com.unicom.dcLoader.Utils;
import com.unicom.dcLoader.Utils.UnipayPayResultListener;public class MyApplication extends Application
{@Overridepublic void onCreate(){super.onCreate();     System.loadLibrary("megjb");Utils.getInstances().initSDK(this, new UnipayPayResultListener(){@Overridepublic void PayResult(String arg0, int arg1, int arg2, String arg3){                   }});}}

2)、org.cocos2dx.cpp包下的AppActivity.java 文件内容如下:


package org.cocos2dx.cpp;import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
import org.cocos2dx.lib.Cocos2dxHandler;
import org.cocos2dx.lib.Cocos2dxHelper;import com.unicom.dcLoader.Utils;
import com.unicom.dcLoader.Utils.UnipayPayResultListener;import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
import android.util.Log;  public class AppActivity extends Cocos2dxActivity
{public static AppActivity payActivity = null;private static String jIndex = "";@Overrideprotected void onCreate(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);      payActivity = this;}//返回实例public static Object getInstance(){if (payActivity == null){payActivity = new AppActivity();}return payActivity;}private class payCallback implements UnipayPayResultListener{public void PayResult(String paycode, int flag, int flag2, String error) {// flag为支付回调结果,flag2为回调类型,error为当前结果描述,paycode是完整的支付编码switch (flag) {case 1://success//此处放置支付请求已提交的相关处理代码runNativeCallback("1",jIndex);break;case 2://failrunNativeCallback("2",jIndex);break;case 3://cancelrunNativeCallback("0",jIndex);break;default:break;}}}public static void runNativeCallback(final String state, final String billingIndex){Cocos2dxGLSurfaceView.getInstance().queueEvent(new Runnable() {@Overridepublic void run(){callBack(state,billingIndex);}});}//根据返回结果,调用不同的处理  交易标志:istate 0:取消,1成功,2失败;public native static void callBack(String state,String billingIndex);//调用jdk的函数付款   public void jdkPay(String billingIndex){jIndex = billingIndex;String strSerial = "";int iSerial = 1;iSerial = Integer.parseInt(billingIndex);payHandler.sendEmptyMessage(iSerial); }private Handler payHandler = new Handler(){  public void handleMessage(android.os.Message msg){  //计费点001~015对应联通的计费代码001~015switch(msg.what)
{case 1:Utils.getInstances().pay(payActivity, "001", new payCallback());break;case 2:Utils.getInstances().pay(payActivity, "002", new payCallback());break;...//此处省略多个casedefault:break;    }};};  @Overrideprotected void onResume(){super.onResume();Utils.getInstances().onResume(this);}@Overrideprotected void onPause(){super.onPause();        Utils.getInstances().onPause(this);}@Overrideprotected void onDestroy(){super.onDestroy();}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {}}

如果jdkPay函数中直接调用Utils.getInstances().pay函数,会提示 Can't create handler inside thread that has not called Looper.prepare()

即不能在子线程中刷新ui

所以新建一个handler。

9、jni 调用文件 头文件

    extern "C"  {  //参数:...计费点代码字串  void showTipDialog(const char* billIndex);         }  #endif  

10、cpp文件

    #include "../../Classes/Result.h"  #include "jniBridge.h"  #include "cocos2d.h"  #include "platform\android\jni/JniHelper.h"  #include <jni.h>  #define CLASS_NAME "org/cocos2dx/cpp/AppActivity"  using namespace cocos2d;  extern "C"  {  void Java_org_cocos2dx_cpp_AppActivity_callBack(JNIEnv* env,jobject thiz,jstring state, jstring billingIndex)  {  const char * pState = env->GetStringUTFChars(state,NULL);  const char * pIndex = env->GetStringUTFChars(billingIndex,NULL);  if(strcmp(pState,"1") == 0)  {  doSuccess(pIndex);//成功后调用的函数,在文件头部要#include此函数文件如Result.h  }  else if(strcmp(pState,"2") == 0)  {  doFault(pIndex);//失败后调用的函数,在文件头部要#include此函数文件如Result.h  }  else if(strcmp(pState,"0") == 0)  {   //取消购买时  doCancel(pIndex);//取消后调用的函数,在文件头部要#include此函数文件如Result.h  }  env->ReleaseStringUTFChars(state,pState);  env->ReleaseStringUTFChars(billingIndex,pIndex);  }  void showTipDialog(const char* billIndex)  {  JniMethodInfo minfo;  jobject jobj;  if (JniHelper::getStaticMethodInfo(minfo, CLASS_NAME,"getInstance", "()Ljava/lang/Object;"))  {  jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);  if (JniHelper::getMethodInfo(minfo, CLASS_NAME,"jdkPay", "(Ljava/lang/String;)V"))  {  jstring jindex = minfo.env->NewStringUTF(billIndex);  minfo.env->CallVoidMethod(jobj, minfo.methodID,jindex);  minfo.env->DeleteLocalRef(jindex);  }  }  }        }  

Over

cocos2dx android工程接入联通Unipay sdk相关推荐

  1. cocos2d-x Android版游戏之中国移动SDK嵌入

    1. 拷贝API将SDK\runtime\CMBilling20007.jar拷贝至游戏工程的runtime目录下(或其他目录) ,但切记不能放在libs目录下编译,否则编译报错(如:bad rang ...

  2. Android App接入Facebook分享SDK,概率性无法启动Facebook客户端的问题分析

    问题来源 由于我司的android app产品主要是面向海外,因此,app中的分享功能接入facebook分享是必不可少的.最近在接入facebook android sdk进行分享时,发现一个非常奇 ...

  3. 【Android】接入高德地图SDK

    第一步 申请开发者权限 进入高德地图开放平台https://console.amap.com/dev/index申请认证个人开发者 第二步 创建应用 第三步 下载Android地图SDK 进入http ...

  4. Android支付接入(四):联通支付

    注意事项: 1.联通支付是不需要自己标识软硬计费点的,当平台申请计费点的时候会提交每个计费点是否允许重复支付(即软硬计费点),支付时我们只需要传入相应的计费点即可,平台会帮我们记录哪个是软计费点,哪个 ...

  5. cocos2d-x基于windows平台交叉编辑android工程

    cocos2d-x确实是一款优秀的引擎,尽管和正规军的unity3d比起来它显得有点土,但它在移动平台上的性能表现着实惊艳. 以下讲解如何将win32工程交叉编译到android平台. 一.环境搭建 ...

  6. Cocos2d-x学习之创建Android工程和编译

    本文为 博客园 日月之明 原创,转载请详细标明原创作者及出处,以示尊重! 作者:日月之明 原文:http://www.cnblogs.com/lhming/archive/2012/06/27/256 ...

  7. cocos creator接入微信登陆sdk android篇

    cocos creator接入微信登陆sdk 背景 项目引擎使用cocos creator,使用android studio集成开发工具,在开发之前先做好准备工作 在微信开放平台上创建好移动应用,拿到 ...

  8. Unity Android平台接入支付宝SDK

    这篇文章前面讲的创建Android Studio工程的流程是不正确的!!! 正确的流程请参见:Unity Android平台下插件/SDK开发通用流程 最近帮一个群里的朋友接了一下支付宝的SDK,开发 ...

  9. 初体验-阿里云短视频 SDK For Android 快速接入

    前言 近期的一些创意短视频 App 风靡年轻群体,比较典型的例如抖音.MUSE 等,阿里云也适时地推出了简单易用的短视频 SDK,帮助开发者们以较低的成本快速引入功能完备的创意短视频功能. 本文主要介 ...

  10. cocos2dx Android接入芒果插屏广告

    cocos2dx Android接入芒果插屏广告 时间 2014-12-06 18:39:19  CSDN博客原文  http://blog.csdn.net/techkuki/article/det ...

最新文章

  1. idea springmvc_SSM三大框架使用Maven快速搭建整合(SpringMVC+Spring+Mybatis)
  2. QR分解原理与C实现(一般实矩阵)
  3. Android stadio Switch repository Android stadio切换仓库
  4. WinXP SSH连接不上虚拟机的解决方法
  5. mysql连接主备_mysql主备配置方法
  6. linux 升级 git版本,CentOS使用Yum升级Git到2.1x新版本
  7. mats测试所有显存命令_RGBLCD液晶屏层叠显示测试
  8. 提问:Server Application Unavailable
  9. 文件摆渡是什么意思_数据摆渡是什么意思?如何确保安全性?
  10. Python基础篇【第二篇】:运算符
  11. Spring启动过程——源码分析(finishBeanFactoryInitialization(beanFactory))
  12. 企业信用评分卡模型实战(python,附代码)
  13. 软件测试工程师简历项目经验怎么写
  14. 用java找出2个数组中重复的数字_【Java】 剑指offer(1) 找出数组中重复的数字
  15. 链表的中间结点-python
  16. 微信小程序自定义switch中带文字效果
  17. Python爬虫的应用:统记词频
  18. python 按键精灵 离线_(番外篇)Python操纵网盘客户端批量离线下载电影
  19. lio-sam框架:回环检测及位姿计算
  20. linux 移动硬盘 machine,MacBook使用一块移动硬盘做Win To Go及Time Machine备份

热门文章

  1. Chmox - Mac下的CHM电子书阅读器
  2. COGS2434 暗之链锁
  3. Python爬虫获取网易云歌单封面(带Cookie)
  4. 期货结算价是怎样产生的?
  5. MyExcel--Excel操作新方式
  6. 分子动力学模拟自由能计算gmx_mmpbsa脚本原理和使用
  7. html底部友情链接代码,wordpress友情链接添加到页面底部的方法
  8. 如何识别服务器连接的偶发故障?
  9. python课后练习(高琪400集第一季.第五章)
  10. react梳理之redux