微信支付

最近进行微信刷卡支付的功能开发:

开发环境:SpringBoot+H2+Java

1:申请微信服务号。

2:登录服务号开通微信支付功能。详情性查看官方文档(公司的服务号在我之前已经申请了)https://pay.weixin.qq.com/guide/webbased_payment.shtml

3:登录微信支付平台 设置/获取API密钥:


4:下载证书并安装:证书密码平台登录密码。


5:下载刷卡支付SDK:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1。

或者直接在maven工程里添加:

<dependency>
    <groupId>com.github.wxpay</groupId>
    <artifactId>wxpay-sdk</artifactId>
    <version>0.0.3</version>
</dependency>
6:新建MyConfig  
public class MyConfig implements WXPayConfig

设置基本参数(参数必须设置正确)

public String getAppID() {
        return "wx8888888888888888";//公众号获取的AppID
    }

    public String getMchID() {
        return "12888888";//商务号
    }

    public String getKey() {
        return "88888888888888888888888888888888";//API密钥
    }

7:根据API文档,设置相应的参数进行WXPlay的调用:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1

经过测试除了“撤销订单”接口返回数据说签名错误之外其它接口都正常。如果需要可使用“申请退款”来替代。实现方法都很简单,需要什么参数就传什么。


8:微信支付需要你根据要求进行刷卡支付的验收:官方说明:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=23_1


(1)进行验收时使用:wxPay=new WXPay(config,true,true);进行实例化

(1)进行验收前首先调用:https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey接口获得沙箱密钥。

(2)获取到的沙箱密钥代替MyConfig中的getKey()里的数据。

(3)根据里面的金额进行刷卡、然后查询订单。等待几秒或者刷新自己就会看到测试结果。(有延时)

(4)最后一项可能有BUG,无论怎样都没法进入验证流程,反正最后一个是可选也就暂时不管了。

官方并没有提供获取沙漏密钥的方法,自己添加方法去实现:


//获取沙箱签名密钥
    public static final String GETSIGNKEY_URL_SUFFIX="/pay/getsignkey";
    public static final String SANDBOX_GETSIGNKEY_URL_SUFFIX="/sandboxnew/pay/getsignkey";

/**
     * 获取沙箱Key
     * @param reqData
     * @param connectTimeoutMs
     * @param readTimeoutMs
     * @return
     * @throws Exception
     */
    public Map<String,String> GetSignKey(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception{
    	String url;
    	if (this.useSandbox) {
            url = WXPayConstants.SANDBOX_GETSIGNKEY_URL_SUFFIX;
        }
        else {
            url = WXPayConstants.GETSIGNKEY_URL_SUFFIX;
        }
    	
    	String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
    	System.out.println(respXml);
    	return this.processResponseXml(respXml);
	}
    /**
     * 获取沙箱Key
     * @param reqData
     * @param connectTimeoutMs
     * @param readTimeoutMs
     * @return
     * @throws Exception
     */
    public Map<String,String> GetSignKey(Map<String, String> reqData) throws Exception {
    	return this.GetSignKey(reqData, this.config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
	}



9:验收测试结束后:把MyConfig中的getKey()改回正确的API密钥,使用:wxPay=new WXPay(config);进行实例化。

到这一步就完成了刷卡支付的开发了。至于其它业务就需要你自己去开发了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值