微信支付接口测试你还没掌握吗?
native 支付文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1
(实战开发在下面 一定要看完)
==============================================================================
微信支付申请(了解)
第一步:注册公众号(类型须为:服务号)
请根据营业执照类型选择以下主体注册:个体工商户| 企业/公司| *| 媒体| 其他类型。
第二步:认证公众号
公众号认证后才可申请微信支付,认证费:300元/次。
第三步:提交资料申请微信支付
登录公众平台,点击左侧菜单【微信支付】,开始填写资料等待审核,审核时间为1-5个工作日内。
第四步:开户成功,登录商户平台进行验证
资料审核通过后,请登录联系人邮箱查收商户号和密码,并登录商户平台填写财付通备付金打的小额资金数额,完成账户验证。
第五步:在线签署协议
本协议为线上电子协议,签署后方可进行交易及资金结算,签署完立即生效。
完成上述步骤,你可以得到调用API用到的账号和**
真实地测试,所以,我们写的接口,钱都会给对应的公众号。钱一定设置成1分钱。
appid:微信公众账号或开放平台APP的唯一标识 wx8397f8696b538317
mch_id:商户号 1473426802
key:商户** T6m9iK73b0kn9g5v426MKfHQH7X8rKwb
微信支付开发文档与SDK
在线微信支付开发文档:
https://pay.weixin.qq.com/wiki/doc/api/index.html
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
微信支付接口调用的整体思路:
按API要求组装参数,以XML方式发送(POST)给微信支付接口(URL),微信支付接口也是以XML方式给予响应。程序根据返回的结果(其中包括支付URL)生成二维码或判断订单状态。
我们解压从官网下载的sdk ,安装到本地仓库
com.github.wxpay.sdk.WXPay类下提供了对应的方法:
实战开发
1. 创建wxpay_test 的maven工程
2. 导入相应的依赖
<dependencies>
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>3.0.9</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
3. 创建配置类 注意:报名必须是com.github.wxpay.sdk
其中 APP唯一标识 商户id 商户** 都是需要我们申请公众号的。 可使用以下 认证好的
package com.github.wxpay.sdk;
import java.io.InputStream;
/**
* @author JavaClimber
* @version 1.0
* @date 2020/3/6 16:46
*/
public class MyConfig extends WXPayConfig{
/**
* appid:微信公众账号或开放平台APP的唯一标识 wx8397f8696b538317
*
* mch_id:商户号 1473426802
*
* key:商户** T6m9iK73b0kn9g5v426MKfHQH7X8rKwb
* @return
*/
@Override
String getAppID() {
return "wx8397f8696b538317"; // app的唯一表示
}
@Override
String getMchID() {
return "1473426802"; // 商户号
}
@Override
String getKey() {
return "T6m9iK73b0kn9g5v426MKfHQH7X8rKwb"; // 商户秘钥
}
@Override
InputStream getCertStream() {
return null;
}
@Override
IWXPayDomain getWXPayDomain() {
return new IWXPayDomain() {
@Override
public void report(String s, long l, Exception e) {
}
@Override
public DomainInfo getDomain(WXPayConfig wxPayConfig) {
// 微信支付接口 URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder
return new DomainInfo("api.mch.weixin.qq.com", true);
}
};
}
}
4. 写一个测试类
package javaclimber.test;
import com.github.wxpay.sdk.MyConfig;
import com.github.wxpay.sdk.WXPay;
import java.util.HashMap;
import java.util.Map;
/**
* @author JavaClimber
* @version 1.0
* @date 2020/3/6 16:53
*/
public class PayTest {
public static void main(String[] args) throws Exception {
// 1.1 创建配置类
MyConfig myConfig=new MyConfig();
// 1. 创建一个微信客户端
WXPay wxPay=new WXPay(myConfig);
// 根据官方文档 必填值封装数据
// 文档地址 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
Map<String,String> map = new HashMap<>();
map.put("body", "JavaClimber"); // 商品描述
map.put("out_trade_no", "18003540314"); // 商户订单ID
map.put("total_fee", "1"); //标价金额 单位是分,代表1分钱。 (学习中不要设置别的值,毕竟都是钱)
map.put("spbill_create_ip", "127.0.0.1"); //公网IP 学习中没有就写本地
map.put("notify_url", "https://blog.csdn.net/qq_37126480"); // 通知地址 回调地址
map.put("trade_type", "NATIVE"); // 交易类型(详情见官方文档)
// URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder
// 2. 进行支付
Map<String, String> resultMap = wxPay.unifiedOrder(map);
// 3. 返回结果
// code_url=weixin://wxpay/bizpayurl?pr=f21q7E6 返回结果里用这个code_url的值 生成二维码就可以了。
System.out.println(resultMap);
}
}
最终返回结果如下
{nonce_str=mzLTeHCgd3hJgI1U, code_url=weixin://wxpay/bizpayurl?pr=MGLlqLe, appid=wx8397f8696b538317, sign=745CCD2A8E8CA787EFA4E2A86C394F01BD53971E0F8731E4D9C52EAA30D62847, trade_type=NATIVE, return_msg=OK, result_code=SUCCESS, mch_id=1473426802, return_code=SUCCESS, prepay_id=wx0619414423579251a87d801e1436394200}
以上要注意 成功必须有下面两个参数
result_code=SUCCESS return_code=SUCCESS
5. 测试二维码
从上述返回值中 我们找出 code_url=weixin://wxpay/bizpayurl?pr=MGLlqLe
只需要将其值 weixin://wxpay/bizpayurl?pr=MGLlqLe 在网上随便一个生成二维码的网页就可以转换成微信收款二维码。 钱就是我们在代码里规定好的。
如果对上述有所疑问,欢迎大家添加qq进行交流。 92801779
上一篇: 009---路径
下一篇: 设计模式--策略模式