h5支付信息确实稀疏,但是找到好方法,按照高手的步骤来实现,确实是可以的。 话不多说,让我们开始准备吧。
还是需要看一下官方文档才能知道基本参数有哪些:
微信支付存在很多陷阱,特别是在平台的设置上。
首先你需要,微信支付商户号,API key key,(),说明在这里
然后设置授权域名,可以在界面设置中找到,包括js界面安全域名和网页授权域名:
点击这个之后,你会看到最下面两个:js接口安全域名。 您可以设置其中三个,只需填写您访问的页面的域名即可。
以下为网页授权回调域名,用于您完成支付后的回调。 将下载的文件放在服务器根路径下,确保可以访问。 我把它放在中间
所设置的域名必须已注册
然后设置支付域名,设置路径:商户平台-->产品中心-->开发配置中设置域名。
如果是公众号支付,则设置对应的。 需要说明的是,公众号支付授权的域名是请求的上一级。 例如,如果你想请求,那么你可以设置它。
只需设置h5支付的h5域名即可。 不需要后缀。 只需写入您要设置的域名即可。
需要在API中设置,并且需要安装证书。 你可以根据提示安装,自行设置32位。
我使用了的版本并将其编写为我自己的版本。 我稍后会链接到它。
主要用的是封装好的jar,库里已经有。 使用0.8以上版本,这样jdk兼容性问题就已经解决了。
开始使用代码
(){
。新的()
.()
.()
.()
.(..);
/**
*微信H5支付--------------------简单易用
*注:必须在网页发起付款,并且域名已添加到开发配置中
*/
@(="/pay.do",={.POST,.GET})
(,){
。出去。(” - - ”);
="://你的域名/.do";//这是回调地址,方法如下
//获取ip
=.();
if(com.jpay.ext.kit..(ip)){
ip =“127.0.0.1”;
=();
=();
.(“哇”);
//此域名必须在商户平台--“产品中心”--“开发配置”中添加
.("");
.(“公司官方网站”);
.();
=();
=.New()
.()
.()
.(《H5支付测试》)
.(ip)
.(“520”)
.(..MWEB)
.()
.()
.(.(.()))
.("{\"\":{\"type\":\"IOS\",\"\":\"mtgg\",\"\":\"com..tmgp.\"}}" )
.(《H5支付测试》)
.();
=.(,);
=.();
//返回结果
=.get("");
=.get("");
如果(!。()){
日志。(">"++">"+);
化();
=.get("");
如果(!。()){
日志。(">"++">"+);
化();
//当 和 都为时,返回以下字段
=.get("");
=.get("");
(":"++":"+);
尝试{
.();
}(){
e.();
首先给出
.mtgg.;
..成套工具。;
/**
*@
*/
佛{
;
(){
;
(){
这.=;
@
(){
.();
{
;
e;
ID;
;
;
e;
(){
;
(){

this.type=类型;
梅(){
;
e(){
这.=;
e_id(){
;
ID(){
这.=;
(){
;
(){
这.=;
rl(){
;
(){
这.=;
梅(){
;
e(){
这.=;
注意确保可以访问,使用域名访问。
最后发送完成后就可以打开微信支付了。
返回支付成功
@(="/.do",={.POST,.GET})
@
(,){
//支付结果通用通知文档:
.out.("------------------支付回调----------------");
=.();
.out.("---------"+);
=.();
//=.get("");
////商家号码
//=.get("");
=.get("");
//=.get("");
////交易类型
//=.get("");
////付款银行
//=.get("");
////总金额
=.get("");
=.(0,.()-2);
////现金支付金额
//=.get("");
////微信支付订单号
//=.get("");
////商户订单号
//=.get("");
////支付完成时间,格式为
//=.get("");
///////////////////////////////以下为附加参数/////////////// ///// //////////////////////////////////////////////
=.get("");
.out.("回调-->"+);
.out.("回调-->"+);
//=.get("");
//=.get("");
//=.get("");
//=.get("");
//注意重复通知。 同一订单号可能会收到多个通知。 请务必先确定订单状态。
//防止已经成功、关闭、退款的订单再次更新
//=.dao.nId();
//如果(==空){
=“”;
.(());
如果(。(,。()。())){
如果((””)。()){
//TODO根据商户订单号改变充值状态
.out.("成功,入库");
=""+""
+""+"";
}别的{
//支付失败
log.("支付失败回调消息");
=""+""
+""+"";
输出=空;
尝试{
输出=电子束(
.());
出去。(。());
出去。();
出去。();
}(){
e.();
//}
这里需要注意最后一个xml.put(),.(xml)必须返回给微信,说明商户成功收到通知,验证成功,这样微信就知道商户支付成功了,否则会继续通知,这会导致重复处理数据,这个错误是致命的
我改变了上面的回调,这样我就可以闭嘴,不再被重复通知。
以下是激活微信支付的测试。
常见错误:
1.网络环境安全验证失败,请稍后重试(IP变更导致)
2、商户参数格式错误,请联系商户解决(H5支付为空导致)
3、商户参数未配置,请联系商户解决(H5支付域名问题)
4. 支付请求已过期,请重新发起支付(有效期为5分钟)
5.请在微信外打开订单并付款(微信客户端无法直接发起H5付款)
我曾经在获取code的时候遇到了回调两次的错误,因为code只能使用一次,第二次就失效了。 互联网上有很多东西。 如果有人知道如何彻底解决请留言。 谢谢。
我的demo地址:注意回调没有使用demo中的。 使用本文档回调方法闭嘴(含公众号支付):
参考:有兴趣的话可以看看他的更多相关付款。