• unity接sdk,微信支付的时候重启游戏,支付宝正常支付!我的解决方法是,库拷贝一份缺失的so库文件到armeabi-v7a这个文件夹里面。

    unity接sdk,微信支付的时候重启游戏,支付宝正常支付!

    eclipse 日志—————————————————start—————————————————————————————————

    11-29 16:02:29.214: E/CrashReport(12937): java.lang.UnsatisfiedLinkError: Couldn't load plugin_phone from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.firefly.BattleWarriors.anqu-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.firefly.BattleWarriors.anqu-1, /vendor/lib, /system/lib]]]: findLibrary returned null
    11-29 16:02:29.214: E/CrashReport(12937): at java.lang.Runtime.loadLibrary(Runtime.java:358)
    11-29 16:02:29.214: E/CrashReport(12937): at java.lang.System.loadLibrary(System.java:526)
    11-29 16:02:29.214: E/CrashReport(12937): at com.ipaynow.plugin.c.a.a.f(Unknown Source)
    11-29 16:02:29.214: E/CrashReport(12937): at com.ipaynow.plugin.api.a.a(Unknown Source)
    11-29 16:02:29.214: E/CrashReport(12937): at com.ipaynow.plugin.api.IpaynowPlugin.pay(Unknown Source)
    11-29 16:02:29.214: E/CrashReport(12937): at com.diannaoban.sdk.pay.payment.t.onPostExecute(Unknown Source)
    11-29 16:02:29.214: E/CrashReport(12937): at android.os.AsyncTask.finish(AsyncTask.java:636)
    11-29 16:02:29.214: E/CrashReport(12937): at android.os.AsyncTask.access$600(AsyncTask.java:177)
    11-29 16:02:29.214: E/CrashReport(12937): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:649)
    11-29 16:02:29.214: E/CrashReport(12937): at android.os.Handler.dispatchMessage(Handler.java:102)
    11-29 16:02:29.214: E/CrashReport(12937): at android.os.Looper.loop(Looper.java:136)
    11-29 16:02:29.214: E/CrashReport(12937): at android.app.ActivityThread.main(ActivityThread.java:5135)
    11-29 16:02:29.214: E/CrashReport(12937): at java.lang.reflect.Method.invokeNative(Native Method)
    11-29 16:02:29.214: E/CrashReport(12937): at java.lang.reflect.Method.invoke(Method.java:515)
    11-29 16:02:29.214: E/CrashReport(12937): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
    11-29 16:02:29.214: E/CrashReport(12937): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:614)
    11-29 16:02:29.214: E/CrashReport(12937): at dalvik.system.NativeStart.main(Native Method)
    11-29 16:02:29.214: E/CrashReport(12937): #++++++++++++++++++++++++++++++++++++++++++#
    11-29 16:02:29.234: D/CrashReport(12937): deleted t_lr data 1
    11-29 16:02:29.244: D/CrashReport(12937): insert t_lr success!
    11-29 16:02:29.244: I/CrashReportInfo(12937): [crash] a crash occur, handling...
    11-29 16:02:29.264: D/CrashReport(12937): [db] insert t_cr success
    11-29 16:02:29.264: D/CrashReport(12937): insert t_cr success!
    11-29 16:02:29.264: I/CrashReportInfo(12937): [crash] save crash success
    11-29 16:02:29.264: I/CrashReport(12937): try to upload right now
    11-29 16:02:29.264: D/CrashReport(12937): attach user log
    11-29 16:02:29.264: D/CrashReport(12937): java.lang.UnsatisfiedLinkError rid:13563227-5c58-4f75-8fb1-ed0e1463125d sess:26089c4c-5863-49bd-afa6-11d81f50053e ls:597s isR:false isF:true isM:false isN:false mc:0 ,null ,isUp:false ,vm:33
    11-29 16:02:29.284: D/CrashReport(12937): [UploadManager] add upload task (pid=12937 | tid=12937)
    11-29 16:02:29.284: D/CrashReport(12937): [UploadManager] sucessfully got session ID, try to execute upload task now (pid=12937 | tid=12937)
    11-29 16:02:29.284: D/CrashReport(12937): [UploadManager] execute synchronized upload task (pid=12937 | tid=12937)
    11-29 16:02:29.284: D/CrashReport(12937): up 1004 1480406549289
    11-29 16:02:29.294: D/CrashReport(12937): consume getted 29491
    11-29 16:02:29.294: D/CrashReport(12937): do upload task 830
    11-29 16:02:29.294: D/CrashReport(12937): [UploadManager] integrate security to HTTP headers (pid=12937 | tid=15890)
    11-29 16:02:29.294: D/CrashReport(12937): rqdp{  zp:} 2 rqdp{  len:} 44416

    eclipse 日志—————————————————end—————————————————————————————————

    这个问题是因为so库找不到,但是安趣给的demo和res里面的我都拷贝进去了。在eclipse中模拟跑没有问题,但是在unity中打包apk运行出来就是要错。


    我的解决方法是,把sdk中的 armeabi 下面的plugin_phone.so    这个库拷贝一份到armeabi-v7a这个文件夹里面,打包运行,没有问题。


    之后我无意中发现  Bugly的Android常见问题上有这个类似的说明

    libs目录下存在:

    armeabi\ libA.so , libB.so

    armeabi-v7a\ libB.so

    如果App运行在armv7的设备上,系统发现有armeabi-v7a目录,会把armeabi-v7a目录下的SO安装到系统,此时程序运行会发现找不到libA.so ,就会上报UnsatisfiedLinkError了。

    解决办法:

    提供armv7编译的libA.so放入armeabi-v7a下,补齐各架构所需要的SO。

    把armeabi-v7a目录去掉,默认armv7下也能使用armeabi下的SO。




    展开全文
  • Andoid版本 微信官方文档 app端开发步骤:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 SDK和Demo下载: ...如果你已经成功集成了微信登录和分享,那么此文将助你快速集成微信支...

    Andoid版本

    微信官方文档

    app端开发步骤:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

    SDK和Demo下载: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
    如果你已经成功集成了微信登录和分享,那么此文将助你快速集成微信支付,此文基于微信支付SDK3.1.1,也就是目前为止最新的SDK

    (1)微信官方的集成文档

    (2)微信官方资源下载
    不过我相信,即便你看了微信的官方文档,你依然不知道微信支付怎么集成,因为微信支付的官方文档简直太…..

    如果你已经准备好了资源包,接下来正式开始集成
    我们需要的资源其实有以下几样,在开始前,就这些转备好吧
    1)微信支付的APPID
    2)微信支付依赖包 >>> libammsdk.jar
    3)一个Activity类 >>> WXPayEntryActivity.java

    这里需要特别说明一下,这个Activity类,直接从上下载到的范例代码中copy到自己的工程中即可,这个页面是在你调起微信支付完成支付(或取消或失败)后,再回到你的App时会调用的一个页面。页面的布局可以是你自定义的布局,直接放图讲解:
    先说一下这个类的路径,网上也有一大堆介绍了,我直接放图,路径一定,而且必须是这样的:
    这里写图片描述
    在这个类中需要注意的地方有两个:
    1、这个类中的布局是可以自定义的,如果你不需要展示什么布局,而是要跳转页面,把这段代码删除即可
    这里写图片描述
    2、回调结果的处理

    //支付结果回掉
        @Override
        public void onResp(BaseResp resp)
        {
            Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
            if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) //如果是微信支付
            {
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle(R.string.app_tip);
                builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode)));
                builder.show();
                if(resp.errCode==0)//支付成功
                {
    
                }
                else if(resp.errCode==-2)//支付取消
                {
    
                }
                else//支付失败 
                {
    
                }
            }
            this.finish();//别忘记最后要将这个页面finish()
        }

    这个类中的其余的回调方法,我们都不需要去操作
    支付请求参数
    这里写图片描述
    最后开始支付
    这里写图片描述

    至此我们已经可以调起微信支付页面来支付了
    最后还有一个需要注意的是,很多人被这一步坑了,就是关于微信开放平台签名的问题。其实只要你手机上的程序的签名和你在微信平台登记的签名一致即可,无论是debug版本,还是release版本

    IOS版本
    在Xcode工程中:
    1.下载微信支付SDK
    2.SDK中包含libWeChatSDK.a,WXApi.h,WXApiObject.h WechatAuthSDK.h 4个文件,将SDK的文件放入到Unity工程的 Assets / Plugins / iOS 文件夹中。到构建 XCode 工程后,会直接存放于 XCode 工程的 Libraries/Plugins 文件夹中
    3.在Xcode中将微信SDK的文件添加到搜索路径中
    这里写图片描述
    4.添加类库
    SystemConfiguration.framework, libz.dylib, libsqlite3.0.dylib, libc++.dylib, Security.framework, CoreTelephony.framework, CFNetwork.framework
    在 XCode 工程的 Build Phases -> Link Binary With Libraries 中点击下面的 + 号添加
    这里写图片描述
    5.、因为在3部已经将sdk所在目录添加到搜索路径中了,所以不需要在Search Paths中添加 libWeChatSDK.a ,WXApi.h,WXApiObject.h
    6. 在“Info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id
    这里写图片描述
    7.info”标签栏的“LSApplicationQueriesSchemes“添加weixin
    这里写图片描述
    8.代码模块
    接下来是3.2.7:在你需要使 用微信终端API的文件中import WXApi.h 头文件,并增加 WXApiDelegate 协议,这个操作我们在 UnityAppController.h 中完成(我们同样可以扩展UnityAppController.mm来进行这个操作,避免每次打包后重新修改UnityAppController,参考后续的扩展UnityAppController文章),查看下图中画线的地方:
    这里写图片描述
    UnityAppController.h中加入WXApiDelegate协议

    接下来的在代码中使用工具包这一步的4.1我们在 UnityAppController.mm 中完成,首先找到文件中 didFinishLaunchingWithOptions 函数的位置,加入 [WXApi registerApp:@”wxa72a15850b99c773”];代码。

    4.2中重写AppDelegate的handleOpenURL和openURL方法,Unity生成的代码中并不包含这两个函数,按文档中的代码直接增加即可。

    4.3中实现WXApiDelegate协议的两个方法 onReq 和 sendReq 。这两个方法可以参考官方支付demo的代码,这里提供最简单的实现:
    这里写图片描述
    实现WXApiDelegate协议的两个方法 onReq 和 sendReq

    至此,XCode中 微信支付SDK 的接入就全部完成了,而且这里我们已经在 XCode 中使用 UnitySendMessage 向 Unity 端发送支付结果,Unity中接收后根据结果进行处理即可。但我们还没有完成调用支付的功能,我们新建一个 .h 和 .m 文件,文件名随意,我这里使用 NativeBridge 来命名,在里面实现原生的调用微信支付的代码。这两个文件我们可以在构建后 XCode 中引入,也可以直接存放于 Unity 项目的 Assets / Plugins / iOS 中,构建时会自动存放于 XCode 工程的 Libraries 文件夹中。

    在 NativeBridge.h 中写入代码:
    这里写图片描述
    NativeBridge.h中的代码

    在 NativeBridge.m 中,写入代码:
    这里写图片描述
    NativeBridge.m中的代码

    _WXPay是我们定义的调用微信支付的函数,参数全部使用 char *name 来传入,使用 [NSString stringWithUTF8String:name] 来转换为 NSString ,这里需要注意两点:

    request.openID 必须赋值,这一条在官方文档中没有说明,是在百度其他教程时发现的,android端也是如此。另外iOS端没有appid,只有android端有。
    timeStamp 必须是整形且为10位,精度是秒,上面代码中有转换方法。
    如果调用时提示签名错误,那么很有可能是上面2点造成的。

    调用的函数已经写好了,现在我们需要在 Unity 里面进行调用了,先引入原生代码中定义的调用函数:

    引入原生代码中的调用函数
    这里写图片描述

    之后在需要的地方传入参数并进行调用,参数应由服务器返回:
    这里写图片描述
    Unity中调起微信支付

    在微信支付处理完成或取消之后,会调用之前在 UnityAppController.mm 中定义的回调函数 OnResp ,再使用 UnitySendMessage 向 Unity 发送支付结果

    展开全文
  • 微信官方文档 app端开发步骤:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 SDK和Demo下载: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1 如果你已经成功集成了...

    Andoid版本

    微信官方文档

    app端开发步骤:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

    SDK和Demo下载: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

    参考文章:http://www.jianshu.com/p/c97639279d2e

    如果你已经成功集成了微信登录和分享,那么此文将助你快速集成微信支付,此文基于微信支付SDK3.1.1,也就是目前为止最新的SDK
    1)微信官方的集成文档
    2)微信官方资源下载


    资源下载


    不过我相信,即便你看了微信的官方文档,你依然不知道微信支付怎么集成,因为微信支付的官方文档简直太.....

    如果你已经准备好了资源包,接下来正式开始集成

    我们需要的资源其实有以下几样,在开始前,就这些转备好吧
    1)微信支付的APPID
    2)微信支付依赖包 >>> libammsdk.jar
    3)一个Activity类 >>> WXPayEntryActivity.java

    这里需要特别说明一下,这个Activity类,直接从下载到的范例代码中copy到自己的工程中即可,这个页面是在你调起微信支付完成支付(或取消或失败)后,再回到你的App时会调用的一个页面。页面的布局可以是你自定义的布局,直接放图讲解:

    先说一下这个类的路径,网上也有一大堆介绍了,我直接放图,路径一定,而且必须是这样的:


    WXPayEntryActivity 的路径


    在这个类中需要注意的地方有两个:
    1、这个类中的布局是可以自定义的,如果你不需要展示什么布局,而是要跳转页面,把这段代码删除即可


    回调页面的布局


    2、回调结果的处理,下面是官方的处理方式,直接给了一个dialog,很多人会摸不着头脑,如果你不需要这个dialog,直接删除就好了,不需要把官方demo中的布局和资源都复制过来


    官方的处理方式


    下面是我自定义的处理方式,比较简单,就是土司显示了一下支付结果,如果你需要支付成功后跳转,那么直接在这里startActivity即可,别忘记最后要将这个页面finish()


    自定义的处理方式

    这个类中的其余的回调方法,我们都不需要去操作

    然后我们就可以开始支付了,支付很简单,真的很简单


    参数列表


    这是微信支付需要我们携带的参数,对于新人来说,可能比较困惑的是我怎么生成这些参数呢?其实这些参数都是服务器返回给我们的,APPID我们可以自己保存在本地一份,其余的都是服务器返回给我们的,大概介绍一下流程:


    发起支付的流程,提交订单的时候的参数根据项目需要配置

    最后,服务器返回给我们微信支付的参数后,我们就可以愉快的支付了,这里是关键一步,注意!!


    发起支付的关键步骤

    至此我们已经可以调起微信支付页面来支付了
    最后还有一个需要注意的是,很多人被这一步坑了,就是关于微信开放平台签名的问题。其实只要你手机上的程序的签名和你在微信平台登记的签名一致即可,无论是debug版本,还是release版本


    微信开放平台签名


    为了方便测试,我暂时填写的是我debug的签名,当然这个是可以改的,修改后会有审核期,几天就不知道,有时会很快,当应用快上线之前,记得去改为正式的签名即可,修改次数我也不知道了,可以自行百度一下!


    修改签名

    展开全文
  • unity3d 微信支付 for IOS

    2018-01-30 22:21:12
    本人 unity3D 开发 因项目 需要 接入 微信 支付, 步步填坑。和大家风险下 坑经验! 因为这边服务器暂时没有到位。 所以 一切处理 都是在客户端完成! 首先感谢这个这位博主:...

    http://blog.csdn.net/nicepainkiller/article/details/72876754

    本人 unity3D 开发 因项目 需要 接入 微信 支付, 步步填坑。和大家风险下 坑经验!

    因为这边服务器暂时没有到位。 所以 一切处理 都是在客户端完成!

    首先感谢这个这位博主:http://www.jianshu.com/p/94dcc220b2aa

    主要的几个文件 给大家分享下!


    1.初始化 微信参数 info 从unity 传过来  

    [html] view plain copy
    1. // C函数  UNity3d 调用具体实现  
    2. //**********************************  
    3.   
    4. void _startUp(char* info)  
    5. {  
    6.     [NativeIOSManager instance];  
    7.       
    8.     //NSLog(@"传来的参数:>>%s",info);  
    9.       
    10.     NSString *initInfo = [NSString stringWithUTF8String:info];  
    11.     NSDictionary *dic  = [iOSManager dictionaryWithJsonString:initInfo];  
    12.     if( dic != nil )  
    13.     {  
    14.         iOSManager.WX_AppID             = dic[@"AppID"];  
    15.         iOSManager.WX_MCHID             = dic[@"MCH_ID"];  
    16.         iOSManager.WX_APP_Secret        = dic[@"APP_Secret"];  
    17.         iOSManager.WX_AppKey            = dic[@"APP_Key"];  
    18.         iOSManager.WX_PayArticleInfo    = dic[@"weChatPayArticleInfo"];  
    19.         iOSManager.WX_PayArticleCheck   = dic[@"weChatPayArticleCheck"];  
    20.           
    21.         [WXApi registerApp: iOSManager.WX_AppID];  
    22.         NSLog(@"注册微信......");  
    23.           
    24.     }else  
    25.     {  
    26.         NSLog(@"参数赋值失败");  
    27.         [iOSManager ResoultWeChatPayFail:@"初始化失败"];  
    28.     }  
    29.       
    30.     //    NSLog(@"iOSManager.WX_AppID:%@",            iOSManager.WX_AppID);  
    31.     //    NSLog(@"iOSManager.WX_MCHID:%@",            iOSManager.WX_MCHID);  
    32.     //    NSLog(@"iOSManager.WX_APP_Secret:%@",       iOSManager.WX_APP_Secret);  
    33.     //    NSLog(@"iOSManager.WX_AppKey:%@",           iOSManager.WX_AppKey);  
    34.     //    NSLog(@"iOSManager.WX_PayArticleInfo:%@",   iOSManager.WX_PayArticleInfo);  
    35.     //    NSLog(@"iOSManager.WX_PayArticleCheck:%@",  iOSManager.WX_PayArticleCheck);  
    36.       
    37. }  

    2. 这一步是构造 统一下单的 数据   其中的参数 我有项目的参数 大家不用删掉就好

      

    [html] view plain copy
    1. void _WechatPay(char* gameid, char* articleid)  
    2. {  
    3.     if( [WXApi isWXAppSupportApi]  != 0)  
    4.     {  
    5.         iOSManager.WX_GameID        = [NSString stringWithUTF8String:gameid];  
    6.         iOSManager.WX_ArticledID    = [NSString stringWithUTF8String:articleid];  
    7.           
    8.         NSString *urlTag = [NSString stringWithFormat:@"%@GameID=%@&ProductID=%@", iOSManager.WX_PayArticleInfo, iOSManager.WX_GameID,iOSManager.WX_ArticledID ];  
    9.           
    10.         NSLog(@"urlTag:%@",urlTag);  
    11.           
    12.         NSURL       *url        = [NSURL URLWithString:urlTag];  
    13.         NSError     *err        = nil;  
    14.         NSString    *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error: &err];  
    15.           
    16.         NSLog(@"App服务器返回:%@",jsonString);  
    17.           
    18.         if( jsonString !=nil )  
    19.         {  
    20.               
    21.             NSDictionary *dic = [iOSManager dictionaryWithJsonString:jsonString];  
    22.               
    23.             if( dic != nil )  
    24.             {  
    25.                 iOSManager.WX_Noncestr   = dic[@"SjNumber"];  
    26.                 iOSManager.WX_OutTradNO  = dic[@"OrderID"];  
    27.                 iOSManager.WX_PrduceName = dic[@"ProductName"];  
    28.                 iOSManager.WX_Price      = dic[@"Price"];  
    29.                 //int price = [dic[@"Price"] intValue] *100;  
    30.                 //iOSManager.WX_Price      = [NSString stringWithFormat:@"%d",price];  
    31.                   
    32.                 DataMD5 *date = [[DataMD5 alloc] initWithAppid:iOSManager.WX_AppID  
    33.                                                         mch_id:iOSManager.WX_MCHID  
    34.                                                      nonce_str:iOSManager.WX_Noncestr  
    35.                                                     partner_id:iOSManager.WX_AppKey  
    36.                                                           body:@"912YULE"  
    37.                                                   out_trade_no:iOSManager.WX_OutTradNO  
    38.                                                      total_fee:iOSManager.WX_Price  
    39.                                               spbill_create_ip:[getIPhoneIP getIPAddress]  
    40.                                                     notify_url:@"www.baidu.com"  
    41.                                                     trade_type:@"APP"];  
    42.                   
    43.                 NSString* sign = [date getSignForMD5];  
    44.                   
    45.                 //设置参数并转化成xml格式  
    46.                 NSMutableDictionary *dic = [NSMutableDictionary dictionary];  
    47.                 [dic setValue:iOSManager.WX_AppID forKey:@"appid"];//公众账号ID  
    48.                 [dic setValue:iOSManager.WX_MCHID forKey:@"mch_id"];//商户号  
    49.                 [dic setValue:iOSManager.WX_Noncestr forKey:@"nonce_str"];//随机字符串  
    50.                 [dic setValue:sign forKey:@"sign"];//签名  
    51.                 [dic setValue:@"912YULE" forKey:@"body"];//商品描述  
    52.                 [dic setValue:iOSManager.WX_OutTradNO forKey:@"out_trade_no"];//订单号  
    53.                 [dic setValue:iOSManager.WX_Price forKey:@"total_fee"];//金额  
    54.                 [dic setValue:[getIPhoneIP getIPAddress] forKey:@"spbill_create_ip"];//终端IP  
    55.                 [dic setValue:@"www.baidu.com" forKey:@"notify_url"];//通知地址  
    56.                 [dic setValue:@"APP" forKey:@"trade_type"];//交易类型  
    57.                 // 转换成xml字符串  
    58.                 NSString *string = [dic XMLString];  
    59.                   
    60.                 [iOSManager getProduceArgs:string];  
    61.                   
    62.             }else  
    63.             {  
    64.                 NSLog(@"与APP服务器通讯出错");  
    65.                 [iOSManager ResoultWeChatPayFail:@"与APP服务器通讯出错!"];  
    66.             }  
    67.               
    68.               
    69.         }else  
    70.         {  
    71.             NSLog(@"与APP服务器通讯出错");  
    72.             [iOSManager ResoultWeChatPayFail:@"与APP服务器通讯出错!"];  
    73.         }  
    74.     }else  
    75.     {  
    76.         [iOSManager ResoultWeChatPayFail:@"微信不支持"];  
    77.     }  
    78. }  

    3.  请求 微信的统一下单。 应为 要用到 post请求 所以 用到了 AFNetWorking 库,

    这个库我用的是 3.0 版本的,然后手动添加,添加完成后 需要在 unity 导入到 xcode   修改项目  .pch 文件,以及添加依赖库 参考    参考

    [html] view plain copy
    1. #pragma mark   ==============获取统一订单接口==============  
    2. -(void)getProduceArgs : (NSString *) httpString  
    3. {  
    4.     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  
    5.     manager.responseSerializer = [[AFHTTPResponseSerializer alloc] init];  
    6.     [manager.requestSerializer setValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];  
    7.     [manager.requestSerializer setValue:@"https://api.mch.weixin.qq.com/pay/unifiedorder" forHTTPHeaderField:@"SOAPAction"];  
    8.     [manager.requestSerializer setQueryStringSerializationWithBlock:^NSString *(NSURLRequest *request, NSDictionary *parameters, NSError *__autoreleasing *error) {  
    9.         return httpString;  
    10.     }];  
    11.       
    12.     //NSLog(@"httpString =====>1:%@", httpString);  
    13.       
    14.       
    15.     [manager POST:WXUNIFIEDORDERURL parameters:httpString progress:^(NSProgress * _Nonnull uploadProgress) {  
    16.     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject)  
    17.      {  
    18.          NSString *responseString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding] ;  
    19.            
    20.          NSLog(@"responseString is %@",responseString);  
    21.          NSDictionary *dic = [NSDictionary dictionaryWithXMLString:responseString];  
    22.          //判断返回的许可  
    23.          if ([[dic objectForKey:@"result_code"] isEqualToString:@"SUCCESS"] &&[[dic objectForKey:@"return_code"] isEqualToString:@"SUCCESS"] ) {  
    24.              //发起微信支付,设置参数  
    25.              NSLog(@"发起微信支付,设置参数");  
    26.                
    27.                
    28.              PayReq *request     = [[PayReq alloc] init];  
    29.              request.openID      = [dic objectForKey:@"appid"];  
    30.              request.partnerId   = [dic objectForKey:@"mch_id"];  
    31.              request.prepayId    = [dic objectForKey:@"prepay_id"];  
    32.              request.package     = @"Sign=WXPay";  
    33.              request.nonceStr    = [dic objectForKey:@"nonce_str"];  
    34.                
    35.              iOSManager.WX_Prepay_id = request.prepayId;  
    36.                
    37.                
    38.              //将当前事件转化成时间戳  
    39.              NSDate *datenow     = [NSDate date];  
    40.              NSString *timeSp    = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]];  
    41.              UInt32 timeStamp    = [timeSp intValue];  
    42.              request.timeStamp   = timeStamp;  
    43.              // 签名加密  
    44.                
    45.              DataMD5 *md5 = [[DataMD5 alloc] initWithAppid:iOSManager.WX_AppID  
    46.                                                     mch_id:iOSManager.WX_MCHID  
    47.                                                  nonce_str:iOSManager.WX_Noncestr  
    48.                                                 partner_id:iOSManager.WX_AppKey  
    49.                                                       body:@"912YULE"  
    50.                                               out_trade_no:iOSManager.WX_OutTradNO  
    51.                                                  total_fee:iOSManager.WX_Price  
    52.                                           spbill_create_ip:[getIPhoneIP getIPAddress]  
    53.                                                 notify_url:@"www.baidu.com"  
    54.                                                 trade_type:@"APP"];  
    55.                
    56.              request.sign    = [md5 createMD5SingForPay:request.openID  
    57.                                               partnerid:request.partnerId  
    58.                                                prepayid:request.prepayId  
    59.                                                 package:request.package  
    60.                                                noncestr:request.nonceStr  
    61.                                               timestamp:request.timeStamp];  
    62.              //             // 调用微信  
    63.              //             NSLog(@"request.openID:%@",     request.openID);  
    64.              //             NSLog(@"request.partnerId:%@",  request.partnerId);  
    65.              //             NSLog(@"request.prepayId:%@",   request.prepayId);  
    66.              //             NSLog(@"request.package:%@",    request.package);  
    67.              //             NSLog(@"request.nonceStr:%@",   request.nonceStr);  
    68.              //             NSLog(@"request.timeStamp:%u",  (unsigned int)request.timeStamp);  
    69.              //             NSLog(@"request.sign:%@",       request.sign);  
    70.                
    71.                
    72.              [WXApi sendReq:request];  
    73.              //[WXApi on]  
    74.                
    75.              //[MBProgressHUD hideHUD];  
    76.          }else{  
    77.              //LXLog(@"参数不正确,请检查参数");  
    78.              //[MBProgressHUD hideHUD];  
    79.              //[MBProgressHUD showError:@"支付错误!"];  
    80.              [iOSManager ResoultWeChatPayFail:@"与服务器通讯出错!"];  
    81.          }  
    82.            
    83.            
    84.      } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)  
    85.      {  
    86.          NSLog(@"error is %@",error);  
    87.            
    88.          [iOSManager ResoultWeChatPayFail:@"与服务器通讯出错!"];  
    89.      }];  
    90.       
    91. }  

    然后 unity3D 端 






    4.后来发现 调起支付 并且完成以后, 微信支付回调 

    -(void)onResp:(BaseResp *)resp {
      并没有执行 。 然后 把回调写在了 导出的 xcode 工程的 UnityAppController.mm 中就能回调了参考   http://web.mob.com/faq/?/question/58

    头文件




    估计不太详细 核心源码:http://download.csdn.net/detail/nicepainkiller/9862138

    展开全文
  • 做了个微信小商城后,想做个微信小游戏,肯定不会看cocos2dx-h5, 所以在网上找了一下,结果悲剧了,不但不怎么好用,甚至很多游戏源码,都放在MiniProgram里面去了 无奈只能自己从头写,网上的游戏源码完全跑不...

    做了个微信小商城后,想做个微信小游戏,肯定不会看cocos2dx-h5,

    所以在网上找了一下,结果悲剧了,不但不怎么好用,甚至很多游戏源码,都放在MiniProgram里面去了

    无奈只能自己从头写,网上的游戏源码完全跑不起来

    不赖的是微信的例子还不错

    所以想做的方案就是在默认例子上面再搭一个MVC和网络通讯

    这肯定是先需要一个EventManager把

    结果一百度,又烦了,TMD都是说的EVENT LOOP,百度了几分钟,看了几篇这样水文

    实在看不下去了,不懂我说什么的,请看我之前的文章

    " 你作为程序员是搞技术的还是搞理论的?通篇那样的只有理论知识的水文,对于资深程序员不能入门JS,对于入门程序员不能提高JS编程能力 ”

    技术是需要苦练得出的。。。而不是看回来的。。。当然。。。天才例外

    神烦之后,找了一个技术博客(不是这个论坛的博客),应该好用:

    var EventUtil={
        
       addHandler:function(element,type,handler){ //添加事件
          if(element.addEventListener){ 
             element.addEventListener(type,handler,false);  //使用DOM2级方法添加事件
          }else if(element.attachEvent){                    //使用IE方法添加事件
             element.attachEvent("on"+type,handler);
          }else{
             element["on"+type]=handler;          //使用DOM0级方法添加事件
          }
       },  
    
       removeHandler:function(element,type,handler){  //取消事件
          if(element.removeEventListener){
             element.removeEventListener(type,handler,false);
          }else if(element.detachEvent){
             element.detachEvent("on"+type,handler);
          }else{
             element["on"+type]=null;
          }
       },
    
       getEvent:function(event){  //使用这个方法跨浏览器取得event对象
          return event?event:window.event;
       },
        
       getTarget:function(event){  //返回事件的实际目标
          return event.target||event.srcElement;
       },
        
       preventDefault:function(event){   //阻止事件的默认行为
          if(event.preventDefault){
             event.preventDefault(); 
          }else{
             event.returnValue=false;
          }
       },
    
       stopPropagation:function(event){  //立即停止事件在DOM中的传播
                                         //避免触发注册在document.body上面的事件处理程序
          if(event.stopPropagation){
             event.stopPropagation();
          }else{
             event.cancelBubble=true;
          }
       },
            
       getRelatedTarget:function(event){  //获取mouseover和mouseout相关元素
          if(event.relatedTarget){
             return event.relatedTarget;
          }else if(event.toElement){      //兼容IE8-
             return event.toElement;
          }else if(event.formElement){
             return event.formElement;
          }else{
             return null;
          }
       },
            
       getButton:function(event){    //获取mousedown或mouseup按下或释放的按钮是鼠标中的哪一个
          if(document.implementation.hasFeature("MouseEvents","2.0")){
             return event.button;
          }else{
             switch(event.button){   //将IE模型下的button属性映射为DOM模型下的button属性
                case 0:
                case 1:
                case 3:
                case 5:
                case 7:
                   return 0;  //按下的是鼠标主按钮(一般是左键)
                case 2:
                case 6:
                   return 2;  //按下的是中间的鼠标按钮
                case 4:
                   return 1;  //鼠标次按钮(一般是右键)
             }
          }
       },
            
       getWheelDelta:function(event){ //获取表示鼠标滚轮滚动方向的数值
          if(event.wheelDelta){
             return event.wheelDelta;
          }else{
             return -event.detail*40;
          }
       },
            
       getCharCode:function(event){   //以跨浏览器取得相同的字符编码,需在keypress事件中使用
          if(typeof event.charCode=="number"){
             return event.charCode;
          }else{
             return event.keyCode;
          }
       }
            
    };
    

    等我试完再给大家报告,大概的调用方法是:

    (我在原来的打官方默认飞机例子,加了BOSS战斗)

    import DataBus from '../databus'
    import Enemy from '../npc/enemy'
    let databus = new DataBus()
    export default class level_manager
    {
      constructor(bossCount=1){
        this.bossCount = bossCount
        this.isBossTime = false 
        this.boss = null
        this.databus = new DataBus()
      }
    
      update()
      {
        if(this.isBossTime)
        {
          if(this.boss==null)
          {
            this.generateBoss()
          }
    
        }
      }
    
      generateBoss(){
        let enemy = databus.pool.getItemByClass('enemy', Enemy)
        enemy.init(1)
        databus.enemys.push(enemy)
        this.boss = enemy
      }
    
    }
    
    
    

     

    展开全文
  • 错误总结 1. Permission denied的解决方法:chmod +x /Users/majiang/Desktop/U3DIOS/MapFileParser.sh 2. 必须将libWeChatSDK.a文件放到... 在unity的playerSetting中把auto graphics api的钩去除把metal删除 4.
  • 前文提到的苹果支付刚接完不久,项目又有了新的需求—android手机需要接入微信app支付。。。好吧,研究了微信支付官方的接入文档和官方demo,踩过大大小小无数的坑终于支付成功了!本文主要梳理下自己的工作以备以后...
  • Unity IOS微信登录

    2018-09-06 12:08:44
    应公司项目要求,这段时间接手开始接入微信sdk,由于还未获取到微信的支付权限,所以这里只做了一下登录的记录,https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&...
  • Unity接入微信SDK——iOS(接入微信SDK)
  • SHARE SDK微信分享总结
  • AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); jo.Call("wxLogin"); 微信分享 ...
  • 那这个功能在unity3d制作的游戏中怎么做到的呢?以前的老做法是按照对应的ios、安卓平台、在微信or新浪微博上下载对应的sdk、按照其说明文档逐一接入,费时费力,而且多数都不支持u3d,需要自己写接口,令广大程序...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • Unity3D+VR的实现

    2019-04-26 12:15:26
    针对CardBoard一类的眼镜用Unity3D开发VR内容。 1、创建VRCamera:使用Dive插件,从DiveUnityDemo提取摄像机和有关的脚本并export出来。 2、对象选择:视选模式:从眼睛发射一条射线,选择看到的对象。手柄模式:...
  • 对于unity微信登录这一块儿,其实坑还是挺多的,接微信SDK有多种方法,本人是一位unity兼java服务器开发者,文章内容纯属原创,只是将个人经验分享给大家,不喜勿喷。 1.首先,注册微信开发者账号,申请需要开发...
  • 在缠着MOB的客服哥哥的几个小时,终于解决了微信登录的问题! 之前一直在用shareSDK的Demo 来测试第三方登录、分享,结果微博QQ都没问题,但微信就是不行,反反复复地看了很多次文档、以及一些论坛讨论,还是怎么...
  • unity 微信支付

    2019-06-27 09:01:12
    Unity接入微信APP支付(超详细) 前言 微信app支付流程 申请权限&配置app信息 导Unity使用的Jar包 Android开发环境部署 SDK 导出Jar包 Unity工程中的Androidmainfest文件 untiy导入Jar包 untiy调用SDK keystore ...
  • 楼主是一个刚工作不算长时间的小白,如若有错误的地方,请各位指出来~
  • 遵循mob的http://wiki.mob.com/unity3d%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/ ShareSDK开发文档,外加http://bbs.mob.com/thread-23519-1-1.html文档,如果还不能搞定,就在微信平台查看签名对...
1 2 3 4 5 ... 20
收藏数 477
精华内容 190
关键字:

微信返回unity3d