android 得到微信发红包,怎么固定每个红包金额固定金额的付款码的URL怎么打开微信发红包,怎么固定每个红包金额并到支付界面

生成微信支付二维码URL,让别人扫一扫收钱,就是微信的收钱码
/***微信二维码支付**/
public class WXPayUtils {
private static String strResponse = null;
private static String url = "";
public static String nonceStr = "";
public static String outTradeNo = "";
* 微信生成签名
private static String genPackageSign(List&NameValuePair& params) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i & params.size(); i++) {
sb.append(params.get(i).getName());
sb.append('=');
sb.append(params.get(i).getValue());
sb.append('&');
sb.append("key=");
sb.append(AlipayUtils.key);
String packageSign = MD5.getMessageDigest(sb.toString().getBytes())
.toUpperCase();
Log.e("orion", packageSign);
return packageS
/*** 微信获取签名 **/
public static String genProductArgs(String nonceStr, String outTradeNo,
String totalFee) {
List&NameValuePair& packageParams = new LinkedList&&();
packageParams.add(new BasicNameValuePair("appid",
AlipayUtils.appid));
packageParams.add(new BasicNameValuePair("body", AlipayUtils.bodyname));
packageParams
.add(new BasicNameValuePair("mch_id", AlipayUtils.mchid));
packageParams.add(new BasicNameValuePair("nonce_str", nonceStr));
packageParams.add(new BasicNameValuePair("notify_url",
"http://www.weixin.qq.com/wxpay/pay.php"));
packageParams
.add(new BasicNameValuePair("out_trade_no", outTradeNo));
packageParams.add(new BasicNameValuePair("spbill_create_ip",
AlipayUtils.ip));
packageParams.add(new BasicNameValuePair("total_fee", totalFee));
packageParams.add(new BasicNameValuePair("trade_type", "NATIVE"));
String sign = genPackageSign(packageParams);
} catch (Exception e) {
LogUtils.saveFileToSMB(LogUtils.getExceptionInfo(e));
e.printStackTrace();
return null;
/*** 微信获取签名 **/
public static String QgenProductArgs(String nonceStr, String outTradeNo) {
List&NameValuePair& packageParams = new LinkedList&&();
packageParams.add(new BasicNameValuePair("appid",
AlipayUtils.appid));
packageParams
.add(new BasicNameValuePair("mch_id", AlipayUtils.mchid));
packageParams.add(new BasicNameValuePair("nonce_str", nonceStr));
packageParams
.add(new BasicNameValuePair("out_trade_no", outTradeNo));
String sign = genPackageSign(packageParams);
} catch (Exception e) {
LogUtils.saveFileToSMB(LogUtils.getExceptionInfo(e));
e.printStackTrace();
return null;
/** 微信获取随机字符串nonce_str **/
public static String getNonceStr() {
Random random = new Random();
nonceStr = MD5.getMessageDigest(String.valueOf(
System.currentTimeMillis() + random.nextInt(10000)).getBytes());
return nonceS
/** 微信获取随机字符串out_trade_no **/
public static String getOutTradNo() {
Random random = new Random();
outTradeNo = MD5.getMessageDigest(String.valueOf(
System.currentTimeMillis() + random.nextInt(10000)).getBytes());
return outTradeNo;
/**** 微信生成二维码URL **/
public static void sendWxPayRequest(final String body, final String nonceStr,
final String outTradeNo, final String totalFee,
final Handler handler) {
new Thread(new Runnable() {
public void run() {
HttpClient httpclient = new HttpClient();
PostMethod postMethod = new PostMethod(
"https://api.mch.weixin.qq.com/pay/unifiedorder");
StringBuffer requestStr = new StringBuffer("&xml&");
requestStr.append("&appid&&![CDATA[");
requestStr.append(AlipayUtils.appid);
requestStr.append("]]&&/appid&");
requestStr.append("&body&&![CDATA[");
requestStr.append(body);
requestStr.append("]]&&/body&");
requestStr.append("&mch_id&&![CDATA[");
requestStr.append(AlipayUtils.mchid);
requestStr.append("]]&&/mch_id&");
requestStr.append("&nonce_str&&![CDATA[");
requestStr.append(nonceStr);
requestStr.append("]]&&/nonce_str&");
requestStr.append("&notify_url&&![CDATA[");
requestStr.append("http://www.weixin.qq.com/wxpay/pay.php");
requestStr.append("]]&&/notify_url&");
requestStr.append("&out_trade_no&&![CDATA[");
requestStr.append(outTradeNo);
requestStr.append("]]&&/out_trade_no&");
requestStr.append("&spbill_create_ip&&![CDATA[");
requestStr.append(AlipayUtils.ip);
requestStr.append("]]&&/spbill_create_ip&");
requestStr.append("&total_fee&&![CDATA[");
requestStr.append(totalFee);
requestStr.append("]]&&/total_fee&");
requestStr.append("&trade_type&&![CDATA[");
requestStr.append("NATIVE");
requestStr.append("]]&&/trade_type&");
requestStr.append("&sign&&![CDATA[");
requestStr.append(WXPayUtils.genProductArgs(nonceStr,
outTradeNo, totalFee));
requestStr.append("]]&&/sign&");
requestStr.append("&/xml&");
RequestEntity entity = new StringRequestEntity(
requestStr.toString(), "text/xml", "UTF-8");
postMethod.setRequestEntity(entity);
httpclient.executeMethod(postMethod);
strResponse = new String(postMethod.getResponseBody(),
Log.e("strResponse", strResponse);
Message msg = Message.obtain();
if (!"FAIL".equals(strResponse.split("CDATA\\[")[1].split("]]")[0])){
url = "weixin"
+ strResponse.split("weixin")[1].split("]]")[0];
msg.what = 0;
msg.what = 8;
handler.sendMessage(msg);
} catch (HttpException e) {
LogUtils.saveFileToSMB(LogUtils.getExceptionInfo(e));
e.printStackTrace();
} catch (IOException e) {
LogUtils.saveFileToSMB(LogUtils.getExceptionInfo(e));
e.printStackTrace();
} finally {
postMethod.releaseConnection();
}).start();
/**** 微信查询订单状态 **/
public static void queryWxPayRequest(final String nonceStr,
final String outTradeNo, final Handler handler) {
new Thread(new Runnable() {
public void run() {
HttpClient httpclient = new HttpClient();
PostMethod postMethod = new PostMethod(
"https://api.mch.weixin.qq.com/pay/orderquery");
StringBuffer requestStr = new StringBuffer("&xml&");
requestStr.append("&appid&&![CDATA[");
requestStr.append(AlipayUtils.appid);
requestStr.append("]]&&/appid&");
requestStr.append("&mch_id&&![CDATA[");
requestStr.append(AlipayUtils.mchid);
requestStr.append("]]&&/mch_id&");
requestStr.append("&nonce_str&&![CDATA[");
requestStr.append(nonceStr);
requestStr.append("]]&&/nonce_str&");
requestStr.append("&out_trade_no&&![CDATA[");
requestStr.append(outTradeNo);
requestStr.append("]]&&/out_trade_no&");
requestStr.append("&sign&&![CDATA[");
requestStr.append(WXPayUtils.QgenProductArgs(nonceStr,
outTradeNo));
requestStr.append("]]&&/sign&");
requestStr.append("&/xml&");
RequestEntity entity = new StringRequestEntity(requestStr
.toString(), "text/xml", "UTF-8");
postMethod.setRequestEntity(entity);
httpclient.executeMethod(postMethod);
strResponse = new String(postMethod.getResponseBody(),
Log.e("strResponse", strResponse);
String state = "";
if (!"FAIL".equals(strResponse.split("CDATA\\[")[1].split("]]")[0])){
state = strResponse.split("trade_state")[1]
.split("\\[")[2].split("]]")[0];
Message msg = Message.obtain();
msg.what = 1;
handler.sendMessage(msg);
Log.e("state", state);
} catch (Exception e) {
LogUtils.saveFileToSMB(LogUtils.getExceptionInfo(e));
e.printStackTrace();
} finally {
postMethod.releaseConnection();
}).start();
微信 支付宝 个人收款二维码实时生成
微信 支付宝-二维码生成,监控系统
软件实现流程:
app通过实现,对外提供web接口,访问web接口传递金额、备注、类型等参数。
生成微信支付二维码及微信支付
jquery.qrcode
http://www.cnblogs.com/xcsn/archive//3258035.html
// 账号信息
String ap...
如何实现一个二维码支持微信支付和支付宝支付
直接上一个网站吧,反正现在开发都是越来越简单了
https://www.hotapp.cn/shouqian
芝麻收款二维码
提交一个微信支付二维码,一个支付宝支付 二维码,会生成一个二维...
一种实现个人微信二维码收款接口的方法
只有企业资质才能申请微信支付接口,作为一名程序员要想实现自动收款除了想办法搞到企业资质申请官方的微信支付接口外还可以想办法通过个人收款码来实现。个人二维码收款码里面除了可以设计金额外还可以设置收款方的...
获取微信支付mweb url,微信mweb_url怎么使用
微信mweb_url其实是一个链接,
当用户在手机上访问mweb_url时,
会调起微信支付,
从而实现用户在线付款的功能,
这是微信h5支付方便的地方。
下面子恒老师详细说一下mweb...
调用微信扫码接口动态生成支付二维码(java)
刚入职的时候接到一个需求,做一个动态生成微信支付二维码的网络接口,网上有许多很好的例子,官方文档也写的很详细,最后成功的实现了,当然后来想了一下,既然是网络通用接口,也许接口调用返回的...
Android实现二维码的生成和扫描
现在越来越多的app都具有扫码功能了,扫码支付,扫码登录等等。。。如果要进入网页只需打开相机对准二维码一扫就可完成了,省去了输入网址的繁琐的步骤大大的提高了效率,下面就让我们自己的app也实现这个功能...
支付篇—微信扫码支付
应用场景:
商户根据商品信息,生成商品二维码,用户通过微信扫一扫功能扫描该二维码,完成支付。
支付模式:
现在微信扫码支付支持两种模式。
模式一需要商户必须先在公众平台后台设置支付回调URL。...
android 微信扫码支付模式一生成二维码 原生支付url参数错误
最近在写微信扫码支付生成二维码,给大家分享一下,在说说在开发过程中的问题。欢迎吐槽。。
一:在开发过程中一定和官方的字段相同注意大小写。
二:如果生成二维码扫描时提示原生支付url参数错误,这就是你配...
没有更多推荐了,请问微信支付支付成功后如何获取所谓notify的返回值 - ThinkPHP框架
情况其实不复杂,就是有一个地方一直没搞明白。我已经按照demo构成好了xml包,顺利的换取到了prepal_id,也通过js的那个接口,顺利的能弹出输入密码的对话框,也能输入密码并且钱也到了我的账户上来,都OK。
但一直困扰我的是这个:$input-&SetNotify_url(&http://www.xxxx.com/index.php/aaa/bbb&);这一行似乎一直不起作用。因为在调用了获取prepal_id的unifiedOrder接口后,返回的数据已经不包含这个参数了。而在付完钱也弹出相应的官方的账单页面后,我发现bbb函数压根没有执行(已经提前在bbb函数中写了一段创建文件的代码,但未有新文件生成)。
其他教程基本都教到掉用JS接口弹出输入框就结束了,后面附加一句,当交易成功中,通知接口会收到一份xml文档(含有transaction_id等参数),可以用GET方法获取。所谓通知接口应该就是我们事先设置好的notify_url没跑了。但这个notify_url在文档的解释是异步处理,那理论上不需要我们另外调用,我试过另行跳转,但无法GET到相关信息。
那么不主动跳转的话,这个异步动作是在什么时候执行的呢?我要如何GET到transaction_id等参数,在收到钱的同时做些别的事情呢(给买家派发短信等)?
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。最近准备上网页的微信支付,大家可以参考后续教程:
因微信支付已经升级到V3版本,请大家参考官网的帮助文档。
之前一篇提到微信支付的开发过程,写得有点乱,现在重新整理一下。
好了,说说到底该怎样一步一步分享处理。
解压从官网下载下来的开发说明文档(下载地址:):
先把服务端demo的代码整理到我们的服务端中(注意,此代码的编码格式是GBK,直接复制过去注释都会变乱码。可用文本文件打开后再复制过去)。处理完成后启动;且访问:http://localhost:8080/WeiXinpay/
会得到以下视图:
-------------------------------------------------------------------------------------------------------------
页面跳转调用:后台调用:
点击链接:
0OK wxd930ea5d5a258f4f 454ceccd624cd8a8c9ddf1 Sign=WXPay
1c0c02c882 eb139e44b8df8ce01b386f7c016defe5b04896
-------------------------------------------------------------------------------------------------------------
返回控制台可以得到以下视图:
好了,到这里,算是成功了一小步了(哈哈哈哈哈哈 yy一下)。
你也许会问,这些参数到底是作什么用的?更可悲的是,居然没有服务端的接口文档。
唯有先看手头上有的资料了。打开《【微信APP支付】接口文档V1.2_For_Android.pdf》
里面有提到微信支付的调用步骤:
access_token
2、生成预支付订单
3、调起微信支付
下面说说这几个步骤:
1、access_token的获取
因为access_token的获取有请求频的限制,只能固化到数据库中了。这个不是难题。
2、生成预支付订单
在微信支付android的接口文档开头有提到:
注意:appsecret、appkey、partnerkey 不应硬编码到客户端程序中,建议需要用到这三个字段的过程都在服务器端完成
故此过程所有的信息全部在服务端生成。那么问题来了?挖掘机.... kao, 应该是,如何生成?
在翻看服务端的demo中,有jsp文件夹。打开一看,都几乎可以直接搬运使用了。
实现该过程的文件:payRequest.jsp
如何在JAVA中实现上面jsp的请求?项目中用到了Spring MVC,代码如下:
@Controller
@RequestMapping("/weixin/")
public class WeiXinPayController extends ResponsePage
private Logger log = Logger.getLogger(WeiXinPayController.class);
@RequestMapping("weixin.do")
public String doWeinXinRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {
Map&Object,Object& resInfo = new HashMap&Object, Object&();
//接收财付通通知的URL
String notify_url = "http://127.0.0.1:8180/tenpay_api_b2c/payNotifyUrl.jsp";
//---------------生成订单号 开始------------------------
//当前时间 yyyyMMddHHmmss
String currTime = TenpayUtil.getCurrTime();
String strTime = currTime.substring(8, currTime.length());
//四位随机数
String strRandom = TenpayUtil.buildRandom(4) + "";
//10位序列号,可以自行调整。
String strReq = strTime + strR
//订单号,此处用时间加随机数生成,商户根据自己情况调整,只要保持全局唯一就行
String out_trade_no = strR
//---------------生成订单号 结束------------------------
PackageRequestHandler packageReqHandler = new PackageRequestHandler(request, response);//生成package的请求类
PrepayIdRequestHandler prepayReqHandler = new PrepayIdRequestHandler(request, response);//获取prepayid的请求类
ClientRequestHandler clientHandler = new ClientRequestHandler(request, response);//返回客户端支付参数的请求类
packageReqHandler.setKey(ConstantUtil.PARTNER_KEY);
String retmsg = "";
String xml_body = "";
//获取token值
String token = AccessTokenRequestHandler.getAccessToken();
log.info("获取token------值 " + token);
if (!"".equals(token)) {
//设置package订单参数
packageReqHandler.setParameter("bank_type", "WX");//银行渠道
packageReqHandler.setParameter("body", "测试"); //商品描述
packageReqHandler.setParameter("notify_url", notify_url); //接收财付通通知的URL
packageReqHandler.setParameter("partner", ConstantUtil.PARTNER); //商户号
packageReqHandler.setParameter("out_trade_no", out_trade_no); //商家订单号
packageReqHandler.setParameter("total_fee", "1"); //商品金额,以分为单位
packageReqHandler.setParameter("spbill_create_ip",request.getRemoteAddr()); //订单生成的机器IP,指用户浏览器端IP
packageReqHandler.setParameter("fee_type", "1"); //币种,1人民币
packageReqHandler.setParameter("input_charset", "GBK"); //字符编码
//获取package包
String packageValue = packageReqHandler.getRequestURL();
resInfo.put("package", packageValue);
log.info("获取package------值 " + packageValue);
String noncestr = WXUtil.getNonceStr();
String timestamp = WXUtil.getTimeStamp();
String traceid = "";
////设置获取prepayid支付参数
prepayReqHandler.setParameter("appid", ConstantUtil.APP_ID);
prepayReqHandler.setParameter("appkey", ConstantUtil.APP_KEY);
prepayReqHandler.setParameter("noncestr", noncestr);
prepayReqHandler.setParameter("package", packageValue);
prepayReqHandler.setParameter("timestamp", timestamp);
prepayReqHandler.setParameter("traceid", traceid);
//生成获取预支付签名
String sign = prepayReqHandler.createSHA1Sign();
//增加非参与签名的额外参数
prepayReqHandler.setParameter("app_signature", sign);
prepayReqHandler.setParameter("sign_method",
ConstantUtil.SIGN_METHOD);
String gateUrl = ConstantUtil.GATEURL +
prepayReqHandler.setGateUrl(gateUrl);
//获取prepayId
String prepayid = prepayReqHandler.sendPrepay();
log.info("获取prepayid------值 " + prepayid);
//吐回给客户端的参数
if (null != prepayid && !"".equals(prepayid)) {
//输出参数列表
clientHandler.setParameter("appid", ConstantUtil.APP_ID);
clientHandler.setParameter("appkey", ConstantUtil.APP_KEY);
clientHandler.setParameter("noncestr", noncestr);
//clientHandler.setParameter("package", "Sign=" + packageValue);
clientHandler.setParameter("package", "Sign=WXPay");
clientHandler.setParameter("partnerid", ConstantUtil.PARTNER);
clientHandler.setParameter("prepayid", prepayid);
clientHandler.setParameter("timestamp", timestamp);
//生成签名
sign = clientHandler.createSHA1Sign();
clientHandler.setParameter("sign", sign);
xml_body = clientHandler.getXmlBody();
resInfo.put("entity", xml_body);
retcode = 0;
retmsg = "OK";
retcode = -2;
retmsg = "错误:获取prepayId失败";
retcode = -1;
retmsg = "错误:获取不到Token";
resInfo.put("retcode", retcode);
resInfo.put("retmsg", retmsg);
String strJson = JSON.toJSONString(resInfo);
return responseAjax(request, strJson);
好了此时,客户端需要的参数都已经可以通过请求:http://localhost:8080/WeiXinpay/weixin/weixin.do 来获取
3、调起微信支付
这步就不需要我们服务端处理了。客户端的兄弟,来接力。
示例的完整代码可以在此链接下载:
最后,微信回调:可以参考jsp文件夹中的payNotifyUrl.jsp来处理,处理过程和上面第二步差不多。
微信H5支付终端IP(spbill_create_ip),js获取方法-外网IP地址
&script src=&http://pv.sohu.com/cityjson?ie=utf-8&&&/script&
微信支付 常见报错
支付返回签名错误
注意签名参数的大小写,支付密钥key要到商户平台设置,设置的规则是32位数字与字母大小写的组合。以下链接为签名过程。
(https://pay.weixin.qq.com/wi...
微信扫码支付invalid spbill_create_ip错误
参数 spbill_create_ip 在
/lib/WxPay.Api.php
打印出变量
$_SERVER['REMOTE_ADDR'] ,发现是
::1 ,这明显...
微信公众号支付开发全过程(java版)
文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号: 好好学java ,获取优质学习资源。一、微信官方文档微信支付开发流程(公众号支付)首先我们到微信支付的官方文档的开发步骤部分查...
国外用微信支付的好处,国外商家开发微信支付
微信用户超过10亿用户,使用微信支付购买东西,已经融入人们日常生活。现在国内很多人到国外旅游,加上微信支付不断扩展海外市场,所以国外越来越多的商家,想要使用微信支付,让用户在线付款购买商品。一些看过子...
公司做公众号时需要接入微信支付,个人根据网上的demo摸索着完成了公司公众号的支付和退款功能。现也将代码分享出来,希望对需要朋友有帮助。
一.提交支付的jsp页面代码:
微信app支付流程
需要的配置参数
private function wechat($body,$indent_id,$cou,$user_id,$total_fee,$ip,$domain,$...
Java版的微信支付开发
【java web spring mvc】服务端 微信支付+微信异步通知【精】
首先 这个微信支付 官网的demo 是有bug的 研究了好几天
吸取了一些大神的指点才成功,还有csdn一些人发的代码都不全太坑,资源还少,今天我就整合一下,把我的一些心得分享给大家 。
微信支付,支付宝支付,银联支付——三大支付总结
银联支付,支付宝支付,微信支付的三大总结,之前也有写过两篇。&
支付宝植入总结:
android 支付宝的植入 《曾经踩过的坑》
微信支付总结:
Android 微信...
没有更多推荐了,根据一个url和一个订单生成一个二维码,扫码后跳转到这个url页面,如何在这个页面获取用什么工具扫的码(支付宝、微信)
<a data-traceid="question_detail_above_text_l&&
根据一个url和一个订单生成一个二维码,扫码后跳转到这个url页面,如何在这个页面获取用什么工具扫的码(支付宝、微信)java、js
支付宝或微信生成的二维码中本质都内嵌了一个url,在扫码时实际是定向去访问二维码中内嵌的url,这样我就可以将这个url指定到我的一个控制器,在控制器中判断是微信还是支付宝软件扫的,然后去唤醒各自的支付即可
js获取支付宝还是微信扫码的方式:
if(navigator.userAgent.indexOf("AlipayClient") & 0){//支付宝
&& &&& &channel = "alipay";
&& &}else if(navigator.userAgent.indexOf("MicroMessenger") & 0){
& & & & //查看微信版本号,微信5.0以上才有支付模块
& & & & var HAVEPAYAPI = navigator.userAgent.match(/MicroMessenger\/([\d.]+)/);
& & & & //android和ios可以查到微信版本号
& & & & HAVEPAYAPI = HAVEPAYAPI[1].split(".")[0] &= 5 ? true :
& & & & //如果微信版本号小于5.0关闭窗口
& & & & if (!HAVEPAYAPI) {
& & & & & & WeixinJSBridge.call('closeWindow');
& & & & & &
&& &&& &channel = "tenpay";iOS 上通过 Pin,通知栏一键打开微信扫一扫、支付宝扫码和支付码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
探索世界的好奇心万岁
iOS 上通过 Pin,通知栏一键打开微信扫一扫、支付宝扫码和支付码
17:28:07 +08:00 · 7225 次点击
搜了下好像没人发过,但愿没火星。
之前看到 @ 分享的一键开启这几个功能的 Url scheme :
支付宝扫码 alipayqr://platformapi/startapp?saId=
支付宝付款码 alipayqr://platformapi/startapp?saId=
微信扫一扫的 weixin://dl/scan

刚才又看到 @ 在
里分享的用剪贴板增强插件 Pin 在通知栏一键跳转到 1Password 。用的也是 Url scheme 。
就想到把这 2 个结合起来,在 Pin 里建立 3 个动作,分别使用这 3 个功能的 url scheme ,这样就能下拉通知栏一键打开这些功能了。还能通过左上角的返回功能,回到之前使用的 App 。用起来十分方便。
(抱歉不方便上图,好心人可以补个图)
除了这个以外, Pin 还有很多其他屌屌的功能,那么强大,还是免费的,不得不狠狠安利一把。
2 回复 &| &直到
17:31:56 +08:00
& & 17:30:46 +08:00
Android 上可以用 Tasker 的 Browse URL 来实现相应的功能。
& & 17:31:56 +08:00
@ 感谢分享!
& · & 1841 人在线 & 最高记录 3762 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 21ms · UTC 15:12 · PVG 23:12 · LAX 08:12 · JFK 11:12? Do have faith in what you're doing.

我要回帖

更多关于 微信红包固定金额 的文章

 

随机推荐