最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現(xiàn)微信支付的統(tǒng)一下單

 更新時間:2018年06月15日 10:49:40   作者:Dr_abandon  
這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)微信支付的統(tǒng)一下單,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Android實現(xiàn)微信支付統(tǒng)一下單的具體代碼,供大家參考,具體內(nèi)容如下

準(zhǔn)備工作

申請微信開發(fā)者賬號,添加應(yīng)用及申請開通微信支付功能,如
查看開通流程

統(tǒng)一下單的接口文檔:
查看接口

開發(fā)

①下載sdk:

sdk和demo下載

②可以導(dǎo)入包

在build.gradle文件中,添加如下依賴即可:

dependencies {
 compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}


dependencies {
 compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}

③添加Android Manifest權(quán)限

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

調(diào)用統(tǒng)一下單接口

1.務(wù)必提交必須的字段:appid,body,mch_id,nonce_str,notify_url, out_trade_no,spbill_create_ip,total_fee,trade_type,sign(都是小寫);提交到微信接口時以xml格式提交

2.sign為前面提交的參數(shù)按照參數(shù)名ASCII碼從小到大排序簽名拼接起來然后進行MD5運算,再將得到的字符串所有字符轉(zhuǎn)換為大寫得到的,如簽名生成算法

3.參與生成sign的key為商戶賬號的密鑰,key設(shè)置路徑如下:微信商戶平臺(pay.weixin.qq.com)–>賬戶設(shè)置–>API安全–>密鑰設(shè)置

