微信支付接口测试你还没掌握吗?

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 在网上随便一个生成二维码的网页就可以转换成微信收款二维码。 钱就是我们在代码里规定好的。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值