微信安卓APP支付 获取二次签名

Android App支付系列(一):微信支付接入详细指南(附官方支付demo) 一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统显然是不明智的,国内已经有多家成熟的移动支付提供商,腾讯就是其中之一。梳理了下微信支付的接入,今天给大家分享下腾讯旗下的微信支付SDK的接入流程 阅读详情

 

相关代码如下:

获取sign签名方法


    /**
     * 获取sign签名
     * 
     * @return
     */
    private Map<Object, Object> genPayReq() {

        // 获取参数的值
        PayReq request = new PayReq();
        request.appId = ConstantsMember.APP_ID;
        request.partnerId = ConstantsMember.MCHID;
        request.prepayId = mPrepayId;
        request.packageValue = "Sign=WXPay";
        request.nonceStr = DataUtil.getGuid();
        request.timeStamp = System.currentTimeMillis() / 1000 + "";

        // 把参数的值传进去SortedMap集合里面
        SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();

        parameters.put("appid", request.appId);
        parameters.put("noncestr", request.nonceStr);
        parameters.put("package", request.packageValue);
        parameters.put("partnerid", request.partnerId);
        parameters.put("prepayid", request.prepayId);
        parameters.put("timestamp", request.timeStamp);

        String characterEncoding = "UTF-8";
        String sign = createSign(characterEncoding, parameters);
        parameters.put("sign", sign);
        return parameters;
    }

    /**
     * 微信支付签名算法sign
     * 
     * @param characterEncoding
     * @param parameters
     * @return
     */
    public static String createSign(String characterEncoding,
            SortedMap<Object, Object> parameters) {

        StringBuffer sb = new StringBuffer();
        Set es = parameters.entrySet();// 所有参与传参的参数按照accsii排序(升序)
        Iterator it = es.iterator();
        while (it.hasNext()) {
            @SuppressWarnings("rawtypes")
            Map.Entry entry = (Map.Entry) it.next();
            String k = (String) entry.getKey();
            Object v = entry.getValue();
            if (null != v && !"".equals(v) && !"sign".equals(k)
                    && !"key".equals(k)) {
                sb.append(k + "=" + v + "&");
            }
        }
        sb.append("key=" + ConstantsMember.KEY); //KEY是商户秘钥
        String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding)
                .toUpperCase();
        return sign;
    }

 

MD5Util 工具类

public class MD5Util {
    private static String byteArrayToHexString(byte b[]) {
        StringBuffer resultSb = new StringBuffer();
        for (int i = 0; i < b.length; i++)
            resultSb.append(byteToHexString(b[i]));

        return resultSb.toString();
    }

    private static String byteToHexString(byte b) {
        int n = b;
        if (n < 0)
            n += 256;
        int d1 = n / 16;
        int d2 = n % 16;
        return hexDigits[d1] + hexDigits[d2];
    }

    public static String MD5Encode(String origin, String charsetname) {
        String resultString = null;
        try {
            resultString = new String(origin);
            MessageDigest md = MessageDigest.getInstance("MD5");
            if (charsetname == null || "".equals(charsetname))
                resultString = byteArrayToHexString(md.digest(resultString
                        .getBytes()));
            else
                resultString = byteArrayToHexString(md.digest(resultString
                        .getBytes(charsetname)));
        } catch (Exception exception) {
        }
        return resultString;
    }

    private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

}

 

移动App中接入微信支付和支付宝支付 小摊小贩们在线下交易一般无需接入微信支付,只需要向别人出示自己的付款码就行。因为一手交钱,一手交货,你不付钱,人家不会给你商品。但在网上,要实现无人值守,别人扫码付了款,平台得自动知道,然后再发货。所以必须接入微信支付。申请地址:https://mp.weixin.qq.com。关联一个appId,搜索appId, 然后提交申请。首先你要有一个微信账号,然后申请服务号或公众号。微信支付必须是企业主体,要有营业执照才能申请。在公众号侧,菜单”微信支付“里确认申请。本文简单整理了一下该过程,备忘。 阅读详情

相关推荐

Unity接入微信APP支付(超详细)

前文提到的苹果支付刚接完不久,项目又有了新的需求—android手机需要接入微信app支付。。。好吧,研究了微信支付官方的接入文档和官方demo,踩过大大小小无数的坑终于支付成功了!本文主要梳理下自己的工作以备以后不时之需!

