网上很多教程讲Unity接入微信支付的方法多是接入以前的微信支付SDK,但是因为已微信官方已经改用gradle形式,将SDK发布到 Maven Central。如果直接在在build.gradle文件中,根据官方提示添加如下依赖:
dependencies {
api 'com.tencent.mm.opensdk:wechat-sdk-android:+'
}
虽然Android Studio里可以正常编译,但是Make Project后导出的aar包不含微信SDK。
所以,我的解决方法还是采用把arr包放入Android工程Libs本地的的方式。
想办法找到了wechat-sdk-android-6.8.0.aar,然后粘贴到App/Libs文件夹。因为网上很多教程都是讲导入的是jar格式的微信SDK,现在我们导入的是aar格式,App的Gradle文件还要稍微修改一下——
apply plugin: 'com.android.library'
//默认以arr形式输出
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 16
targetSdkVersion 29
versionCode 1
versionName "1.0"
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
repositories{
flatDir{
dirs 'libs'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation files('libs\\classes.jar')
implementation (name: 'wechat-sdk-android-6.8.0', ext: 'aar')
}
Make Project导出aar包后,用压缩软件打开里面的AndroidManifest.xml,修改如下——
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="你的包名"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="29" />
<!-- 申请网络访问权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/UnityThemeSelector"
tools:replace="android:icon, android:theme" >
<activity
android:name="你的包名.MainActivity"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:exported="true"
android:launchMode="singleTask"
android:noHistory="false" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="你的包名.wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop" />
<activity
android:name="你的包名.wxapi.WXEntryActivity"
android:exported="true"
android:launchMode="singleTop" />
</application>
</manifest>
注意,如果最后发生微信支付可以调用,但支付回调和分享都不能调用的情况,很有可能是activity声明里的“.wxapi”漏了。
最后,把Android Studio生成并经过处理的aar包和wechat-sdk-android-6.8.0.aar一起导入到Unity工程中,就可以正常调用微信开放功能了。
具体接入微信支付的教程,大家可以自己网上找资料,有很多,这里我就不详细叙述了。
网友评论