微信支付分享功能

//微信接入--包括支付 登录 分享。。。导包
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
// APP_ID 替换为你的应用从官方网站申请到的合法appID
private static final String APP_ID = "wx5bfac4b79b650ac6";
//微信初始化 在MultiDexApplication里面oncrent注册
public static IWXAPI getWxApi() {
    if (api == null) {
        // 通过WXAPIFactory工厂,获取IWXAPI的实例
        api = WXAPIFactory.createWXAPI(getInstance(), APP_ID, false);
        // 将该app注册到微信
        api.registerApp(APP_ID);
    }
    return api;
}
package com.example.gaowen38.utils;

import android.content.ClipboardManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.util.Log;

import com.example.gaowen38.R;
import com.example.gaowen38.globel.App;
import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
import com.tencent.mm.opensdk.modelmsg.WXWebpageObject;
import com.tencent.mm.opensdk.openapi.IWXAPI;

/**
 * 分享操作类
 *
 * @author zhangxiaoyang create at 2018/10/17
 * @Description 描述:
 */
public class ShareUtils {
    private static String TAG = ShareUtils.class.getName();

    public static int SHARE_TYPE_1 = 1;//朋友
    public static int SHARE_TYPE_2 = 2;//朋友圈
    public static int SHARE_TYPE_3 = 3; //收藏
    private static IWXAPI wxapi = null;

    /**
     * 获取微信api
     *
     * @return
     */
    public static IWXAPI getWXApi(Context context) {
        if (wxapi == null) {
            wxapi = App.getWxApi();
        }
        return wxapi;
    }

    /**
     * 微信分享
     *
     * @param sharType 分享类型:1 朋友、2 朋友圈、3 收藏
     * @param title 分享标题
     * @param description 分享内容
     */
    public static void shareWX(Context context, int sharType, String shareUrl, String title, String description, Bitmap thumbData) {
        getWXApi(context);

        WXWebpageObject webpage = new WXWebpageObject();

        webpage.webpageUrl = shareUrl;
        WXMediaMessage msg = new WXMediaMessage(webpage);
        msg.title = title;
        msg.description = description;
        try {
              if (thumbData == null) {
                  thumbData = getHttpBitmap( BitmapFactory.decodeResource(context.getResources(), R.drawable.gaitubiao),true);
             }
        } catch (Exception e) {
            thumbData = BitmapFactory.decodeResource(context.getResources(), R.drawable.gaitubiao);
            e.printStackTrace();
        }

        msg.thumbData = WXUtils.bmpToByteArray(thumbData, true);

        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = buildTransaction("webpage");
        req.message = msg;
        if (sharType == 1) {
            req.scene = SendMessageToWX.Req.WXSceneSession;
        } else if (sharType == 2) {
            req.scene = SendMessageToWX.Req.WXSceneTimeline;
        } else if (sharType == 3) {
            req.scene = SendMessageToWX.Req.WXSceneFavorite;
        }
        wxapi.sendReq(req);

        Log.i(TAG,"微信分享:" + req);

        //TODO 不允许释放,否则使用应用分身会失败
//        if (thumbData != null) {
//            thumbData.recycle();
//            thumbData = null;
//        }
    }

    /**
     * 设置分享图片的大小
     *
     * @param bitMap
     * @param needRecycle
     * @return
     */
    public static Bitmap getHttpBitmap(Bitmap bitMap, boolean needRecycle) {
        int width = bitMap.getWidth();
        int height = bitMap.getHeight();
        // 设置想要的大小
        int newWidth = 80;
        int newHeight = 80;
        // 计算缩放比例
        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;
        // 取得想要缩放的matrix参数
        Matrix matrix = new Matrix();
        matrix.postScale(scaleWidth, scaleHeight);
        // 得到新的图片
        Bitmap newBitMap = Bitmap.createBitmap(bitMap, 0, 0, width, height,
                matrix, true);
        if (needRecycle) bitMap.recycle();
        return newBitMap;
    }

    /**
     * 分享时间
     *
     * @param type
     * @return
     */
    private static String buildTransaction(final String type) {
        return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
    }
}

//在需要的Activity线程获取缩略图

private final int HANDLER_WHAT_1001 = 1001;

Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case 1:
                backgroundAlpha((float) msg.obj);
                break;
            case HANDLER_WHAT_1001:
               getShareThumb();
                break;
        }
    }
};
/**
 * 获取微信缩略图  线程里面获取
 */
private void getShareThumb() {
    stopShareThread();

    shareThread = new Thread(new Runnable() {
        @Override
        public void run() {

            if (detailOfTheActivityBean != null && detailOfTheActivityBean.getData() != null) {
                if (!TextUtils.isEmpty(detailOfTheActivityBean.getData().getActivityPhotoUrl())) {

                    //必须

                    try {
                        thumb = GlideApp.with(DetailOfTheActivityActivity.this)
                                .asBitmap()
                                .load(detailOfTheActivityBean.getData().getActivityPhotoUrl())
                                .centerCrop()
                                .into(80,80)
                                .get();
                    } catch (ExecutionException e) {
                        thumb = null;
                    } catch (InterruptedException e) {
                        thumb = null;
                    }
                } else {
                    thumb = null;
                }
                stopShareThread();
            }
        }
    });
    shareThread.start();


}
点击事件调用这个功能
private void getShareWX() {
    try {
        String shareUrl = "http://wechat.staticvip.cn/pageDetail/share.html?actId=" + activityId;
        String description = "my description";
        if (thumb != null) {
//有缩略图
            ShareUtils.shareWX(DetailOfTheActivityActivity.this, ShareUtils.SHARE_TYPE_1, shareUrl, detailOfTheActivityBean.getData().getActivityName(),  description, thumb);
        } else {
//有缩略图
            ShareUtils.shareWX(DetailOfTheActivityActivity.this, ShareUtils.SHARE_TYPE_1, shareUrl, detailOfTheActivityBean.getData().getActivityName(),  description, null);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

/**
 * 关闭分享线程
 */
private void stopShareThread() {
    if (shareThread != null) {
        shareThread.interrupt(); //将线程挂起,进行结束
        shareThread = null;
    }
}

@Override
protected void onDestroy() {
    if (thumb != null) {
        thumb.recycle();
        thumb = null;
    }

    stopShareThread();
    super.onDestroy();
    EventBus.getDefault().unregister(this);
    UMShareAPI.get(this).release();
}

//微信支付(切记签名一定要正确)

在需要使用的Activity注册

IWXAPI wxapi= WXAPIFactory.createWXAPI(this, "wx5bfac4b79b650ac6");
if (paymentForSignatureBean.getCode() == 1 && paymentForSignatureBean.getMessage().equals("success")) {
    //获取的东西返回给微信
    PayReq request = new PayReq();
    request.appId = paymentForSignatureBean.getData().getAppid();
    request.partnerId = paymentForSignatureBean.getData().getPartnerid();
    request.prepayId = paymentForSignatureBean.getData().getPrepayid();
    request.packageValue = paymentForSignatureBean.getData().getPackageX();
    request.nonceStr = paymentForSignatureBean.getData().getNoncestr();
    request.timeStamp = paymentForSignatureBean.getData().getTimestamp();
    request.sign = paymentForSignatureBean.getData().getSign();
    request.extData = data;
    wxapi.sendReq(request);
}
原创文章 63 获赞 7 访问量 6273

猜你喜欢

转载自blog.csdn.net/weixin_42416789/article/details/99942406