Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2dx android工程接入联通Unipay sdk大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

@H_674_3@ 开发者社区

@H_674_3@

@H_674_3@

帮助文档

@H_674_3@

@H_674_3@
1、将SDK添加到工程

@H_674_3@ 本SDK包,包含如下jar包:

@H_674_3@ Multimode_UniPay_base.jar(基本jar)

@H_674_3@ miniapay.jar(电信支付)

@H_674_3@ alipaysdk.jar(支付宝用)

@H_674_3@ MobileSecSdk.jar(支付宝用)

@H_674_3@ utdid4all-1.0.4.jar(支付宝用)

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

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

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

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

@H_674_3@ 2)在左侧面板中选择“Java Build Path

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

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

@H_674_3@ 5)选择这些jar包

@H_674_3@ 6)点击“OK完成。

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

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

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

7、配置AndroidManifest.xml文件

@H_674_3@ 文件如下:

@H_674_3@

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <@H_670_163@manifestxmlns:android="http://scheR_701_11845@as.android.com/apk/res/android"
  3. package="你的包名"
  4. android:versionCode="19"
  5. android:versionName="1.1.9"
  6. android:installLOCATIOn="preferExternal">
  7. uses-sdkandroid:minSdkVersion="9"/>
  8. uses-featureandroid:glEsVersion="0x00020000"/>
  9. 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
  10. android:name="你的包名.MyApplication"
  11. android:allowBACkup="true"
  12. android:label="@String/app_name"
  13. android:icon="@drawable/icon" <!--TellCocos2dxActivitythenameofour.so-->
  14. @H_564_275@meta-dataandroid:name="android.app.lib_name"
  15. android:value="cocos2dcpp"activityandroid:name="com.unicom.dcLoader.welcomeview"
  16. @H_657_489@ android:screenOrientation="porTrait"
  17. android:theme="@android:style/Theme.NotitleBar.Fullscreen"
  18. android:configChanges="keyboardHidden|screenSize|navigation|orientation"intent-filter>
  19. actionandroid:name="android.intent.action.MAIN"categoryandroid:name="android.intent.category.LAUNCHER"</@H_670_163@meta-dataandroid:name="UNICOM_DIST_ACTIVITY"android:value="org.cocos2dx.cpp.AppActivity"activityactivityandroid:name="org.cocos2dx.cpp.AppActivity"
  20. @H_657_489@ android:configChanges="orientation"serviceandroid:name="com.unicom.wostore.unipay.paysecurity.SecurityserviceFramework"actionandroid:name="你的包名.unicom.wostore.unipay.securityserviceframework"service@H_924_161@meta-dataandroid:name="wostore_billing_otherpay"android:value="false"@H_924_161@meta-dataandroid:name="wostore_billing_chinaunicom"android:value="true"@H_924_161@meta-dataandroid:name="wostore_billing_chinamobile"android:value="true"@H_924_161@meta-dataandroid:name="wostore_billing_chinatele"android:value="true"applicationsupports-screensandroid:anyDensity="true"
  21. android:smallScreens="true"
  22. android:normalScreens="true"
  23. android:largeScreens="true"
  24. android:xlargeScreens="true"@H_924_161@manifest>

注意:你的包名 此处填写你的工程的包名 @H_674_3@ 8、初始化sdk,调用计费接口

@H_674_3@ 注意事项:

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

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

copy

    package你的包名;
  1. importandroid.app.Activitymanager;
  2. importandroid.app.Application;
  3. importandroid.content.Context;
  4. importandroid.util.Log;
  5. importcom.unicom.dcLoader.Utils;
  6. importcom.unicom.dcLoader.UtilS.UnipayPayResultListener;
  7. publicclassMyApplicationextendsApplication
  8. {
  9. @H_657_489@ @Override
  10. publicvoidonCreate()
  11. super.onCreate();
  12. System.loadLibrary("megjb");
  13. Utils.geTinstances().initSDK(this,newUnipayPayResultListener()
  14. @Override
  15. publicvoidPayResult(Stringarg0,intarg1,intarg2,Stringarg3)
  16. {
  17. }
  18. });
  19. }

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

