日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

韩国ICB支付

發布時間:2024/1/8 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 韩国ICB支付 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ICB支付是代理了韓國的支付寶與微信支付,通過ICB封裝好的統一支付接口,根據參數不同可分別調取支付寶支付和微信

1.支付url

? 測試環境 :https://onlinetest.funpay.co.kr/payment/payment.icb ? 線上環境 :https://online.funpay.co.kr/payment/payment.icb

首先配置支付所需的參數

Mandatory為0是必填項?,其中statusurl為后臺的回調地址,支付成功返回resmgs為success,returnurl 為支付完成后跳轉的頁面,其他的參數可查看上圖所示注解。

后臺拼接參數代碼實例

/*** 拼接icb支付所需的參數** @param payInfo* @return*/public Map<String, Object> payParameter(PayInfoDto payInfo) {Map<String, Object> map = new HashMap();map.put("ver", "100");//icb提供的midmap.put("mid", "************");//項目名稱map.put("mname", "**");//支付方式S000支付寶 S001微信map.put("servicetype", "S000");//項目訂單號map.put("refno", payInfo.getPayNo());//貨幣類型map.put("reqcur", "CNY");//支付金額map.put("reqamt", payInfo.getPayAmount());//買家名稱map.put("buyername", payInfo.getUserId());//購買產品名稱map.put("product", payInfo.getBody());//后臺回調地址map.put("statusurl", payInfo.getApiNoticeUrl());//支付方式map.put("reqtype", "M");//支付類型map.put("restype", "JSON");//支付完跳轉頁面map.put("returnurl", "https://baidu.com");map.put("refer_url", "https://baidu.com");//商品信息map.put("trade_information", "{\"business_type\":\"4\",\"goods_info\":pencial^1|eraiser^1\",\"total_quantity\":2}");//進行加密生成fgkey參數MessageDigest messageDigest = null;try {//生成fgkeyStringBuffer buffer = new StringBuffer();Iterator iters = map.entrySet().iterator();while (iters.hasNext()) {Map.Entry entry = (Map.Entry) iters.next();if (buffer.toString().length() == 0) {buffer.append(entry.getKey() + "=" + entry.getValue());continue;}buffer.append("&" + entry.getKey() + "=" + entry.getValue());}char[] chars = buffer.toString().toCharArray();Arrays.sort(chars);String A = String.valueOf(chars);String B = "icb提供的密鑰" + "?" + A;messageDigest = MessageDigest.getInstance("SHA-256");messageDigest.update(B.getBytes("UTF-8"));} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}String C = Sha256Util.bytes2Hex(messageDigest.digest());String s = C.toUpperCase();map.put("fgkey", s);Map clint = HttpClint(map, "https://online.funpay.co.kr/payment/payment.icb");return clint;}

?返回的map中前端將resmgs字段拼接到?https://intlmapi.alipay.com/gateway.do?之后即可喚起支付寶或微信的支付頁面,代碼中使用的工具類如下。

public class Sha256Util {/*** byte數組轉換為16進制字符串** @param bts* 數據源* @return 16進制字符串*/public static String bytes2Hex(byte[] bts) {String des = "";String tmp = null;for (int i = 0; i < bts.length; i++) {tmp = (Integer.toHexString(bts[i] & 0xFF));if (tmp.length() == 1) {des += "0";}des += tmp;}return des;}public static HashCode sha256(final String x) {Preconditions.checkNotNull(x);final Charset charset = Charsets.UTF_8;final HashFunction hashFunction = Hashing.sha256();return hashFunction.newHasher().putString(x, charset).hash();} } /*** 進行請求** @param params, url* @return*/public Map HttpClint(Map params, String url) {Map map = new HashMap();try {if (null != url && !Objects.equals(url, "")) {// 定義HttpClientBufferedReader in = null;HttpClient client = new DefaultHttpClient();// 實例化HTTP方法HttpPost request = new HttpPost();request.setURI(new URI(url));//設置參數List<NameValuePair> nvps = new ArrayList<NameValuePair>();for (Iterator iter = params.keySet().iterator(); iter.hasNext(); ) {String name = (String) iter.next();String value = String.valueOf(params.get(name));nvps.add(new BasicNameValuePair(name, value));}request.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));HttpResponse response = client.execute(request);String responseBody = EntityUtils.toString(response.getEntity());Map map1 = JSON.parseObject(responseBody, Map.class);return map1; }

總結

以上是生活随笔為你收集整理的韩国ICB支付的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。