RYC4612123的博客 9780

微信支付 - 踩坑

一、公众号支付微信支付,采用EasyWeChat的SDK。公众号、H5支付,需要二次签名,调用$this-&gt;jssdk-&gt;sdkConfig($prepayId);$prepayId 为统一下单返回的 预支付交易会话ID,即生成二次签名,返回给前端调用。二、微信app支付app支付,统一下单,不需要传openid。二次签名,这里是坑,不能调用EasyWeChat的方法,用统一下单返回的...

llf369477769的博客 502

uni-app app平台微信支付

一、App平台支付流程 流程:支付平台功能申请 -> manifest.json 里配置支付参数 -> uni-app 里调用 API 进行支付 二、微信App支付功能申请 到 微信开放平台 申请移动应用并开通支付功能,申请应用后可以获取 AppID 和 AppSecret 值 应用接入 微信商户平台,选择 App 支付 开通支付功能后可获取支付业务服务器配置数据:PARTNER(财付通商户号)、PARTNER_KEY(财付通密钥)、PAYSIGNKEY(支付签名密钥) 需要将从微信开放平台申

web_only_的博客 9140

支付--微信APP支付

写在最前:关于文中涉及到隐私的部分已经隐去,只做技术分享。先简单介绍一下背景,公司app要改成H5混合开发需要对原有的app后台进行移植,增加新的接口功能满足新需求。在移植的时候我直接把原来的微信支付模块全部搬过来,前端那边微信支付一直没做好,后台这边我也没法测试移植的模块能否正常支付。等前端把微信支付部分做好以后,我才开始测试这部分代码,本想着之前app中都用得好好的,现在应该也没什么问题,实际上

Tomcat猫炸了 1591

Android 微信支付详解与Demo

最近公司弄Ionic框架,项目中需要微信支付,无奈,把我调过去弄,期间也是几近崩溃,好在皇天不负有心人,在看别人的文档,终于是在项目中集成了微信支付,下面作为一个小白的我,想要把我的经验分享给大家,希望对大家有所帮助。 先给一个可用的demo吧(运行前先看txt文件) http://download.youkuaiyun.com/detail/simon_crystin/9699743;1.去微信开放平台申

Simon_Crystin的博客 1万+

Android中微信支付的流程(从请求统一支付接口到真正调起微信支付)

在公司做一款电商类的软件,接入支付是必不可少的环节。继上一次集成支付宝以后,微信支付又开启了另一段痛苦的历程。由于以前没有做过微信支付,所以这次在做的过程中还是遇到很大的问题。而且,公司目前没有自己的后台,所有的接口都是外包来承接的,在遇到问题时,外包一般会说,这是封装好的,以前都没有问题。然后,你只能自己查找原因,废话不多说,简单记录一下集成微信的整个过程。1.微信支付的签名问题(包括微信的分享)

android_wxg的博客 7252

android反编译签名微信登录,android 微信第三方登录怎么通过code获取openid?

ringa_lee2017-04-17 12:02:411楼//重写onresume()方法@Overrideprotected void onResume() {if (type != null && type.equals("mwx")) {SharedPreferences settings = getSharedPreferences("setting", 0);Strin...

weixin_36261487的博客 404

Android微信支付,支付成功后并返回指定页面

Android调用微信支付,支付成功后并返回指定页面

ydrslyh的博客 2万+

php微信app支付2次签名,微信APP支付,第二次生成签名问题

官方文档有下面这句话 文档地址步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay统一下单后,进行第二次生成签名第二次生成签名时候,按文档的话,我得到的签名字符串如下appId=wx...

weixin_39921023的博客 647

微信支付-App支付服务端详解

微信App支付服务端详解引言主要实现app支付统一下单、异步通知、调起支付接口、支付订单查询、申请退款、查询退款功能;封装了https对发起退款的证书校验、签名、xml解析等。支付流程具体支付流程参考“微信APP”文档,文档地址APP支付:APP端点击下单—-服务端生成订单,并调起“统一下单”,返回app支付所需参数—–APP端“调起支付接口“,发起支付—-微信服务器端调用服务端回调地址—–服务端按

Andyの笔记 1万+

Android微信支付获取二次签名Sign的方法

