今天给各位整理分享关于微信支付的签名工具的知识,其中也会对微信支付签名验证进行解释,如果能碰巧解决你现在面临的问题,别忘了关注收藏本站,现在开始吧!
本文快速导读目录:
android开发微信支付集成客户端二次签名怎么做
1.客户端代码得到用户购买的商品信息,将之传给自己公司app服务器,参数包含但不限于以下:
params.put("appid", appID);// 微信appid,选择性上传,服务器写死亦可
params.put("money", money);// 支付金额,单位:分
params.put("name", goodsName);// 商品名称
params.put("currencytype", "CNY");// 支付币种,只能填CNY,代表人民币12341234
备注:以上是参数字段是我们公司服务器定义,给服务器用以获取预支付订单号prePayId用。
备注2:详细字段请参考:
2.app服务器调用微信“统一下单”接口,得到prePayId订单号并返回prePayId给手机客户端;
3.手机客户端使用prePayId及商品信息调起微信客户端进行支付;
3.1用户操作:输入密码进行支付;返回键取消支付;网络无连接支付失败等;
4.微信客户端回调支付结果给咱们的APP客户端;
5.微信服务器异步通知咱们公司app服务器支付结果(服务器的工作,与客户端无关)
这个其实很简单的,demo文档写得很详细,直接上代码吧:
/**
* 获取sign签名
*
* @return
*/
private String 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 = DataUtil.getTimeStamp();
// 把参数的值传进去SortedMap集合里面
SortedMapObject, Object parameters = new TreeMapObject, Object();
// {appid=wx34df375d7dae8c90, noncestr=3BF34EF2CA4A462DB8D4EA48E785CDC3,
// package=Sign=WXPay, partnerid=1349967601,
// prepayid=wx2016070910354542c7155d4e0846850809, timestamp=1468031760}
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 mySign = createSign(characterEncoding, parameters);
System.out.println("我的签名是:" + mySign);
return mySign;
}
/**
* 微信支付签名算法sign
*
* @param characterEncoding
* @param parameters
* @return
*/
public static String createSign(String characterEncoding,
SortedMapObject, 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; // D3A5D13E7838E1D453F4F2EA526C4766
// D3A5D13E7838E1D453F4F2EA526C4766
}
更换护照用微信支付,显示支付签名失败
出现这种情况可能是您的网络不好,或者是没有遵循开发规范,导致数字签名失败。
请按照以下几点进行排查:
1、使用签名检查工具()校验签名算法是否有误
2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)
3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)
4、确认参数的大小写,参数名与接口文档一致
5、签名原串的参数值使用原始值,不需要encode
6、接口需要使用UTF-8编码
微信支付 是腾讯集团旗下的第三方支付平台,致力于为用户和企业提供安全、便捷、专业的在线支付服务。以“微信支付,不止支付”为核心理念,为个人用户创造了多种便民服务和应用场景。
微信支付商户签名错误
1.参数名ASCII码未按升序排列,或者是生成MD5字符串没有toUpperCase转换为大写。这种问题解决方法很简单,到微信官网上用校验工具校验即可。
2.key错误。这里特别注意,公众平台的密钥和商户号的密钥是不一样的!!!微信支付审核成功之后会收到一封邮件,邮件中有appid 商户号,商户后台登录上号和密码,登录到商户后台:账户设置-安全设置-切换到API安全,下载证书,下面有一个api密匙,进去填写一个字符串 ,保存,后续两次签名都是用的这个手动设置
3.最后提醒大家,以后一定要认真阅读邮件和文档。
ios开发微信支付 支付验证签名失败怎么办
方法/步骤
xmlreturn_code![CDATA[FAIL]]/return_codereturn_msg![CDATA[签名错误]]/return_msg/xml
之前在调试微信支付微信支付的签名工具的“统一下单”接口的时候一直遇到“签名错误”。网上查找了各种资料微信支付的签名工具,一般可能是以下几个问题微信支付的签名工具,如果大家出现此错误的话不妨挨个排查,以免浪费时间走弯路。
1.参数名ASCII码未按升序排列,或者是生成MD5字符串没有toUpperCase转换为大写。这种问题解决方法很简单,到微信官网上用校验工具校验即可。
2.key错误。这里特别注意,公众平台的密钥和商户号的密钥是不一样的微信支付的签名工具!!!微信支付审核成功之后会收到一封邮件,邮件中有appid 商户号,商户后台登录上号和密码,登录到商户后台微信支付的签名工具:账户设置-安全设置-切换到API安全,下载证书,下面有一个api密匙,进去填写一个字符串 ,保存,后续两次签名都是用的这个手动设置的key!!!
最后提醒大家,以后一定要认真阅读邮件和文档。
关于微信支付的签名工具和微信支付签名验证的介绍本篇到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
还没有评论,来说两句吧...