文档章节

微信支付

遇见sunshine
 遇见sunshine
发布于 2016/12/29 12:00
字数 471
阅读 332
收藏 4
工具类
package com.yjkj.sandihuabing.util;

import android.content.Context;
import android.content.Intent;

import com.tencent.mm.sdk.constants.Build;
import com.tencent.mm.sdk.modelbase.BaseReq;
import com.tencent.mm.sdk.modelpay.PayReq;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
import com.yjkj.sandihuabing.model.WechatPay;

/**
 * Created by yunjia on 2016/12/12.
 */

public class WeChatHelper {
    private Context mContext = null;

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

    public static String orderType;


    public WeChatHelper(Context mContext) {
        this.mContext = mContext;
        initIwxApi();
    }

    /**
     * 微信API:初始化微信API、并将App注册到微信
     */
    private void initIwxApi() {
        mIWXAPI = WXAPIFactory.createWXAPI(mContext, Constant.APP_ID);
        registerIwxApi();
    }

    /**
     * 微信API:发送微信Handler消息通知
     *
     * @param intent
     */
    public void handleIntent(Intent intent, IWXAPIEventHandler handler) {
        if (mIWXAPI != null)
            mIWXAPI.handleIntent(intent, handler);
    }

    /**
     * 微信API:App注册到微信
     */
    public void registerIwxApi() {
        if (mIWXAPI != null) ;
        mIWXAPI.registerApp(Constant.APP_ID);
    }

    /**
     * 微信API:注销App注册到微信
     */
    private void unRegisterIwxApi() {
        if (mIWXAPI != null) mIWXAPI.unregisterApp();
        mIWXAPI = null;
    }

    /**
     * 是否支持微信支付
     *
     * @return true:支持;false:不支持
     */
    public boolean isPaySupported() {
        return mIWXAPI.getWXAppSupportAPI() >= Build.PAY_SUPPORTED_SDK_INT;
    }

    /**
     * 是否安装了微信App
     *
     * @return true:已安装;false:未安装
     */
    public boolean isWXAppInstalled() {
        return mIWXAPI.isWXAppInstalled();
    }


    /**
     * 微信API:发送请求
     *
     * @param req
     */
    public void sendReq(BaseReq req) {
        if (mIWXAPI != null) mIWXAPI.sendReq(req);
    }


    /**
     * 微信API:创建支付请求
     *
     * @param wechatPay
     * @return
     */
    public PayReq createPayReq(WechatPay wechatPay) {
        PayReq payReq = new PayReq();
        payReq.appId = wechatPay.getAppid();
        payReq.partnerId = wechatPay.getPartnerid();
        payReq.prepayId = wechatPay.getPrepayid();
        payReq.packageValue = "Sign=WXPay";
        payReq.nonceStr = wechatPay.getNonceStr();
        payReq.timeStamp = wechatPay.getTimeStamp();
        payReq.sign = wechatPay.getSign();
        return payReq;
    }
}
在需要调起微信支付的地方调用

private WeChatHelper helper = null;
private WeChatHelper helper = null;

helper = new WeChatHelper(this);
wechatPay = new WechatPay();
wechatPay = ((ReqWechatPay) req).getWechatPay();
            if(helper.isWXAppInstalled()){
                if(helper.isPaySupported()){
                    helper.sendReq(helper.createPayReq(wechatPay));
                }else{
                    Toast.makeText(this,“您所使用的微信版本不支持支付”,Toast.LENGTH_LONG).show();
                }
            }else{
                Toast.makeText(this,“您还未安装微信”,Toast.LENGTH_LONG).show();
            }


        }
微信回调页面,WXPayEntryActivity 所在目录必须是 项目包名/wxapi/WXPayEntryActivity 

package com.yjkj.sandihuabing.wxapi;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import com.tencent.mm.sdk.constants.ConstantsAPI;
import com.tencent.mm.sdk.modelbase.BaseReq;
import com.tencent.mm.sdk.modelbase.BaseResp;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
import com.yjkj.sandihuabing.R;
import com.yjkj.sandihuabing.util.Constant;
import com.yjkj.sandihuabing.util.PrefTool;


public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
	
	private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
	
    private IWXAPI api;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_result);
		api = WXAPIFactory.createWXAPI(this, Constant.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) {

		if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
			if(resp.errCode == 0){
				PrefTool.putInt(PrefTool.WECHAT_RECHARGE_SUCCESS,1);
				finish();
			}

		}
	}
}
在androidmanifest中的配置

<activity
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop" />

 

© 著作权归作者所有

上一篇: 支付宝支付
遇见sunshine
粉丝 3
博文 55
码字总数 21695
作品 0
海淀
程序员
私信 提问

暂无文章

PCB设计-Allegro软件入门系列-铺铜操作(下)

铺铜是PCB很常见的操作,PCB的敷铜一般都是覆地铜,增大地线面积,有利于地线阻抗降低,使电源和信号传输稳定,在高频的信号线附近敷铜,可大大减少电磁辐射干扰,起屏蔽作用。 本讲讲解啊一...

demyar
24分钟前
3
0
如何通过WASI SDK 在Linux上编译ZXing C++

Mozilla在今年三月份的时候公布了WASI。WASI的目标就是让WebAssembly在任何地方都可以运行,而不仅仅像现在这样只能运行在Node.js和Web浏览器中。WASI目前依然处于初级阶段,这篇文章分享下如...

yushulx
26分钟前
3
0
.Net界面开发神器—DevExpress官方汉化包免费下载!还在等什么?

点击获取DevExpress v19.1.7新版试用下载 DevExpress Localization Service允许您创建一组自定义的附属程序集,要将语言包添加到程序集中,请查看本文中为大家列出的对应版本的汉化包,下载并...

FILA6666
26分钟前
4
0
php生成二维码

        header('Content-Type: image/png');        //清除缓冲区,防止之前面不知道的情况下被加头部信息导致不显示图片内容        ob_clean();        $...

横着走的螃蟹
32分钟前
3
0
伪类和伪元素

伪类和伪元素 伪类和伪元素,对于绝大多数同学来说,都是耳熟能详的名字,但确实又有很多人搞不清楚它们之间的区别,以致于混淆概念。而当概念都混淆的时候,也往往意味着你不会经常使用它,...

不负好时光
34分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部