Android使用微信支付SDK的集成和支付结果的回调问题。

微信支付的事例代码下载链接:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

下载下来是一个eclipse工程,导入eclipse中会报错,估计是jar包依赖问题,我使用的AS,所以我也没有去管它,只是看了一下代码。使用AS直接用build依赖导入就行了。

示例代码中有一个支付订单的对象:

PayReq req = new PayReq();

按照他的属性把相关的订单属性赋值就OK了

req.appId = json.getString("appid");
req.partnerId = json.getString("partnerid");
req.prepayId = json.getString("prepayid");

req.nonceStr = json.getString("noncestr");

req.timeStamp = json.getString("timestamp");

req.packageValue = json.getString("package");

req.sign = json.getString("sign");

req.extData = "app data"; // optional

有个要求:在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信

注册方法很简单:

商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:

final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, “wxd930ea5d5a258f4f”);

// 将该app注册到微信

msgApi.registerApp("wxd930ea5d5a258f4f");

这里我写到了自己的Application里面。

然后发起支付:msgApi.sendReq(req);

关于支付结果回调微信要求要有一包名为wxapi,然后里面有一个WXPayEntryActivity界面,因为从微信支付页面返回APP,它会主动跳转这个界面并返回结果(很扯淡)。微信文档中也有一个提示:支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。

就是说客户端返回的结果仅供参考,那用户取消支付应该是准确的,明明取消支付,在充值页面弹窗提示一下就OK了,但是还是要跳回调页面。若果说把支付页面直接写到WXPayEntryActivity这个界面也可以,但是APP不只有一个支付页面怎么搞?和支付宝支付也不统一是吧。

我是在回调方法中这样写的:

@Override
   public void onResp(BaseResp resp) {
//    Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);

      if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
         Intent intent = new Intent();
         intent.setClass(WXPayEntryActivity.this,mAppContext.getActivity().getClass());
         intent.putExtra("resp",resp.errCode);
         startActivity(intent);
         finish();
      } else {
         finish();
      }
   }

其中mAppContext是我定义的Application,通过getActivity可以知道是哪个界面支付的,然后通过获取到的结果直接跳转到充值页面,在充值页面通过onNewIntent来获取显示支付结果。有个问题是,支付完以后会闪一下。

最好的办法当然是不写WXPayEntryActivity这个界面,就是说不获取微信客户端返回结果,每次返回到APP,也就是支付页面,都去向后台询问支付结果,因为后台能获取到微信的支付通知。问题就是后台能不能及时的返回了。这也体现了使用Ping++的好处,许多的支付方式都能统一起来,方便开发!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android 微信支付 SDK 的对调打印主要是指在开发过程中,使用 SDK 提供的接口进行支付功能的调试和输出日志信息。 对调打印的目的是为了方便开发人员在开发过程中进行调试和定位问题。在使用微信支付 SDK 进行支付功能开发时,可以通过在关键代码位置添加打印语句,用于输出相关的调试信息,以便于分析和调试。 在对调打印中,可以根据需要打印的信息进行选择,如订单号、支付结果、微信支付 SDK 的版本等。一般来说,在支付请求发送之前和支付结果回调之后的关键阶段打印信息较多,可以通过打印语句输出相关的请求参数和回调结果,以便于了解支付流程和排查可能出现的问题。 在使用 Android 微信支付 SDK 进行对调打印时,需要注意以下几点: 1. 确保在正确的位置插入打印语句,一般在关键代码处添加,如支付请求发送前、支付结果回调等。 2. 打印的信息要具有可读性,可以输出关键参数的值、状态信息等,便于分析和定位问题。 3. 在实际发布应用之前,需要及时去除对调打印相关的代码,以避免信息泄露和代码冗余。 总之,通过对调打印的使用,开发人员能够更方便地进行支付功能的开发和调试,及时排查问题并优化代码,提高应用的支付体验。 ### 回答2: Android微信支付SDK是一种用于在Android应用程序中集成微信支付功能的开发工具包。在进行对调打印时,主要有以下几个步骤: 首先,你需要确认你的开发环境已经配置好,包括Android Studio和相关的开发工具包。接下来,在微信开放平台注册一个开发者账号,并创建一个应用,获得相应的AppID和AppSecret。 然后,你需要下载并导入微信支付SDK到你的Android项目中。可以通过在项目的build.gradle文件中添加相关依赖来导入SDK。然后,在你的项目中创建一个用于处理支付结果的回调。 接着,你需要在你的应用中添加调起微信支付的代码。首先,你需要获取一个用于支付的预支付订单号,并根据微信支付要求对订单进行签名处理。然后,你可以使用WXAPIFactory工厂的createWXAPI方法创建一个WXAPI对象,并将AppID注册到该对象上。 最后,在调起支付的时候,你需要构建一个PayReq对象,并将必要的支付参数设置到该对象中。然后,调用WXAPI的sendReq方法,将PayReq对象发送给微信客户端进行支付支付结果将通过之前注册的回调返回给你的应用。 总结起来,对调打印的过程包括了注册微信开放平台账号,导入微信支付SDK,实现支付结果回调,创建并注册WXAPI对象,构建并发送PayReq对象。通过以上步骤,你的Android应用就可以使用微信支付功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值