cocos2dx android工程接入联通Unipay sdk

cocos2dx android工程接入联通Unipay sdk,第1张

概述http://blog.csdn.net/xiechyun/article/details/45076311 版本:UnipaySDK_2.0.1_不带账户_三网_2.0.1U2111B0319 中国联通沃商店UniPay支付SDK开发者帮助文档V2.0.1 开发者社区 参考帮助文档     1、将SDK添加到工程 本SDK包,包含如下jar包:       Multimode_UniPay_ba

http://blog.csdn.net/xIEchyun/article/details/45076311

版本: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文件

文件如下:

[HTML] view plain copy <?xmlversion="1.0"enCoding="utf-8"?> @H_403_187@ <manifestxmlns:androID="http://schemas.androID.com/apk/res/androID" package="你的包名" androID:versionCode="19" androID:versionname="1.1.9" androID:installLocation="preferExternal"> uses-sdkandroID:minSdkVersion="9"/> uses-featureandroID:glEsversion="0x00020000"/> uses-permissionandroID:name="androID.permission.WRITE_EXTERNAL_STORAGE"uses-permissionandroID:name="androID.permission.INTERNET"uses-permissionandroID:name="androID.permission.SEND_SMS"uses-permissionandroID:name="androID.permission.READ_PHONE_STATE"uses-permissionandroID:name="androID.permission.ACCESS_NETWORK_STATE"uses-permissionandroID:name="androID.permission.disABLE_KEyguard"uses-permissionandroID:name="androID.permission.ACCESS_WIFI_STATE"uses-permissionandroID:name="androID.permission.ACCESS_COARSE_LOCATION"uses-permissionandroID:name="androID.permission.CHANGE_NETWORK_STATE"application androID:name="你的包名.MyApplication" androID:allowBackup="true" androID:label="@string/app_name" androID:icon="@drawable/icon" <!--TellCocos2dxActivitythenameofour.so--> Meta-dataandroID:name="androID.app.lib_name" androID:value="cocos2dcpp"activityandroID:name="com.unicom.dcLoader.welcomevIEw" androID:screenorIEntation="portrait" androID:theme="@androID:style/theme.NoTitlebar.Fullscreen" androID:configChanges="keyboardHIDden|screenSize|navigation|orIEntation"intent-filter> actionandroID:name="androID.intent.action.MAIN"categoryandroID:name="androID.intent.category.LAUNCHER"</Meta-dataandroID:name="UNICOM_disT_ACTIVITY"androID:value="org.cocos2dx.cpp.AppActivity"activityactivityandroID:name="org.cocos2dx.cpp.AppActivity" androID:configChanges="orIEntation"serviceandroID:name="com.unicom.wostore.unipay.paysecurity.SecurityServiceFramework"actionandroID:name="你的包名.unicom.wostore.unipay.securityserviceframework"serviceMeta-dataandroID:name="wostore_billing_otherpay"androID:value="false"Meta-dataandroID:name="wostore_billing_chinaunicom"androID:value="true"Meta-dataandroID:name="wostore_billing_chinamobile"androID:value="true"Meta-dataandroID:name="wostore_billing_chinatele"androID:value="true"applicationsupports-screensandroID: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文件

内容如下:

copy package你的包名; importandroID.app.ActivityManager; importandroID.app.Application; importandroID.content.Context; importandroID.util.Log; importcom.unicom.dcLoader.Utils; importcom.unicom.dcLoader.Utils.UnipayPayResultListener; publicclassMyApplicationextendsApplication { @OverrIDe publicvoIDonCreate() super.onCreate(); System.loadlibrary("megjb"); Utils.getInstances().initSDK(this,newUnipayPayResultListener() @OverrIDe publicvoIDPayResult(Stringarg0,intarg1,intarg2,Stringarg3) { } }); }
2)、org.cocos2dx.cpp包下的AppActivity.java 文件内容如下:

