Skip to content

4.7我的订单支付页面

一、支付页面生成

状态:"待付款"才会生成-订单支付页面

###1.从订单列表跳转

2种情况(正常和异常) 接口

4种结果(全有、有订单无发票 :正常、全无、无订单有发票:异常) 数据库数据

3种页面(显示页面、填写页、空页面) 页面

详情:
限时许可(有) : 订单接口和发票接口 3/4
限时许可(全无) : 订单接口和发票接口 1/3
限时许可(有发票无订单) 订单接口和发票接口 3/3
限时许可(无发票有订单) 订单接口和发票接口 8/8

支付
1.	限时许可(有) : 订单接口和发票接口 3/4  生成显示页面
2.	限时许可(无发票有订单) 订单接口和发票接口 8/8  生成填写页
3.
    限时许可(全无) : 订单接口  1/3    则生成空页面
    限时许可(有发票无订单) 订单接口 4/4  则生成空页面
异常:表示订单信息数据丢失,不会访问发票接口,会产生 空页面
正常:根据发票接口返回(是否为[]),来生成 显示页面或填写页

判断条件: 1.有无发票接口 2. 有发票接口,返回是否为[]

####1.订单信息数据丢失,为什么不会访问发票接口?

LimitTimeLicensePaymentUI.js 
具体:data.licenseTerm = SuperMapOnline.Lang.Resource[data.licenseTerm.toLocaleLowerCase()];

####2.结论

应该都发接口,这是以前的bug

以前的判断条件: 1.有无发票接口 2. 有发票接口,返回是否为[]
判断套件改为:  1.订单信息数据是否缺失 orderinfo.orderDetail 2.发票接口,返回是否为[]

<!-- 2.1订单支付-显示订单信息 -->
<!-- 订单支付-显示订单信息结束 -->

<!-- 2.2订单支付-表单输入 -->
<!-- 订单支付-表单输入结束 -->

            //表单错误提示判断
            finalUserWrongTip:{
                isOrderId:false,
                isUser:false,
                isFinalUser:false,
                isIndustry:false,
                isArea:false,
            }
            
            //普通发票
            let ordinaryInvoice = {
                companyName: invoiceModel.companyName,
                addressee: invoiceModel.addressee,
                userAddress: invoiceModel.userAddress,
                telephone: invoiceModel.telephone,
            };
            //专用发票
            let specialInvoice = {
                companyName: invoiceModel.companyName,
                taxID: invoiceModel.taxID,
                bank: invoiceModel.bank,
                bankAccount: invoiceModel.bankAccount,
                registeredAddress: invoiceModel.registeredAddress,
                registeredPhone: invoiceModel.registeredPhone,
                addressee: invoiceModel.addressee,
                userAddress: invoiceModel.userAddress,
                telephone: invoiceModel.telephone,
            }
            
            let invoice = {
                companyName: invoiceModel.companyName,
                taxID: invoiceModel.taxID,
                bank: invoiceModel.bank,
                bankAccount: invoiceModel.bankAccount,
                registeredAddress: invoiceModel.registeredAddress,
                registeredPhone: invoiceModel.registeredPhone,
                addressee: invoiceModel.addressee,
                userAddress: invoiceModel.userAddress,
                telephone: invoiceModel.telephone,
            }
            //遍历判断
            for(let i in invoice){
                if(invoice[i]){
                    this.invoiceWrongTip[i] = false;
                }else{
                    this.invoiceWrongTip[i] = true;
                }
            }
            
            if(!invoiceModel.companyName){
                return !(this.invoiceWrongTip.isCompanyName = true);
            }
            if(!invoiceModel.taxID){
                return !(this.invoiceWrongTip.isTaxID = true);
            }
            if(!invoiceModel.addressee){
                return !(this.invoiceWrongTip.isAddressee = true);
            }
            if(!invoiceModel.userAddress){
                return !(this.invoiceWrongTip.isUserAddress = true);
            }
            if(!invoiceModel.telephone){
                return !(this.invoiceWrongTip.isTelephone = true);
            }
            //专用发票则需校验开户银行、银行账号、注册地址、注册电话,
            if(invoiceModel.type === 'SPECIAL'){
                if(!invoiceModel.bank){
                    return !(this.invoiceWrongTip.isBank = true);
                }
                if(!invoiceModel.bankAccount){
                    return !(this.invoiceWrongTip.isBankAccount = true);
                }
                if(!invoiceModel.registeredAddress){
                    return !(this.invoiceWrongTip.isRegisteredAddress = true);
                }
                if(!invoiceModel.registeredPhone){
                    return !(this.invoiceWrongTip.isRegisteredPhone = true);
                }
            }else if(invoiceModel.type === 'ORDINARY'){
                //普通发票则不校验,并设置''
                invoiceModel.bank = '';
                invoiceModel.bankAccount = '';
                invoiceModel.registeredAddress = '';
                invoiceModel.registeredPhone = '';
            }
            //赋值orderId
            return true;

