时间:2023-03-14 15:06:02 | 来源:电子商务
时间:2023-03-14 15:06:02 来源:电子商务
如果碰到一些坑的话,请参考我之前写过的意一篇支付宝踩坑的文章:
android 支付宝的植入 《曾经踩过的坑》
/** * 支付宝进行请求 * * @param signInfo */ private void payToOrderService(final String signInfo) { new Thread() { @Override public void run() { super.run(); PayTask payTask = new PayTask(MyScannerPayActivity.this); // String result = payTask.pay(signInfo, true); Map<String, String> result = payTask.payV2(signInfo, true); Message message = mHandler.obtainMessage(); message.what = SDK_PAY_FLAG; message.obj = result; mHandler.sendMessage(message); } }.start(); }
private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case SDK_PAY_FLAG: PayResult payResult = null; try { payResult = new PayResult((Map<String, String>) msg.obj); } catch (Exception e) { e.printStackTrace(); } /** 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。 */ String resultInfo = payResult.getResult();// 同步返回需要验证的信息 String resultStatus = payResult.getResultStatus(); // 判断resultStatus 为9000则代表支付成功 if (TextUtils.equals(resultStatus, PAY_OK)) { ActivityUtils.showActivity(MyScannerPayActivity.this, ScannerPaySuccessActivity.class); finish(); } else if (TextUtils.equals(resultStatus, PAY_FAILED)) {//------------------------->支付失败 // 该笔订单真实的支付结果,需要依赖服务端的异步通知。 Toast.makeText(MyScannerPayActivity.this, "" + payResult.getMemo(), Toast.LENGTH_LONG).show(); } else if (TextUtils.equals(resultStatus, PAY_CANCLE)) {//-------------------------->交易取消 Toast.makeText(MyScannerPayActivity.this, "" + payResult.getMemo(), Toast.LENGTH_LONG).show(); } else if (TextUtils.equals(resultStatus, PAY_NET_ERR)) {//------------------------->网络出现错误 Toast.makeText(MyScannerPayActivity.this, "" + payResult.getMemo(), Toast.LENGTH_LONG).show(); } else if (TextUtils.equals(resultStatus, PAY_WAIT_CONFIRM)) {//--------------------->交替等待 } break; } } };
/***************************************************************** * mMode参数解释: "00" - 启动银联正式环境 "01" - 连接银联测试环境 *****************************************************************/private final String mMode = "00";
注意:微信支付总结:
http://blog.csdn.net/androidstarjack/article/details/50951941
HashMap<String ,String> params = getHeadMap(); params.put("appid", appID);// 微信appid,选择性上传,服务器写死亦可 params.put("money", money);// 支付金额,单位:分 params.put("goodName", goodsName);// 商品名称 params.put("productNum", String.valueOf(12));// 商品的数量- 2.app服务器调用微信“统一下单”接口,得到prePayId订单号并返回prePayId给手机客户端; 3.手机客户端使用prePayId及商品信息调起微信客户端进行支付; 3.1用户操作:输入密码进行支付;返回键取消支付;网络无连接支付失败等; 4.微信客户端回调支付结果给咱们的APP客户端; 5.微信服务器异步通知咱们公司app服务器支付结果(服务器的工作,与客户端无关)
相关的支付调用代码:IWXAPI mWxApi = WXAPIFactory.createWXAPI(mContext, WX_APPID, true); mWxApi.registerApp(WX_APPID); /** * 请求app服务器得到的回调结果 */ @Override public void onGet(JSONObject jsonObject) { if (mWxApi != null) { PayReq req = new PayReq(); req.appId = WX_APPID;// 微信开放平台审核通过的应用APPID try { req.partnerId = jsonObject.getString("partnerid");// 微信支付分配的商户号 req.prepayId = jsonObject.getString("prepayid");// 预支付订单号,app服务器调用“统一下单”接口获取 req.nonceStr = jsonObject.getString("noncestr");// 随机字符串,不长于32位,服务器小哥会给咱生成 req.timeStamp = jsonObject.getString("timestamp");// 时间戳,app服务器小哥给出 req.packageValue = jsonObject.getString("package");// 固定值Sign=WXPay,可以直接写死,服务器返回的也是这个固定值 req.sign = jsonObject.getString("sign");// 签名,服务器小哥给出,他会根据:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3指导得到这个 } catch (JSONException e) { e.printStackTrace(); } mWxApi.sendReq(req); Log.d("发起微信支付申请"); } }
支付宝植入总结:版权:首发于我的csdn博客:https://codegoogler.blog.csdn.net/article/details/72669394
android 支付宝的植入 《曾经踩过的坑》
微信支付总结:
Android 微信支付总结
关键词:支付,总结