# encoding: utf-8
from __future__ import absolute_import, unicode_literals
from optionaldict import optionaldict
from .base import AllInPayBaseAPI
[文档]class PreScanPay(AllInPayBaseAPI):
"""
网上收银预消费
"""
[文档] def pay(self, reqsn, trxamt, paytype, body=None, validtime=5,
authcode=None, acct=None, notify_url=None, limit_pay=None,
sub_appid=None, subbranch=None, cusip=None, version='12', remark=None):
"""
网上收银预消费 - 扫码预消费
https://aipboss.allinpay.com/know/devhelp/home.php?id=362
:param reqsn: 商户交易单号
:param trxamt: 交易金额
:param paytype: 交易方式
:param body: 订单标题
:param validtime: 有效时间
:param authcode: 支付授权码
:param acct: 支付平台用户标识
:param notify_url: 交易结果通知地址
:param limit_pay: 支付限制
:param sub_appid: 微信子appid
:param subbranch: 门店号
:param cusip: 终端ip
:param version: 版本号
:param remark: 备注
"""
data = optionaldict({
"cusid": self.cus_id,
"appid": self.app_id,
"reqsn": reqsn,
"trxamt": trxamt,
"paytype": paytype,
"body": body,
"validtime": validtime,
"authcode": authcode,
"acct": acct,
"notify_url": notify_url,
"limit_pay": limit_pay,
"sub_appid": sub_appid,
"subbranch": subbranch,
"cusip": cusip,
"version": version,
"remark": remark
})
self.add_sign(data)
return self._post('/apiweb/prescanpay/pay', data)
[文档] def finish(self, reqsn, trxamt, oldtrxid, asinfo=None, version='12'):
"""
网上收银预消费 - 扫码预消费完成
https://aipboss.allinpay.com/know/devhelp/home.php?id=363
:param reqsn: 商户完成交易单号
:param trxamt: 交易金额
:param oldtrxid: 预消费交易流水
:param asinfo: 分账信息
:param version: 版本号
"""
data = optionaldict({
"cusid": self.cus_id,
"appid": self.app_id,
"reqsn": reqsn,
"trxamt": trxamt,
"oldtrxid": oldtrxid,
"asinfo": asinfo,
"version": version
})
self.add_sign(data)
return self._post('/apiweb/prescanpay/finish', data)
[文档] def cancel(self, reqsn, trxamt, oldtrxid, version='12'):
"""
网上收银预消费 - 扫码预消费交易回退
https://aipboss.allinpay.com/know/devhelp/home.php?id=364
:param reqsn: 商户撤销交易单号
:param trxamt: 交易金额
:param oldtrxid: 预消费交易流水
:param version: 版本号
"""
data = optionaldict({
"cusid": self.cus_id,
"appid": self.app_id,
"reqsn": reqsn,
"trxamt": trxamt,
"oldtrxid": oldtrxid,
"version": version
})
self.add_sign(data)
return self._post('/apiweb/prescanpay/cancel', data)
[文档] def refund(self, reqsn, trxamt, oldtrxid, version='12', remark=None):
"""
网上收银预消费 - 扫码预消费完成交易退款
https://aipboss.allinpay.com/know/devhelp/home.php?id=365
"""
data = optionaldict({
"cusid": self.cus_id,
"appid": self.app_id,
"reqsn": reqsn,
"trxamt": trxamt,
"oldtrxid": oldtrxid,
"version": version,
"remark": remark
})
self.add_sign(data)
return self._post('/apiweb/prescanpay/refund', data)
[文档] def query(self, reqsn=None, trxid=None, version="12"):
"""
网上收银预消费 - 扫码预消费查询
https://aipboss.allinpay.com/know/devhelp/home.php?id=366
:param reqsn: 商户预消费订单号
:param trxid: 平台预消费交易流水
:param version: 版本号
"""
if not reqsn and not trxid:
raise ValueError("reqsn和trxid必填其一")
data = optionaldict({
"cusid": self.cus_id,
"appid": self.app_id,
"reqsn": reqsn,
"trxid": trxid,
"version": version
})
self.add_sign(data)
return self._post('/apiweb/prescanpay/query', data)