fondy 是烏克蘭最大的第三方支付公司, 最近公司需要和他對接, 了解其執行原理後, 特在此記錄.
一、閘道器支付有兩種
1、客戶端直接呼叫fondy的支付閘道器,重定向到支付頁面
2、客戶端呼叫後台, 後台呼叫fondy的支付閘道器,返回支付連線給客戶端, 客戶端用webview開啟
綜合考慮後,最後決定採用第二種方式, 由後台來呼叫fondy支付閘道器, 以下是相關**
// 獲取支付相關引數
fondyconfig config = getconfig(request.getconfigmark());
// 建立返回物件
directpayresponse response = new directpayresponse(config.getchannel(), config);
response.setsuccess(true);
response.setpaysuccessful(false);
// 支付相關引數
mapparam = new linkedhashmap();
bigdecimal multiply = request.gettotalfee().multiply(new bigdecimal("100"));
param.put("amount", string.valueof(multiply.intvalue()));
param.put("currency", request.getcurrency());
param.put("merchant_id", config.getmerchant_id());
param.put("order_desc", request.getsubject());
param.put("order_id", request.getouttradeno());
param.put("response_url", request.getnotifyurl());
param.put("server_callback_url", request.getreturnurl());
// 此引數有特殊意義
param.put("required_rectoken", "y");
//排序
// 生成簽名
public static string getsignature(mapparam, string primarykey) ]",dopost);
if(stringutils.isblank(dopost)) {
logger.info("connect fondy timeout");
return;
jsonobject parseobject = jsonobject.parseobject(dopost);
maprespmap = json.parseobject(parseobject.getstring("response"));
boolean refundverify = refundverify(respmap, primarykey);
if(!refundverify) {
logger.info("簽名驗證失敗");
logger.info("退款未成功");
return;
//退款簽名校驗
public static boolean refundverify(maprespmap, string primarykey) {
mapmap = new hashmap();
respmap.entryset().foreach(e->{
if(stringutils.isnotblank(e.getvalue().tostring()) && !"signature".equals(e.getkey())) {
map.put(e.getkey(), e.getvalue().tostring());
mapmaporder = maporder(map);
string signature = getsignature(maporder, primarykey);
system.out.println(signature);
system.out.println(respmap.get("signature"));
system.out.println(respmap.get("signature").equals(signature));
return respmap.get("signature").equals(signature);
APP接入支付寶支付
1.把支付寶的.aar檔案匯入到應用工程的libs目錄下 2.在工程主專案的build.gradle中,新增下面的內容,將libs目錄作為依賴倉庫 dependencies資源匯入就完成了 然後在清單檔案新增如下許可權 android.permission.internet android.perm...
支付寶接入
三 將上面的資料夾拖入工程,並新增相應的依賴庫 進行編譯,會出現以下問題 1 unknown type name nsstring 或者 unknown type name nsdata 等不識別常見類的問題。這是因為缺少foundation類庫和uikit類庫,支付寶demo中之所以沒有出現此錯誤...
Android 接入支付寶
這裡忽略申請支付賬戶方面的問題。2 建立應用 3 生成公鑰 和 私鑰 這是生成的鏈結 生成的公鑰和私鑰,都需要去掉 begin public key 和 end public key 並用編輯器把它弄成一行。上傳公鑰,這個是重點!4 怎麼上傳公鑰 這個重點,不然後面會出現 ali64 錯誤!4.1 ...