copy packageorg.cocos2dx.cpp; importorg.cocos2dx.lib.Cocos2dxActivity; importorg.cocos2dx.lib.Cocos2dxGLSurfaceVIEw; importorg.cocos2dx.lib.Cocos2dxHandler; importorg.cocos2dx.lib.Cocos2dxHelper; importcom.unicom.dcLoader.Utils; importcom.unicom.dcLoader.Utils.UnipayPayResultListener; importandroID.content.Intent; importandroID.os.Bundle; importandroID.os.Handler; importandroID.os.Message; importandroID.Widget.Toast; publicclassAppActivityextendsCocos2dxActivity publicstaticAppActivitypayActivity=null; privatestaticStringjIndex=""; protectedvoIDonCreate(BundlesavedInstanceState) //Todoauto-generatedmethodstub super.onCreate(savedInstanceState); payActivity=this; } //返回实例 publicstaticObjectgetInstance() if(payActivity==null) payActivity=newAppActivity(); returnpayActivity; privateclasspayCallbackimplementsUnipayPayResultListener publicvoIDPayResult(Stringpaycode,intflag,intflag2,Stringerror) //flag为支付回调结果,flag2为回调类型,error为当前结果描述,paycode是完整的支付编码 switch(flag) case1://success //此处放置支付请求已提交的相关处理代码 runNativeCallback("1",jIndex); break; case2://fail runNativeCallback("2",248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> case3://cancel runNativeCallback("0",248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> default: break; publicstaticvoIDrunNativeCallback(finalStringstate,finalStringbillingIndex) Cocos2dxGLSurfaceVIEw.getInstance().queueEvent(newRunnable() publicvoIDrun() callBack(state,billingIndex); }); //根据返回结果,调用不同的处理交易标志:istate0:取消,1成功,2失败; publicnativestaticvoIDcallBack(Stringstate,StringbillingIndex); //调用jdk的函数付款 publicvoIDjdkPay(StringbillingIndex) jIndex=billingIndex; StringstrSerial=""; intiSerial=1; iSerial=Integer.parseInt(billingIndex); payHandler.sendEmptyMessage(iSerial); privateHandlerpayHandler=newHandler() publicvoIDhandleMessage(androID.os.Messagemsg) //计费点001~015对应联通的计费代码001~015 switch(msg.what) case1: Utils.getInstances().pay(payActivity,"001",newpayCallback()); case2: Utils.getInstances().pay(payActivity,"002",newpayCallback()); ...//此处省略多个case }; }; protectedvoIDonResume() super.onResume(); Utils.getInstances().onResume(this); protectedvoIDonPause() super.onPause(); Utils.getInstances().onPause(this); protectedvoIDonDestroy() super.onDestroy(); protectedvoIDonActivityResult(intrequestCode,intresultCode,Intentdata){ 如果jdkPay函数中直接调用Utils.getInstances().pay函数,会提示 Can't create handler insIDe thread that has not called Looper.prepare()

即不能在子线程中刷新ui

所以新建一个handler。

9、jni 调用文件 头文件

copy extern"C" //参数:...计费点代码字串 voIDshowTipDialog(constchar*billindex); #endif
10、cpp文件

copy #include"../../Classes/Result.h" #include"jniBrIDge.h" #include"cocos2d.h" #include"platform\androID\jni/JniHelper.h" #includejni.h #defineCLASS_name"org/cocos2dx/cpp/AppActivity" usingnamespacecocos2d; extern"C" voIDJava_org_cocos2dx_cpp_AppActivity_callBack(jnienv*env,jobjectthiz,Jstringstate,JstringbillingIndex) constchar*pState=env->GetStringUTFChars(state,NulL); constchar*pIndex=env->GetStringUTFChars(billingIndex,NulL); if(strcmp(pState,"1")==0) doSuccess(pIndex);//成功后调用的函数,在文件头部要#include此函数文件如Result.h elseif(strcmp(pState,"2")==0) doFault(pIndex);//失败后调用的函数,在文件头部要#include此函数文件如Result.h {//取消购买时 doCancel(pIndex);//取消后调用的函数,在文件头部要#include此函数文件如Result.h env->ReleaseStringUTFChars(state,pState); env->ReleaseStringUTFChars(billingIndex,pIndex); voIDshowTipDialog(constchar*billindex) JniMethodInfominfo; jobjectjobj; if(JniHelper::getStaticmethodInfo(minfo,CLASS_name,"getInstance","()Ljava/lang/Object;")) jobj=minfo.env->CallStaticObjectMethod(minfo.classID,minfo.methodID); if(JniHelper::getmethodInfo(minfo,"jdkPay","(Ljava/lang/String;)V")) Jstringjindex=minfo.env->NewStringUTF(billindex); minfo.env->CallVoIDMethod(jobj,minfo.methodID,jindex); minfo.env->DeleteLocalRef(jindex); Over 总结

以上是内存溢出为你收集整理的cocos2dx android工程接入联通Unipay sdk全部内容,希望文章能够帮你解决cocos2dx android工程接入联通Unipay sdk所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1059656.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存