微信支付之公众号支付

微信商户申请开通:https://pay.weixin.qq.com/service_provider/index.shtml
注意:开通公众账号之后,然后根据流程开通相对应的商户平台


开发文档之场景介绍文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_3
开发文档之模式1的流程图:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4

开发之前所需要的参数:
1、APP ID ,应用ID(在公众平台--基本配置模块中)
2、APP Sercret ,应用秘钥(在公众平台--基本配置模块中)
3、API Key,API的秘钥(在商户平台--API安全中设置)
4、mchID , 商户号(在公众平台---微信支付---商户信息)
5、order_api , 统一下单API的接口 
6、notify_url    交易成功回调的接口的URL
7、redirect_uri   JS网页获取code后重定向的地址 
8、 barcode_api 物料二维码 (就是自己的一个接口,生产的二维码,比如我的链接 http://www.baidu.com/wallexxxx/api/jspai/xxxx.do   那么用户扫描二维码会进入我的这个接口的方法当中,在这个方法当中

开发配置:
1、配置微信支付的授权域名(要具体到接口的上一级,比如我的接口为:http://www.baidu.com/wallexxxx/api/jspai/xxxx.do),所以我的配置为:http://www.baidu.com/wallexxxx/api/jspai





2、这里只要直接配置域名即可





3、这里也是配置域名




开发流程:
1、自己生成二维码(二维码的链接就是跳转到自己写的接口当中, http://www.baidu.com/wallexxxx/api/jspai/xxxx.do   
2、在接口方法中,判断是否含有code? 如果没有code, 则重定向微信获取code的URL链接(https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect),改URL当中参数说明。
     appid:APP ID
     redirect_uri:获取code之后会重定向进入的页面或者接口,这里我们继续填 http://www.baidu.com/wallexxxx/api/jspai/xxxx.do   
    后面的参数就不用更改了
3、经过上述步骤,这个时候在 xxxx.do  的方法中 已经能获取到了code,有了code之后,我们可以根据微信获取OPENID的链接进行获取openId (  https://api.weixin.qq.com/sns/oauth2/access_tokenappid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code)
    参数说明:appid :APPID 
                    secret:APP  Secret
                    code: 步骤2中获取到的code
      然后在这个方法当中,得到OPENID之后,再重定向到我们自己写的A.html界面(让用户输入金额的界面),并且把openID传递给A.html界面
4、用户在A.html界面输入完金额,点击支付的按钮---- 这个时候请求接口xxxOrder.do (下单的接口) 
5、服务器在xxxOrder.do的接口中。调用微信公众号支付的下单的API :https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
     构造好参数,并且传Post提交,获取该接口的返回值
6、将微信下单API返回的参数,保存到数据库,并且将部分值 (APPID,timeStamp(时间戳) ,nonceStr( 随机字符串,不长于32位),package (  预支付交易会话标识),signType(MD5),paySign(MD5的签名,就是将这里所有的字段组合成字符串然后签名))。
7、A.html请求xxxOrder.do的接口,得到返回数据,调用下面代码,来发起支付:
function onBridgeReady(){
   WeixinJSBridge.invoke(
       'getBrandWCPayRequest', {
           "appId" : "wx2421b1c4370ec43b",     //公众号名称,由商户传入     
           "timeStamp":" 1395712654",         //时间戳,自1970年以来的秒数     
           "nonceStr" : "e61463f8efa94090b1f366cccfbbb444", //随机串     
           "package" : "prepay_id=u802345jgfjsdfgsdg888",     
           "signType" : "MD5",         //微信签名方式:     
           "paySign" : "70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 
       },
       function(res){     
           if(res.err_msg == "get_brand_wcpay_request:ok" ) {}     // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回    ok,但并不保证它绝对可靠。 
       }
   ); 
}
if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}

7、支付完成之后,会进入到5中调用微信下单API中,参数中设置的回调的URL参数。 改参数肯定也是我自己后台的xxxx.do的接口。在这个方法当中,参考:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2
  可以得到我们需要的参数,根据 商户订单号---- out_trade_no 可以来更新数据库的表,并且推送给APP消息!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值