烏克蘭 Fondy 支付接入

2021-10-03 18:38:54 字數 2560 閱讀 4160

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 ...