首先注册码支付账号
https://codepay.fateqq.com/i/25823
增值服务-选择开通58元套餐或者豪华版套餐(如果您的网站每个月的流水大的话建议开通豪华版)
JSP创建订单代码:
<%@ page language =“java”contentType =“text / html; charset = UTF-8”pageEncoding =“UTF-8”%> <% / ** *接收参数创建订单 * / String token =“更改成您的令牌令牌”; //记得更改http://codepay.fateqq.com后台可设置 String codepay_id =“更改成您的码支付ID”; //记得更改http://codepay.fateqq.com后台可获得 String price = request.getParameter(“price”); //表单提交的价格 String type = request.getParameter(“type”); //支付类型1:支付宝2:QQ钱包3:微信 String pay_id = request.getParameter(“pay_id”); //支付人的唯一标识 String param = request.getParameter(“param”); //自定义一些参数支付后返回 字符串notify_url =“http://你的域名/codepay.jsp";//通知地址 String return_url =“”; //支付后同步跳转地址 如果(价格== NULL){ 价格= “1”; } //参数有中文则需要URL编码 String url =“http://codepay.fateqq.com:52888/creat_order?id=”+ codepay_id +“&pay_id =”+ pay_id +“&price =”+ price +“&type =”+ type +“&token =”+ token +“&param = “+ PARAM +” &notify_url = “+ notify_url +” &return_url =“+ return_url; 如果(令牌== “更改成您的令牌令牌”){ 的out.print(令牌+ “ID”); }其他{ response.sendRedirect是(URL); } %>
JSP验证通知并处理业务代码:
<%@ page language =“java”contentType =“text / html; charset = UTF-8”pageEncoding =“UTF-8”%> <%@ page import =“java.util。*”%> <%@ page import =“java.security.MessageDigest”%> <%@ page import =“java.math。*”%> <% / ** *验证通知处理自己的业务 * / String key =“通信密钥”; //记得更改http://codepay.fateqq.com后台可设置 Map <String,String> params = new HashMap <String,String>(); //申明HashMap的变量储存接收到的参数名用于排序 Map requestParams = request.getParameterMap(); //获取请求的全部参数 String valueStr =“”; //申明字符变量保存接收到的变量 for(Iterator iter = requestParams.keySet()。iterator(); iter.hasNext();){ String name =(String)iter.next(); String [] values =(String [])requestParams.get(name); valueStr = values [0]; //乱码解决,这段代码在出现乱码时使用。如果签不相等也可以使用这段代码转化 // valueStr = new String(valueStr.getBytes(“ISO-8859-1”),“gbk”); params.put(name,valueStr); //增加到params保存 } List <String> keys = new ArrayList <String>(params.keySet()); //转为数组 Collections.sort(键); //重新排序 String prestr =“”; String sign = params.get(“sign”); //获取接收到的sign参数 for(int i = 0; i <keys.size(); i ++){//遍历拼接url拼接成a = 1&b = 2进行MD5签名 String key_name = keys.get(i); 字符串值= params.get(key_name); if(value == null || value.equals(“”)|| key_name.equals(“sign”)){//跳过这些不签名 继续; } if(prestr.equals(“”)){ prestr = key_name +“=”+ value; }其他{ prestr = prestr +“&”+ key_name +“=”+ value; } } MessageDigest md = MessageDigest.getInstance(“MD5”); md.update((prestr +键).getBytes()); String mySign = new BigInteger(1,md.digest())。toString(16).toLowerCase(); 如果(mySign.length()= 32!)mySign = “0” + mySign; 如果(mySign.equals(符号)){ //编码要匹配编码不一致中文会导致加密结果不一致 //参数合法处理业务 //request.getParameter("pay_no“)流水号 //request.getParameter("pay_id“)用户唯一标识 //request.getParameter("money“)付款金额 //request.getParameter("price“)提交的金额 的out.print( “OK”); }其他{ //参数不合法 的out.print( “失败”); } %>
原文链接:https://www.jocat.cn/archives/14597,转载请注明出处。