日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 微信支付问题总结

發布時間:2024/3/26 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 微信支付问题总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先我們先看一個Android微信支付時遇到的一個錯誤提示:

onPayFinish, errCode = -1?

當你參數簽名都沒有問題的時候,出現這個提示,請按照如下操作:

在你的項目測試android微信的組件(微信分享、微信支付等)的時候,一定要用你自己的keystore簽名出來測試,如果用debug.keystore肯定是不成功的!


1,在微信開放平臺申請app_id,app_key我就不在這里敘述了,稍后我會把開發文檔一并上傳的,你也可以去微信開放平臺自行查看(差不多一個周才會通過審核)?
https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN&token=44d65f9f1df0d4725b941e217a0bf769fbb51b3a

2,下面我就來說一說微信支付開發時需要注意的地方:

2.1 首先來看一下,微信支付的架構和流程圖?
?
?
3.2 再來看一下成功調起微信支付的界面?
?
3下面開始講解配置工程

3.1 這里必須要有wxapi這個包名,同時必須有WXPayEntryActivity這個類名,否則無法調起微信支付,(開發文檔沒有標注,廢了好大周章)?

3.2 支付成功通知:在WXPayEntryActivity的OnResp中處理,不能以微信返回的通知界面為準(我遇到的情況,網絡不穩定的時候,微信返回界面提示支付失敗,但是收到微信通知其實已經支付成功了),必須要去自己的服務器查詢支付狀態,這里微信建議用輪循機制去查詢(最好聽微信勸,O(∩_∩)O哈哈~)

