copy jar
copy java
清单文件: 个人感觉 scheme 过滤不需要加 因为我是百度看到别人加了 所以就加上了 scheme 是 appid 可以去掉试一试 应该是没有问题的
使用时 :先注册
msgApi = WXAPIFactory.createWXAPI(mContext, Constants.APP_ID); me_shoppingCart_order_pay = this;
然后访问服务器 让其返回调起支付所需参数
WxBean2 wxPayBean = gson.fromJson(response.get(),WxBean2.class); PayReq req = new PayReq(); req.appId = wxPayBean.getResult().getAppid(); req.partnerId = wxPayBean.getResult().getPartnerid(); req.prepayId = wxPayBean.getResult().getPrepayid(); req.nonceStr = wxPayBean.getResult().getNoncestr(); req.timeStamp = String.valueOf(wxPayBean.getResult().getTimestamp()); req.packageValue = wxPayBean.getResult().getPackageX(); req.sign = wxPayBean.getResult().getSign(); req.extData = "app data"; // optional SPUtils.put(mContext,"isWxPayOrder",true); SPUtils.put(mContext,"isWxPayOrderId",order_id); // 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信 ToastUtils.showToast(mContext, "正常调起支付"); msgApi.sendReq(req);
生成签名的参数:
appId、nonceStr、packageValue、partnerId、prepayId、timeStamp
注意:正式包才可以吊起微信支付
回调的处理: 这里其实可以自定义个监听 用来处理 支付后的界面回退问题 我这里直接在sp中做的标记
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler { private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity"; private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.pay_result); api = WXAPIFactory.createWXAPI(this, Constants.APP_ID); api.handleIntent(getIntent(), this); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); api.handleIntent(intent, this); } @SuppressLint("LongLogTag") @Override public void onReq(BaseReq req) { Log.e(TAG, "发起请求"); } @SuppressLint("LongLogTag") @Override public void onResp(BaseResp resp) { Log.e(TAG, "onPayFinish, errCode = " + resp.errCode); Log.e(TAG, "onPayFinish, toString = " + resp.toString()); Log.e(TAG, "onPayFinish, errStr = " + resp.errStr); Log.e(TAG, "onPayFinish, transaction = " + resp.transaction); final BaseResp finalResp = resp; if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.app_tip); String msg =""; switch (resp.errCode){ case 0: // ToastUtils.showToast(this,"支付成功"); msg = "支付成功"; // getSystemService(ActivityManager); break; case -1: // ToastUtils.showToast(this,"支付失败"); msg = "支付失败"; break; case -2: // ToastUtils.showToast(this,"取消支付"); msg = " 未支付"; break; } builder.setMessage(getString(R.string.pay_result_callback_msg, msg)); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (finalResp.errCode == 0 && (boolean)SPUtils.get(WXPayEntryActivity.this,"isWxPayOrder",false)){ String payOrderId = (String)SPUtils.get(WXPayEntryActivity.this,"isWxPayOrderId",""); if (!TextUtils.isEmpty(payOrderId)){ Bundle bundle = new Bundle(); bundle.putString("order_id",payOrderId); ActivityUtils.jumpToActivity(WXPayEntryActivity.this,Me_Order_Detail.class,bundle); SPUtils.put(WXPayEntryActivity.this,"isWxPayOrder",false); SPUtils.put(WXPayEntryActivity.this,"isWxPayOrderId",""); Me_ShoppingCart_Order_Pay.me_shoppingCart_order_pay.finish(); } } finish(); } }); builder.show(); } } }