##一、订单路由

###1.订单页面

页面组件过多考虑抽离成对象(暂时不抽离,原因是现在只判断2个参数,在不考虑以后有新的页面组件时,不抽离更便捷)

//页面显示判断
                orderPage:{
                    isOrderList:true,
                    isOrderDetail:false,
                    isOrderPay:false
                },


//显示页面
            showOrderPage(orderPage){
                this.orderPage.isOrderList = orderPage.isOrderList
                this.orderPage.idOrderDetail = orderPage.idOrderDetail;
                this.orderPage.isOrderPay = orderPage.isOrderPay;
            },

###2.从订单列表跳转

##二、发票接口

###1.保存发票

InvoiceResource.js  发票接口
CommonResource.js
InvoiceUITemplate.js  发票事件
InvoiceDetailUI.js   发票详情


https://itest.supermapol.com/api/web/mycontent/invoices.json
{"childID":"286","customResult":true,"isAsynchronizedReturn":false}

           //普通发票
            let ordinaryInvoice = {
                type: invoiceModel.type,
                companyName: invoiceModel.companyName,
                taxID: invoiceModel.taxID,
                addressee: invoiceModel.addressee,
                userAddress: invoiceModel.userAddress,
                telephone: invoiceModel.telephone,
            }
            //专用发票 
            let specialdInvoice = {
                type: invoiceModel.type,
                companyName: invoiceModel.companyName,
                taxID: invoiceModel.taxID,
                bank: invoiceModel.bank,
                bankAccount: invoiceModel.bankAccount,
                registeredAddress: invoiceModel.registeredAddress,
                registeredPhone: invoiceModel.registeredPhone,
                addressee: invoiceModel.addressee,
                userAddress: invoiceModel.userAddress,
                telephone: invoiceModel.telephone,
            },
参数:
专用
{
    addressee: "2"
    bank: "2"
    bankAccount: "2"
    companyName: "2"
    orderId: "02-20210413110205250000"
    registeredAddress: "2"
    registeredPhone: "2"
    remarks: "2"
    taxID: "2"
    telephone: "2"
    type: "SPECIAL"
    userAddress: "2"
}

{
    "addressee": "1",
    "bank": "2",
    "bankAccount": "2",
    "companyName": "2",
    "orderId": "02-20210413110205250000",
    "registeredAddress": "2",
    "registeredPhone": "2",
    "remarks": "2",
    "taxID": "2",
    "telephone": "2"
    "type": "SPECIAL",
    "userAddress": "2"
}

普通
addressee: "21"
bank: ""
bankAccount: ""
companyName: "33"
orderId: "02-202104131714041440000"
registeredAddress: ""
registeredPhone: ""
remarks: "22"
taxID: "33"
telephone: "32"
type: "ORDINARY"
userAddress: "32"



InvoiceDetailUI.js
resource_zh_CN.js
SuperMapOnline.Lang.Invoices = {
        invoiceId : "发票ID",
        companyName : "纳税单位",
        taxID : "纳税识别号",
        registeredAddress : "注册地址",
        registeredPhone : "注册电话",
        bank : "开户银行",
        bankAccount : "银行帐号",
        userAddress : "邮寄地址",
        telephone : "收件人电话",
        invoiceType : "发票类型",
        createTime : "创建时间",
        completeTime : "开票时间",
        type : {
            ORDINARY : "普通发票",
            SPECIAL : "专用发票"
        },
        status : {
            "0" : "未开",
            "1" : "已开"
        },
        statusChangeTip : "确定已经开票完成吗?"
}

###2.保存最终用户

userInfoUITemplate.js

https://itest.supermapol.com/api/web/mycontent/cloud/orders/timelicense/update

area: "安徽"
finalUser: "d"
industry: "政府其他"
orderId: "02-2021041319102610260000"
user: "d"

##三、点击保存并支付按钮

1.保存并支付按钮

