微信官方的JSAPI文档

微信官方的JSAPI支付SDK与DEMO下载

查看JSAPI的API可以从这里看

下载了支付DEMO其实有些地方不对的,比如如果做沙盒测试的时候,需要使用getsignkey,而官方的demo中没有这个.

看了看sf.gg的一个文章,之后把获取getsignkey的api请求加了进去.

现在的 WXPayConstants :

package com.wechat.demo.wxpay;

import org.apache.http.client.HttpClient;

/**
* 微信支付常量类
*/
public class WXPayConstants { public enum SignType {
MD5, HMACSHA256
} public static final String DOMAIN_API = "api.mch.weixin.qq.com";
public static final String DOMAIN_API2 = "api2.mch.weixin.qq.com";
public static final String DOMAIN_APIHK = "apihk.mch.weixin.qq.com";
public static final String DOMAIN_APIUS = "apius.mch.weixin.qq.com"; public static final String FAIL = "FAIL";
public static final String SUCCESS = "SUCCESS";
public static final String HMACSHA256 = "HMAC-SHA256";
public static final String MD5 = "MD5"; public static final String FIELD_SIGN = "sign";
public static final String FIELD_SIGN_TYPE = "sign_type"; public static final String WXPAYSDK_VERSION = "WXPaySDK/3.0.9";
public static final String USER_AGENT = WXPAYSDK_VERSION +
" (" + System.getProperty("os.arch") + " " + System.getProperty("os.name") + " " + System.getProperty("os.version") +
") Java/" + System.getProperty("java.version") + " HttpClient/" + HttpClient.class.getPackage().getImplementationVersion(); //提交付款码支付 https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1
public static final String MICROPAY_URL_SUFFIX = "/pay/micropay";
//统一下单 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
public static final String UNIFIEDORDER_URL_SUFFIX = "/pay/unifiedorder";
//查询订单 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_2
public static final String ORDERQUERY_URL_SUFFIX = "/pay/orderquery";
//撤销订单 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_11
public static final String REVERSE_URL_SUFFIX = "/secapi/pay/reverse";
//关闭订单 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_3
public static final String CLOSEORDER_URL_SUFFIX = "/pay/closeorder";
//申请退款 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_4
public static final String REFUND_URL_SUFFIX = "/secapi/pay/refund";
//查询退款 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_5
public static final String REFUNDQUERY_URL_SUFFIX = "/pay/refundquery";
//下载对账单 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_6
public static final String DOWNLOADBILL_URL_SUFFIX = "/pay/downloadbill";
//交易保障 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_8&index=9
public static final String REPORT_URL_SUFFIX = "/payitil/report";
//转换短链接 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_9&index=10
public static final String SHORTURL_URL_SUFFIX = "/tools/shorturl";
//授权码查询openid https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_13&index=9
public static final String AUTHCODETOOPENID_URL_SUFFIX = "/tools/authcodetoopenid"; // sandbox 沙盒测试
public static final String SANDBOX_GETSIGNKEY_URL_SUFFIX = "/sandboxnew/pay/getsignkey";
public static final String SANDBOX_MICROPAY_URL_SUFFIX = "/sandboxnew/pay/micropay";
public static final String SANDBOX_UNIFIEDORDER_URL_SUFFIX = "/sandboxnew/pay/unifiedorder";
public static final String SANDBOX_ORDERQUERY_URL_SUFFIX = "/sandboxnew/pay/orderquery";
public static final String SANDBOX_REVERSE_URL_SUFFIX = "/sandboxnew/secapi/pay/reverse";
public static final String SANDBOX_CLOSEORDER_URL_SUFFIX = "/sandboxnew/pay/closeorder";
public static final String SANDBOX_REFUND_URL_SUFFIX = "/sandboxnew/secapi/pay/refund";
public static final String SANDBOX_REFUNDQUERY_URL_SUFFIX = "/sandboxnew/pay/refundquery";
public static final String SANDBOX_DOWNLOADBILL_URL_SUFFIX = "/sandboxnew/pay/downloadbill";
public static final String SANDBOX_REPORT_URL_SUFFIX = "/sandboxnew/payitil/report";
public static final String SANDBOX_SHORTURL_URL_SUFFIX = "/sandboxnew/tools/shorturl";
public static final String SANDBOX_AUTHCODETOOPENID_URL_SUFFIX = "/sandboxnew/tools/authcodetoopenid"; }

请注意上面红色的代码是请求沙盒测试需要的key的请求路径.

之后把请求的方法写到了原来的 WXPayUtil 中:

/**
* 获取sandbox测试需要的signkey
* @param config
* @param wxPay
* @return
* @throws Exception
*/
public static String retrieveSandboxSignKey(IWXPayConfig config, WXPay wxPay) throws Exception {
try {
Map<String, String> params = new HashMap<String, String>();
params.put("mch_id", config.getMchID());
params.put("nonce_str", WXPayUtil.generateNonceStr());
params.put("sign", generateSignatrue(params, config.getKey()));
String strXML = wxPay.requestWithoutCert(WXPayConstants.SANDBOX_GETSIGNKEY_URL_SUFFIX, params, config.getHttpConnectTimeoutMs(), config.getHttpReadTimeoutMs());
if (StringUtils.isBlank(strXML)) {
return null;
}
Map<String, String> result = WXPayUtil.xmlToMap(strXML);
getLogger().info("retrieveSandboxSignKey:" + result);
if ("SUCCESS".equals(result.get("return_code"))) {
return result.get("sandbox_signkey");
}
return null;
}catch(Exception e){
getLogger().info("获取Sandbox_signkey异常",e);
return null;
} }

