注意:
使用正式版签名在微信开放平台填入
微信回调的类记得放在这个包下(自己包名下新建这个包名)
/** * Created by xiaozhuge on 2015/12/22. * 微信支付后回调的界面 */ public class WXPayEntryActivity extends BasicActivity implements IWXAPIEventHandler { private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity"; private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); api = WXAPIFactory.createWXAPI(this, WXPay.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) { switch (resp.errCode) { case 0: //处理支付成功的回调逻辑 break; case -1: Toast.makeText(this, "支付出现错误", Toast.LENGTH_SHORT).show(); break; case -2: Toast.makeText(this, "支付已取消", Toast.LENGTH_SHORT).show(); break; } MyActivityManager.getMyActivityManager().finishActivity(PaySelectActivity.class); MyActivityManager.getMyActivityManager().finishActivity(ConfirmOrderActivity.class); MyActivityManager.getMyActivityManager().finishActivity(); } /** * 处理微信发出的向第三方应用请求app message * <p/> * 在微信客户端中的聊天页面有“添加工具”,可以将本应用的图标添加到其中 * 此后点击图标,下面的代码会被执行。Demo仅仅只是打开自己而已,但你可 * 做点其他的事情,包括根本不打开任何页面 */ public void onGetMessageFromWXReq(WXMediaMessage msg) { Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName()); startActivity(iLaunchMyself); } /** * 处理微信向第三方应用发起的消息 * <p/> * 此处用来接收从微信发送过来的消息,比方说本demo在wechatpage里面分享 * 应用时可以不分享应用文件,而分享一段应用的自定义信息。接受方的微信 * 客户端会通过这个方法,将这个信息发送回接收方手机上的本demo中,当作 * 回调。 * <p/> * 本Demo只是将信息展示出来,但你可做点其他的事情,而不仅仅只是Toast */ public void onShowMessageFromWXReq(WXMediaMessage msg) { if (msg != null && msg.mediaObject != null && (msg.mediaObject instanceof WXAppExtendObject)) { WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject; Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show(); } } }
支付宝的回调在自己activity处理
private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case SDK_PAY_FLAG: PayResult payResult = new PayResult((String) msg.obj); // 支付宝返回此次支付结果及加签,建议对支付宝签名信息拿签约时支付宝提供的公钥做验签 String resultInfo = payResult.getResult(); String orderNo = payResult.getOrderNo(); String totalMoney = payResult.getTotalMoney(); String resultStatus = payResult.getResultStatus(); String result = payResult.getResult(); // 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档 if (resultStatus.equals("9000")) { // 在客户端处理支付成功的逻辑 } else { // 判断resultStatus 为非“9000”则代表可能支付失败 // “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态) if (TextUtils.equals(resultStatus, "8000")) { Toast.makeText(PaySelectActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show(); } else { // 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误 Toast.makeText(PaySelectActivity.this, "支付已取消...", Toast.LENGTH_SHORT).show(); } } break; default: break; } } };
使用方式:
if (payment_pay_app_id.equals("alipay")) { IPayFactory factory = new AliFactory(); AliPay alipay = (AliPay) factory.createPayEntry(); alipay.setAliPay("蛋白粉", "国民健康云", order_id, bd.toString()); alipay.pay(PaySelectActivity.this, mHandler, SDK_PAY_FLAG); } else if (payment_pay_app_id.equals("wxpayjsapi")) { IPayFactory factory = new WXFactory(); WXPay wxPay = (WXPay) factory.createPayEntry(); wxPay.setWXPay("保健产品", order_id, Integer.toString(bd.multiply(new BigDecimal(100)).intValue())); wxPay.pay(mContext); }
下载地址:http://download.youkuaiyun.com/detail/zhudewei007/9452839