private wechatpayresponsedto prepay(wechatpayparamsdto params)
// 給前端js組合引數
mapsignmap = new hashmap<>();
// 時間戳 注意:部分系統取到的值為毫秒級,需要轉換成秒(10位數字)
signmap.put("timestamp", long.tostring(new date().gettime() / 1000));
// 隨機字串 隨機字串,不長於32位
signmap.put("noncestr", wechatpayutils.generatestring(32));
// 訂單詳情擴充套件字串 統一下單介面返回的prepay_id引數值,提交格式如:prepay_id=***
signmap.put("package", "prepay_id=" + prepayid);
// 簽名方式 簽名演算法,暫支援md5
signmap.put("signtype", "md5");
// 進行簽名
string sign = wechatpayutils.sign(signmap, apikey);
wechatpayresponsedto response = new wechatpayresponsedto();
response.settimestamp(signmap.get("timestamp"));
response.setnoncestr(signmap.get("noncestr"));
response.setpackage(signmap.get("package"));
response.setsigntype(signmap.get("signtype"));
response.setpaysign(sign);
return response;
}
private wechatpayresponsedto prepay(wechatpayparamsdto params, string submchid)
// 給前端js組合引數
mapsignmap = new hashmap<>();
// 時間戳 注意:部分系統取到的值為毫秒級,需要轉換成秒(10位數字)
signmap.put("timestamp", long.tostring(new date().gettime() / 1000));
// 隨機字串 隨機字串,不長於32位
signmap.put("noncestr", wechatpayutils.generatestring(32));
// 訂單詳情擴充套件字串 統一下單介面返回的prepay_id引數值,提交格式如:prepay_id=***
signmap.put("package", "prepay_id=" + prepayid);
// 簽名方式 簽名演算法,暫支援md5
signmap.put("signtype", "md5");
// 進行簽名
string sign = wechatpayutils.sign(signmap, serviceapikey);
// 放入返回dto
wechatpayresponsedto response = new wechatpayresponsedto();
response.settimestamp(signmap.get("timestamp"));
response.setnoncestr(signmap.get("noncestr"));
response.setpackage(signmap.get("package"));
response.setsigntype(signmap.get("signtype"));
response.setpaysign(sign);
return response;
}
public class wechatpayutils
return sb.tostring();
}/**
** @param params
* @param apikey
* @return
*/public static string sign(mapparams, string apikey)
/***
* @param params
* @return
*/public static string getprepay(mapparams)
public static string getprepayid(string resultxml)
/*** description:
** @param params
* @param apikey
* @return
*/private static string generatesignvertifystring(mapparams, string apikey)
}// 商戶自定義金鑰
return sb.tostring();
}/**
** @param params
* @return
*/private static string getrequestxml(mapparams) else
}return sb.tostring();
}/**
** @param xmlstr
* @return
*/public static mapdoxmlparse(string xmlstr)
} catch (exception e)
return map;
}/**
** @return
*/public static boolean validatesign(mapparams,string apikey)
}// md5加密
string newsign = wechatpayutils.sign(map, apikey);
// 驗證簽名
string sign = params.get("sign");
return sign.equals(newsign);
}/**
** @param code
* @param msg
* @return
*/public static string notifyreturn(string code, string msg)
}
微信支付和整合微信支付的坑
keytool list keystore x.keystore 需要注意的是你除錯的簽名和發版的是不一樣的要注意修改保證你跑的時候二個配置是一樣的 宣告許可權 android name android.permission.internet android name android.permiss...
EPOLL兩種模式
select epoll 的特點 select 的特點 select 選擇控制代碼的時候,是遍歷所有控制代碼,也就是說控制代碼有事件響應時,select 需要遍歷所有控制代碼才能獲取到哪些控制代碼有事件通知,因此效率是非常低。但是如果連線很少的情況下,select 和epoll的lt 觸發模式相比,...
ftp的兩種模式
常用ftp的人都知道,ftp在傳輸檔案的時候分為兩種模式 ascii模式 和 二進位制模式 1 ascii模式是一般是用來傳輸文字檔案的 2 二進位制模式是用來傳輸二進位制檔案的 一般我們使用ftp工具進行檔案傳輸的時候,工具內部應該會識別檔案型別,而如果我們使用windows內建的ftp,在命令列...