KlicklPay 英文收单接口文档

KlicklPay 英文收单接口文档


SDK and code examples

SDK and code examples

-. NET-SDK

https://github.com/vgpay/VGPay-NET-SDK

-Python-SDK

https://github.com/vgpay/VGPay-Python-SDK

-Jave example code

// Place an order for deposit
 public PayBo rechargeByTrc20Usdt(RechargeVo vo , String noticeUrl) throws Exception{
        LinkedHashMap<String,Object> param = new LinkedHashMap<String, Object>(){{
            put("businessId", getBusinessId());                     //Merchant ID
            put("outOrderNo", vo.getOrderId().toString());          //Merchant order
            put("paymentUserId", vo.getUserIdEncryption());         //User id
            put("coin", "TRC20_USDT");                              //Order coin
            put("amount", new BigDecimal(vo.getAmount().stripTrailingZeros().toPlainString()));     //Order amount
            put("orderType", "1");                          //0 consumption  1 deposit
            put("timeStamp", Instant.now().getEpochSecond());       //timeStamp
            put("productName", null);
            put("exData", null);
            put("callBackUrl", noticeUrl);                          //callback address

        }};
        String sign = SortUtils.formatUrlParam(param, "") + "&secretKey=" + getSecretKey();     //Parameter sorting
        log.info("sign: {}", sign);
        final String encryptValue = MD5Util.md5Encode(sign).toLowerCase();                      //Encryption
        log.info("sign MD5Encrypted data : {}", encryptValue);

        param.put("mac", encryptValue);

        final String result = HttpHelper.postMethod(getApiUrl() + "?" + SortUtils.formatUrlParam(param, ""), null);     //Request Interface
        log.info("KlicklPayOrder result: {}", result);

        final KlicklPayBo KlicklPayBo = JSON.parseObject(result, KlicklPayBo.class);
        if (!KlicklPayBo.isSuccess()){
            return new PayBo(500, KlicklPayBo.getMsg(), StringUtils.isBlank(KlicklPayBo.getOutOrderNo()) ? null : Long.valueOf(KlicklPayBo.getOutOrderNo()), KlicklPayBo.getOrderNo());
        }
        String paymentUrl = KlicklPayBo.getPaymentUrl();
        if (StringUtils.contains(paymentUrl , "?")){
            paymentUrl += "〈=en";
        }else {
            paymentUrl += "?lang=en";
        }
        return new PayBo(200,  paymentUrl, StringUtils.isBlank(KlicklPayBo.getOutOrderNo()) ? null : Long.valueOf(KlicklPayBo.getOutOrderNo()), KlicklPayBo.getOrderNo());
    }

    // Cash withdrawal and order placement
     public PayBo payOrder(final PayVo reqVo, String noticeUrl) throws Exception {
        LinkedHashMap<String,Object> param = new LinkedHashMap<String, Object>(){{
            put("businessId", getBusinessId());
            put("outWithdrawalNo", reqVo.getOrderId().toString());
            put("withdrawalUserId", MD5Util.md5Encode(StringUtils.isBlank(reqVo.getRealName())? reqVo.getAccount() : reqVo.getRealName()));
            put("coin", "TRC20_USDT");
            put("amount", new BigDecimal(reqVo.getAmount().stripTrailingZeros().toPlainString()));
            put("address", StringUtils.replace(reqVo.getAccount()," ", ""));
            put("timeStamp", Instant.now().getEpochSecond());
            put("callBackUrl", noticeUrl);
        }};

        String sign = SortUtils.formatUrlParam(param, "") + "&secretKey=" + getSecretKey();
        log.info("sign: {}", sign);
        final String encryptValue = MD5Util.md5Encode(sign).toLowerCase();
        log.info("sign MD5 encrypted data : {}", encryptValue);
        param.put("mac", encryptValue);
        final String result = HttpHelper.postMethod(getWithdrawAUrl() + "?" + SortUtils.formatUrlParam(param, ""), null);
        log.info("KlicklPay Order result: {}", result);

        final KlicklPayWithdrawalBo KlicklPayWithdrawalBo = JSON.parseObject(result, KlicklPayWithdrawalBo.class);
        if (!KlicklPayWithdrawalBo.isSuccess()){
            return new PayBo(500, KlicklPayWithdrawalBo.getMsg());
        }
        return new PayBo(200,  KlicklPayWithdrawalBo.getMsg(), reqVo.getOrderId(), KlicklPayWithdrawalBo.getWithdrawalNo());
    }
  • Example code for placing an order in the php larravel framework

/**
 *    Place an order for deposit
 **/

 $order_id = $this->makeOrder($card_id, $fid, $cost_money, $pay_type, Auth::user()->id, Auth::user()->ref_key);
            if (!$order_id) {
                return $this->fail(Lang::get('message.create_fail'));
            }
            $pay_url='https://api.sunpay.pro/api/v3/Payment';
            $key='xxxxxxxxxx';
            $data = [
            'businessId'=>'xxxxxxx',
            'outOrderNo'=>$order_id,
            'paymentUserId'=>Auth::user()->id,
            'coin'=>'TRC20_USDT',
            'amount'=>$cost_money*1.12,
            'orderType'=>'1',
            'productName'=>'buycoin',
            'exData'=>'{"action":"test"}',
            'callBackUrl'=>'https://xxxxxx',
            'timeStamp'=>time()
            ];

            $signtr=self::getSignContent($data).'&secretKey='.$key;
            $data['mac']=strtolower(md5($signtr));
            $res=self::url_post($pay_url,$data);
            //Log::info($res);
            $arr=json_decode($res,true);
            if($arr['isSuccess']){
              return  $this->success($arr['data']['paymentUrl']);
            }else{
             return   $this->fail($arr['msg']);
            }

页面列表

ITEM_HTML