楊小白 2015-05-19 03:16 采纳率: 0%
浏览 2917

下面这些代码的流程图

@param httpRequest

  • @param order 订单实例
  • @return
  • @throws Exception
    */
    Public static String makeOrderAlipayUrl(HttpServletRequest httpRequest, Order order) throws Exception {
    HashMap hm = new HashHap();
    hm. put(“_input_charset”, httpRequest.getCharacterEncoding()); //采用相同的编码方式
    hm.put(“body”, “你在www.xxx.com上的订单”); //填写在跳到支付宝页面上显示的付款内容信息
    hm.put(“discount”, “-5”); //填写折扣信息,-5表示抵扣5元
    hm.put(“logistics_fee”, “10”); //物流费用
    hm.put(“logistics_payment”, “BUYER_PAY”); //物流费用支付人,BUYER_PAY = 买家支付物流费用
    hm.put(“logistics_type”, “EXPRESS”); //物流方式
    hm.put(“notify_url”, “http://www.xxx.com/notifyurl.jsp”); //客户付款后,支付宝调用的页面
    hm.put(“out_trade_no”, “order.getId()); //外部交易号,最好具有唯一性,在获取支付宝发来的付款信息时使用
    hm.put(“partner”, partnerId); //partnerId(合作伙伴ID)
    hm.put(“agent”, partnerId); //partnerId(合作伙伴ID)
    hm.put(“payment_type”, “1”); //支付类型,l = 商品购买,2 = 服务购买,…
    hm.put(“price”, “105.30”); //订单金额信息
    hm.put(“quantity”, “1”); //订单商品数量,一般都写1,即按照整个订单包来计算
    hm.put(“return_url”, “http://www.xxx.com/ReturnUrl.jsp”); //客户付款成功后,显示给客户的页面
    hm.put(“seller_email”, “alipay@xxx.com”); //你的支付宝账户E-mail
    hm.put(“service”, “create_direct_pay_by_user”); //create_direct_pay by_user = 直接付款,trade_create_by_buyer = 担保付款
    hm.put(“subject”, “www.xxx.com的订单”); //填写跳到支付宝页面上后显示的付款标题信息
    String payGateway = “https://www.alipay.com/cooperate/gateway.do?”; //跳转到支付宝的url头
    return makeUrl(hm, securityCode, httpRequest.getCharacterEncoding(), payGateway); //securityCode(安全码)
    }

    /*

    • 根据传入的参数生成alipay的支付URL
    • @param hm 参数值
    • @param securityCode 安全码
    • @param charset 编码
    • @param payGateway 支付宝 gateway
    • @return */ Public static String makeUrl(HashMap hm, String securityCode, String charset, String payGateway) throws Exception{ List keys = new ArrayList(hm.keySet()); Collections.sort(keys); //支付宝要求参数必须按字母排序 StringBuffer content = new StringBuffer(); For (int i = 0; i < keys.size(); i++) { content.append((String) keys.get(i)); content.append(“=”); content.append((String) hm.get((String) keys.get(i))); if (i != keys.size() - 1) { content.append(“&”); } } Content.append(securityCode); String Sign = md5(content.toString(), charset); content.delete(0, content.1ength()); content.append(payGateway); for (int i = 0; i < keys.size(); i++) { content.append(keys.get(i)); content.append(“=”); content.append(URLEncoder.encode((String) hm.get(keys.get(i)), charset)); content.append(“&”); } content.append(“sign=”); content.append(sign); content.append(“&sign_type=MD5”); keys.clear(); keys = null; return content.toString(); }

/*

  • 生成md5编码字符串
  • @param str 源字符串
  • @param charset 编码方式
  • @return */ Public static String md5(String str, String charset) { if (str == null) return null; char hexdigits[] = {‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’}; MessageDigest md5MesageDigest = null; byte[] md5Bytes = null; char md5Chars[] = null; byte[] strBytes = null; try { strBytes = str.getbytes(charset); md5MessageDigest = MessageDigest.getInstance(“MD5”); md5MessageDigest.update(strBytes); md5Bytes = md5MessageDigest.digest (); int j = md5Bytes.length; md5Chars = new char [j*2]; int k = 0; for (int i = 0; i < j; i++) { byte md5Byte = md5Bytes[i]; md5Chars[k++] = hexDigests [md5Byte >>> 4 & 0xf]; md5Chars[k++] = hexDigests [md5Byte & 0xf]; } return new String(md5Chars); } catch (NoSuchAlgorithmException e) { //Log.output(e.toString(), Log.STD_ERR); return null; } catch (UnsupportedEncodingException e) { //Log.output(e.toString(), Log.STD_ERR); return null; } finally { md5MessageDigest = null; strBytes = null; md5Bytes = null;
  • 写回答

4条回答 默认 最新

  • 91program 博客专家认证 2015-05-19 03:31
    关注

    代码的格式,没有办法看。
    你还是使用编辑中的 </> 格式化一下代码吧

    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看