微信支付--网页版-V3-(1)

最近要做网页微信公众号网页调微信支付。好了,废话不多说,先看官方的文档:
https://pay.weixin.qq.com/index.php/home/login?return_url=%2F
1、打开公众号支付:

2、查看第二阶段的开发文档

进入到 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1
3、先查看业务流程
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4
4、重点如下图红框标识

5、重点在第4和第5步;图中有提到调用【统一下单API()】来生成预付订单()也就是先要生成prepay_id。
废话不多说,先看接口文档中的统一下单API:统一下单API
6、在该接口中有提到【“除被扫支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易回话标识后再按扫码、JSAPI、APP等不同场景生成交易串调起支付。”】。OK,其它的先不管;先根据接口API,编写代码:

    /**
     * 构建微信统一支付请求xml串
     * @param payParams
     * @return str
     */
    public static String buildUnifiedOrderReq(Map payParams){
        String payStr = "";
        payStr += "";
        payStr +=    ""+payParams.get("appid")+"";
        payStr +=    ""+payParams.get("body")+"";
        payStr +=    ""+payParams.get("mch_id")+"";
        payStr +=    ""+payParams.get("nonce_str")+"";
        payStr +=    ""+payParams.get("notify_url")+"";
        payStr +=    ""+payParams.get("openid")+"";
        payStr +=    ""+payParams.get("out_trade_no")+"";
        payStr +=    ""+payParams.get("spbill_create_ip")+"";
        payStr +=    ""+payParams.get("total_fee")+"";
        payStr +=    "JSAPI";
        payStr +=    ""+payParams.get("sign")+"";
        payStr +="";
        return payStr;
    }

7、在编写代码的过程中,你会发现在调用统一下单接口前,需要获取支付用户的openid。在接口中有获取openid的相关链接。因我是公众号,故来到此页面:公众号获取openid
8、因是网页获取,故点此链接进入获取用户openid的api,如下图

9、点击链接,来到了微信公众号网页授权获取用户基本信息;初步一看,一堆堆的说明,怎么搞啊,头大了。不用担心,一步一句看下去,到最后,你会发现获取openid有两种不同的方式:

  • 静默授权(用户无感知)
  • 感知授权(需用户授权)

10、为了提升用户体验,初步决定使用静默授权方式。
11、浏览完该api说明,可以得到静默授权方式获取到微信用户的openid获取步骤。

  • 1).引导用户访问链接:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
  • 2).通过code换取access_token和openid
  • (上述链接的参数说明,可以参考接微信的接口文档)

12、那么问题又来了,如何测试-请看下篇~

你可能感兴趣的:(微信支付)