网站开发 APP开发 小程序开发 SEO优化 公司新闻

java开发微信第三方支付流程

2018-05-04 09:45:10
1198

  最近研究了第三方支付,突然发现,不管是哪个第三方他的官方文档着实坑人.先不说他没有dome,就连表达的都不清楚,我当时是被她坑的够惨的.所以我整理了一下它的流程首先先介绍一下它的优缺点:

  优点:第三方提供接口,开发成本低

  缺点:接口参数较多,维护成本高

  介绍的是用java开发的微信支付流程

  第一步也是和第三方直接打交道的一步也可以叫准备工作:到微信开发公众平台去申请:已认证微信号,且通过微信支付认证,这个可以看微信文档,很详细,这里就不再重复。(当然必要的参数一定要知道 其中包括APP_ID,APP_KEY,PARTNER,PARTNER_KEY(AppSecret),回调地址......)

  然后就要自己手写代码了(开发是网页版的扫码支付):

  你需要用一系列的参数去和微信换取一个链接具体参数有啥..其实我有点懒得写 微信文档有..但是不写的话我怕挨骂.. 故我把它放在最后面的附件里然后用换取的链接制作成为一个二维码(这里我个人建议使用qrcoed.js在前台生成二维码,如果用qrcord.jar后台生成二维码的话会有点耗内存)

  然后就可以扫了。到这一步很多人以为所有东西都完成了。

  这样就真的结束了吗? 你太天真了!

  你付过款之后想知道到你付钱没有,你真以为它会主动告诉你..天真!虽然说有回调地址但是我认为开发项目不能太被动,所以觉得还是主动去问.于是乎我就砸前台页面使用向下面的js去问它

  第一次上代码

 var tiao=setInterval(function(){
            $.getJSON("/Client/UserAction_doWePay",
                {"nonce_str":nonce_str},
                function(data){
                    console.log(data.fanhui);
                    if(i>39){
                        alert("支付已失效,请重新下单");
                        clearInterval(tiao);
                        window.history.go(-1);
                    }
                    if(data.fanhui == "SUCCESS"){
                        alert("充值成功");
                        clearInterval(tiao);
                        window.history.go(-1);
                    }else if(data.fanhui=="ERROR"){
                        alert("支付失败");
                        clearInterval(tiao);
                        location.reload();
                    }else if(data.fanhui=="BLEAK"){
                        alert("已撤销");
                        clearInterval(tiao);
                    }else{
                        return;
                    }
                });
            i++;
        },1500);

  这样你就占据了主动权,毕竟写程序的我们自己,当然要按我们的思路来所以主动权一定要把持。

  附件:

  换取二维码内容参数:appid,appsecret,商业号,API_KEY,回调地址,trade_type(支付类型),spbill_create_ip(发起这个支付的设备的ip),订单号,订单名称,应付金额(这里注意金额以分为单位,不能出现小数点),sign(这是一个签名,微信文档里有签名的生成算法)。