最近工作接触到微信支付,刚开始解决微信支付很神秘,接触之后发现并没有那么神秘,就是有很多坑,在开发的时候需要注意,整理出来:

1.准备工作

首先需要登录微信支付公众平台阅读接口文档,地址:https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=9_12&index=2 ;

其次了解微信支付商户系统和微信支付系统主要交互说明:

步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。

步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。参见【统一下单API】。

步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay

步骤4:商户APP调起微信支付。api参见本章节【app端开发步骤说明】

步骤5:商户后台接收支付通知。api参见【支付结果通知API】

步骤6:商户后台查询支付结果。,api参见【查询订单API】

然后是微信支付交互过程

2.开始工作

不需要导入微信支付的jar包,需要哪些jar导入哪些就可以,

发送统一下单请求调用:

/**

*

* @方法名称:sendWxPayRequest

* @内容摘要: <发送统一下单请求>

* @param body

* @param outTradeNo

* @param totalFee

* @param spBillCreateIP

* @return

* String

* @exception

* @author:鹿伟伟

* @创建日期:2016年2月19日-下午2:24:05

*/

public String sendWxPayRequest(String body,String detail,String outTradeNo,int totalFee,String spBillCreateIP

)

{

// 构造HTTP请求

HttpClient httpclient = new HttpClient();

PostMethod postMethod = new PostMethod(Configure.PAY_API);

WxPayReqData wxdata = new WxPayReqData(body,detail,outTradeNo,totalFee,spBillCreateIP);

StringBuffer requestStr = new StringBuffer(

"");

requestStr.append("

requestStr.append(wxdata.getAppid());

requestStr.append("]]>

");

requestStr.append("

requestStr.append(wxdata.getBody());

requestStr.append("]]>");

requestStr.append("

requestStr.append(wxdata.getMch_id());

requestStr.append("]]>

");

requestStr.append("

requestStr.append(wxdata.getNonce_str());

requestStr.append("]]>

");

requestStr.append("

requestStr.append(wxdata.getNotify_url());

requestStr.append("]]>

");

requestStr.append("

requestStr.append(wxdata.getOut_trade_no());

requestStr.append("]]>

");

requestStr.append("

requestStr.append(wxdata.getSpbill_create_ip());

requestStr.append("]]>

");

requestStr.append("

requestStr.append(wxdata.getTotal_fee());

requestStr.append("]]>

");

requestStr.append("

requestStr.append(wxdata.getTrade_type());

requestStr.append("]]>

");

requestStr.append("

requestStr.append(wxdata.getSign());

requestStr.append("]]>

");

requestStr.append("");

// 发送请求

String strResponse = null;

try {

RequestEntity entity = new StringRequestEntity(

requestStr.toString(), "text/xml", "UTF-8");

postMethod.setRequestEntity(entity);

httpclient.executeMethod(postMethod);

strResponse = new String(postMethod.getResponseBody(), "utf-8");

Logger.getLogger(getClass()).debug(strResponse);

} catch (HttpException e) {

Logger.getLogger(getClass()).error("sendWxPayRequest", e);

} catch (IOException e) {

Logger.getLogger(getClass()).error("sendWxPayRequest", e);

} finally {

postMethod.releaseConnection();

}

return strResponse;

}

3.问题:

客户端调起微信支付接口是一直返回-1:

a.你要用验证过的keystore打包出来安装才能正常进入支付,否则不能进入微信,有可能出现-1的情况;

b.你的手机确认要有安装微信app;

微信统一下单 java_微信支付(java版本)_统一下单相关推荐

  1. 微信回调 java_详解APP微信支付(java后台_统一下单和回调)

    1.微信配置信息 global.properties 2.方法wxpay用于生成预支付订单信息 方法notifyWeiXinPay用于微信支付成功后的回调, 注意: 在手机端使用微信支付成功后,微信服 ...

  2. 微信支付查询订单java_微信支付java版本之查询订单

    本文实例为大家分享了微信支付订单的查询接口,供大家参考,具体内容如下 1.接口简介 2.代码实现 package com.zhrd.bussinss.platform.controller.shop; ...

  3. 视频教程-企业微信支付JAVA版_向员工收款-微信开发

    企业微信支付JAVA版_向员工收款 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信息 ...

  4. APP微信支付(java后台_统一下单和回调)

    微信支付Java后台 1.微信配置信息 global.properties 2.方法wxpay用于生成预支付订单信息 方法notifyWeiXinPay用于微信支付成功后的回调, 注意: 在手机端使用 ...

  5. 微信公众号之微信支付(V3版)jsp页面jsapi统一下单调启支付(java版)

    web项目 按顺序一步一步来 准备: 申请了微信支付接口的微信公众号一枚 , 备案的域名网站一枚, (如果有没有的这两个东西会耽误你很久,因为微信支付必须是线上,无法本地调试,) 这里说一下 如果有经 ...

  6. 微信PC端扫码支付 java 模式二的扫码支付

    前言 这次分享的是java对接微信的支付接口,实现电脑端扫码支付后,跳转支付成功页面的例子.之所以分享是微信的Api太坑了.留下的文档也少,对接过程中容易出现各种各样的问题,在实现这扫码支付功能的时候 ...

  7. 微信小程序推送消息java开发_干货 | 微信小程序推送消息简单Demo

    在开始前,你需要准备:注册微信小程序 一个简单的springBoot 项目 微信开发者工具 正式 微信小程序发送消息主要通过WxMaTemplateMessage 类来推送 public class ...

  8. 检查java_如何检查Java版本?

    Java是世界上最流行的编程语言之一,用于构建不同类型的跨平台应用程序. 本文介绍了如何使用命令行检查你的Linux系统上安装了什么版本的Java.这在安装需要特定版本Java的应用程序时很有用. J ...

  9. app支付宝支付java后台_支付宝app支付java后台流程demo

    支付宝app支付java后台流程demo 使用ssm框架实现支付宝支付功能. 支付宝测试环境代码测试 源代码 https://github.com/OUYANGSIHAI/sihai-maven-ss ...

最新文章

  1. 共模电感适用的频率_电感选型详解及设计规范
  2. 20什么情况下会帮助他人的因素
  3. linux源码gpio模拟i2c,linux内核gpio模拟i2c实例.doc
  4. HDU 2686 多线程DP
  5. windows下pclpy安装失败的解决方法——本地安装
  6. redis常用命令getex_Redis 常用命令篇(末尾含不常用)
  7. Linux批量清空当前目录中的日志文件
  8. 苹果电脑您没有权限来打开应用程序_苹果电脑换“芯”,全网最快的Apple Silicon M1 MacBook Air发售...
  9. Linux怎么登录redis数据库,Linux 系统上 Redis 数据库的 安装 部署 使用
  10. PHP 处理换行问题
  11. linux java不能运行命令,linux java不能运行命令
  12. 邱锡鹏《神经网络与深度学习》蒲公英书学习笔记
  13. java socket连接池_Java - Socket连接池
  14. 离线底图瓦片,可用于Cesium加载使用【图说GIS】
  15. left join 多表关联查询
  16. Kotlin学习安卓篇(一)为什么要学习Kotlin?
  17. javaee之spring3
  18. Java技巧|Java怎么升级版本?
  19. mysql where not in_mysql查询条件not in 和 in的区别及原因说明
  20. 中科大计算机本科毕业论文范文,查找学位论文

热门文章

  1. 湖南科技学院C语言答案,湖南科技大学C语言期末考试习题库.doc
  2. 天池金融风控入门赛学习
  3. 精心整理的前端开发必备网站推荐
  4. matlab中暂停的快捷键,如何设置“暂停调用”和“强制调用”快捷键
  5. 方差、标准差、均方差等各种差
  6. 【运维】--服务器之间文件备份
  7. 多路宽带聚合(绑定)的算法思考
  8. 十二星座匹配对象_星座配对:让十二星座崩溃的恋爱对象
  9. 创业多想一秒,做事少磕十年
  10. 物流运输“营改增”好心办“坏”事?