菜鸟猿坠机中 2019-04-23 14:57 采纳率: 20%
浏览 1772

第三方支付接口:关于加签验签加密和解密在代码中的逻辑是什么流程

** //支付接口
public boolean pay() throws IllegalAccessException {
PayWayRecord payWayRecord = psyService.getPayWay(PayWayEnum.TONGTONG.getCode());
Map sendParams = new LinkedHashMap<>();
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sendParams.put("app_id", "123123");
sendParams.put("terminal_type", " web");
sendParams.put("version", "1.0");
sendParams.put("service", "fosun.sumpay.cashier.web.trade.order.apply");
sendParams.put("timestamp", simpleDateFormat.format(date.getTime()));
sendParams.put("trade_code", "T0002");
sendParams.put("user_id", "111");
sendParams.put("mer_id", "100001465");
sendParams.put("order_time", simpleDateFormat.format(date.getTime()));
sendParams.put("order_amount", "100");
sendParams.put("need_notify", "1");
sendParams.put("need_return", "1");
sendParams.put("goods_name", "1345");
sendParams.put("goods_num", "1");
sendParams.put("goods_type", "1");
sendParams.put("amount", "");
sendParams.put("mer_mo", "100001465");
String Text=sign(sendParams);
String signMsg = SignTool.signMsg1(Text,privateKeyPath,passWord,charset);
System.out.println(signMsg+"====================");
sendParams.put("sign_type", "CERT");
sendParams.put("sign", signMsg);
FormBody.Builder form = new FormBody.Builder();
for (String key : sendParams.keySet()) {
form.add(key, sendParams.get(key));
}
RequestBody body = form.build();
logger.info("[create tongtong deal] formBody is {}", body.toString());
//okhttp3.Request.Builder builder=new okhttp3.Request.Builder().url("").post(body);
Request request = new Request.Builder()
.url(TEST_URL)
.post(body)
.build();
try {
Response response = client.newCall(request).execute();
String returnMsg = response.body().string();
System.out.println("回调返回为============="+returnMsg);
if (response.isSuccessful()) {
logger.info("[TONG query] response is {}", returnMsg);
Map params = psyService.paramsToMap(returnMsg);
System.out.println("输出====="+params.get("resp_code"));
if ("000000".equals(params.get("resp_code"))) {
System.out.println("wqeqweqwe");
}
} else {
logger.error("[huifu query] failed, response is {}", returnMsg);

        }
    } catch (IOException e) {
        e.printStackTrace();
    }




            代码已经贴上望大神指点
  • 写回答

1条回答 默认 最新

  • 流年飞羽 2019-04-23 20:56
    关注

    第三方支付的流程,基本都和微信支付宝的流程一样,组织支付参数,然后这些参数做个签名,这个签名最后也要当成参数一并提交给支付接口,验签是在回调当中,回调的信息里面,根据签名规则,做一个签名,和回调回来的签名作比对,一样的话就是第三方支付服务器返回的数据,验签主要是为了安全,确保不是人为调用回调

    评论

报告相同问题?

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)