在这之后就可以根据DEMO中的README去设置一下了.

这里还有官方提供的测试用例:

测试用例的作用是测试支付的传参与返回数据是否正确.

测试了官方支付DEMO后,可以再根据官方的测试用例文档进行相应地处理.

由于现有公司使用的微信平台对接一套php系统,所以暂时没有找到更稳妥的在线测试.

只能进行模拟的测试+后期业务逻辑编写了.

调起支付(需要对接开通支付的微信服务号),现调不起支付也不要紧,只需要按照调起支付

后续编写逻辑代码即可.

[微信开发] - 微信支付 JSAPI 形式的更多相关文章

  1. 微信公众号支付JSAPI网页,total_fee错误不正确,header重定向参数丢失,无法获取订单号和金额解决

    微信公众号支付官方demo错误, 公众号支付只能用在微信里,也就是微信内部浏览器. 1.到WxPayHubHelper.php文件 JsApi_pub()类下createOauthUrlForCode ...

  2. 微信公众号支付JSAPI,提示:2支付缺少参数:appId

    因为demo中支付金额是定死的,所以需要调整. 所以在使用的JS上添加了参数传入.这里的传入string类型的参数,直接使用是错误的,对于方法,会出现appid缺少参数的错误 //调用微信JS api ...

  3. C#微信开发-微信JS-SDK(1)之通过config接口注入权限验证配置

    官方文档是微信JS-SDK的使用步骤http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#JSSDK.E4.BD.B ...

  4. html 微信开发——微信授权

    微信JS-SDK说明文档 链接地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 微信web开发:http: ...

  5. [微信开发] 微信JSAPI - 获取用户地理位置信息

    参考博客 http://blog.csdn.net/u013142781/article/details/50503299 主要JS 方法 wx.getLocation 获取地理位置信息传递参数 成功 ...

  6. C# 微信开发-----微信会员卡(一)

    这是微信的官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025283,能看懂的朋友就请不要往下看了,我是看不懂 ...

  7. [微信开发] 微信网页授权Java实现

    功能:主要用于在用户通过手机端微信访问第三方H5页面时获取用户的身份信息(openId,昵称,头像,所在地等..)可用来实现微信登录.微信账号绑定.用户身份鉴权等功能.     开发前的准备: 1.需 ...

  8. 微信开发——微信公众平台实现消息接收以及消息的处理(Java版)

    本文主要讲述了如何在微信公众平台实现消息接收以及消息的处理,使用java语言开发,现在把实现思路和代码整理出来分先给兄弟们,希望给他们带来帮助. 温馨提示: 这篇文章是依赖前几篇的文章的. 第一篇:微 ...

  9. 微信开发-微信JSSDK错误:invalid url domain

    错误类型:invalid url domain 调试返回参数: { "errMsg": "config:invalid url domain" } 截图: 环境 ...

随机推荐

  1. 【JMeter】如何优雅的写脚本

    cc给发的视频链接: http://v.youku.com/v_show/id_XMzA4Mjg1ODA0MA==.html?spm=a2h3j.8428770.3416059.1 ————————— ...

  2. LINUX的特殊字符含义

    # 井号 (comments)这几乎是个满场都有的符号,除了先前已经提过的"第一行"#!/bin/bash井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注 ...

  3. 配合dedecms内容模型实现后台输入栏目id前端输出文章列表

    为了简化开发的工作量,也方便编辑快速操作,决定将后台进行重新设置.配合dedecms内容模型实现后台输入栏目id前端输出文章列表,这样制作科室专题页也变快了很多.比如,我们添加一个“科室专家栏目id” ...

  4. 3.对神经网络训练中Epoch的理解

    代表的是迭代的次数,如果过少会欠拟合,反之过多会过拟合 EPOCHS 当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个 epoch.   然而,当一个 epoch 对于计算机而言太 ...

  5. PHP导出excel时数字变为科学计数的解决方法

    在数据导出到excel时数字格式不对,一般分为以下两种情况. 1.excel单元格设置长度不够 解决方法: //在excel.php文件中 $objActSheet = $objPHPExcel-&g ...

  6. vue学习之五生命周期

    一.vue生命周期图解 下图展示了实例的生命周期.你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它的参考价值会越来越高. 二.vue钩子函数使用 2.1beforeCreate 在实例初始 ...

  7. 高性能mysql 4 ,5章

    第4章 1:查询优化,多表连接时只取需要的列,要对select * 保持怀疑. 2:如果发现访问的数据行数很大,而生成的结果中数据行很少,那么可以尝试更复杂的修改 a: 使用覆盖索引,b: 更改架构, ...

  8. CentOS系统下的数据盘挂载

    此教程适用系统:Linux(CentOS,Debian,Ubuntu,Fedora) 通常新开通的Linux云服务器数据盘都未做分区和格式化.在进行数据盘挂载之前我们要先进行分区以及格式化操作.注意, ...

  9. Navicat 连接 Mysql8.0 出现2059问题的解决方法

    ``` 登陆Mysql后执行命令 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; ...

  10. 修練營ASP.NET]淺談多層式架構 (Multi Tiers)

    從需求談起 我們舉個小例子來理解一般的方式與多層的方式有何不同 假設:我需要顯示最近三個月內,所有營業員的銷售金額成績排名 一般的做法: 在一個畫面中,拉個GridView,一個SqlDataSouc ...