zoukankan      html  css  js  c++  java
  • Mui 微信支付、支付宝支付

    利用mui 发起手机微信和支付宝支付


     

    payStatement :调起微信支付接口的参数

    参考文档: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2

    
    
    
      /**
         * 支付
         * @param {Object} payType  支付类型
         * @param {Object} payStatement  调起支付宝或微信的statment支付订单信息
         */
        paywx(payType, payStatement) {
    
            /***判断支付通道****/
            //最终的支付通道
            var channel;
            /***
             * 用于标识支付通道: 
             * "alipay" - 表示支付宝;
             * "wxpay" - 表示微信支付; 
             */
            var payId; //支付标识
            if(payType == "ALIPAY_ANDROID") {
                payId = "alipay";
            } else {
                payId = "wxpay";
            }
    
            // 取出支付宝和微信的支付通道
            plus.payment.getChannels(function(channels) {
                mui.each(channels, function(index, element) {
                    if(element.id == payId) {
                        channel = element;
                    }
                });
                if(!channel) {
                    mui.toast('获取支付通道失败,请重试!');
                }
                setTimeout(function() {
                    mui.confirm('支付已完成', '提示', ['支付遇到问题', '支付完成'], function(e) {
                        if(e.index == 1) {
                            app.tokenAjax_Get({
                                url: API_URL_GET_ORDER_STATUS + dataSource.orderId,
                                success: function(result) {
                                    if(result.status == 1) {
                                        var status = result.data;
                                        if(status == "JUST_CREATED") {
                                            mui.toast('订单未支付');
                                        } else if(status == 'CANCEL') {
                                            mui.toast('订单已被取消');
                                            //清除定时器
                                            clearInterval(timer);
                                            //打开
                                            plus.webview.currentWebview().close();
                                            plus.webview.getWebviewById("pay").close();
                                            plus.webview.getWebviewById("order").close();
                                        } else {
                                            //清除定时器
                                            clearInterval(timer);
                                            //打开
                                            app.openRefreshOrderListPage();
                                        }
                                    }
                                },
                                error: function(xhr) {
                                    app.httpError(xhr.status);
                                }
                            });
                        }
                    }, 'div')
                }, 3000);
                //发起支付
                plus.payment.request(channel, payStatement, function(result) {
                    mui.toast('支付完成');
                    /**
                     *查询订单状态是否已支付
                     * 轮询查询订单状态
                     * 
                     */
                    var timer1 = setInterval(function() {
                        app.tokenAjax_Get({
                            url: API_URL_GET_ORDER_STATUS + dataSource.orderId,
                            success: function(result) {
                                if(result.status == 1) {
                                    var status = result.data;
                                    if(status == "JUST_CREATED") {
                                        mui.toast('订单未支付');
                                    } else if(status == 'CANCEL') {
                                        mui.toast('订单已被取消');
                                        //清除定时器
                                        clearInterval(timer);
                                        clearInterval(timer1)
                                        //打开
                                        plus.webview.currentWebview().close();
                                        plus.webview.getWebviewById("pay").close();
                                        plus.webview.getWebviewById("order").close();
                                    } else {
                                        //清除定时器
                                        clearInterval(timer);
                                        clearInterval(timer1)
                                        //打开
                                        app.openRefreshOrderListPage();
                                    }
                                }
                            },
                            error: function(xhr) {
                                app.httpError(xhr.status);
                            }
                        });
                    }, 1000);
    
                }, function(error) {
                    console.log(JSON.stringify(error));
                    mui.toast("支付失败");
                });
    
            }, function(e) {
                mui.toast("获取支付通道列表失败:" + e.message);
            });
    
        }

    更多错误信息请参考支付(Payment)规范文档:http://www.html5plus.org/#specification#/specification/Payment.html

    注意: (  微信支付提示{"code":-100,"message":"[payment微信:-1]General errors"}  )

    • 微信支付安卓不支持真机调试
    • 需要打包到手机测试, 打包测试需要使用自己的私有证书打包apk
  • 相关阅读:
    java内部类与其他类变量之间的调用方式
    java线程数设置和系统cpu的关系
    IDEA设置方法自动显示参数提示
    (十)学生课程表查询
    (九)协处理器
    (八)filter的使用
    (七)多线程写入数据
    (六)mapreduce和Hbase集成
    (五)阅读推荐
    (四)region代码实现
  • 原文地址:https://www.cnblogs.com/zyulike/p/10122789.html
Copyright © 2011-2022 走看看