参考官方文档

设计到的API: 统一下单API、支付结果通知API和查询订单API

下面代码是请求预支付ID

        // 构建下单bean
final WxPayUnifiedOrderBean unifiedOrderBean = new WxPayUnifiedOrderBean();
unifiedOrderBean.setAppid(wxPayConfig.getAppId());
unifiedOrderBean.setMch_id(wxPayConfig.getMchId());
unifiedOrderBean.setNonce_str(this.getNonceStr(16));
unifiedOrderBean.setBody("支付");
unifiedOrderBean.setOut_trade_no(order.getHubOrderNo());
unifiedOrderBean.setTotal_fee(order.getTotalFee());
unifiedOrderBean.setSpbill_create_ip(order.getSpbill_create_ip());
unifiedOrderBean.setNotify_url(this.paymentProperties.getWeixin().getNotify_url());
unifiedOrderBean.setSign(this.generateSignForPrePayId(unifiedOrderBean, wxPayConfig.getSecret())); // 请求统一下单接口
final WxPayPrePayBean bean = this.requestWx(unifiedOrderBean); /**
* 请求统一下单接口
*
* @param unifiedOrderBean
* @return
*/
private WxPayPrePayBean requestWx(final WxPayUnifiedOrderBean unifiedOrderBean) { final XStream xStream = new XStream(new DomDriver("UTF-8", new NoNameCoder()));
xStream.autodetectAnnotations(true);
final String postXml = xStream.toXML(unifiedOrderBean); // 发送请求
final HttpHeaders headers = new HttpHeaders();
final MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded; charset=UTF-8");
headers.setContentType(type);
final HttpEntity<String> requestEntity = new HttpEntity<>(postXml, headers); final RestTemplate restTemplate = new RestTemplate();
final ResponseEntity<String> responseEntity = restTemplate.postForEntity(
PaymentConstant.WX_PREPARE_ORDER_URL, requestEntity, String.class); // 解析请求结果
final XStream xStreamResult = new XStream(new DomDriver("UTF-8", new NoNameCoder()));
xStreamResult.processAnnotations(WxPayPrePayBean.class);
try {
final String returnStr = new String(responseEntity.getBody().getBytes("ISO-8859-1"), "UTF-8"); System.out.println(responseEntity.getBody());
System.out.println(returnStr);
final WxPayPrePayBean bean = (WxPayPrePayBean) xStreamResult.fromXML(returnStr);
return bean;
} catch (final Exception e) {
e.printStackTrace();
return null;
} }

APP微信支付实现的更多相关文章

  1. 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结

    最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...

  2. APP微信支付报错《商户号该产品权限未开通,请前往商户平台>产品中心检查后重试》

    问题 最近项目使用MUI,HBuilder.开发打包H5的app 在开发H5 plus支付的时候,遇到以下问题: App微信支付调官方的统一下单接口返回错误信息 {return_msg=商户号该产品权 ...

  3. ThinkPHP5.0 实现 app微信支付功能

    相对于之前随笔写的<ThinkPHP5.0实现app支付宝支付功能>来说,php对接app微信支付功能就相对简单的多了,最近有加我的朋友问到app微信支付,所以我把app微信支付的demo ...

  4. app微信支付(一) - 微信支付基本业务流程解析

    想必微信支付是现在很多朋友离不开的一个功能,不论是扫描支付还是公众号支付或者app端支付,基本的思路都是一样的,之前做过支付宝支付以及中国移动支付接口,这几天花时间讲讲微信支付吧 先看一下微信支付的时 ...

  5. 手机app微信支付后台处理流程

    第一步:客户在手机app确认订单,提交订单后,app将订单详情传给后台,后台将订单存入数据库,将存入数据库的id返回给app. 第二步:这时候手机端app会让客户选择哪种付款方式,我们做的是微信,所以 ...

  6. thinkPHP实现APP微信支付

    控制器 class Pay extends Controller { const WX_PAY_URL = "https://api.mch.weixin.qq.com/pay/unifie ...

  7. app微信支付-java服务端接口 支付-查询-退款

    个人不怎么看得懂微信的文档,看了很多前辈的写法,终于调通了,在这里做一下记录. 首先来定义各种处理类(微信支付不需要特殊jar包,很多处理需要自己封装,当然也可以自己写完打个jar包) 参数要用jdo ...

  8. APP微信支付Java后台的实现(springmvc)

    第一次做微信支付,阅读完开发文档后,下了个官方demo,摸索了好久,期间也出现了好多问题,终于是实现生成预支付订单以及支付成功后接收微信服务器通知,不多说了,直接上代码: 一.工具类 Constant ...

  9. java中微信统一下单采坑(app微信支付)

    app支付前java后台统一下单文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1 微信支付接口签名校验工具:https ...

  10. APIcloud制作APP 微信支付与支付宝支付

    首先要在云端绑定相应模块如alipay和wxpay其次编写代码. 配置区域 var cfg = { webName:'',//APP名字 payDebug:true, isUseWxPay:true, ...

随机推荐

  1. 第5章 选举模式和ZooKeeper的集群安装 5-2 单机伪分布式安装zookeeper集群

    先搭建伪分布式集群,再去搭建真分布式集群.有些的人的电脑内存.性能比较低,所以在搭建真实的一个分布式环境的话,可能会相对来说比较卡,所以两种都会做一下,首先会在单机上搭建一个集群.单机上的集群主要就是 ...

  2. 文科妹学 GitHub 简易教程(转)

    文科妹学 GitHub 简易教程     #什么是 Github ?必须要放这张图了!!! Git 是由 Linux 之父 Linus Tovalds 为了更好地管理linux内核开发而创立的分布式版 ...

  3. sql如何选取两个数据表中的值

    一.直接在要选择的数据前面加上数据表的名字就行了 SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Product_Order ...

  4. 中华人民共和国建筑工业行业标准—IFC详细解读 第五篇

  5. 【摘自张宴的"实战:Nginx"】http auth baseic模块(打开页面需要密码验证)

    location /admin { auth_basic "kingsoft"; auth_basic_user_file httppasswd;      #密码文件的路径  默 ...

  6. ROS Learning-025 (提高篇-003 A Mobile Base-01) 控制移动平台

    ROS 提高篇 A Mobile Base-01 - 控制移动平台 - 基本知识 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 ...

  7. 51NOD1052 最大M字段和

    传送门 分析 一眼看去我们自然会想到dp[i][j][k]表示区间[i,j]中选k个子段的最大值.然后我们考虑降去一维.我们设dp[i][j]表示考虑了前i个数,在选了a[i]的情况下共有j个子段的最 ...

  8. ZROI2018普转提day2t4

    传送门 分析 考场上暴力水过好评... 然后我的st表查询似乎是log的,然后log三方跑的比log方快,qwq. 我们发现如果一个区间的最小值就是这个区间的gcd,则这个区间合法.所以我们二分区间长 ...

  9. 101334E Exploring Pyramids

    传送门 题目大意 看样例,懂题意 分析 实际就是个区间dp,我开始居然不会...详见代码(代码用的记忆化搜索) 代码 #include<iostream> #include<cstd ...

  10. js的学习

    对于 ff的 relatedTarget    及IE的toElement  fromElement DOM通过event对象的relatedTarget属性提供了相关元素的信息.这个属性只对于mou ...