Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in
Toggle navigation
T
tamp_course_order
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
彭熊
tamp_course_order
Commits
81692534
Commit
81692534
authored
Nov 25, 2020
by
pengxiong@wealthgrow.cn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
创建订单,订单查询
parent
11de885d
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
2563 additions
and
30 deletions
+2563
-30
errorhandler.py
app/controller/errorhandler.py
+11
-1
order.py
app/controller/order.py
+101
-10
account_topup_order.py
app/model/account_topup_order.py
+1
-1
base.py
app/model/base.py
+3
-2
curriculum_order.py
app/model/curriculum_order.py
+1
-1
tamp_user_models.py
app/model/tamp_user_models.py
+1
-1
version1.py
app/router/version1.py
+4
-1
order_service.py
app/service/order_service.py
+54
-5
alipayWap.py
app/utils/alipay/alipayWap.py
+11
-7
wx_app_pay.py
app/utils/wxpay/wx_app_pay.py
+1
-1
tamp_course_order.log
logs/tamp_course_order.log
+2375
-0
No files found.
app/controller/errorhandler.py
View file @
81692534
...
...
@@ -6,7 +6,7 @@
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
from
flask
import
jsonify
from
flask
import
jsonify
,
make_response
,
request
from
app.config.errors
import
Errors
...
...
@@ -43,3 +43,13 @@ def add_errorhandler(app):
response
.
status_code
=
error
.
status_code
return
response
@
app
.
before_request
def
before_request
():
request
.
return_success
=
{
'return_code'
:
0
,
'message'
:
'ok'
}
@
app
.
after_request
def
after_request
(
response
):
response
.
headers
[
'content-type'
]
=
"application/json"
return
response
app/controller/order.py
View file @
81692534
...
...
@@ -6,12 +6,14 @@
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
import
json
from
flask_restful
import
Resource
,
reqparse
from
flask
import
request
,
jsonify
from
flask
import
request
from
app.api
import
app
from
app.controller.errorhandler
import
CustomFlaskErr
from
app.config.errors
import
Errors
from
app.service
import
order_service
class
TopUpOrder
(
Resource
):
...
...
@@ -23,15 +25,22 @@ class TopUpOrder(Resource):
def
get
(
self
):
"""."""
raise
CustomFlaskErr
(
Errors
.
USER_ALREADY_EXISTS
)
self
.
parser
.
add_argument
(
'
product_id'
,
type
=
str
,
required
=
True
,
help
=
'商品
ID不能为空'
)
#
raise CustomFlaskErr(Errors.USER_ALREADY_EXISTS)
self
.
parser
.
add_argument
(
'
user_id'
,
type
=
str
,
required
=
True
,
help
=
'用户
ID不能为空'
)
args
=
self
.
parser
.
parse_args
()
print
(
args
)
return
{
'data'
:
'world'
}
data
=
order_service
.
TopUpOrderService
()
.
get_order
(
args
)
resp
=
request
.
return_success
resp
[
'data'
]
=
data
return
resp
def
post
(
self
):
"""."""
pass
self
.
parser
.
add_argument
(
'user_id'
,
type
=
str
,
required
=
True
,
help
=
'用户ID不能为空'
)
self
.
parser
.
add_argument
(
'amount'
,
type
=
int
,
required
=
True
,
help
=
'订单总额不能为空'
)
self
.
parser
.
add_argument
(
'pay_method'
,
type
=
int
,
required
=
True
,
help
=
'支付方式不能为空'
)
args
=
self
.
parser
.
parse_args
()
order_service
.
TopUpOrderService
()
.
create_order
(
args
)
return
request
.
return_success
def
put
(
self
,
id
):
"""."""
...
...
@@ -51,19 +60,101 @@ class ConsumeOrder(Resource):
def
get
(
self
):
"""."""
self
.
parser
.
add_argument
(
'
product_id'
,
type
=
str
,
required
=
True
,
help
=
'商品
ID不能为空'
)
self
.
parser
.
add_argument
(
'
user_id'
,
type
=
str
,
required
=
True
,
help
=
'用户
ID不能为空'
)
args
=
self
.
parser
.
parse_args
()
print
(
args
)
return
{
'data'
:
'world'
}
data
=
order_service
.
CurriculumOrderService
()
.
get_order
(
args
)
resp
=
request
.
return_success
resp
[
'data'
]
=
data
return
resp
def
post
(
self
):
"""."""
self
.
parser
.
add_argument
(
'prod_type'
,
type
=
int
,
required
=
True
,
help
=
'商品类型不能为空'
)
self
.
parser
.
add_argument
(
'prod_id'
,
type
=
str
,
required
=
True
,
help
=
'商品ID不能为空'
)
self
.
parser
.
add_argument
(
'prod_name'
,
type
=
str
,
required
=
True
,
help
=
'商品名称不能为空'
)
self
.
parser
.
add_argument
(
'prod_quantity'
,
type
=
int
,
required
=
True
,
help
=
'商品数量不能为空'
)
self
.
parser
.
add_argument
(
'user_id'
,
type
=
str
,
required
=
True
,
help
=
'用户ID不能为空'
)
self
.
parser
.
add_argument
(
'pay_method'
,
type
=
int
,
required
=
True
,
help
=
'支付方式不能为空'
)
args
=
self
.
parser
.
parse_args
()
order_service
.
CurriculumOrderService
()
.
create_order
(
args
)
return
request
.
return_success
def
put
(
self
,
id
):
"""."""
pass
def
delete
(
self
,
id
):
"""."""
pass
class
TopUpOrderNotify
(
Resource
):
"""充值订单支付通知."""
def
__init__
(
self
):
"""."""
self
.
parser
=
reqparse
.
RequestParser
()
def
get
(
self
):
"""."""
# raise CustomFlaskErr(Errors.USER_ALREADY_EXISTS)
self
.
parser
.
add_argument
(
'user_id'
,
type
=
str
,
required
=
True
,
help
=
'用户ID不能为空'
)
args
=
self
.
parser
.
parse_args
()
data
=
order_service
.
TopUpOrderService
()
.
get_order
(
args
)
resp
=
request
.
return_success
resp
[
'data'
]
=
data
return
resp
def
post
(
self
):
"""."""
self
.
parser
.
add_argument
(
'user_id'
,
type
=
str
,
required
=
True
,
help
=
'用户ID不能为空'
)
self
.
parser
.
add_argument
(
'amount'
,
type
=
int
,
required
=
True
,
help
=
'订单总额不能为空'
)
self
.
parser
.
add_argument
(
'pay_method'
,
type
=
int
,
required
=
True
,
help
=
'支付方式不能为空'
)
args
=
self
.
parser
.
parse_args
()
order_service
.
TopUpOrderService
()
.
create_order
(
args
)
return
request
.
return_success
def
put
(
self
,
id
):
"""."""
pass
def
delete
(
self
,
id
):
"""."""
pass
\ No newline at end of file
pass
class
ConsumeOrderNotify
(
Resource
):
"""消费订单支付通知."""
def
__init__
(
self
):
"""."""
self
.
parser
=
reqparse
.
RequestParser
()
def
get
(
self
):
"""."""
self
.
parser
.
add_argument
(
'user_id'
,
type
=
str
,
required
=
True
,
help
=
'用户ID不能为空'
)
args
=
self
.
parser
.
parse_args
()
data
=
order_service
.
CurriculumOrderService
()
.
get_order
(
args
)
resp
=
request
.
return_success
resp
[
'data'
]
=
data
return
resp
def
post
(
self
):
"""."""
self
.
parser
.
add_argument
(
'prod_type'
,
type
=
int
,
required
=
True
,
help
=
'商品类型不能为空'
)
self
.
parser
.
add_argument
(
'prod_id'
,
type
=
str
,
required
=
True
,
help
=
'商品ID不能为空'
)
self
.
parser
.
add_argument
(
'prod_name'
,
type
=
str
,
required
=
True
,
help
=
'商品名称不能为空'
)
self
.
parser
.
add_argument
(
'prod_quantity'
,
type
=
int
,
required
=
True
,
help
=
'商品数量不能为空'
)
self
.
parser
.
add_argument
(
'user_id'
,
type
=
str
,
required
=
True
,
help
=
'用户ID不能为空'
)
self
.
parser
.
add_argument
(
'pay_method'
,
type
=
int
,
required
=
True
,
help
=
'支付方式不能为空'
)
args
=
self
.
parser
.
parse_args
()
order_service
.
CurriculumOrderService
()
.
create_order
(
args
)
return
request
.
return_success
def
put
(
self
,
id
):
"""."""
pass
def
delete
(
self
,
id
):
"""."""
pass
app/model/account_topup_order.py
View file @
81692534
...
...
@@ -17,7 +17,7 @@ class AccountTopupOrder(Base, BaseModel):
"""账户探普币充值表"""
__tablename__
=
'account_topup_order'
id
=
Column
(
String
(
64
),
default
=
__tablename__
+
str
(
int
(
time
.
time
()
*
10000
)),
primary_key
=
True
)
id
=
Column
(
String
(
64
),
primary_key
=
True
)
order_no
=
Column
(
String
(
50
),
comment
=
'订单号'
)
transaction_serial_no
=
Column
(
String
(
50
),
server_default
=
''
,
comment
=
'交易流水号'
)
user_id
=
Column
(
String
(
64
),
comment
=
'用户ID'
)
...
...
app/model/base.py
View file @
81692534
...
...
@@ -6,6 +6,8 @@
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
import
datetime
from
sqlalchemy.ext.declarative
import
declarative_base
,
declared_attr
Base
=
declarative_base
()
...
...
@@ -16,5 +18,4 @@ class BaseModel:
pass
def
to_dict
(
self
):
return
{
c
.
name
:
getattr
(
self
,
c
.
name
)
for
c
in
self
.
__table__
.
columns
}
return
{
c
.
name
:
getattr
(
self
,
c
.
name
)
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
if
isinstance
(
getattr
(
self
,
c
.
name
),
datetime
.
datetime
)
else
getattr
(
self
,
c
.
name
)
for
c
in
self
.
__table__
.
columns
}
app/model/curriculum_order.py
View file @
81692534
...
...
@@ -16,7 +16,7 @@ class CurriculumOrder(Base, BaseModel):
"""课程订单表"""
__tablename__
=
'curriculum_order'
id
=
Column
(
String
(
64
),
default
=
__tablename__
+
str
(
int
(
time
.
time
()
*
10000
)),
primary_key
=
True
)
id
=
Column
(
String
(
64
),
primary_key
=
True
)
order_no
=
Column
(
String
(
50
),
comment
=
'订单号'
)
transaction_serial_no
=
Column
(
String
(
50
),
server_default
=
''
,
comment
=
'交易流水号'
)
prod_type
=
Column
(
String
(
200
),
comment
=
'商品类型1:栏目 3:直播 4:视频 5 音频'
)
...
...
app/model/tamp_user_models.py
View file @
81692534
...
...
@@ -970,7 +970,7 @@ class CurriculumRel(Base, BaseModel):
delete_tag
=
Column
(
INTEGER
(
1
),
nullable
=
False
,
comment
=
'删除标识'
)
class
CurriculumRe
(
Base
,
BaseModel
):
class
CurriculumRe
s
(
Base
,
BaseModel
):
__tablename__
=
'curriculum_res'
__table_args__
=
{
'comment'
:
'课程资源'
}
...
...
app/router/version1.py
View file @
81692534
...
...
@@ -15,4 +15,7 @@ def add_route(api):
api
.
add_resource
(
TopUpOrder
,
'/tamp_order/micro_shop/topUpOrder'
)
# 消费订单
api
.
add_resource
(
ConsumeOrder
,
'/tamp_order/micro_shop/consumeOrder'
)
# 充值订单支付通知
api
.
add_resource
(
TopUpOrderNotify
,
'/tamp_order/micro_shop/topUpOrderNotify'
)
# 消费订单支付通知
api
.
add_resource
(
ConsumeOrderNotify
,
'/tamp_order/micro_shop/consumeOrderNotify'
)
app/service/order_service.py
View file @
81692534
...
...
@@ -6,16 +6,65 @@
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
from
app.model.curriculum_order
import
OrderInfo
import
time
from
app.api.engine
import
tamp_pay_session
,
tamp_user_session
from
app.model.account_topup_order
import
AccountTopupOrder
from
app.model.curriculum_order
import
CurriculumOrder
from
app.model.tamp_user_models
import
CurriculumPrice
,
CurriculumColumn
,
CurriculumRes
class
OrderService
:
class
TopUpOrderService
:
""""""
def
__init__
(
self
):
pass
def
create_order
(
self
):
pass
def
get_order
(
self
,
args
):
res
=
tamp_pay_session
.
query
(
AccountTopupOrder
)
.
filter
(
AccountTopupOrder
.
user_id
==
args
[
'user_id'
])
.
all
()
return
[
r
.
to_dict
()
for
r
in
res
]
def
create_order
(
self
,
args
):
args
[
'order_no'
]
=
time
.
strftime
(
'
%
Y
%
m
%
d'
,
time
.
localtime
(
time
.
time
()))
+
str
(
int
(
time
.
time
()
*
100000
))
args
[
'id'
]
=
AccountTopupOrder
.
__tablename__
+
str
(
int
(
time
.
time
()
*
100000
))
args
[
'amount'
]
=
args
[
'amount'
]
*
100
order_info
=
AccountTopupOrder
(
**
args
)
tamp_pay_session
.
add
(
order_info
)
tamp_pay_session
.
commit
()
tamp_pay_session
.
close
()
return
True
def
get_order
(
self
):
class
CurriculumOrderService
:
""""""
def
__init__
(
self
):
pass
def
get_order
(
self
,
args
):
"""."""
curriculum_column
=
tamp_user_session
.
query
(
CurriculumColumn
)
.
all
()
curriculum_res
=
tamp_user_session
.
query
(
CurriculumRes
)
.
all
()
res
=
tamp_pay_session
.
query
(
CurriculumOrder
)
.
filter
(
CurriculumOrder
.
user_id
==
args
[
'user_id'
])
.
all
()
curriculum_column
=
{
r
.
id
:
r
.
to_dict
()
for
r
in
curriculum_column
}
curriculum_res
=
{
r
.
id
:
r
.
to_dict
()
for
r
in
curriculum_res
}
orders
=
[
r
.
to_dict
()
for
r
in
res
]
for
order
in
orders
:
if
order
[
'prod_type'
]
==
'1'
:
order
[
'prod_info'
]
=
curriculum_column
.
get
(
order
[
'prod_id'
],
None
)
elif
order
[
'prod_type'
]
in
[
'3'
,
'4'
,
'5'
]:
order
[
'prod_info'
]
=
curriculum_res
.
get
(
order
[
'prod_id'
],
None
)
return
orders
def
create_order
(
self
,
args
):
args
[
'order_no'
]
=
time
.
strftime
(
'
%
Y
%
m
%
d'
,
time
.
localtime
(
time
.
time
()))
+
str
(
int
(
time
.
time
()
*
100000
))
amount
=
tamp_user_session
.
query
(
CurriculumPrice
.
price
)
.
filter
(
CurriculumPrice
.
rel_id
==
args
[
'prod_id'
])
.
first
()[
0
]
args
[
'id'
]
=
CurriculumOrder
.
__tablename__
+
str
(
int
(
time
.
time
()
*
100000
))
args
[
'amount'
]
=
amount
*
args
[
'prod_quantity'
]
order_info
=
CurriculumOrder
(
**
args
)
tamp_pay_session
.
add
(
order_info
)
tamp_pay_session
.
commit
()
return
True
app/utils/alipay/alipayWap.py
View file @
81692534
...
...
@@ -10,6 +10,7 @@
from
alipay
import
AliPay
import
ssl
import
time
from
urllib.parse
import
urlparse
,
parse_qs
,
unquote
# -----------------------------------------------------------------------------
# Constants
...
...
@@ -75,19 +76,22 @@ def init_alipay(notify_path='/webservice/notify'):
return
alipay
def
prePay
(
subject
,
out_trade_no
,
total_amount
,
notify_path
=
'/webservice/notify'
,
return_path
=
'/home/order'
):
def
prePay
(
subject
,
out_trade_no
,
total_amount
,
notify_path
=
'/webservice/notify'
):
"""创建预付订单."""
result
=
init_alipay
(
notify_path
)
.
api_alipay_trade_app_pay
(
subject
=
subject
,
out_trade_no
=
out_trade_no
,
total_amount
=
total_amount
,
return_url
=
URL_PREFIX
+
return_path
#
return_url=URL_PREFIX + return_path
)
if
not
result
:
return
False
pay_url
=
'https://openapi.alipay.com/gateway.do?'
+
result
print
(
pay_url
)
return
pay_url
result
=
unquote
(
result
)
# res = dict(parse_qs(result))
# res = {k: v[0] for k, v in res.items()}
print
(
result
)
# pay_url = 'https://openapi.alipay.com/gateway.do?' + result
return
result
def
alipay_transfer
():
"""转账"""
...
...
@@ -103,8 +107,8 @@ def alipay_transfer():
return
result
if
__name__
==
'__main__'
:
out_trade_no
=
'20
1812102324324134138
'
out_trade_no
=
'20
2011252324324134124
'
subject
=
'APP支付测试'
total_amount
=
0.01
remote_addr
=
'101.95.188.178'
prePay
(
subject
,
out_trade_no
,
total_amount
,
notify_path
=
'/webservice/notify'
,
return_path
=
'/home/order'
)
\ No newline at end of file
prePay
(
subject
,
out_trade_no
,
total_amount
,
notify_path
=
'/tamp_order/micro_shop/topUpOrderNotify'
)
app/utils/wxpay/wx_app_pay.py
View file @
81692534
...
...
@@ -126,6 +126,6 @@ if __name__ == '__main__':
total_fee
=
0.01
remote_addr
=
'101.95.188.178'
wx
=
WXPay
(
out_trade_no
,
body
,
total_fee
,
remote_addr
)
params
=
{
'
prepay_id'
:
wx
.
prepay_id
,
'sign'
:
wx
.
paySign
}
params
=
{
'
app_id'
:
wx
.
appid
,
'noncestr'
:
wx
.
nonce_str
,
'mch_id'
:
wx
.
mch_id
,
'prepay_id'
:
wx
.
prepay_id
,
'sign'
:
wx
.
paySign
,
'timestamp'
:
wx
.
timeStamp
}
print
(
params
)
logs/tamp_course_order.log
View file @
81692534
This source diff could not be displayed because it is too large. You can
view the blob
instead.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment