收藏
回答

微信支付成功或失败后不走回调是怎么回事?

1.WXEntryActivity 类

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
 
    private static final String WECHAT_APPID = "我的appid";
    private IWXAPI api;
 
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        api = WXAPIFactory.createWXAPI(this, WECHAT_APPID);
        api.handleIntent(getIntent(), this);
    }
 
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        api.handleIntent(intent, this);
    }
 
    @Override
    public void onReq(BaseReq baseReq) {
        Toast.makeText(this, "onReq  1500", Toast.LENGTH_SHORT).show();
    }
 
    @Override
    public void onResp(BaseResp baseResp) {
        ToastUtils.showShort("  微信支付返回码"+baseResp.errCode);
        LogUtils.d("1923  返回码" + baseResp.errCode);
        if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("支付结果");
            builder.setMessage(String.valueOf(baseResp.errCode));
            builder.show();
        }
    }
}

2.支付代码:

private void wechatPay(WechatPayBean bean) {
        String appid = bean.getAppid();//appid
        String mch_id = bean.getMch_id();//商户号
        String prepay_id = bean.getPrepay_id();//预支付交易会话ID
        String nonce_str = bean.getNonce_str();//随机字符串
        String time_stamp = bean.getTime_stamp();//时间戳
//        String sign = bean.getSign();//签名
        IWXAPI api = WXAPIFactory.createWXAPI(OrderConfirmActivity.this, appid, false);//填写自己的APPIDapi.registerApp("wxAPPID");//填写自己的APPID,注册本身
        api.registerApp(appid);
        PayReq req = new PayReq();//PayReq就是订单信息对象
        req.appId = appid;//你的微信appid
        req.partnerId = mch_id;//商户号
        req.prepayId = prepay_id;//预支付交易会话ID
        req.nonceStr = nonce_str;//随机字符串
        req.timeStamp = time_stamp;//时间戳
        req.packageValue = "Sign=WXPay";//扩展字段,这里固定填写Sign=WXPay
        //todo:sign必须由appId等六个值拼接而成
        req.sign = bean.getSign();//签名
        api.sendReq(req);//将订单信息对象发送给微信服务器,即发送支付请求
req.timeStamp));
//        req.sign = getSign(list);//签名
    }

3.清单文件注册:

<activity
      android:name=".wxapi.WXEntryActivity"
      android:label="@string/app_name"
      android:theme="@android:style/Theme.Translucent.NoTitleBar"
      android:exported="true"
      android:taskAffinity="我的包名"
      android:launchMode="singleTask">
  </activity>


最后一次编辑于  11-26
回答关注问题邀请回答
收藏

2 个回答

  • 微信支付技术助手1
    微信支付技术助手1
    11-26

    失败是没有回调的,只有支付成功才会有。

    11-26
    赞同
    回复
  • 痛快科技
    痛快科技
    11-26

    https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=23_2&index=2

    可以先自己验证一下

    11-26
    赞同
    回复 4
    • ☆兔子☆
      ☆兔子☆
      11-26
      老哥,我这个是本地APP端的回调不走啊,支付是成功的,微信都已经扣款了
      11-26
      回复
    • 痛快科技
      痛快科技
      11-26回复☆兔子☆
      奥,以为是微信支付异步回调呢
      11-26
      回复
    • ☆兔子☆
      ☆兔子☆
      11-26回复痛快科技
      你觉得我这个问题产生的原因可能是什么?我半天没找到原因,也是按照官方集成步骤来的了
      11-26
      回复
    • 痛快科技
      痛快科技
      11-26回复☆兔子☆
      是否有其他报错信息
      11-26
      回复