微商城微信支付

来源:互联网 发布:淘宝浴巾哪个牌子好 编辑:程序博客网 时间:2024/04/29 10:04

1.Beecloud: beecloud-java-sdk-3.4.10.jar包导入项目.


2.支付页面配置:(备注最好把pay_example文件夹下的jsp页面都复制到项目里,pay要在一级目录下)

(1)导包:<%@ page import="cn.beecloud.*" %>

(2)beecloud注册:

<%  BeeCloud.registerApp("5c50b118-f5a3-4b3c-997b-8ac6fe3b34d5",  "4bfdd244-574d-4bf3-b034-0c751ed34fee","aa2a0947-9c0e-4463-836d-4288b9d92805", "295fa088-adf9-4cbd-b939-af69d1a2446f");

    /*  String optional = "{\"test1\":\"test1\"}"; */

%>

(3)

支付跳转地址:"pay.jsp?paytype=WX_JSAPI&total_fee=${sjzfje2}&openId="+window.localStorage.getItem('username')(备注:pay.jsp必须在项目的一级目录下,否则微信支付页面会闪退,传值:支付渠道WX_JSAPI,支付金额:必须是Integer整型,单位分.openId:获取微信用户的openId)


3.支付页面跳转地址:pay.jsp

(1)接收支付页面的传值(必须):

 //模拟商户的交易编号、标题、金额、附加数据

    String billNo =  "wande" + System.currentTimeMillis();(自动生成的订单号)

    String title = "万德农产品";(订单标题)

    Map<String, Object> optional = new HashMap<String, Object>();

    optional.put("test1", "test1");(webhook中改变订单状态的判断依据)

    String type = request.getParameter("paytype");(渠道代码)

    String openId = request.getParameter("openId");(微信openId在微信用户登录的时候已经取好值)

    String orderCode = request.getParameter("orderCode");(支付页面传来的订单号)

Integer refundFee = Integer.parseInt(request.getParameter("total_fee"));(支付金额)

 

(2) BCOrder存值:

BCOrder bcOrder = new BCOrder(channel,refundFee, orderCode, title);

    BCInternationlOrder internationalOrder = new BCInternationlOrder();

    bcOrder.setBillTimeout(360);

    bcOrder.setOptional(optional);(要把值写进去)

    bcOrder.setUseApp(true);(默认启用APP)

 

(3)case块代码:

  case WX_JSAPI:

        case BC_WX_JSAPI:

            bcOrder.setOpenId(openId);

           

               try {

        

                        bcOrder = BCPay.startBCPay(bcOrder);

                        //out.println(bcOrder.getObjectId());

                       // System.out.print(bcOrder.getObjectId());

 

                        Map<String, String> map = bcOrder.getWxJSAPIMap();

                        jsapiAppid = map.get("appId").toString();

                        timeStamp = map.get("timeStamp").toString();

                        nonceStr = map.get("nonceStr").toString();

                        jsapipackage = map.get("package").toString();

                        signType = map.get("signType").toString();

                        paySign = map.get("paySign").toString();

                    } catch (BCException e) {

                        //log.error(e.getMessage(), e);

                        //out.println(e.getMessage());

                    }

                  

            break;

(4)调用起微信支付的JS最后执行:<script type="text/javascript">

    callpay();

    function jsApiCall() {

        var data = {

            //以下参数的值由BCPayByChannel方法返回来的数据填入即可

            "appId": "<%=jsapiAppid%>",

            "timeStamp": "<%=timeStamp%>",

            "nonceStr": "<%=nonceStr%>",

            "package": "<%=jsapipackage%>",

            "signType": "<%=signType%>",

            "paySign": "<%=paySign%>"

        };

        //alert(JSON.stringify(data));

        WeixinJSBridge.invoke(

                'getBrandWCPayRequest',

                data,

                function (res) {

                    //alert(res.err_msg);

                   // alert(JSON.stringify(res));

                    WeixinJSBridge.log(res.err_msg);

                    if(res.err_msg=="get_brand_wcpay_request:ok"){

                     window.open("http://www.wandemall.com/mobile/mergerpaysuccess.html");

                    }

                      //window.open("http://www.wandemall.com/mobile/mergerpaysuccess.html");

                }

        );

    }

 

    function callpay() {

        if (typeofWeixinJSBridge == "undefined") {

            if (document.addEventListener) {

                document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);

            } else if (document.attachEvent) {

                document.attachEvent('WeixinJSBridgeReady', jsApiCall);

                document.attachEvent('onWeixinJSBridgeReady', jsApiCall);

            }

        } else {

            jsApiCall();

        }

    }

 

</script>

 

(5)支付完成,webhook处理订单状态,微信支付结束.



0 0