[java] view plaincopyprint?
  • @Override??
  • ???public?void?onResp(BaseResp?resp)?{??
  • ???????Log.d(TAG,?”onPayFinish,?errCode?=?”?+?resp.errCode);??
  • ??
  • ???????if?(resp.getType()?==?ConstantsAPI.COMMAND_PAY_BY_WX)?{??
  • ???????????AlertDialog.Builder?builder?=?new?AlertDialog.Builder(this);??
  • ???????????builder.setTitle(R.string.app_tip);??
  • ???????????builder.setMessage(getString(R.string.pay_result_callback_msg,?resp.errStr?+”;code=”?+?String.valueOf(resp.errCode)));??
  • ???????????builder.show();??
  • ???????}??
  • ???}??
  • @Overridepublic void onResp(BaseResp resp) {Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle(R.string.app_tip);builder.setMessage(getString(R.string.pay_result_callback_msg, resp.errStr +";code=" + String.valueOf(resp.errCode)));builder.show();}}

    3.3 生成prepay_id,在服務器完成,由服務器去跟微信服務器交互,客戶端不需要參與

    [java] view plaincopyprint?
  • /**?
  • ???*?獲取預支付訂單號:?
  • ???*?prepay_id(服務器完成)!!!?
  • ???*?注意:如果服務端開發文檔跟客戶端demo里的參數不一樣,以demo里的參數為準,?
  • ???*?否則服務器傳過來的參數無法調起微信支付!!!?
  • ???*?*/??
  • ???private?String?genProductArgs()?{??
  • ???????StringBuffer?xml?=?new?StringBuffer();??
  • ??
  • ???????try?{??
  • ???????????String??nonceStr?=?genNonceStr();??
  • ??
  • ??
  • ???????????xml.append(”</xml>”);??
  • ??????????List<NameValuePair>?packageParams?=?new?LinkedList<NameValuePair>();??
  • ???????????packageParams.add(new?BasicNameValuePair(“appid”,?Constants.APP_ID));??
  • ???????????packageParams.add(new?BasicNameValuePair(“body”,?“APP?pay?test”));??
  • ???????????/**這里用的是mach_id,跟sign簽名時參數名不同,一定要注意*/??
  • ???????????packageParams.add(new?BasicNameValuePair(“mch_id”,?Constants.MCH_ID));??
  • ???????????packageParams.add(new?BasicNameValuePair(“nonce_str”,?nonceStr));??
  • ???????????packageParams.add(new?BasicNameValuePair(“notify_url”,?“http://121.40.35.3/test”));??
  • ???????????packageParams.add(new?BasicNameValuePair(“out_trade_no”,genOutTradNo()));??
  • ???????????packageParams.add(new?BasicNameValuePair(“spbill_create_ip”,“127.0.0.1”));??
  • ???????????packageParams.add(new?BasicNameValuePair(“total_fee”,?“1”));??
  • ???????????packageParams.add(new?BasicNameValuePair(“trade_type”,?“APP”));??
  • ??
  • ??
  • ???????????String?sign?=?genPackageSign(packageParams);??
  • ???????????packageParams.add(new?BasicNameValuePair(“sign”,?sign));??
  • ??
  • ??
  • ??????????String?xmlstring?=toXml(packageParams);??
  • ??
  • ???????????return?xmlstring;??
  • ??
  • ???????}?catch?(Exception?e)?{??
  • ???????????Log.e(TAG,?”genProductArgs?fail,?ex?=?”?+?e.getMessage());??
  • ???????????return?null;??
  • ???????}??
  • ??
  • ??
  • ???}??
  • /*** 獲取預支付訂單號:* prepay_id(服務器完成)!!!* 注意:如果服務端開發文檔跟客戶端demo里的參數不一樣,以demo里的參數為準,* 否則服務器傳過來的參數無法調起微信支付!!!* */private String genProductArgs() {StringBuffer xml = new StringBuffer();try {String nonceStr = genNonceStr();xml.append("</xml>");List<NameValuePair> packageParams = new LinkedList<NameValuePair>();packageParams.add(new BasicNameValuePair("appid", Constants.APP_ID));packageParams.add(new BasicNameValuePair("body", "APP pay test"));/**這里用的是mach_id,跟sign簽名時參數名不同,一定要注意*/packageParams.add(new BasicNameValuePair("mch_id", Constants.MCH_ID));packageParams.add(new BasicNameValuePair("nonce_str", nonceStr));packageParams.add(new BasicNameValuePair("notify_url", "http://121.40.35.3/test"));packageParams.add(new BasicNameValuePair("out_trade_no",genOutTradNo()));packageParams.add(new BasicNameValuePair("spbill_create_ip","127.0.0.1"));packageParams.add(new BasicNameValuePair("total_fee", "1"));packageParams.add(new BasicNameValuePair("trade_type", "APP"));String sign = genPackageSign(packageParams);packageParams.add(new BasicNameValuePair("sign", sign));String xmlstring =toXml(packageParams);return xmlstring;} catch (Exception e) {Log.e(TAG, "genProductArgs fail, ex = " + e.getMessage());return null;}}

    3.4 獲取二次簽名sign

    [java] view plaincopyprint?
  • private?void?genPayReq()?{??
  • ??
  • ????????req.appId?=?Constants.APP_ID;??
  • ????????req.partnerId?=?Constants.MCH_ID;??
  • ????????req.prepayId?=?resultunifiedorder.get(”prepay_id”);??
  • //??????req.packageValue?=?“prepay_id=”+resultunifiedorder.get(“prepay_id”);??
  • ????????req.packageValue?=?”Sign=WXPay”;??
  • ????????req.nonceStr?=?genNonceStr();??
  • ????????req.timeStamp?=?String.valueOf(genTimeStamp());??
  • ??
  • ??
  • ????????List<NameValuePair>?signParams?=?new?LinkedList<NameValuePair>();??
  • ????????signParams.add(new?BasicNameValuePair(“appid”,?req.appId));??
  • ????????signParams.add(new?BasicNameValuePair(“noncestr”,?req.nonceStr));??
  • ????????/**?
  • ?????????*?這里的package參數值必須是Sign=WXPay,否則IOS端調不起微信支付,?
  • ?????????*?(參數值是”prepay_id=”+resultunifiedorder.get(“prepay_id”)的時候Android可以,IOS不可以)?
  • ?????????*/??
  • ????????signParams.add(new?BasicNameValuePair(“package”,?req.packageValue));??
  • ????????/**注意二次簽名這里不再是mch_id,變成了prepayid;*/??
  • ????????signParams.add(new?BasicNameValuePair(“partnerid”,?req.partnerId));??
  • ????????signParams.add(new?BasicNameValuePair(“prepayid”,?req.prepayId));??
  • ????????signParams.add(new?BasicNameValuePair(“timestamp”,?req.timeStamp));??
  • ??
  • ????????req.sign?=?genAppSign(signParams);??
  • ??
  • ????????sb.append(”sign\n”+req.sign+“\n\n”);??
  • ??
  • ????????show.setText(sb.toString());??
  • ??
  • ????????Log.e(”orion”,?signParams.toString());??
  • ??
  • ????}??
  • private void genPayReq() {req.appId = Constants.APP_ID;req.partnerId = Constants.MCH_ID;req.prepayId = resultunifiedorder.get("prepay_id"); // req.packageValue = "prepay_id="+resultunifiedorder.get("prepay_id");req.packageValue = "Sign=WXPay";req.nonceStr = genNonceStr();req.timeStamp = String.valueOf(genTimeStamp());List<NameValuePair> signParams = new LinkedList<NameValuePair>();signParams.add(new BasicNameValuePair("appid", req.appId));signParams.add(new BasicNameValuePair("noncestr", req.nonceStr));/*** 這里的package參數值必須是Sign=WXPay,否則IOS端調不起微信支付,* (參數值是"prepay_id="+resultunifiedorder.get("prepay_id")的時候Android可以,IOS不可以)*/signParams.add(new BasicNameValuePair("package", req.packageValue));/**注意二次簽名這里不再是mch_id,變成了prepayid;*/signParams.add(new BasicNameValuePair("partnerid", req.partnerId));signParams.add(new BasicNameValuePair("prepayid", req.prepayId));signParams.add(new BasicNameValuePair("timestamp", req.timeStamp));req.sign = genAppSign(signParams);sb.append("sign\n"+req.sign+"\n\n");show.setText(sb.toString());Log.e("orion", signParams.toString());}

    3.5 起調微信支付

    [java] view plaincopyprint?
  • private?void?sendPayReq()?{??
  • ????????msgApi.registerApp(Constants.APP_ID);??
  • ????????msgApi.sendReq(req);??
  • ????}??
  • private void sendPayReq() {msgApi.registerApp(Constants.APP_ID);msgApi.sendReq(req);}

    3.6 配置Manifest.xml,權限什么的按照文檔的配置就行了

    [html] view plaincopyprint?
  • <activity??
  • ???????????android:name=“.PayActivity”??
  • ???????????android:label=“@string/app_name”??
  • ???????????android:exported=“true”??
  • ???????????android:launchMode=“singleTop”>??
  • ???????????<intent-filter>??
  • ???????????????<action?android:name=“android.intent.action.MAIN”?/>??
  • ???????????????<category?android:name=“android.intent.category.LAUNCHER”?/>??
  • ???????????</intent-filter>??
  • ???????????<!–這個intent-filter不要忘了–>??
  • ???????????<intent-filter>??
  • ???????????????<action?android:name=“android.intent.action.VIEW”/>??
  • ???????????????<category?android:name=“android.intent.category.DEFAULT”/>??
  • ???????????????<data?android:scheme=“wxd930ea5d5a258f4f”/>??
  • ???????????</intent-filter>??
  • ???????</activity>??
  • <activityandroid:name=".PayActivity"android:label="@string/app_name"android:exported="true"android:launchMode="singleTop"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><!--這個intent-filter不要忘了--><intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="wxd930ea5d5a258f4f"/></intent-filter></activity>

    4,支付通知接口和退款接口按照開發文檔即可,這里不再贅述

    5, 在你的項目測試微信支付的時候,一定要用你自己的keystore簽名出來測試,如果用debug.keystore肯定是不成功的,切記,切記,不要鬧烏龍!!!

    好了,就寫這么多吧,以此文來祭奠我和同事被騰訊坑死的那幾天,如果有不懂的童鞋可以給我留言,或者QQ:1031012395聯系我,大家可以去這個地址下載微信支付v3.0版本的開發文檔和demo,以及一個成功的微信支付demo app,輪詢事件大家可以參考我的下一篇blog,從別人那里轉來的,寫的挺詳細的?
    http://download.csdn.net/detail/baidu_17508977/8521101


    補充問題:

    微信支付v3 body中文無法支付問題

    String nonceStr = genNonceStr();xml.append(“</xml>”);// Yuebai Steam Car Wash ServiceList<NameValuePair> packageParams = new LinkedList<NameValuePair>();packageParams.add(new BasicNameValuePair(“appid”, Constants.APP_ID));packageParams.add(new BasicNameValuePair(“body”, “月白洗車”));// 這個一改就無法支付packageParams.add(new BasicNameValuePair(“mch_id”, Constants.MCH_ID));packageParams.add(new BasicNameValuePair(“nonce_str”, nonceStr));packageParams.add(new BasicNameValuePair(“notify_url”, HttpConstant.wxapi));packageParams.add(new BasicNameValuePair(“out_trade_no”, orderid));packageParams.add(new BasicNameValuePair(“spbill_create_ip”, “127.0.0.1”));int a = (int) (Integer.parseInt(m) * 100);packageParams.add(new BasicNameValuePair(“total_fee”, a + “”));packageParams.add(new BasicNameValuePair(“trade_type”, “APP”));String sign = genPackageSign(packageParams);packageParams.add(new BasicNameValuePair(“sign”, sign));String xmlstring = toXml(packageParams);?return?new String(xmlstring.toString().getBytes(), “ISO8859-1”);//這句加上就可以了吧xml轉碼下

    ?

    另外說明的是,如果想增加參數,請先看看下面的內容。

    簽名算法

    簽名生成的通用步驟如下:

    第一步,設所有發送或者接收到的數據為集合M,將集合M內非空參數值的參數按照參數名ASCII碼從小到大排序(字典序),使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

    特別注意以下重要規則:

  • ◆ 參數名ASCII碼從小到大排序(字典序);
  • ◆ 如果參數的值為空不參與簽名;
  • ◆ 參數名區分大小寫;
  • ◆ 驗證調用返回或微信主動通知簽名時,傳送的sign參數不參與簽名,將生成的簽名與該sign值作校驗。
  • ◆ 微信接口可能增加字段,驗證簽名時必須支持增加的擴展字段
  • 第二步,在stringA最后拼接上key得到stringSignTemp字符串,并對stringSignTemp進行MD5運算,再將得到的字符串所有字符轉換為大寫,得到sign值signValue。

    key設置路徑:微信商戶平臺(pay.weixin.qq.com)–>賬戶設置–>API安全–>密鑰設置

    舉例:

    假設傳送的參數如下:

    appid: wxd930ea5d5a258f4f

    mch_id: 10000100

    device_info: 1000

    body: test

    nonce_str: ibuaiVcKdpRxkhJA

    第一步:對參數按照key=value的格式,并按照參數名ASCII字典序排序如下:

    stringA=”appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA”;

    第二步:拼接API密鑰:

    stringSignTemp=”stringA&key=192006250b4c09247ec02edce69f6a2d”

    sign=MD5(stringSignTemp).toUpperCase()=”9A0A8659F005D6984697E2CA0A9CF3B7”

    最終得到最終發送的數據:

    <xml>

    <appid>wxd930ea5d5a258f4f</appid>

    <mch_id>10000100</mch_id>

    <device_info>1000<device_info>

    <body>test</body>

    <nonce_str>ibuaiVcKdpRxkhJA</nonce_str>

    <sign>9A0A8659F005D6984697E2CA0A9CF3B7</sign>

    <xml>

    微信提供相關接口在線簽名驗證工具:點擊進入。

    ?

    ?

    所以,如果我們增加兩個參數:attach、device_info就必須根據參數名ASCII字典序增加,如下圖位置。如果將參數attach放在trade_type之后肯定就會報簽名錯誤。

    List<NameValuePair> packageParams = new LinkedList<NameValuePair>(); packageParams.add(new BasicNameValuePair("appid", Constant.weixin_appID)); packageParams.add(new BasicNameValuePair("attach", mOrderNo)); packageParams.add(new BasicNameValuePair("body", "訂單-" + mOrderNo)); //商品描述 packageParams.add(new BasicNameValuePair("device_info", "ANDROID")); packageParams.add(new BasicNameValuePair("mch_id", Constant.MCH_ID)); packageParams.add(new BasicNameValuePair("nonce_str", nonceStr)); packageParams.add(new BasicNameValuePair("notify_url", "http://wap.baidu.com/wechat_notify.php")); packageParams.add(new BasicNameValuePair("out_trade_no",genOutTradNo())); packageParams.add(new BasicNameValuePair("spbill_create_ip", "127.0.0.1")); packageParams.add(new BasicNameValuePair("total_fee", String.valueOf((int) (mMoney * 100))));//商品金額,以分為單位 packageParams.add(new BasicNameValuePair("trade_type", "APP"));

    ?

    最后再為大家分享點干貨。

    在計算訂單總價的時候,有時會出現***.09999999999999998的現象,這個是浮點數計算出現的問題,得需要?BigDecimal解決高精度計算。

    下面是我的解決方法,大家有更好的可以分享下。

    [java] view plaincopyprint?
  • /*?
  • ?????*?總訂單的價格(不包含運費)?
  • ?????*?@return?
  • ?????*/??
  • ????public?double?calculatingTotalPriceNoFreight()?{??
  • ????????double?total?=?0.00;??
  • ????????for?(ShopCartItem?cartItem?:?getDataList())?{??
  • ????????????double?orderPrice?=?calculatingOrderPrice(cartItem);??
  • ????????????total?+=?orderPrice;??
  • ????????}??
  • ??
  • ????????//double值保留?2?位小數,使用銀行家舍入法??
  • ????????return?MathUtil.round(total,?2,?BigDecimal.ROUND_HALF_EVEN)?;??
  • ????}??
  • /** 總訂單的價格(不包含運費)* @return*/public double calculatingTotalPriceNoFreight() {double total = 0.00;for (ShopCartItem cartItem : getDataList()) {double orderPrice = calculatingOrderPrice(cartItem);total += orderPrice;}//double值保留 2 位小數,使用銀行家舍入法return MathUtil.round(total, 2, BigDecimal.ROUND_HALF_EVEN) ;}

    MathUtil.Java

    [java] view plaincopyprint?
  • package?com.haier.cabinet.customer.util;??
  • ??
  • import?java.math.BigDecimal;??
  • ??
  • public?class?MathUtil?{??
  • ??
  • ????/**????
  • ?????*?對double數據進行取精度.????
  • ?????*?@param?value??double數據.????
  • ?????*?@param?scale??精度位數(保留的小數位數).????
  • ?????*?@param?roundingMode??精度取值方式.????
  • ?????*?@return?精度計算后的數據.????
  • ?????*/?????
  • ????public?static?double?round(double?value,?int?scale,????
  • ?????????????int?roundingMode)?{??????
  • ????????BigDecimal?bd?=?new?BigDecimal(value);??????
  • ????????bd?=?bd.setScale(scale,?roundingMode);????
  • ????????double?d?=?bd.doubleValue();??????
  • ????????bd?=?null;??????
  • ????????return?d;??????
  • ????}??????
  • ??
  • ??
  • ?????/**??
  • ?????*?double?相加??
  • ?????*?@param?d1??
  • ?????*?@param?d2??
  • ?????*?@return??
  • ?????*/???
  • ????public?static?double?sum(double?d1,double?d2){???
  • ????????BigDecimal?bd1?=?new?BigDecimal(Double.toString(d1));???
  • ????????BigDecimal?bd2?=?new?BigDecimal(Double.toString(d2));???
  • ????????return?bd1.add(bd2).doubleValue();???
  • ????}???
  • ??
  • ??
  • ????/**??
  • ?????*?double?相減??
  • ?????*?@param?d1??
  • ?????*?@param?d2??
  • ?????*?@return??
  • ?????*/???
  • ????public?static?double?sub(double?d1,double?d2){???
  • ????????BigDecimal?bd1?=?new?BigDecimal(Double.toString(d1));???
  • ????????BigDecimal?bd2?=?new?BigDecimal(Double.toString(d2));???
  • ????????return?bd1.subtract(bd2).doubleValue();???
  • ????}???
  • ??
  • ????/**??
  • ?????*?double?乘法??
  • ?????*?@param?d1??
  • ?????*?@param?d2??
  • ?????*?@return??
  • ?????*/???
  • ????public?static?double?mul(double?d1,double?d2){???
  • ????????BigDecimal?bd1?=?new?BigDecimal(Double.toString(d1));???
  • ????????BigDecimal?bd2?=?new?BigDecimal(Double.toString(d2));???
  • ????????return?bd1.multiply(bd2).doubleValue();???
  • ????}???
  • ??????
  • ????/**??
  • ?????*?double?乘法??
  • ?????*?@param?n?
  • ?????*?@param?d2??
  • ?????*?@return??
  • ?????*/???
  • ????public?static?double?mul(int?n,double?d2){???
  • ????????BigDecimal?bd1?=?new?BigDecimal(Integer.toString(n));???
  • ????????BigDecimal?bd2?=?new?BigDecimal(Double.toString(d2));???
  • ????????return?bd1.multiply(bd2).doubleValue();???
  • ????}???
  • ??
  • ??
  • ????/**??
  • ?????*?double?除法??
  • ?????*?@param?d1??
  • ?????*?@param?d2??
  • ?????*?@param?scale?四舍五入?小數點位數??
  • ?????*?@return??
  • ?????*/???
  • ????public?static?double?div(double?d1,double?d2,int?scale){???
  • ????????//??當然在此之前,你要判斷分母是否為0,??????
  • ????????//??為0你可以根據實際需求做相應的處理???
  • ??
  • ????????BigDecimal?bd1?=?new?BigDecimal(Double.toString(d1));???
  • ????????BigDecimal?bd2?=?new?BigDecimal(Double.toString(d2));???
  • ????????return?bd1.divide??
  • ????????????????(bd2,?scale,?BigDecimal.ROUND_HALF_UP).doubleValue();??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將double類型數據轉為字符串?
  • ?????*?@param?d?
  • ?????*?@return?
  • ?????*/??
  • ????public?static?String?double2String(double?d){??
  • ????????BigDecimal?bg?=?new?BigDecimal(d?*?100);??
  • ????????double?doubleValue?=?bg.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();??
  • ????????return??String.valueOf((int)doubleValue);??
  • ????}??
  • ??
  • }??
  • package com.haier.cabinet.customer.util;import java.math.BigDecimal;public class MathUtil {/** * 對double數據進行取精度. * @param value double數據. * @param scale 精度位數(保留的小數位數). * @param roundingMode 精度取值方式. * @return 精度計算后的數據. */ public static double round(double value, int scale, int roundingMode) { BigDecimal bd = new BigDecimal(value); bd = bd.setScale(scale, roundingMode); double d = bd.doubleValue(); bd = null; return d; } /** * double 相加 * @param d1 * @param d2 * @return */ public static double sum(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.add(bd2).doubleValue(); } /** * double 相減 * @param d1 * @param d2 * @return */ public static double sub(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.subtract(bd2).doubleValue(); } /** * double 乘法 * @param d1 * @param d2 * @return */ public static double mul(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.multiply(bd2).doubleValue(); } /** * double 乘法 * @param n* @param d2 * @return */ public static double mul(int n,double d2){ BigDecimal bd1 = new BigDecimal(Integer.toString(n)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.multiply(bd2).doubleValue(); } /** * double 除法 * @param d1 * @param d2 * @param scale 四舍五入 小數點位數 * @return */ public static double div(double d1,double d2,int scale){ // 當然在此之前,你要判斷分母是否為0, // 為0你可以根據實際需求做相應的處理 BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.divide(bd2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();}/*** 將double類型數據轉為字符串* @param d* @return*/public static String double2String(double d){BigDecimal bg = new BigDecimal(d * 100);double doubleValue = bg.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();return String.valueOf((int)doubleValue);}}


    2016-08-30補充:

    微信官網上對于支付返回-1是這樣的描述的,??可能的原因:簽名錯誤、未注冊APPID、項目設置APPID不正確、注冊的APPID與設置的不匹配、其他異常等。

    我犯的錯和他描述的都不一樣。

    1、新建一個微信支付demo的工程,將包名和簽名上傳給微信。并保證apk是通過keystore方式打了簽名的,用官方的工具做簽名。

    2、將官方的demo示例參考一下,

    權限部分:

    [html] view plaincopyprint?
  • <!–?WeixinPay?–>??
  • ????<uses-permission?android:name=“android.permission.INTERNET”?/>??
  • ????<uses-permission?android:name=“android.permission.MODIFY_AUDIO_SETTINGS”/>??
  • ????<uses-permission?android:name=“android.permission.WRITE_EXTERNAL_STORAGE”??
  • <!-- WeixinPay --><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    [html] view plaincopyprint?
  • <activity?android:name=“.MainActivity”??
  • ?????android:exported=“true”>??
  • ?????<intent-filter>??
  • ?????????<action?android:name=“android.intent.action.MAIN”?/>??
  • ?????????<category?android:name=“android.intent.category.LAUNCHER”?/>??
  • ?????</intent-filter>??
  • ?????<intent-filter>??
  • ?????????<action?android:name=“android.intent.action.VIEW”/>??
  • ?????????<category?android:name=“android.intent.category.DEFAULT”/>??
  • ?????????<data?android:scheme=“wxd31ef1f4dd******”/>??
  • ?????</intent-filter>??
  • ?</activity>??
  • ?<activity?android:name=“.AlipayH5Activity”></activity>??
  • ?<activity?android:name=“com.*******.paydemo.wxapi.WXPayEntryActivity”??
  • ?????android:exported=“true”??
  • ?????android:launchMode=“singleTop”>??
  • ?</activity></span>??
  • <activity android:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="wxd31ef1f4dd******"/></intent-filter></activity><activity android:name=".AlipayH5Activity"></activity><activity android:name="com.*******.paydemo.wxapi.WXPayEntryActivity"android:exported="true"android:launchMode="singleTop"></activity></span>
    Activity部分的邏輯代碼:

    [java] view plaincopyprint?
  • IWXAPI?api?=?WXAPIFactory.createWXAPI(MainActivity.this,?null);//通過工廠創建對象??
  • ????????????????????????????????api.registerApp(ConstUtil.APP_ID);??
  • ????????????????????????????????PayReq?request?=?new?PayReq();??
  • ????????????????????????????????request.appId?=?ConstUtil.APP_ID;??
  • ????????????????????????????????request.partnerId?=?ConstUtil.PARTNER_ID;??
  • ????????????????????????????????request.prepayId?=?wxPrepayEntity.getPrepay_id();??
  • ????????????????????????????????request.nonceStr?=?wxPrepayEntity.getReq_noncestr();??
  • ????????????????????????????????request.timeStamp?=?wxPrepayEntity.getReq_timestamp();??
  • ????????????????????????????????request.packageValue?=?wxPrepayEntity.getReq_package();??
  • ????????????????????????????????request.sign?=?wxPrepayEntity.getReq_sign();??
  • //????????????????????????????????request.extData?=?“app?data”;?//?optional??
  • ????????????????????????????????//?在支付之前,如果應用沒有注冊到微信,應該先調用IWXMsg.registerApp將應用注冊到微信??
  • ????????????????????????????????api.sendReq(request);??
  • IWXAPI api = WXAPIFactory.createWXAPI(MainActivity.this, null);//通過工廠創建對象api.registerApp(ConstUtil.APP_ID);PayReq request = new PayReq();request.appId = ConstUtil.APP_ID;request.partnerId = ConstUtil.PARTNER_ID;request.prepayId = wxPrepayEntity.getPrepay_id();request.nonceStr = wxPrepayEntity.getReq_noncestr();request.timeStamp = wxPrepayEntity.getReq_timestamp();request.packageValue = wxPrepayEntity.getReq_package();request.sign = wxPrepayEntity.getReq_sign(); // request.extData = "app data"; // optional// 在支付之前,如果應用沒有注冊到微信,應該先調用IWXMsg.registerApp將應用注冊到微信api.sendReq(request);每一個參數都很關鍵的,如果簽名和包名確定都沒有問題,那么基本上是傳遞的參數有問題。最好跟做后臺的同事一起看看就能解決問題。

    比如partnerId傳錯了就會出現簽名錯誤,再比如timeStamp,你用了自定義的時間戳與服務器的不一致,也會出現錯誤。

    排查錯誤最好把sign這個字段的值打印出來,與服務器生成的信息做比較,參數值沒有問題才會不出問題!


    Android微信支付無法調起支付的原因




    1.第一種原因就是上邊的這些參數有問題。一般都是秘鑰有問題。需自己登陸商家版后臺修改??


    2.需要知道微信支付是需要打包才能運行。這也是蛋疼的一點,測試只能通過log和Toast來推斷。掉不起來可以去微信開放平臺看自己配置的參數是否正確。


    3.微信支付跟支付寶支付不一樣。微信支付同一訂單不會第二次跳到支付頁面 提示支付失敗,同一訂單第二次支付的時候直接在請求遇支付訂單的時候就會返回preayid為空。

    所以童鞋們應該在吊起支付這一步判斷一下 ,比較服務器很容易出錯導致訂單狀態沒有改,讓用戶一直付款。


    4.無法接受回調結果是因為微信規定接受支付那個類的必須在manifest里配置的包名+.wxapi里? 所以這也是比較蛋疼的一點。


    5.微信支付支付過的訂單再次獲取prepare_id為null 無法掉起支付。


    6. 微信支付同一訂單只能綁定一個價格 列如: ?33訂單最初的價格為1,這是獲取prepareid可以獲取到值,如果對33的價格進行修改,如果沒有生成過預支付訂單可以獲取,

    如果已經生成過則獲取到的prepareid為null ?不可以調起支付


    Android快速實現微信支付


    如果你已經成功集成了微信登錄和分享,那么此文將助你快速集成微信支付,此文基于微信支付SDK3.1.1,也就是目前為止最新的SDK
    1)微信官方的集成文檔
    2)微信官方資源下載


    資源下載


    不過我相信,即便你看了微信的官方文檔,你依然不知道微信支付怎么集成,因為微信支付的官方文檔簡直太…..

    如果你已經準備好了資源包,接下來正式開始集成

    我們需要的資源其實有以下幾樣,在開始前,就這些轉備好吧
    1)微信支付的APPID
    2)微信支付依賴包 >>> libammsdk.jar
    3)一個Activity類 >>> WXPayEntryActivity.java

    這里需要特別說明一下,這個Activity類,直接從上下載到的范例代碼中copy到自己的工程中即可,這個頁面是在你調起微信支付完成支付(或取消或失敗)后,再回到你的App時會調用的一個頁面。頁面的布局可以是你自定義的布局,直接放圖講解:

    先說一下這個類的路徑,網上也有一大堆介紹了,我直接放圖,路徑一定,而且必須是這樣的:


    WXPayEntryActivity 的路徑


    在這個類中需要注意的地方有兩個:
    1、這個類中的布局是可以自定義的,如果你不需要展示什么布局,而是要跳轉頁面,把這段代碼刪除即可


    回調頁面的布局


    2、回調結果的處理,下面是官方的處理方式,直接給了一個dialog,很多人會摸不著頭腦,如果你不需要這個dialog,直接刪除就好了,不需要把官方demo中的布局和資源都復制過來


    官方的處理方式


    下面是我自定義的處理方式,比較簡單,就是土司顯示了一下支付結果,如果你需要支付成功后跳轉,那么直接在這里startActivity即可,別忘記最后要將這個頁面finish()


    自定義的處理方式

    這個類中的其余的回調方法,我們都不需要去操作

    然后我們就可以開始支付了,支付很簡單,真的很簡單


    參數列表


    這是微信支付需要我們攜帶的參數,對于新人來說,可能比較困惑的是我怎么生成這些參數呢?其實這些參數都是服務器返回給我們的,APPID我們可以自己保存在本地一份,其余的都是服務器返回給我們的,大概介紹一下流程:


    發起支付的流程,提交訂單的時候的參數根據項目需要配置

    最后,服務器返回給我們微信支付的參數后,我們就可以愉快的支付了,這里是關鍵一步,注意!!


    發起支付的關鍵步驟

    至此我們已經可以調起微信支付頁面來支付了
    最后還有一個需要注意的是,很多人被這一步坑了,就是關于微信開放平臺簽名的問題。其實只要你手機上的程序的簽名和你在微信平臺登記的簽名一致即可,無論是debug版本,還是release版本





    參考文章:http://www.jianshu.com/p/c97639279d2e



    總結

    以上是生活随笔為你收集整理的android 微信支付问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    1000部国产精品成人观看 | 国内精品久久久久影院一蜜桃 | 欧美国产日韩一区二区 | 在线视频观看成人 | 免费av电影网站 | 有没有在线观看av | 97在线播放视频 | 日韩精品一区二区三区免费视频观看 | 亚洲精区二区三区四区麻豆 | 97网在线观看 | 美女久久久久久久久久久 | 国产精品久久久久久麻豆一区 | 涩五月婷婷 | 99精品乱码国产在线观看 | 三级免费黄 | 欧美午夜性| 日本公妇在线观看高清 | 伊人天天色 | 久热免费在线观看 | 国产精品女教师 | 久久理论电影网 | 日韩激情在线 | 伊人午夜视频 | 亚洲免费视频在线观看 | 久久久久久毛片精品免费不卡 | 91精品久久久久久久99蜜桃 | www久久| 久久久高清视频 | 国产在线精品区 | 国产精品丝袜久久久久久久不卡 | 成人观看视频 | 曰本免费av | 四虎永久精品在线 | 日韩欧美一区二区三区在线观看 | 久久av免费电影 | jizz欧美性9| av福利网址导航 | 欧美激情精品久久久 | 国产三级午夜理伦三级 | 欧美日本高清视频 | 婷婷去俺也去六月色 | 欧美精品乱码久久久久久 | av手机在线播放 | 91成人精品一区在线播放 | 国产精品免费久久久久久久久久中文 | 在线播放国产一区二区三区 | 亚洲精品自拍视频在线观看 | 亚洲欧洲精品一区二区 | 亚洲综合色婷婷 | 国产精品自产拍在线观看中文 | 中文在线8新资源库 | 99爱这里只有精品 | 操操日| 国产一区二区三区四区大秀 | 精品国产伦一区二区三区观看说明 | 丁香花中文在线免费观看 | 精品视频99 | 高清国产午夜精品久久久久久 | 中文字幕 欧美性 | 91人人爽人人爽人人精88v | 婷婷视频 | 手机在线小视频 | 久久天堂亚洲 | 啪啪动态视频 | 国产精品国产三级国产专区53 | 伊人六月 | 亚洲五月婷婷 | 国产精品资源在线观看 | 日本在线中文 | 欧美污网站 | 人人擦| 日韩在线免费电影 | 97av免费视频 | 国产一级片免费播放 | 九九日韩 | 夜色在线资源 | 国产丝袜网站 | 美女免费视频黄 | 日韩网站在线 | 奇米影视777影音先锋 | 久久精品99久久 | 国产在线精 | 久久精品久久精品久久 | 中文免费观看 | 青青看片 | 五月综合| 99这里只有久久精品视频 | 最近中文字幕mv免费高清在线 | 国产精品第一视频 | 99精品视频一区 | 首页av在线| 午夜精品一区二区三区在线视频 | 免费成人在线观看 | 国产乱码精品一区二区三区介绍 | 丁香婷婷电影 | 中文字幕 国产视频 | 成人在线播放视频 | 成 人 黄 色 免费播放 | 亚洲精品视频免费在线 | 四虎成人精品永久免费av | 日韩一级成人av | 日韩高清成人 | 正在播放国产一区二区 | 欧美一区二区免费在线观看 | 色婷婷狠狠操 | 欧美激情综合色综合啪啪五月 | 国内精品久久天天躁人人爽 | 人人爽人人爽人人片 | 西西444www大胆无视频 | 91麻豆精品国产91久久久更新时间 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 久草免费手机视频 | 在线观看成人福利 | 国产中文字幕视频 | 精品亚洲免a | 最新三级在线 | 国产视频一区在线免费观看 | 欧美激情精品久久久久久变态 | 黄色av免费| 人人看黄色 | 天天综合天天做 | 国产大片免费久久 | 少妇bbw搡bbbb搡bbbb | 久久视频在线观看中文字幕 | 久久久精品网站 | 在线99热 | 国产一区二区三区在线免费观看 | 久草精品视频在线播放 | www.五月天 | 国产资源免费 | 国产成人精品一区二区三区免费 | 天天色视频 | 福利在线看片 | 亚洲狠狠婷婷综合久久久 | 久久免费视频一区 | 国产亚洲情侣一区二区无 | 国产精品国产三级国产 | 伊人网综合在线观看 | 国产精品白浆视频 | 国产人免费人成免费视频 | 欧美做受高潮1 | 欧美精品少妇xxxxx喷水 | 999在线精品 | 久久国产一区二区 | 午夜精品久久久久久久久久久久 | 成人av网站在线 | 日本99久久| 91麻豆.com| av免费电影在线 | 亚洲国产成人高清精品 | 亚洲午夜精品一区二区三区电影院 | 日批视频在线观看免费 | 色天天久久 | 日韩一区精品 | 在线国产专区 | 婷婷激情五月 | 六月激情婷婷 | 99中文字幕在线观看 | 一区精品在线 | 国产99免费视频 | 欧美日韩精品网站 | 国产在线a免费观看 | 99欧美视频 | 日本精品va在线观看 | 一区二区精品在线视频 | 亚洲成av人片一区二区梦乃 | 91av九色 | 亚洲精品色婷婷 | 免费av在线播放 | 欧美日韩免费视频 | 婷婷国产一区二区三区 | 99这里都是精品 | 97成人在线观看视频 | 国产精品久久久久久久久婷婷 | 欧美另类高清 videos | 三级视频片| 久久免费视频这里只有精品 | 国产精品国产亚洲精品看不卡 | 国产在线中文 | 色偷偷av男人天堂 | 毛片一二区 | 91久久久久久久一区二区 | 精品国产一区二区三区不卡 | 麻豆久久久久 | 色婷婷国产精品一区在线观看 | 在线国产高清 | 国产一区在线看 | 亚洲男男gaygay无套同网址 | 国产综合视频在线观看 | 久久久精品99 | 日韩欧美一区二区三区视频 | 精品视频在线观看 | 婷婷精品国产一区二区三区日韩 | 狠狠干五月天 | 狠狠狠色丁香婷婷综合久久五月 | 国产韩国精品一区二区三区 | 久久96| 国产永久免费 | 天天操天天干天天爱 | 黄色网址国产 | 九九在线免费视频 | 久久精品久久综合 | 在线免费观看国产精品 | 九九久久久久99精品 | 91精品老司机久久一区啪 | 精品视频成人 | 特级黄录像视频 | 久久久久亚洲国产精品 | 中文字幕在线观看视频网站 | 亚洲成人精品 | 91精品在线免费 | 一区二区精品在线观看 | av电影免费观看 | 国产视频在线看 | 国内外激情视频 | 天天干国产 | 中字幕视频在线永久在线观看免费 | 一本一道波多野毛片中文在线 | 国产一级免费在线观看 | 天天激情在线 | 精品国偷自产国产一区 | 欧美a免费| 婷婷久久精品 | 天天操天天操天天操天天操天天操天天操 | 在线国产视频 | 久久久久久久久久久久av | 色综合婷婷 | 天堂va在线高清一区 | 成人黄色在线看 | 国产小视频在线播放 | 日韩精品一区二区三区丰满 | av在线看片 | 国产三级视频 | 国产精品久久久久永久免费观看 | 黄色性av | 日韩精品在线看 | 在线天堂v| 国产精品免费久久久 | 特级西西444www高清大视频 | www.午夜色.com| 久久综合免费 | 欧美激情精品 | 国产69精品久久99的直播节目 | 国产午夜一级毛片 | 91 在线视频 | 五月开心六月伊人色婷婷 | 国产又粗又猛又爽又黄的视频免费 | 麻花豆传媒mv在线观看 | 四虎成人免费观看 | 国产在线中文字幕 | 香蕉视频久久久 | 精品国产乱码久久久久久天美 | 精品免费久久 | 色婷婷国产精品 | 人人草人 | 日韩中文字幕在线看 | 337p日本欧洲亚洲大胆裸体艺术 | 国产99自拍 | 久久久鲁 | 午夜在线免费观看视频 | 久久久网址 | 免费在线观看一区二区三区 | 欧美在线你懂的 | 天堂中文在线视频 | 99久久99| 在线成人免费电影 | 欧美一级欧美一级 | 国产精品久久久久永久免费观看 | 久久精品免费 | 综合久久久 | 精品国产一区二区三区在线观看 | 日韩免费b | 精品国产一区二区三区久久 | 中文字幕 二区 | 色夜影院| 成人理论电影 | 人人讲下载 | 伊人超碰在线 | 六月丁香在线观看 | 精品久久久久久久久亚洲 | 国产 日韩 欧美 中文 在线播放 | 99999精品| 久久黄色精品视频 | 日韩av资源站 | 天天色天天爱天天射综合 | 一区二区三区韩国免费中文网站 | 这里有精品在线视频 | 免费观看不卡av | 最新国产精品久久精品 | 天天干天天拍 | 久久九九免费视频 | 日韩av影视 | 色资源中文字幕 | 国产精品欧美久久久久无广告 | 日韩在线观看影院 | 三级黄色片子 | 成人羞羞视频在线观看免费 | av三区在线 | 92av视频 | 精品免费在线视频 | 97超碰免费在线观看 | 欧美日韩不卡在线观看 | 久久兔费看a级 | 亚洲观看黄色网 | 亚洲一级二级 | 久久看片 | 亚洲精品国产精品乱码在线观看 | 日本在线免费看 | 国内精品在线看 | 在线播放国产精品 | 色在线视频 | 免费观看不卡av | 成人av直播 | 国产一区精品在线 | 91理论电影 | 久久精品欧美视频 | 久久一及片 | 国产精品久久久久久久午夜 | 国产一区二区三区免费视频 | 精品视频在线播放 | 99这里都是精品 | 中文字幕中文字幕在线中文字幕三区 | avwww在线观看 | 日韩欧美有码在线 | 日韩av在线小说 | 人人干在线 | 免费一级片观看 | 国模一区二区三区四区 | 成人av免费电影 | 8090yy亚洲精品久久 | 在线视频 亚洲 | 国产成人精品一区二三区 | 久99久在线 | 国产精品二区在线观看 | 99成人精品| 亚洲一区精品二人人爽久久 | 亚洲视频免费在线观看 | 热久久国产精品 | 久久精品9| 97在线观看免费高清完整版在线观看 | 在线观看成年人 | 亚洲精品裸体 | 五月婷婷视频在线 | 97国产大学生情侣酒店的特点 | 国产精品激情偷乱一区二区∴ | 四虎永久视频 | 亚洲国产最新 | 美女黄频在线观看 | 在线免费av电影 | 日日爱夜夜爱 | 午夜精品久久久 | 国产超碰97 | 91免费高清在线观看 | av3级在线| av3级在线 | 日韩一级电影在线观看 | 国产色就色 | 中文字幕在线播放日韩 | 国产 视频 高清 免费 | 国产精品久久久久久高潮 | aaa亚洲精品一二三区 | 久久精品一区二区三区国产主播 | 久草视频在线资源站 | 在线免费观看国产视频 | 激情综合五月天 | 欧美a级成人淫片免费看 | 免费视频网 | 人人干人人添 | 美女视频黄在线观看 | 天天爽天天摸 | 91在线免费播放视频 | 精品一区电影 | 国产成人亚洲在线观看 | 91完整版观看 | 玖玖爱在线观看 | 国产黄色成人 | 色噜噜狠狠狠狠色综合 | 五月天六月婷 | 久久国产精品免费一区二区三区 | 久久网页 | 99久精品 | 成片免费观看视频 | 国产三级精品在线 | 国产精品九九久久99视频 | 美女网站免费福利视频 | 不卡精品视频 | 久久精品中文字幕一区二区三区 | 免费观看福利视频 | 五月婷婷六月丁香 | 91在线资源| 亚洲欧美色婷婷 | 精品久久久久一区二区国产 | 亚洲无人区小视频 | 久产久精国产品 | 在线视频 你懂得 | 九九九热精品免费视频观看 | 婷婷五天天在线视频 | 久爱精品在线 | 国产精品久久久久久五月尺 | 日韩在线免费看 | 伊人色播| 欧洲一区二区在线观看 | 欧美精彩视频在线观看 | 丁香av在线 | 国产不卡在线观看视频 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 天天干天天插 | 日韩中文字幕网站 | 毛片二区| 久久免费a| 波多野结衣最新 | 精品久久久久久久久亚洲 | 五月天激情开心 | 人人插超碰 | a天堂中文在线 | 午夜精品久久久久久久久久 | 一区二区三区 亚洲 | 国产无遮挡又黄又爽在线观看 | 国产色中涩 | 日本中文字幕在线电影 | 精品91| 国产亚洲综合在线 | 国产女v资源在线观看 | 免费看搞黄视频网站 | 久久久久成人精品 | 一级欧美黄| 91精品久久久久久久久久入口 | 99久久夜色精品国产亚洲96 | 成人黄色在线视频 | 亚洲精品国产精品久久99 | 色综合久久88色综合天天 | 九九日九九操 | 91av资源在线 | 免费在线电影网址大全 | 国产一区视频在线观看免费 | www.久久免费 | 国产高清视频在线播放一区 | 三级动态视频在线观看 | av免费观看高清 | 五月综合婷 | 欧美性猛片, | 91最新在线视频 | 国产精品99免视看9 国产精品毛片一区视频 | 99性视频 | 天天射天天射天天射 | 免费在线激情视频 | 99久久精品无免国产免费 | 中文有码在线 | 欧美日本啪啪无遮挡网站 | 免费av影视| 2022国产精品视频 | 日韩,中文字幕 | 性色av免费在线观看 | 国产欧美最新羞羞视频在线观看 | 深爱激情久久 | 婷婷丁香在线 | 91精品综合在线观看 | 精品久久久久久久久久久久 | 嫩草av影院 | 亚洲激情视频 | 色婷婷久久一区二区 | 99精品视频在线观看免费 | 在线免费黄色毛片 | www日韩欧美 | 国产日韩精品欧美 | 最近中文字幕免费视频 | 欧美日韩在线精品一区二区 | 中文字幕丝袜一区二区 | 在线亚洲成人 | 毛片.com| 最近高清中文在线字幕在线观看 | av在线电影网站 | 国产一级久久 | 国产色爽| 国产成人黄色网址 | 亚洲精品videossex少妇 | av在线播放一区二区三区 | 国产精品激情在线观看 | 久久精品—区二区三区 | 91精品视频一区二区三区 | 久久成人国产精品 | 日韩精品一区二区三区水蜜桃 | 黄色av大片 | 国产中文字幕在线看 | 91视频a | 欧美激情精品 | 丁香激情综合久久伊人久久 | 91av片| 日韩免费在线观看网站 | 一区二区激情 | 在线视频 区 | av网站大全免费 | 亚洲国产福利视频 | 日韩在线免费小视频 | 激情久久久久 | 在线视频区| 91精品国产麻豆国产自产影视 | 少妇视频在线播放 | 一区二区三区在线免费观看视频 | 色偷偷97| 91亚洲精品在线观看 | 99免费在线视频观看 | 久久精品国产免费看久久精品 | 天天噜天天色 | 波多野结衣理论片 | 91成人蝌蚪| 狠狠的干| 丁香婷婷综合激情五月色 | 日本一区二区不卡高清 | 欧美精品中文在线免费观看 | 在线观看成人福利 | 91中文字幕在线视频 | 视频99爱 | 色88久久| 91亚洲精品久久久蜜桃网站 | 午夜精品久久久久久中宇69 | 中文字幕日韩国产 | 特黄色大片 | 九九视频精品免费 | 中文字幕在线免费 | 日本中文字幕观看 | 国产一及片 | 久精品在线观看 | 欧美激情视频一区 | 免费在线观看一区二区三区 | 91中文字幕在线观看 | 伊人天天狠天天添日日拍 | 天天草综合网 | 91成人看片 | 国产精品区一区 | 亚洲高清视频在线观看 | 中文亚洲欧美日韩 | 亚洲精品视频网站在线观看 | 中文字幕日韩精品有码视频 | 丁香九月激情综合 | 亚洲精品88欧美一区二区 | 日韩有码欧美 | 中文伊人| 国产精品久久久久永久免费 | 日韩在线观看视频免费 | 国产99久久精品 | 国产精品短视频 | 99久久这里有精品 | 二区三区在线视频 | 中文字幕精品一区久久久久 | 99热在线看 | 片网址| 中日韩三级视频 | 18久久久久久 | 亚洲无线视频 | 日本在线观看黄色 | 激情综合网在线观看 | 色婷婷www| 天天干.com | 国产精品久久久久久久婷婷 | 69精品在线观看 | 欧美性大胆 | 又色又爽的网站 | 久久久久免费精品 | 中文字幕国产视频 | 久久久久国产精品视频 | 在线观看中文字幕第一页 | 国产午夜剧场 | 天天干天天拍天天操 | 丁香午夜婷婷 | 国产精品一区二区av麻豆 | 中文字幕在线观看一区二区 | 亚洲第一区精品 | 天天天干夜夜夜操 | av免费看在线 | 久久99电影 | 日韩一区二区三区免费视频 | 午夜久久美女 | 亚洲免费av在线播放 | 国产精品视频999 | 激情网在线视频 | 国产99中文字幕 | 超碰国产97 | 国产一区91 | 欧美福利在线播放 | 亚洲三级精品 | 久久99国产精品免费 | 亚洲视频第一页 | 国产 在线观看 | 激情大尺度视频 | 国产精品乱码高清在线看 | 91免费高清视频 | 久久成人国产精品一区二区 | 免费色黄 | 久草久热 | 精品久久电影 | 欧美大香线蕉线伊人久久 | 最新av网站在线观看 | 狠狠干天天 | 久久tv| 亚洲国产精品一区二区久久hs | 99热9| 国产精品9999久久久久仙踪林 | av大全在线观看 | 久热免费在线观看 | jizz18欧美18 | 日韩精品1区2区 | 美女免费视频网站 | 国产手机精品视频 | 日韩在线观看电影 | 婷婷香蕉 | 免费在线观看毛片网站 | 婷婷色吧 | 天天综合网久久综合网 | 国产精品高清在线观看 | 91免费网站在线观看 | 99在线免费观看 | 五月天婷婷在线观看视频 | 91色蜜桃| 狠狠色狠狠综合久久 | 亚洲三级国产 | 日本少妇高清做爰视频 | 欧美一区免费观看 | 天天添夜夜操 | 婷婷干五月 | 精品嫩模福利一区二区蜜臀 | 欧美va在线观看 | 天天爽人人爽 | 中文字幕影片免费在线观看 | 日韩精品久久久久久久电影竹菊 | 日韩在线视频一区 | 日韩一级电影在线观看 | 日韩在线视频不卡 | 成人黄色中文字幕 | 狠狠地日| 91视频91蝌蚪 | 天天av综合网 | 日韩中文字幕免费在线观看 | 中文字幕国语官网在线视频 | 国产日韩视频在线播放 | 亚洲成人蜜桃 | 精品福利片| 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 日日日爽爽爽 | 天天操天天摸天天爽 | 日韩网站在线观看 | 日日日网| 97影视 | 久久电影日韩 | 欧美成人黄色片 | 福利视频午夜 | 青青河边草免费直播 | 国产一区二区视频在线播放 | 天天操天天干天天玩 | 欧美日韩在线第一页 | 久久www免费视频 | 四虎国产精品成人免费4hu | 丁香视频 | 中国一级特黄毛片大片久久 | www.av中文字幕.com | 91热爆视频 | 精品一区 在线 | 日韩在线视频播放 | 五月天色站 | 中文字幕欧美日韩va免费视频 | 私人av| 91x色| 不卡av在线播放 | 四虎在线免费观看视频 | 免费合欢视频成人app | 久久国产精品一区二区三区四区 | 婷婷久久网站 | 中日韩在线视频 | 国产一级片直播 | 日韩免费区 | 黄色大片av | 欧美精品国产综合久久 | 超碰在线日本 | 国产精品国产三级在线专区 | 久久av不卡 | 日本最新一区二区三区 | 99久久99久久综合 | 一区二区三区免费网站 | 视频在线精品 | 免费毛片一区二区三区久久久 | 99国产精品| 午夜av电影院 | 亚洲黄色一级电影 | 伊人五月天婷婷 | 日本精品在线视频 | 13日本xxxxxⅹxxx20 | 久久久电影网站 | 久草久草在线 | 免费福利片2019潦草影视午夜 | 91夜夜夜| 欧美最猛性xxxx | 免费观看性生交大片3 | 国产福利专区 | 亚洲专区一二三 | 97在线视频免费播放 | 99热在线这里只有精品 | 少妇视频在线播放 | 337p西西人体大胆瓣开下部 | 日日干夜夜操视频 | a爱爱视频 | 99视频在线精品国自产拍免费观看 | 麻豆国产精品va在线观看不卡 | 99爱视频在线观看 | 国产亚洲成av人片在线观看桃 | 久久视频免费在线观看 | 欧美精品二 | 国产高清专区 | 成人小电影在线看 | 国产69精品久久99不卡的观看体验 | 久久国产精品电影 | 中文字幕av网站 | 在线观看午夜av | 日韩精品91偷拍在线观看 | 热久久视久久精品18亚洲精品 | 91精品免费在线观看 | 96久久精品 | 一区二区电影在线观看 | 国产精品18毛片一区二区 | 国产1区在线观看 | 97超碰在线视| 夜夜爱av | 中文国产在线观看 | 国产色小视频 | 91精品成人久久 | 久久久久夜色 | 一区二区三区四区在线免费观看 | 青青河边草手机免费 | 国产精品毛片久久久久久 | 天天操天天爽天天干 | 国产精品视频久久久 | 丁香婷婷激情 | 国产人成看黄久久久久久久久 | 亚洲欧美日韩一级 | 天天碰天天操视频 | 毛片区| 成人一级在线 | 免费在线观看成人小视频 | 久久久久亚洲精品 | 91免费版成人 | 色com| 国产中文字幕亚洲 | 亚洲一区久久久 | 激情综合网天天干 | 三级在线视频观看 | 日本在线中文 | 亚洲女人天堂成人av在线 | 亚洲五月六月 | 奇米影视8888| 又色又爽又黄高潮的免费视频 | 久久96国产精品久久99软件 | 在线观看激情av | 久久久久久久久久久国产精品 | 色欧美日韩 | 精品a在线 | 91刺激视频| 亚洲黄色网络 | 狠狠色丁香婷综合久久 | 久草网视频 | 国产精品综合久久 | av中文字幕在线看 | 亚洲视频一 | 在线观看日韩精品 | 国产伦精品一区二区三区无广告 | 国产精品久久久久婷婷二区次 | 欧美一区二区三区免费观看 | 激情大尺度视频 | 婷婷 综合 色 | 婷婷在线看| 亚洲日韩中文字幕在线播放 | 国产精品一级在线 | 天堂在线视频中文网 | 亚洲激情p| 人人揉人人揉人人揉人人揉97 | 国产麻豆精品久久一二三 | 日韩字幕 | 久久久亚洲麻豆日韩精品一区三区 | www.色爱 | 精品久久久久久久久久久久 | 久久观看最新视频 | 国产高清黄 | 97视频免费看 | 国产成人久久av977小说 | www.色午夜.com | 久草免费在线观看 | 香蕉免费 | 成人欧美日韩国产 | 国产97超碰| 久草在线视频免赞 | 九九久久影院 | 国产91电影在线观看 | 最近日本韩国中文字幕 | 国产黄色片在线 | 国产91精品一区二区麻豆网站 | 亚洲天堂社区 | 五月婷婷.com | 一级黄色片毛片 | 午夜av网站 | 婷婷激情5月天 | 俺要去色综合狠狠 | 日本夜夜草视频网站 | 久久视频免费 | www.夜夜操.com | 日日躁你夜夜躁你av蜜 | 欧美日韩中文视频 | 国产区高清在线 | 精品在线视频一区二区三区 | 欧美日韩精品综合 | 夜夜夜草 | 五月婷婷一级片 | 韩国av在线 | 亚洲免费在线视频 | 精品国产成人在线 | 国产精品一区二区三区在线播放 | 丝袜美腿亚洲综合 | 欧美日韩在线观看视频 | 狠狠色丁香久久综合网 | 99免费在线视频观看 | 国产青青青 | 中文字幕在线观看不卡 | 欧美日韩国产一二 | 免费国产一区二区视频 | 91九色最新地址 | 1024久久| 免费看的视频 | 久久国产精品一区二区 | 久久亚洲电影 | 久久久久久久久福利 | 亚洲国产高清在线观看视频 | 99热在线精品观看 | 91在线视频在线观看 | 五月天伊人网 | 亚洲精品在线观看网站 | www.成人久久| 91精品亚洲影视在线观看 | 一级片视频在线 | 日韩在线视频国产 | 久久久久综合网 | 久草在线视频在线 | 天天射夜夜爽 | 国产三级国产精品国产专区50 | 久久久精品视频网站 | 97综合视频 | 国产一级久久 | 免费在线观看一区二区三区 | 久久香蕉一区 | 日韩在线视频免费看 | 久久久久久国产精品亚洲78 | 精品国产不卡 | 天天综合日日夜夜 | 精品久久一级片 | 免费a现在观看 | 日韩免费一二三区 | 国产视频在线观看免费 | 97超碰在线久草超碰在线观看 | 欧美国产在线看 | 日韩欧美中文 | 国产一区欧美一区 | www.久久色| 日韩毛片在线免费观看 | 日韩伦理一区二区三区av在线 | 久草在线综合 | www.888av| 人人澡澡人人 | 91在线小视频 | 又色又爽又激情的59视频 | 欧美精品在线观看 | 日韩美女一级片 | 国产精品九九久久久久久久 | 日日干夜夜骑 | www.午夜色.com| 欧美日韩视频在线观看一区二区 | 黄色三级久久 | 五月婷婷开心中文字幕 | 国产综合久久 | 在线观看中文字幕av | 精品视频在线看 | 毛片视频网址 | 国产精品免费视频一区二区 | 国产精品美女在线观看 | 99免费在线 | 国产手机av | 免费在线观看成人小视频 | 中文字幕第一页在线vr | 久久精品成人欧美大片古装 | 91中文字幕在线播放 | 激情 婷婷 | 97在线观看免费高清 | 成人av免费在线播放 | 国产一区久久久 | 国产97超碰 | 天天操天天操天天操天天操天天操天天操 | 国产国产人免费人成免费视频 | 欧美日韩一二三四区 | 国产精品白浆 | 精品一区二区三区久久久 | 黄网站免费看 | 免费精品人在线二线三线 | 色诱亚洲精品久久久久久 | 久久99国产精品视频 | 久久99九九99精品 | 久av电影| 久久久免费在线观看 | 久久男人影院 | 久久久久中文 | 国产精品久久久999 国产91九色视频 | 亚洲精品国产欧美在线观看 | 一区二区三区在线免费观看视频 | 国产精品免费大片视频 | 欧美日韩精品在线视频 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 亚洲 欧美 变态 国产 另类 | 亚洲资源网 | 人人狠狠 | 亚洲影院天堂 | 99色在线 | 久久高清国产视频 | 91豆花在线观看 | 午夜在线观看影院 | 91少妇精拍在线播放 | 国产欧美日韩视频 | ww亚洲ww亚在线观看 | 色多多在线观看 | 国产伦理久久精品久久久久_ | 免费福利片2019潦草影视午夜 | av丝袜制服 | 亚洲一区免费在线 | 三级av在线免费观看 | 亚洲深夜影院 | www.com黄| 午夜精品一区二区三区视频免费看 | 免费大片黄在线 | 国产伦精品一区二区三区高清 | 在线不卡视频 | 久久99久久99免费视频 | 精品电影一区 | 亚洲免费永久精品国产 | 国产精品porn | 日韩免费一级a毛片在线播放一级 | 日本精品一区二区三区在线观看 | 偷拍精偷拍精品欧洲亚洲网站 | 91久久黄色 | 国产成人精品亚洲精品 | 久久免费99精品久久久久久 | 蜜桃传媒一区二区 | 99久久婷婷国产综合精品 | 亚洲国产欧洲综合997久久, | 91久久国产自产拍夜夜嗨 | 一区在线观看 | www.久久久精品 | 久久9999久久免费精品国产 | 精品亚洲成a人在线观看 | 日韩免费在线观看 | 成人在线观看资源 | 国产色女 | av不卡免费在线观看 | 成人高清在线 | 久久综合国产伦精品免费 | 91激情视频在线播放 | 有码中文字幕 | 99热精品国产一区二区在线观看 | 黄污视频大全 | 激情视频亚洲 | 91精品在线免费视频 | 国产色视频网站2 | a视频免费 | av经典在线| 综合av在线| 亚洲色图 校园春色 | 国产91丝袜在线播放动漫 | 国产精品手机视频 | 日韩黄色软件 | 丝袜美腿av | 国内精品久久久久久久久久久久 | 亚洲精品视频中文字幕 | 在线日韩精品视频 | 月丁香婷婷 | 久久精品小视频 | 婷婷在线看 | 亚洲免费专区 | 亚洲免费小视频 | 97超碰人人在线 | 久久夜夜夜 | 国产片网站 | 国产午夜精品久久久久久久久久 | 欧美美女激情18p | 亚洲黄在线观看 | 日韩啪啪小视频 | 成人资源在线播放 | 91亚洲国产成人 | 国产成人精品一区二区三区网站观看 | 人人爽人人爽人人片av免 | 美女视频免费精品 | 四虎精品成人免费网站 | 涩涩资源网 | 日韩av图片 | 美女久久一区 | 五月婷色 | 亚洲国产欧洲综合997久久, |