1.开发前准备:Eclipse安卓环境
Eclipse版本:2019-12

ADT版本:23.0.2

Android:4.2.2(API16(使用AndroidSDK安装)(都到接入微信支付了,应该都知道)

JDK版本:jdk1.8.0_65

2.申请微信支付:
登入微信开发平台支付那一项应该是接入,点击按步骤申请就OK了

我遇到的问题:

其中需要上传四张支付界面截图但是官方给的例子是京东App的截图但是我们是游戏啊(我有点懵)最后打客服答案是(以王者荣耀为例):

1.版权页面(登陆界面有版权归某某公司所有之类的字样)

2.主界面(一般游戏首页界面)

3.支付产品界面(类似王者荣耀充值点券的那个界面)

4.客服解释需要备注,暂时没有申请支付,但是没找到备注的地方所以不需要也可以

3.下载微信安卓工程:
微信官网地址
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

提示:下面过程必须是在你的微信开发平台已经配置应用签名(微信官方有工具)及包名的前提

4.回到Eclipse:
1、新建一个Android工程,将微信官方中的以下文件拖进去,

unity 苹果支付sdk_经验分享

2、修改以下三个文件的包名(自己Unity中包名),右键-Refactor-Rename

unity 苹果支付sdk_经验分享_02

3、拖入Unity的jar包(找不到jar包位置,自行Google)步骤如下:

unity 苹果支付sdk_unity_03

4、将以下文件删掉

unity 苹果支付sdk_unity_04

5、排除项目警告及错误,因为有API版本原因会有些方法有警告,

我遇到的:SetBackGround 和 removeLayout改成不报警告的方法的就好了,(可能会出现Eclipse没有代码提示的问题,随便Google一下就解决了)

5、代码部分(终于到代码部分了)

新建一个名称为MainActivity的java类,步骤:右键-New-Class

import com.unity3d.player.UnityPlayer;

import com.unity3d.player.UnityPlayerActivity;

import android.app.Activity;

import android.content.Context;

import android.content.Intent;

import android.content.res.Configuration;

import android.os.Bundle;

public class MainActivity extends UnityPlayerActivity
{

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
    }

    public void onConfigurationChanged(Configuration newConfig)
    {
        super.onConfigurationChanged(newConfig);
    }

    public void WeixinPay(String prepayid,String packagem,String noncestr ,String timestamp,String sign)
    {
        final Activity activity = UnityPlayer.currentActivity;
        final Context context = activity.getApplicationContext();

        Intent intent = new Intent(context,PayActivity.class);

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra("prepayid", prepayid);
        intent.putExtra("package", "Sign=WXPay");
        intent.putExtra("noncestr", noncestr);
        intent.putExtra("timestamp",timestamp);
        intent.putExtra("sign",sign);
        context.startActivity(intent);
    }
}

PayActivity类如下修改

protected void onCreate(Bundle savedInstanceState)

    {
        super.onCreate(savedInstanceState);

        api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);
        api.registerApp(Constants.APP_ID);
        api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);

        Intent intent = getIntent();
        prepayid = intent.getStringExtra("prepayid");
        packagem = intent.getStringExtra("package");
        noncestr = intent.getStringExtra("noncestr");
        timestamp = intent.getStringExtra("timestamp");
        sign = intent.getStringExtra("sign");

        PayReq req = new PayReq();
        //req.appId = "wxf8b4f85f3a794e77";  // 测试用appId
        req.appId           = Constants.APP_ID;
        req.partnerId       = Constants.MCH_ID;
        req.prepayId        = prepayid;
        req.nonceStr        = noncestr;
        req.timeStamp       = timestamp;
        req.packageValue    = packagem;
        req.sign            = sign;
        api.sendReq(req);


        PayActivity.this.finish();
    }

Constants如下修改

public class Constants

{

    // APP_ID 替换为你的应用从官方网站申请到的合法appId
public static final String APP_ID = "";

//商户号 (申请支付通过后,会有一个商户号)
public static final String MCH_ID = "";

//API 秘钥
public static final String API_KEY = "";

public static class ShowMsgActivity {
        public static final String STitle = "showmsg_title";
        public static final String SMessage = "showmsg_message";
        public static final String BAThumbData = "showmsg_thumb_data";
    }
}

AndroidManifest如下修改

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="包名"
android:versionCode="1"
android:versionName="1.0" >
  <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="26" />
  <!-- Required  一些系统要求的权限,如访问网络等-->
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  <application
android:label="@string/app_name" >
<activity
android:name="包名.MainActivity"
android:label="@string/app_name"
android:configChanges="orientation|screenSize|keyboardHidden"
android:screenOrientation="unspecified">
  <intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
  <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
  <intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="你的appid"/>
  </intent-filter>
</activity>
<activity
  android:name="包名.PayActivity"
  android:configChanges="orientation|keyboardHidden|screenSize"
   android:screenOrientation="behind"
   android:theme="@android:style/Theme.Translucent.NoTitleBar">
  <!--android:launchMode="singleTop">-->
</activity>
<activity
android:name="包名.wxapi.WXPayEntryActivity"
android:exported="true"
  android:launchMode="singleTop">
  <intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="你的appid"/>
  </intent-filter>
</activity>
<receiver
   android:name=".AppRegister">
  <intent-filter>
<action android:name="包名.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" />
  </intent-filter>
</receiver>
  </application>
</manifest>

下篇就开始是与Unity交互及对接微信支付接口的过程