1. 程式人生 > >微信公眾號H5支付

微信公眾號H5支付

//將統一下單引數進行字典序排序,進行簽名

/**
* 微信支付簽名演算法(詳見:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3).
*
* @param params 引數資訊
* @param signType 簽名型別,如果為空,則預設為MD5
* @param signKey 簽名Key
* @param ignoreSignType 簽名時,是否忽略signType
* @return 簽名字串
*/
public static String createSign(Map<String, String> params, String signType, String signKey, boolean
ignoreSignType) {   SortedMap<String, String> sortedMap = new TreeMap<>(params);   StringBuilder toSign = new StringBuilder();   for (String key : sortedMap.keySet()) {     String value = params.get(key);     boolean shouldSign = false;     if (ignoreSignType && "sign_type".equals(key)) {       shouldSign
= false;     } else if (StringUtils.isNotEmpty(value)       && !Lists.newArrayList("sign", "key", "xmlString", "xmlDoc", "couponList").contains(key)) {        shouldSign = true;     }   if (shouldSign) {     toSign.append(key).append("=").append(value).append("&");   }  }   toSign.append(
"key=").append(signKey);   if ("HMAC_SHA256".equals(signType)) {     return createHmacSha256Sign(toSign.toString(), signKey);   } else {     return DigestUtils.md5Hex(toSign.toString()).toUpperCase();   } } //將上一步得到的簽名加入上一個支付引數中,轉為xml請求統一支付下單介面,獲取訂單支付需要的prepay_id map.put("sign","上一步得到的簽名"); //將map轉為xml public static String map2XmlString(Map<String, String> map) {   String xmlResult = "";   StringBuffer sb = new StringBuffer();   sb.append("<xml>");   for (String key : map.keySet()) {     String value = "<![CDATA[" + map.get(key) + "]]>";     sb.append("<" + key + ">" + value + "</" + key + ">");   }   sb.append("</xml>");   xmlResult = sb.toString();   return xmlResult; } //進行網路請求 public static String httpPostWithXml(String xml, String url){   StringBuffer stringBuffer = new StringBuffer();   HttpPost post = null;   try {     HttpClient httpClient = new DefaultHttpClient(); // 設定超時時間 //httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000); //httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 2000);     post = new HttpPost(url); // 構造訊息頭     post.setHeader("Content-type", "application/json; charset=utf-8");     post.setHeader("Connection", "Close"); // 構建訊息實體     StringEntity entity = new StringEntity(xml,"UTF-8");     entity.setContentEncoding("UTF-8"); // 傳送Json格式的資料請求     entity.setContentType("application/json");     post.setEntity(entity);     HttpResponse response = httpClient.execute(post); // 檢驗返回碼     int statusCode = response.getStatusLine().getStatusCode();     if(statusCode != HttpStatus.SC_OK){       LogUtil.info("請求出錯: "+statusCode);     }else{       InputStream inputStream = response.getEntity().getContent();       BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"utf-8"));       String str= "";       while((str = br.readLine()) != null){         stringBuffer .append(str );       }     }   } catch (Exception e) {     e.printStackTrace();   }   return stringBuffer.toString(); } //得到了prepay_id,獲取支付的簽名 Map<String,String> map = new HashMap<>(); map.put('appId',"支付的微信公眾號的appid"); map.put("signType","加密型別"); map.put("nonceStr","隨機字串"); map.put("package","固定格式: prepay_id=上一步獲得的prepay_id"); map.put("timeStamp","當前時間戳"); //將上面的引數使用商戶key進行簽名,得到paysign,將paySign加入上面的引數之中,發給h5頁面調起支付。 map.put(paySign,"得到的簽名"); //h5頁面調起支付 WeixinJSBridge.invoke(   'getBrandWCPayRequest', {     "appId":rs.appId, //公眾號名稱,由商戶傳入     "timeStamp":rs.timeStamp, //時間戳,自1970年以來的秒數     "nonceStr":rs.nonceStr, //隨機串     "package":rs.package,     "signType":"MD5", //微信簽名方式:     "paySign":rs.paySign //微信簽名   },   function(res){     if(res.err_msg == "get_brand_wcpay_request:ok" ) {       //支付成功     }else if(res.err_msg =="get_brand_wcpay_request:fail"){       //支付失敗     }else if(res.err_msg == "get_brand_wcpay_request:cancel"){       //取消支付     }else {       //其他情況     }   } );

相關推薦

公眾H5支付-JAVA版

微信開發之微信公眾號H5支付-JAVA版   引子   從事JAVA開發一年多了,一直都在看部落格園,CSDN的部落格,從很多前人哪裡學習了很多,突然覺得自己也要盡一份力,寫點部落格自己給自己做做記錄,也給要開發微信人提提醒少遇點坑。   很多人開發微信的時候,總是在抱怨微

公眾h5支付 以及獲取code(前端部分)

記錄微信公眾號h5支付(前端部分) 前一段時間換了一家公司,剛來給了一個專案,h5移動端頁面,涉及登陸註冊、微信繫結、購買等。微信支付之前沒做過,不過比較簡單,在這裡記錄一下。 先上官網文件 微信支付 微信獲取code 第一步,先拿到code,拿到code傳給後臺。

公眾H5支付