copy @H_566_874@

    packageorg.cocos2dx.cpp;
  1. importorg.cocos2dx.lib.Cocos2dxActivity;
  2. importorg.cocos2dx.lib.Cocos2dxGLSurfaceView;
  3. importorg.cocos2dx.lib.Cocos2dxHandler;
  4. importorg.cocos2dx.lib.Cocos2dxHelper;
  5. importcom.unicom.dcLoader.Utils;
  6. importcom.unicom.dcLoader.UtilS.UnipayPayResultListener;
  7. importandroid.content.Intent;
  8. importandroid.os.bundle;
  9. importandroid.os.Handler;
  10. importandroid.os.message;
  11. importandroid.widget.Toast;
  12. publicclassAppActivityextendsCocos2dxActivity
  13. publicstaticAppActivitypayActivity=null;
  14. privatestaticStringjIndex="";
  15. @H_657_489@ protectedvoidonCreate(BundlesavedInstanceStatE) @H_657_489@ //TODOAuto-generatedmethodstub
  16. super.onCreate(savedInstanceStatE);
  17. payActivity=this;
  18. }
  19. //返回实例
  20. publicstaticObjectgeTinstance()
  21. @H_657_489@ if(payActivity==null) @H_657_489@ payActivity=newAppActivity(); @H_657_489@ returnpayActivity; @H_657_489@ privateclasspayCallBACkimplementsUnipayPayResultListener @H_657_489@ publicvoidPayResult(Stringpaycode,intflag,intflag2,Stringerror) @H_657_489@ //flag为支付回调结果,flag2为回调类型,error为当前结果描述,paycode是完整的支付编码
  22. switch(flag)
  23. case1://success
  24. //此处放置支付请求已提交的相关处理代码
  25. runNativeCallBACk("1",jIndeX);
  26. break;
  27. @H_657_489@ case2://fail
  28. runNativeCallBACk("2",248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> case3://cancel
  29. runNativeCallBACk("0",248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> default:
  30. break;
  31. publicstaticvoidrunNativeCallBACk(finalStringstate,finalStringbillingIndeX)
  32. Cocos2dxGLSurfaceView.geTinstance().queueEvent(newRunnable()
  33. publicvoidrun()
  34. @H_657_489@ callBACk(state,billingIndeX); @H_657_489@ }); @H_657_489@ //根据返回结果,调用不同的处理交易标志:istate0:取消,1成功,2失败;
  35. publicnativestaticvoidcallBACk(Stringstate,StringbillingIndeX);
  36. //调用jdk的函数付款
  37. publicvoidjdkPay(StringbillingIndeX)
  38. jIndex=billingIndex;
  39. Stringstrserial="";
  40. intiserial=1;
  41. iserial=Integer.parseInt(billingIndeX);
  42. payHandler.sendEmptymessage(iserial);
  43. @H_657_489@ privateHandlerpayHandler=newHandler() @H_657_489@ publicvoidhandlemessage(android.os.messagemsg) @H_657_489@ //计费点001~015对应联通的计费代码001~015
  44. switch(msg.what)
  45. case1:
  46. Utils.geTinstances().pay(payActivity,"001",newpayCallBACk());
  47. @H_657_489@ case2:
  48. Utils.geTinstances().pay(payActivity,"002",newpayCallBACk());
  49. ...//此处省略多个case
  50. };
  51. };
  52. protectedvoidonResume()
  53. @H_657_489@ super.onResume();
  54. Utils.geTinstances().onResume(this);
  55. protectedvoidonPause()
  56. super.onPause();
  57. Utils.geTinstances().onPause(this);
  58. @H_657_489@ protectedvoidonDestroy() @H_657_489@ super.onDestroy();
  59. protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
  60. 如果jdkPay函数中直接调用Utils.geTinstances().pay函数,会提示 Can't create handler inside thread that has not called Looper.prepare() @H_674_3@ 即不能在子线程中刷新ui

    @H_674_3@ 所以新建一个handler。

    @H_674_3@ 9、jni 调用文件 头文件

    copy

      extern"C"
    1. //参数:...计费点代码字串
    2. voidshowTipDialog(constchar*billIndeX);
    3. #endif

    10、cpp文件

    copy

      #include"../../Classes/Result.h"
    1. #include"jniBridge.h"
    2. #include"cocos2d.h"
    3. #include"platform\android\jni/JniHelper.h"
    4. #includejni.h #defineCLASS_NAME"org/cocos2dx/cpp/AppActivity"
    5. @H_657_489@ usingnamespacecocos2d;
    6. extern"C"
    7. voidJava_org_cocos2dx_cpp_AppActivity_callBACk(JNIEnv*env,jobjectthiz,jStringstate,jStringbillingIndeX)
    8. constchar*pState=env->GetStringUTFChars(state,null);
    9. constchar*pIndex=env->GetStringUTFChars(billingIndex,null);
    10. @H_657_489@ if(strcmp(pState,"1")==0) @H_657_489@ dosuccess(pIndeX);//成功后调用的函数,在文件头部要#include此函数文件如result.h @H_657_489@ elseif(strcmp(pState,"2")==0) @H_657_489@ doFault(pIndeX);//失败后调用的函数,在文件头部要#include此函数文件如result.h
    11. :rgb(108,"0")==0)
    12. {//取消购买时
    13. doCancel(pIndeX);//取消后调用的函数,在文件头部要#include此函数文件如result.h
    14. @H_657_489@ env->ReleaseStringUTFChars(state,pStatE);
    15. env->ReleaseStringUTFChars(billingIndex,pIndeX);
    16. voidshowTipDialog(constchar*billIndeX)
    17. @H_657_489@ JniMethodInfominfo;
    18. jobjectjobj;
    19. if(JniHelper::getStaticMethodInfo(minfo,CLASS_NAME,"geTinstance","()Ljava/lang/Object;"))
    20. @H_657_489@ jobj=@H_766_171@minfo.env->CallStaticObjectMethod(minfo.classID,minfo.methodID);
    21. if(JniHelper::getMethodInfo(minfo,"jdkPay","(Ljava/lang/String;)V"))
    22. jStringjindex=@H_766_171@minfo.env->NewStringUTF(billIndeX);
    23. @H_357_160@minfo.env->CallVoidMethod(jobj,minfo.methodID,jindeX);
    24. @H_357_160@minfo.env->deleteLocalRef(jindeX);
    25. Over

      大佬总结

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

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

      本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
      如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。