Android 微信支付

1、导入依赖

//微信支付
//官方sdk下载文档:https://developers.weixin.qq.com/doc/oplatform/Downloads/Android_Resource.html
//官方集成文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:+'

2、初始化微信33

/**
 * 初始化微信
 */
private void initWechat() {
    wxapi = WXAPIFactory.createWXAPI(getApplicationContext(), null);
    wxapi.registerApp(Config.WECHAT_AK);//Config.WECHAT_AK表示App Id
}

3、微信支付

/**
 * 处理微信支付
 *
 * @param data
 */
private void processWechat(WechatPay data) {
    //把服务端返回的参数
    //设置到对应的字段
    PayReq request = new PayReq();

    request.appId = data.getAppid();
    request.partnerId = data.getPartnerid();
    request.prepayId = data.getPrepayid();
    request.nonceStr = data.getNoncestr();
    request.timeStamp = data.getTimestamp();
    request.packageValue = data.getPackageValue();
    request.sign = data.getSign();

    AppContext.getInstance().getWxapi().sendReq(request);
}

 4、支付结果处理:包名下创建.wxapi.WXPayEntryActivity.java

/**
 * 微信支付回调界面
 */
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
    private static final String TAG = "WXPayEntryActivity";

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

        TextView textView = new TextView(this);
        setContentView(textView);

        processIntent(getIntent());
    }

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

    /**
     * 处理微信回调结果
     *
     * @param intent
     */
    private void processIntent(Intent intent) {
        AppContext.getInstance().getWxapi().handleIntent(intent, this);
    }

    /**
     * 请求微信,会回调该方法
     *
     * @param baseReq
     */
    @Override
    public void onReq(BaseReq baseReq) {
    }

    /**
     * 微信回调
     *
     * @param baseResp
     */
    @Override
    public void onResp(BaseResp baseResp) {
        Timber.d("onResp %d %d %s", baseResp.getType(), baseResp.errCode, baseResp.errStr);

        if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            //支付回调

            //发送通知,支付界面处理
            EventBus.getDefault().post(new WechatPayStatusChangedEvent(baseResp));
            finish();
        }
    }
}

微信支付状态改变 

/**
     * 微信支付状态改变了
     *
     * @param event
     */
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onWechatPayStatusChanged(WechatPayStatusChangedEvent event) {
        if (BaseResp.ErrCode.ERR_OK == event.getData().errCode) {
            //本地支付成功
            showLoading(R.string.hint_pay_wait);
            binding.primary.postDelayed(() -> {
                checkPayStatus();
            }, 3000);
        } else if (BaseResp.ErrCode.ERR_USER_CANCEL == event.getData().errCode) {
            //支付取消
        } else {
            //支付失败
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值