`
myDayComing
  • 浏览: 9806 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
文章分类
社区版块
存档分类
最新评论
阅读更多

微信支付unifiedorder,请注意一下几点:

1.app_key  这个是指app对应的API我们自己设定的key

2.发起请求要用XML

 

 

简单代码如下:

public class Wxpay {
    public static String unifieldOrder(HttpServletRequest request,HttpServletResponse response,String body,Float totalFee,String strReq) throws ClientProtocolException, IOException{
                String ret=null;
               
                Map<String, Object> params=new HashMap<String, Object>();
                params.put("appid", ConstantUtil.APP_ID);
                params.put("body",body);
                params.put("mch_id", ConstantUtil.PARTNER);
                params.put("nonce_str",WXUtil.getNonceStr());
                params.put("notify_url",ConstantUtil.NOTIFYURL);
                params.put("out_trade_no",strReq);
                params.put("spbill_create_ip",request.getRemoteAddr());
                params.put("total_fee",totalFee.intValue());
                params.put("trade_type","APP");
               
                Map<String, Object> smap = sortMapByKey(params);
                String ps = preSignStr(smap);
                ps+="&key="+ConstantUtil.APP_KEY;
               
                String sign = StringUtil.encryption(ps).toUpperCase();
                smap.put("sign",sign);
               
                String paramXml = createXmlReqStr(smap);
               
                TenpayHttpClient httpClient = new TenpayHttpClient();
                if (httpClient.callHttpPost(ConstantUtil.UNIORDERURL, paramXml)) {
                    ret = httpClient.getResContent();
                }
               
                return ret;
    }
   
    public static String createXmlReqStr(Map<String, Object> map){
        Iterator<Map.Entry<String, Object>> entries = map.entrySet().iterator(); 
        String str="<xml>";
        while (entries.hasNext()) { 
            Map.Entry<String, Object> entry = entries.next(); 
            str+="<"+entry.getKey()+">"+entry.getValue()+"</"+entry.getKey()+">";
        }
        str+="</xml>";
        return str;
    }
   
    public static String preSignStr(Map<String, Object> map){
        Iterator<Map.Entry<String, Object>> entries = map.entrySet().iterator(); 
        String str="";
        while (entries.hasNext()) { 
            Map.Entry<String, Object> entry = entries.next(); 
            if(str.length()>0)
            {
                str+="&";
            }
            str+=entry.getKey()+"="+entry.getValue();
        }
        return str;
    }
   
       /**
     * 使用 Map按key进行排序
     * @param map
     * @return
     */
    public static Map<String, Object> sortMapByKey(Map<String, Object> map) {
        if (map == null || map.isEmpty()) {
            return null;
        }

        Map<String, Object> sortMap = new TreeMap<String, Object>(
                new MapKeyComparator());

        sortMap.putAll(map);

        return sortMap;
    }
}

class MapKeyComparator implements Comparator<String>{

    @Override
    public int compare(String str1, String str2) {

        return str1.compareTo(str2);
    }
}

 

有需要的朋友可以私聊我

分享到:
评论

相关推荐

    asp微信支付接口(绝对可用!!)

    6. **安全注意事项**: - **密钥管理**:支付密钥应妥善保管,避免泄露。 - **请求验证**:对微信返回的数据进行签名验证,防止被篡改。 - **敏感信息处理**:用户支付信息和敏感数据应加密处理,遵守相关法规。 ...

    仿微信支付页面html

    `readme.htm`文件通常包含了项目的介绍、使用指南或注意事项。而`2981248667354112.zip`是一个压缩文件,其内容可能是项目的源代码、图片资源或其他相关文件。解压这个文件后,你可以查看HTML文件、CSS文件、...

    2022-php-服务商支付demo-jsapi-微信支付

    5. **说明文档README.txt**:这个文件提供了项目的基本介绍、使用步骤、注意事项等信息,对于理解和使用项目至关重要。通常会包含如何配置环境、如何调用接口等详细步骤。 6. **WxPayPubHelper**:这是一个公共助手...

    微信支付实例

    3. **安全注意事项** - **敏感信息保护**:商户ID、支付密钥等关键信息要妥善保管,避免泄露。不要在前端代码中硬编码这些敏感信息。 - **签名验证**:微信支付接口调用和回调都涉及到签名验证,确保数据不被篡改...

    delphi个人用户接入支付宝微信支付学习

    `Readme-说明.htm`通常包含详细的操作指南和注意事项,对于初学者来说,这是理解和使用项目的关键。 集成支付宝和微信支付的流程大致如下: 1. **注册开发者账号**:首先,你需要在支付宝和微信的开放平台注册成为...

    仿微信支付密码

    6. **仿制注意事项** - **版权问题**:模仿设计时要注意不侵犯微信或支付宝的知识产权,避免法律风险。 - **用户体验**:保持界面简洁易用,同时兼顾安全性,避免过度复杂化导致用户困扰。 总结来说,仿制微信...

    自测微信支付

    下面将详细介绍微信支付的实现原理、SDK的使用步骤以及相关的注意事项。 一、微信支付的基本原理 微信支付基于OAuth2.0授权机制,用户在支付时需要授权给商家应用,允许应用调用微信支付接口进行支付操作。整个...

    WPF WINFORM微信支付宝刷卡支付

    3. **技术挑战与注意事项**: - 安全性:确保交易过程中所有敏感信息的安全,如商户密钥、用户支付信息等,必须进行加密传输和存储。 - 用户体验:支付流程应简洁流畅,避免过多步骤导致用户流失。 - 错误处理:...

    .net H5 支付宝微信支付

    **注意事项:** 1. **安全性**:在处理支付请求和回调时,必须确保数据的安全性,防止中间人攻击和数据篡改,正确使用签名机制。 2. **兼容性**:H5支付需考虑不同浏览器和设备的兼容性,确保支付页面在各种环境下...

    微信支付工具包

    安全性与注意事项** 在使用微信支付工具包时,必须确保数据传输的安全性,如使用HTTPS加密通信,防止数据被窃取。同时,对回调信息进行签名验证,防止恶意篡改支付状态。 **6. 整合与部署** 将微信支付工具包整合...

    微信支付jar包.

    微信支付jar包是用于在Java应用程序中集成微信支付功能的...总的来说,微信支付jar包是开发者实现微信支付功能的核心工具,通过熟练掌握其使用方法和注意事项,可以有效地在Java应用中集成安全、高效的微信支付功能。

    微信支付部分代码

    在这个"微信支付部分代码"中,readme.txt可能包含了代码的使用说明和注意事项,而"微信支付部分代码"可能是实现上述流程的具体代码文件。可能包含以下关键模块: - **请求与响应处理**:封装了向微信支付服务器发起...

    IOS 微信支付官方Demo

    - **readme.txt**:通常会包含详细的使用指南和注意事项,例如初始化SDK、处理支付回调的代码示例,以及可能出现的问题和解决办法。 - **示例代码**:`wechat_sdk_sample_ios_payV3`中的代码是实际操作的关键,通过...

    IOS版微信支付、支付宝支付

    总的来说,这个"PayDemo"项目提供了一个实践的平台,帮助开发者理解并掌握在iOS应用中集成微信支付和支付宝支付的基本步骤和注意事项。通过研究这个Demo,开发者不仅可以学习到具体的支付实现,还能了解到iOS应用与...

    完整微信支付接口

    8. **注意事项**: 开发者在使用微信支付接口时,需要注意合规性,遵守微信支付的相关政策,如不得用于非法交易,同时需要处理好用户的隐私信息。 9. **调试与测试**: 微信支付提供了沙箱环境供开发者进行接口...

    微信支付的调用方法

    9. **安全注意事项** 安全性是支付系统的核心。务必确保API密钥在传输和存储过程中的安全,避免明文暴露。同时,要定期检查和更新API密钥,防止被恶意使用。 10. **测试与上线** 在实际部署前,需要在微信支付的...

    微信支付demo,亲测可用

    9. **注意事项**:可能包含一些实践中的技巧和注意事项,如防止重复支付、用户隐私保护等。 在`wx_pay`文件中,可能包含的是实际的代码示例或者配置文件,例如SDK、证书、密钥等,配合`微信支付demo.docx`文档一起...

    微信支付官网DEMO

    - **注意事项**: 分析源码时,要理解每一步操作的目的和原理,同时注意版权问题,合理使用他人的代码。 7. **支付安全与合规** - **用户隐私保护**: 必须遵循微信支付的规则,妥善处理用户的敏感信息,如避免在...

    微信支付最新sdk

    2. **README.txt**:这份文档通常提供了关于SDK的安装步骤、使用方法以及注意事项。开发者在使用新版本的SDK时,应该首先阅读此文件,了解如何正确集成和配置。 3. **WechatAuthSDK.h**:这是一个头文件,包含了与...

    微信支付现成代码直接使用

    微信支付是中国最流行的移动支付方式之一,由腾讯公司旗下的微信...总之,这个"微信支付现成代码"提供了快速集成微信支付功能的捷径,但使用时仍需理解其背后的支付流程和安全注意事项,以确保应用的稳定性和用户体验。

Global site tag (gtag.js) - Google Analytics