時間:2023-03-14 15:06:02 | 來源:電子商務
時間:2023-03-14 15:06:02 來源:電子商務
如果碰到一些坑的話,請參考我之前寫過的意一篇支付寶踩坑的文章:
android 支付寶的植入 《曾經(jīng)踩過的坑》
/** * 支付寶進行請求 * * @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(); } /** 對于支付結(jié)果,請商戶依賴服務端的異步通知結(jié)果。同步通知結(jié)果,僅作為支付結(jié)束的通知。 */ 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)) {//------------------------->支付失敗 // 該筆訂單真實的支付結(jié)果,需要依賴服務端的異步通知。 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)) {//------------------------->網(wǎng)絡出現(xiàn)錯誤 Toast.makeText(MyScannerPayActivity.this, "" + payResult.getMemo(), Toast.LENGTH_LONG).show(); } else if (TextUtils.equals(resultStatus, PAY_WAIT_CONFIRM)) {//--------------------->交替等待 } break; } } };
/***************************************************************** * mMode參數(shù)解釋: "00" - 啟動銀聯(lián)正式環(huán)境 "01" - 連接銀聯(lián)測試環(huán)境 *****************************************************************/private final String mMode = "00";
注意:微信支付總結(jié):
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));// 商品的數(shù)量- 2.app服務器調(diào)用微信“統(tǒng)一下單”接口,得到prePayId訂單號并返回prePayId給手機客戶端; 3.手機客戶端使用prePayId及商品信息調(diào)起微信客戶端進行支付; 3.1用戶操作:輸入密碼進行支付;返回鍵取消支付;網(wǎng)絡無連接支付失敗等; 4.微信客戶端回調(diào)支付結(jié)果給咱們的APP客戶端; 5.微信服務器異步通知咱們公司app服務器支付結(jié)果(服務器的工作,與客戶端無關(guān))
相關(guān)的支付調(diào)用代碼:IWXAPI mWxApi = WXAPIFactory.createWXAPI(mContext, WX_APPID, true); mWxApi.registerApp(WX_APPID); /** * 請求app服務器得到的回調(diào)結(jié)果 */ @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服務器調(diào)用“統(tǒng)一下單”接口獲取 req.nonceStr = jsonObject.getString("noncestr");// 隨機字符串,不長于32位,服務器小哥會給咱生成 req.timeStamp = jsonObject.getString("timestamp");// 時間戳,app服務器小哥給出 req.packageValue = jsonObject.getString("package");// 固定值Sign=WXPay,可以直接寫死,服務器返回的也是這個固定值 req.sign = jsonObject.getString("sign");// 簽名,服務器小哥給出,他會根據(jù):https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3指導得到這個 } catch (JSONException e) { e.printStackTrace(); } mWxApi.sendReq(req); Log.d("發(fā)起微信支付申請"); } }
支付寶植入總結(jié):版權(quán):首發(fā)于我的csdn博客:https://codegoogler.blog.csdn.net/article/details/72669394
android 支付寶的植入 《曾經(jīng)踩過的坑》
微信支付總結(jié):
Android 微信支付總結(jié)
關(guān)鍵詞:支付,總結(jié)
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。