Unity接入微信支付/登录功能-Android

继之前的文章Unity头像上传功能实现 一 , 将Unity与安卓交互的功能整合了一下,接入了微信支付/登录,支付宝支付
GitHub地址: https://github.com/alexchenc/unityplugins


微信支付/登录

  • 接入微信的功能,需要先到微信开放平台申请一个应用,拿到AppID和AppSecret,并且已获得微信支付和微信登录的权限

  • 获取微信支付的权限之后,会收到一封邮件里面包含商户号,进入商户平台获取商户ID(微信支付需要)

  • 具体申请步骤就不说了,需要一大堆资料,而且貌似只面向企业用户了。

  • 要注意的是这里的应用签名应设置为Unity项目中的签名,包名也需要和Unity项目中包名一致(Android项目中也相同)

下面就以已拿到AppID和APPSecret和商户ID为基础进行开发

dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}

dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
  • 下载微信官方Demo
    将以下两个文件包括文件夹拷贝到我们项目中,对应相应的位置:

  • 我们的主入口在MainActivity.java中,Unity传递消息我们用这个类来接收
    其中调用微信支付和登录的方法为:

/**
* 调用微信API
*/
public void openWechatPay(String orderStr) {
   
    WechatService.GetInstance().openWechatPay(orderStr);
}

/**
 * 调用微信登录
 */
public void openWechatLogin() {
   
    WechatService.GetInstance().openWechatLogin();
}
  • 拷贝到项目中的两个类WXEntryActivityWXPayEntryActivity用于处理微信界面的返回结果
package com.cclovers.demo.wxapi;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.cclovers.demo.WechatService;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
   

	// IWXAPI 是第三方app和微信通信的openapi接口
	private IWXAPI api;

	private WechatService wechatService = WechatService.GetInstance();

	@Override
	public void onCreate(Bundle savedInstanceState) {
   
		super.onCreate(savedInstanceState);

		// 通过WXAPIFactory工厂,获取IWXAPI的实例
		api = WXAPIFactory.createWXAPI(this, WechatService.APP_ID, false);
		api.handleIntent(getIntent(), this);
	}

	@Override
	protected void onNewIntent(Intent intent) {
   
		super.onNewIntent(intent);

		setIntent(intent);
		api.handleIntent(intent, this);
	}

	// 微信发送请求到第三方应用时,会回调到该方法
	@Override
	public void onReq(BaseReq req) {
   
		switch (req.getType()) {
   
			case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
				break;
			case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
				break;
			case ConstantsAPI.COMMAND_LAUNCH_BY_WX:
				break;
			default:
				break;
		}
	}

	// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
	@Override
	public void onResp(BaseResp resp) {
   

		switch (resp.getType()) {
   
			case ConstantsAPI.COMMAND_LAUNCH_BY_WX:
				break;
			case ConstantsAPI.COMMAND_SENDAUTH:
				wechatService.onSendAuthResp(resp);
				break;
			default:
				break;
		}
		finish();
	}
}
package com.cclovers.demo.wxapi;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.cclovers.demo.WechatService;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
   

	private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
	
    private IWXAPI api;

	private WechatService wechatService = WechatService.GetInstance();
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.pay_result);
        
    	api = WXAPIFactory.createWXAPI(this, WechatService.APP_ID);
        api.handleIntent(getIntent(), this);
    }

	@Override
	protected void onNewIntent(Intent intent) {
   
		super.onNewIntent(intent);
		setIntent(intent);
        api.handleIntent(intent, this);
	}

	@Override
	public void onReq(BaseReq req) {
   
	}

	@Override
	public void onResp(BaseResp resp) {
   
		switch (resp.getType()) {
   
			case ConstantsAPI.COMMAND_PAY_BY_WX:
				wechatService.onSendPayResp(resp);
				break;
			default:
				break;
		}
		finish()
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值