国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現微信支付的統一下單

2019-10-22 18:09:42
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Android實現微信支付統一下單的具體代碼,供大家參考,具體內容如下

準備工作

申請微信開發者賬號,添加應用及申請開通微信支付功能,如 
查看開通流程

統一下單的接口文檔: 
查看接口

開發

①下載sdk:

sdk和demo下載

②可以導入包

在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權限

<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"/>

調用統一下單接口

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

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

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

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

//拼接字段,順序不能變    String A = "appid=你的appID" +      "&body=jinshi" +      "&mch_id=你的商戶號" +      "&nonce_str=" + nonce_str +      "¬ify_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數據  //拼接字段,順序不能變  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");//發送自定義的頭信息   conn.getOutputStream().write(xmlbyte);   conn.getOutputStream().flush();   conn.getOutputStream().close();   if (conn.getResponseCode() != 200)    throw new RuntimeException("請求url失敗");   InputStream is = conn.getInputStream();// 獲取返回數據   // 使用輸出流來輸出字符(可選)   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("  微信返回數據 ", " --- " + string);   out.close();  } catch (Exception e) {   System.out.println(e);  }}

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌兰察布市| 台中县| 高密市| 西畴县| 明溪县| 安徽省| 叶城县| 于都县| 民和| 双辽市| 永善县| 阜平县| 科尔| 克东县| 桦甸市| 林西县| 五台县| 云龙县| 雷山县| 开江县| 望奎县| 岳池县| 陕西省| 杭锦旗| 鱼台县| 宝清县| 商丘市| 凭祥市| 鹤壁市| 龙门县| 凤凰县| 无极县| 辽中县| 垣曲县| 渝北区| 江山市| 宜川县| 教育| 滁州市| 通海县| 高雄市|