/**  * 获取sign签名  *   * @return  */ private String genPayReq() {   // 获取参数的值  PayReq request = new PayReq();  request.appId = ConstantsMember.APP_ID;  request.partnerId = ConstantsMember.MCHID;  reques...

知道的越多,不知道的越多。 4116

php微信支付怎么打印签名,微信APP支付,第二次生成签名问题

官方文档有下面这句话 文档地址步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay统一下单后,进行第二次生成签名第二次生成签名时候,按文档的话,我得到的签名字符串如下appId=wx...

weixin_30062561的博客 366

Android应用接入微信/支付宝支付及签名获取教程

在当今移动应用领域,尤其是在Android平台上,应用签名是保证应用安全、完整性和来源可认证的基石。开发者通过签名来标识自己的应用程序,防止应用被篡改或恶意软件替换。Android 应用程序的签名是保证应用安全性和身份验证的关键机制。签名的目的是确保应用的完整性和验证应用来源,从而防止恶意软件替换应用。它允许系统识别应用更新,因为它们具有相同的签名。同时,在应用市场中,签名还作为开发者身份的证明,有助于防止应用被仿冒。

weixin_35755823的博客 1689

微信app支付 java后台接Android

抽时间整理一下之前项目中的微信app支付,以备以后需要,如果对你可以有点帮助是最好不过的; 直接上代码: public class WeChatAppConfig { /** * 预支付请求地址 */ public static final String PrepayUrl = "https://api.mch.weixin.qq.com/pay/uni...

weixin_42594182的博客 1169

微信支付APP支付安卓+PHP(二次签名在服务端)

微信支付移动APP支付,二次签名在服务端,安卓端直接访问后直接唤起微信支付。绝对简单,绝对便捷,绝对傻瓜式!

微信h5支付+APP二次签名+异步

微信支付封装类 命名空间导入,并初始化所需参数,调用很简单

android 微信支付 2,Android微信支付获取二次签名Sign的方法

/*** 获取sign签名** @return*/private String genPayReq() {// 获取参数的值PayReq request = new PayReq();request.appId = ConstantsMember.APP_ID;request.partnerId = ConstantsMember.MCHID;request.prepayId = mPrepayI...

weixin_33441139的博客 548

IIC协议常见误区解析:从时序图到实际波形(附逻辑分析仪实测)

本文深入解析IIC协议在实际应用中的常见误区,从理想时序图到逻辑分析仪实测波形的差异,揭示通信故障的根本原因。通过硬件设计优化、软件时序调优和高级调试技巧,帮助开发者有效规避IIC通信中的隐形陷阱,提升系统稳定性。

weixin_28738397的博客 370

浅谈安卓微信支付遇到的那些坑(服务端签名)

**浅谈安卓微信支付遇到的那些坑(服务端签名)** 做微信支付首先需要到微信开放平台https://open.weixin.qq.com注册自己的APP。 1,如果是创建移动应用就点击创建移动应用,然后安照提示的填写资料。 2,第一页填写完毕后,会跳到填写平台信息页面,(这里会遇到第一个坑,我表示没有遇到)这里有个填写应用签名,注意了,如果项目是在测试阶段,这里填写你的

qq_15122875的博客 9917

IAR安装成功的关键:STM32设备支持文件导入方法

IAR安装常卡在设备支持缺失这一步——尤其对STM32新手,没导入对应芯片包,编译直接报错。实测发现,必须通过IAR的Tools→Options→IDE→Configuration→Device Support手动加载STM32设备支持文件,否则新建工程时连芯片型号都选不到。IAR安装是否顺利,往往就差这一步。

weixin_42527589的博客 678

Win10/Win11系统下,用VSCode编译Betaflight固件最全避坑指南(从GCC安装到HEX生成)

本文详细介绍了在Win10/Win11系统下使用VSCode编译Betaflight固件的完整流程,包括GCC安装、环境变量配置、终端选择、Make工具安装等关键步骤,帮助开发者避开常见陷阱,高效生成HEX文件。特别针对VSCode环境优化和编译错误排查提供了实用解决方案。

weixin_42557803的博客 415
上一篇: 重温 Java基础之 JDK, JRE, JVM 三者关系
下一篇: 支付宝支付Java后台总结
NatChan
博客等级 码龄9年 12粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值