APP微信支付实现
参考官方文档
设计到的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微信支付实现的更多相关文章
- 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结
最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...
- APP微信支付报错《商户号该产品权限未开通,请前往商户平台>产品中心检查后重试》
问题 最近项目使用MUI,HBuilder.开发打包H5的app 在开发H5 plus支付的时候,遇到以下问题: App微信支付调官方的统一下单接口返回错误信息 {return_msg=商户号该产品权 ...
- ThinkPHP5.0 实现 app微信支付功能
相对于之前随笔写的<ThinkPHP5.0实现app支付宝支付功能>来说,php对接app微信支付功能就相对简单的多了,最近有加我的朋友问到app微信支付,所以我把app微信支付的demo ...
- app微信支付(一) - 微信支付基本业务流程解析
想必微信支付是现在很多朋友离不开的一个功能,不论是扫描支付还是公众号支付或者app端支付,基本的思路都是一样的,之前做过支付宝支付以及中国移动支付接口,这几天花时间讲讲微信支付吧 先看一下微信支付的时 ...
- 手机app微信支付后台处理流程
第一步:客户在手机app确认订单,提交订单后,app将订单详情传给后台,后台将订单存入数据库,将存入数据库的id返回给app. 第二步:这时候手机端app会让客户选择哪种付款方式,我们做的是微信,所以 ...
- thinkPHP实现APP微信支付
控制器 class Pay extends Controller { const WX_PAY_URL = "https://api.mch.weixin.qq.com/pay/unifie ...
- app微信支付-java服务端接口 支付-查询-退款
个人不怎么看得懂微信的文档,看了很多前辈的写法,终于调通了,在这里做一下记录. 首先来定义各种处理类(微信支付不需要特殊jar包,很多处理需要自己封装,当然也可以自己写完打个jar包) 参数要用jdo ...
- APP微信支付Java后台的实现(springmvc)
第一次做微信支付,阅读完开发文档后,下了个官方demo,摸索了好久,期间也出现了好多问题,终于是实现生成预支付订单以及支付成功后接收微信服务器通知,不多说了,直接上代码: 一.工具类 Constant ...
- java中微信统一下单采坑(app微信支付)
app支付前java后台统一下单文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1 微信支付接口签名校验工具:https ...
- APIcloud制作APP 微信支付与支付宝支付
首先要在云端绑定相应模块如alipay和wxpay其次编写代码. 配置区域 var cfg = { webName:'',//APP名字 payDebug:true, isUseWxPay:true, ...
随机推荐
- 安装Oracle 11.2.0.3 Client Win 32-bit
第一步:安装Oracle 11.2 32-bit数据库1.双击setup文件,进入安装界面 2.选择跳过升级选项 3.设置oracle安装根目录 4.确认选项,没有问题点击“安装” 第二步:创建数据库
- js闭包(二)
一.何谓“闭包”? 所谓“闭包(Closure)”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 描述的如此学术的官方解释,相信很少人能够 ...
- springBoot数据库jpa+对接mybatis
1 spring Data jpa hibernate引领数据访问技术,使用orm对象关系映射来进行数据库访问,通过模型和数据库进行映射,通过操作对象实现对数据库操作,把数据库相关操作从代码中独立出 ...
- Comparatable接口和Comparator接口的使用与区别
这篇博文可以为你解决的问题如下: 什么是自然排序 Collections.sort()与Arrays.sort()的异同点 Comparatable接口和Comparator接口各自的排序依据(理论讲 ...
- [Elasticsearch2.x] 多字段搜索 (一) - 多个及单个查询字符串 <译>
多字段搜索(Multifield Search) 本文翻译自官方指南的Multifield Search一章. 查询很少是只拥有一个match查询子句的查询.我们经常需要对一个或者多个字段使用相同或者 ...
- [转]MySQL5.6.22 安装
原文路径 http://jifeng3321.iteye.com/blog/2181517?utm_source=tuicool 由于一直做银行项目,所以一直在用oracle和db2,但最近自己想 ...
- Angular22 HttpClient的使用
1 HttpClient介绍 HttpClient时Http的演进,注意:Http在@angular/http中,而HttpClient在@angular/common/http中: 使用前需要在模块 ...
- java的邮件系统实现
想要java中邮件发送和接收邮件,首先需要支持SMTP- pop/pop3/IMAP协议,发送的话还需要配置文件,来对程序提供相应的接口,只需要这两个文件,就可以实现邮件的接收发送, 协议为jar包封 ...
- 高性能MySQL笔记-第5章Indexing for High Performance-002Hash indexes
一. 1.什么是hash index A hash index is built on a hash table and is useful only for exact lookups that u ...
- Java50道经典习题-程序32 左移右移
题目:取一个整数a从右端开始的4-7位.分析:比如取123456789从右端开始的4-7位即:3456(1)先使a右移4位.(2)设置一个低4位全为1,其余全为0的数.可用~(~0<<4) ...