IportalMyOrderPaymentView.js -> InvoiceUITemplate.js
paymentOK

#telephone, #bankAccount, #registeredPhone//部分发票信息输入框只能输入数字

2.支付页面

alipayResource.js

getRedirectUrl : function(orderId) {
                return this.resourceUrl + "/redirect/" + orderId;
            }
http://127.0.0.1:8099/api/web/orderpayment/alipay

http://127.0.0.1:8099/web/mycontent/cloud/orders/02-201804161705585580000/loading
http://127.0.0.1:8099/api/web/orderpayment/alipay/redirect/02-201804161705585580000

https://excashier.alipay.com/standard/auth.htm?payOrderId=0e38ed1d34994fadb536a7d8d624881b.80

https://itest.supermapol.com/api/web/orderpayment/alipay/redirect/00-2021042720512251220000
4.支付后跳转com.isupermap.cloudmanagement.rest.resources.impl.AliPayResource   redirect

alipaySubmit.ftl

3.支付完成

orderCommon.js
http://192.168.13.117/api/web/mycontent/cloud/orders/verify.json   PUT  
02-20190805093019301900001

4.支付也回调失败

324366

select * from ordercommoninfo where orderId = 02-2021050610593059300000;
javax.servlet.ServletException: java.lang.NullPointerException
	org.apache.shiro.web.servlet.AdviceFilter.cleanup(AdviceFilter.java:196)
	org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:148)
	org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:450)
	org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
	org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
	org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
	org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)
	org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
	org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	com.supermap.online.web.handlers.MapSuffixToAcceptFilter.doFilter(MapSuffixToAcceptFilter.java:33)
	com.supermap.online.web.handlers.HttpFilter.doFilter(HttpFilter.java:23)
	com.supermap.online.web.handlers.ReplaceHostFilter.doFilter(ReplaceHostFilter.java:17)
	com.supermap.online.web.handlers.HttpFilter.doFilter(HttpFilter.java:23)
根本原因。

java.lang.NullPointerException
	com.isupermap.cloudmanagement.component.OrderComponentImpl.paid(OrderComponentImpl.java:265)
	com.isupermap.cloudmanagement.component.OrderComponentImpl.paidByAli(OrderComponentImpl.java:248)
	com.isupermap.cloudmanagement.rest.resources.impl.AliPayResource.processCompleted(AliPayResource.java:156)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:498)
	com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
	com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
	com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
	com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
	com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
	com.sun.jersey.server.impl.uri.rules.ResourceObjectRule.accept(ResourceObjectRule.java:100)
	com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
	com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
	com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
	com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
	com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
	com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
	com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
	com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540)
	com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715)
	com.isupermap.cloudmanagement.web.JaxrsApplicationsFilter.doFilter(JaxrsApplicationsFilter.java:104)
	com.supermap.online.web.handlers.HttpFilter.doFilter(HttpFilter.java:23)
	com.supermap.online.web.handlers.PlaceholderFilter.doFilter(PlaceholderFilter.java:30)
	com.isupermap.cloudmanagement.handlers.LocaleFilter.doFilter(LocaleFilter.java:29)
	com.supermap.online.web.handlers.HttpFilter.doFilter(HttpFilter.java:23)
	org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
	org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
	org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
	org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:450)
	org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
	org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
	org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
	org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)
	org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
	org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	com.supermap.online.web.handlers.MapSuffixToAcceptFilter.doFilter(MapSuffixToAcceptFilter.java:33)
	com.supermap.online.web.handlers.HttpFilter.doFilter(HttpFilter.java:23)
	com.supermap.online.web.handlers.ReplaceHostFilter.doFilter(ReplaceHostFilter.java:17)
	com.supermap.online.web.handlers.HttpFilter.doFilter(HttpFilter.java:23)

总体缺陷

1.订单详情-扩展模块: 无扩展,错误:扩展模块: 基础平台
2 发票的状态除了 未开
3.限时许可文件-请联系我们为您生成正式许可:
Tel:028-61802715;Email:online@supermap.com

总体架构

									MyOrder
						/			   |            \
									OrderList
				OrderInfoDetail      	  			 OrderPay
	/          /          |						/     |       \           \         \
订单详情  数据服务详情   				   订单支付 数据服务支付 发票填写 最终用户填写 最终用户显示 
					  		\	        /
					  			发票详情       
						





订单详情:文件许可、云许可
数据服务详情:基础、专业、高级