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对应的目录下(电信和移动支付)
文件如下:
[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所遇到的程序开发问题。 如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)