//將統一下單引數進行字典序排序,進行簽名 /** * 微信支付簽名演算法(詳見:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3). * * @param params 引數資訊 * @param signT

【轉】公眾h5網頁被嵌入廣告 不知道什麽原因

正常的 嵌入廣告 數據 監視 https 公眾號 不知道 數據流 就會 這個是因為http劫持導致的。HTTP劫持是在使用者與其目的網絡服務所建立的專用數據通道中,監視特定數據信息,提示當滿足設定的條件時,就會在正常的數據流中插入精心設計的網絡數據報文,目的是讓用戶端程序解

公共H5支付

end bstr req 公眾號 nat cancel d參數 ets 字符轉換 1、接受支付信息。 /** * 發起支付請求 * @return [type] [description] */ function pay($openid){

公眾網頁支付詳解

$.ajax({ type: "post", url: "https://xueyi.gzyouquan.com/Miniapp/api/accountOrder/getsun.do", dataType:

公眾H5(vue)開發中遇到的坑

首先引入微信js......等等就不說了 看文件就好了 wx.config({ debug: true, // appId: response.result.appId, // 必填,公眾號的唯一標識 timestamp: response.result.tim

php公眾JSAPI支付

首先是生成簽名方法 //生成簽名 private function MakeSign($params, $KEY) { //簽名步驟一:按字典序排序陣列引數 ksort($params);

php 公眾呼叫支付

記得原來弄過幾次每次說要整理哈沒有時間,今天一定要整理哈 方便下次使用。 這個是基於 tp 框架寫的。 首先我們從訂單提交來說。 表單提交之後我們會生成一個訂單id 參考的是白哥的部落格。 大概這個樣子  其實不用那麼多引數 傳一個訂單號就行了 後面在查一次。

vue做公眾分享,支付

在前段時間做了一個微信公眾號,因為我又是新手,沒什麼經驗,拿起vue就開始,導致一坑再坑,簡直闊怕!!! 對於此次專案,我主要用到的是vue的整框架和必要的外掛,但是我沒用vuex,用vuex的話會方便很多很多 1.首先從認證獲取openid說起; 因為我

thinkphp5+easywechat:公眾支付

 前幾天寫了一下使用tp5和easywechat整合微信掃碼支付的方法(可以點這裡檢視),裡面已經說過咱們安裝easywechat了,這裡就不在重複說明了,直接寫整合的步驟了:     1,相關的配置請參考之前的第一篇文字     2,頁面樣子如下: 頁面程式碼

vue開發專案公眾授權支付開發

router.beforeEach((to, from, next) => {  /**   * 檢測當前是否需要登入驗證   * 1. 確定當前頁面是否需要登入   */  if (!__getItem('isOauth')) {    // 微信授權    if (!getUrlKey('code'

公眾實現支付功能(基於官方sdk實現)--備忘001

首先要明白微信支付相關的三個賬號1:一定要認真閱讀官方開發文件,不然好多坑啊官方sdk-maven<dependency> <groupId>com.github.wxpay</groupId>

vue.js中公眾支付支付失敗bug解決辦法

微信公眾號中呼叫支付寶支付需要在瀏覽器中開啟支付連結然後呼叫支付才可以。具體方法:1、檔案 2、 我們使用的是post方法提交。下面是在vue.js中使用的方法總結1、建立alipay頁面路由,調起瀏覽器支付提示頁面。(樣式太多,省略)<template>  &l

公眾JSAPI支付-多公眾向同一商戶支付的問題解決

chapter 發現 jsapi abc oca back bcd -c coo 一、背景   項目提供公眾號商城集成,在公眾號裏進行商品的購買,並與多家公眾號合作增加渠道流量。 。 二、實現   有關微信公眾號、商戶號的開通與支付綁定不細說   從背景裏可知,我們需要實現

PHP應用如何對接公眾JSAPI支付

    微信支付的產品有很多,1. JSAPI支付  2. APP支付  3. Nativ

有關公眾H5支付的一些記錄

obj contents simplexml tps 一個 efi his xxx lib 最近項目裏面需要做公眾號和H5支付的功能,根據自己的體驗,整理了一下,做個記錄。 首先我解釋一下,為什麽有公眾號支付還要做H5支付?因為不確定每個用戶在公眾號上打開網站,所以另外做了

***公眾支付+H5支付+掃碼支付+小程序支付+APP支付解決方案總結

ati asc alt creat chapter edit 隨機字符串 glob 測試 最近負責的一些項目開發,都用到了微信支付(微信公眾號支付、微信H5支付、微信掃碼支付、APP微信支付)。在開發的過程中,在調試支付的過程中,或多或少都遇到了一些問題,今天總結下,分享,

公眾H5支付筆記

   以前一直沒有接觸支付這一塊,突然接到要做公眾號的支付著實讓我頭疼了幾天,下面就說一說微信公眾號H5支付的一些具體流程和心得(當然其中沒少借鑑其他大牛們的文章,看了很多才搞定,也是著實對自己著急)。         首先,我們第一步

公眾支付(二)H5調起支付

上一篇講到統一下單,得到微信返回的預支付交易會話標識prepay_id,那麼下單完成後要做的就是在html頁面調起支付視窗。 檢視官方文件:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&