下面是具體代碼(如若查看你的sign生成及提交的xml是否正確可以點擊如下:簽名生成工具

//拼接字段,順序不能變
    String A = "appid=你的appID" +
      "&body=jinshi" +
      "&mch_id=你的商戶號" +
      "&nonce_str=" + nonce_str +
      "&notify_url=http://www.szgsip.com/" +
      "&out_trade_no=" + trade_no +
      "&spbill_create_ip=192.168.1.1" +
      "&total_fee=1" +
      "&trade_type=APP";
    String key = "你的密鑰";
    String temp = A + "&key=" + key;
 // 生成sign
     String sign = MD5.getMessageDigest(temp.getBytes()).toUpperCase();

接下來提交到微信下單的接口上

 private void httpThreadxml() {


  //組建xml數(shù)據(jù)
  //拼接字段,順序不能變

  xml.append("<xml>\n");
    xml.append("<appid>你的appID</appid>\n");
    xml.append("<body>jinshi</body>\n");
    xml.append("<mch_id>你的商戶號</mch_id>\n");
    xml.append("<nonce_str>" + nonce_str + "</nonce_str>\n");
    xml.append("<notify_url>http://www.szgsip.com/</notify_url>\n");
    xml.append("<out_trade_no>" + trade_no + "</out_trade_no>\n");
    xml.append("<spbill_create_ip>192.168.1.1</spbill_create_ip>\n");
    xml.append("<total_fee>1</total_fee>\n");
    xml.append("<trade_type>APP</trade_type>\n");
    xml.append("<sign>" + sign + "</sign>\n");
    xml.append("</xml>");

  try {
   final byte[] xmlbyte = xml.toString().getBytes("UTF-8");

   System.out.println(xml);

   URL url = new URL("https://api.mch.weixin.qq.com/pay/unifiedorder");


   final HttpURLConnection conn = (HttpURLConnection) url.openConnection();
   conn.setConnectTimeout(5000);
   conn.setDoOutput(true);// 允許輸出
   conn.setDoInput(true);
   conn.setUseCaches(false);// 不使用緩存
   conn.setRequestMethod("POST");
   conn.setRequestProperty("Connection", "Keep-Alive");// 維持長連接
   conn.setRequestProperty("Charset", "UTF-8");
   conn.setRequestProperty("Content-Length",
     String.valueOf(xmlbyte.length));
   conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
   conn.setRequestProperty("X-ClientType", "2");//發(fā)送自定義的頭信息


   conn.getOutputStream().write(xmlbyte);
   conn.getOutputStream().flush();
   conn.getOutputStream().close();


   if (conn.getResponseCode() != 200)
    throw new RuntimeException("請求url失敗");

   InputStream is = conn.getInputStream();// 獲取返回數(shù)據(jù)


   // 使用輸出流來輸出字符(可選)
   ByteArrayOutputStream out = new ByteArrayOutputStream();
   byte[] buf = new byte[1024];
   int len;
   while ((len = is.read(buf)) != -1) {
    out.write(buf, 0, len);
   }
   String string = out.toString("UTF-8");
   System.out.println(string);

   Log.e("  微信返回數(shù)據(jù) ", " --- " + string);
   out.close();


  } catch (Exception e) {

   System.out.println(e);
  }
}

注意在調(diào)用上面的方法,一定要在子線程中進行

new Thread(new Runnable() {
    @Override
    public void run() {
     httpThreadxml();
   }
 }).start();

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • android6.0運行時權(quán)限完美封裝方法

    android6.0運行時權(quán)限完美封裝方法

    今天小編就為大家分享一篇android6.0運行時權(quán)限完美封裝方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Android編程實現(xiàn)的超炫圖片瀏覽器

    Android編程實現(xiàn)的超炫圖片瀏覽器

    這篇文章主要介紹了Android編程實現(xiàn)的超炫圖片瀏覽器,涉及Android針對圖片的查看與顯示方法,包含對圖片的各種常見操作技巧,需要的朋友可以參考下
    2015-12-12
  • Android查看文件夾大小以及刪除文件夾的工具類

    Android查看文件夾大小以及刪除文件夾的工具類

    這篇文章主要介紹了Android查看文件夾大小以及刪除文件夾的工具類,Android計算文件夾大小和刪除目錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android隨機給出加減乘除的四則運算算術(shù)題

    Android隨機給出加減乘除的四則運算算術(shù)題

    這篇文章主要為大家詳細(xì)介紹了Android隨機給出加減乘除的四則運算算術(shù)題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android 截取手機屏幕兩種實現(xiàn)方法

    Android 截取手機屏幕兩種實現(xiàn)方法

    這篇文章主要介紹了Android 截取手機屏幕兩種實現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 詳解Kotlin Android開發(fā)中的環(huán)境配置

    詳解Kotlin Android開發(fā)中的環(huán)境配置

    這篇文章主要介紹了詳解Kotlin Android開發(fā)中的環(huán)境配置的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android開發(fā)常見錯誤小結(jié)

    Android開發(fā)常見錯誤小結(jié)

    這篇文章主要介紹了Android開發(fā)常見錯誤,實例分析了常見的Android開發(fā)中遇到的錯誤,對Android開發(fā)有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • Android 使用ViewPager實現(xiàn)左右循環(huán)滑動及輪播效果

    Android 使用ViewPager實現(xiàn)左右循環(huán)滑動及輪播效果

    ViewPager是一個常用的Android組件,不過通常我們使用ViewPager的時候不能實現(xiàn)左右無限循環(huán)滑動,在滑到邊界的時候會看到一個不能翻頁的動畫,可能影響用戶體驗,接下來通過本文給大家介紹Android 使用ViewPager實現(xiàn)左右循環(huán)滑動及輪播效果,一起看看吧
    2017-02-02
  • Kotlin實現(xiàn)Android系統(tǒng)懸浮窗詳解

    Kotlin實現(xiàn)Android系統(tǒng)懸浮窗詳解

    大家好,本篇文章主要講的是Kotlin實現(xiàn)Android系統(tǒng)懸浮窗詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Android使用SoundPool實現(xiàn)播放音效

    Android使用SoundPool實現(xiàn)播放音效

    這篇文章主要為大家詳細(xì)介紹了Android使用SoundPool實現(xiàn)播放音效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評論

全州县| 错那县| 凌云县| 阳原县| 晋宁县| 曲阳县| 金川县| 蕲春县| 酒泉市| 昌图县| 济南市| 银川市| 木兰县| 邵东县| 瓮安县| 惠水县| 江口县| 安多县| 佛坪县| 双流县| 大余县| 鄂托克旗| 乐清市| 饶河县| 台东县| 噶尔县| 萨嘎县| 巫溪县| 凌云县| 吉林省| 炉霍县| 包头市| 衡南县| 新龙县| 衡阳市| 元朗区| 建德市| 会泽县| 林西县| 金坛市| 三明市|