Пример #1
0
def getDemoHtml():
    req = {}

    req["version"] = SDKConfig().version
    req["encoding"] = SDKConfig().encoding
    req["signMethod"] = SDKConfig().signMethod

    req["frontUrl"] = SDKConfig().frontUrl
    req["backUrl"] = SDKConfig().backUrl

    req["txnType"] = "01"
    req["txnSubType"] = "01"
    req["bizType"] = "000201"
    req["channelType"] = "07"
    req["currencyCode"] = "156"
    req["txnAmt"] = "1000"

    req["merId"] = "777290058110048"
    req["orderId"] = datetime.now().strftime('%Y%m%d%H%M%S')
    req["txnTime"] = datetime.now().strftime('%Y%m%d%H%M%S')
    req["accessType"] = "0"

    # 签名示例
    req = AcpService.sign(req)
    url = SDKConfig().frontTransUrl

    # 前台自提交表单示例
    resp = AcpService.createAutoFormHtml(req, url)

    return resp
Пример #2
0
def get_payment_form(order_id):
    time_now = datetime.now().strftime('%Y%m%d%H%M%S')
    time_out = datetime.now() + timedelta(minutes=15)
    time_out = time_out.strftime('%Y%m%d%H%M%S')

    req = {}
    req["version"] = SDKConfig().version
    req["encoding"] = SDKConfig().encoding
    req["txnType"] = "01"
    req["txnSubType"] = "01"
    req["bizType"] = "000202"
    req["frontUrl"] = SDKConfig().frontUrl
    req["backUrl"] = SDKConfig().backUrl
    req["signMethod"] = SDKConfig().signMethod
    req["channelType"] = "07"
    req["accessType"] = "0"
    req["currencyCode"] = "156"

    req["merId"] = get_payment_merchant_id()
    req["orderId"] = order_id
    req["txnAmt"] = str(get_payment_amount(order_id))
    req["txnTime"] = time_now
    req['payTimeout'] = time_out

    # 签名示例
    req_params = AcpService.sign(req)
    req_url = SDKConfig().frontTransUrl

    return req_params, req_url
Пример #3
0
def get_query_form(order_id):
    payment = get_payment_info(order_id)
    if not payment:
        return None, None

    txnTime = payment.payment_time or datetime.fromtimestamp(payment.created_time).strftime('%Y%m%d%H%M%S')

    req = {}
    req["version"] = SDKConfig().version
    req["encoding"] = SDKConfig().encoding
    req["signMethod"] = SDKConfig().signMethod
    req["txnType"] = "00"
    req["txnSubType"] = "00"
    req["bizType"] = "000000"
    req["accessType"] = "0"
    req["channelType"] = "07"

    req["merId"] = get_payment_merchant_id()
    req["orderId"] = order_id
    req["txnTime"] = txnTime

    # 签名示例
    req_params = AcpService.sign(req)
    req_url = SDKConfig().singleQueryUrl

    return req_params, req_url
Пример #4
0
def get_refund_form(unionpay, refund_id, refund_amount):
    time_now = datetime.now().strftime('%Y%m%d%H%M%S')

    req = {}
    req["version"] = SDKConfig().version
    req["encoding"] = SDKConfig().encoding
    req["signMethod"] = SDKConfig().signMethod
    req["txnType"] = "04"
    req["txnSubType"] = "00"
    req["bizType"] = "000201"
    req["accessType"] = "0"
    req["channelType"] = "07"
    req["backUrl"] = SDKConfig().backUrl

    req["merId"] = get_payment_merchant_id()
    req["orderId"] = refund_id
    req['origQryId'] = unionpay.unionpay_id
    req["txnTime"] = time_now
    req["txnAmt"] = str(refund_amount)

    # 签名示例
    req_params = AcpService.sign(req)
    req_url = SDKConfig().backTransUrl

    return req_params, req_url
Пример #5
0
def trade():
    req = {}

    req["version"] = SDKConfig().version
    req["encoding"] = SDKConfig().encoding
    req["signMethod"] = "01"

    req["txnType"] = "78"
    req["txnSubType"] = "00"
    req["bizType"] = "000301"
    req["channelType"] = "07"

    req["merId"] = "777290058110097"
    req["orderId"] = datetime.now().strftime('%Y%m%d%H%M%S')
    req["txnTime"] = datetime.now().strftime('%Y%m%d%H%M%S')
    req["accessType"] = "0"
    req["accNo"] = AcpService.encryptData("6226090000000048")
    req["encryptCertId"] = AcpService.getEncryptCertId()

    # 签名示例
    req = AcpService.sign(req)
    url = SDKConfig().backTransUrl

    # post示例
    resp = AcpService.post(req, url)

    result = "请求报文:" + map2str(req) + "<br>\n"
    result = result + "应答报文:" + map2str(resp) + "<br>\n"

    # 验签示例
    result = result + "验签成功<br>\n" if AcpService.validate(
        resp) else "验签失败<br>\n"

    if "respCode" in resp:
        # 取应答报文里的参数的示例
        result = result + "respCode=" + resp["respCode"] + "<br>\n"
        result = result + "respMsg=" + resp["respMsg"] + "<br>\n"

        # 解密示例
        if "customerInfo" in resp:
            customerInfo = AcpService.parseCustomerInfo(
                resp["customerInfo"],
                SDKConfig().signCertPath,
                SDKConfig().signCertPwd)
            if "phoneNo" in customerInfo:
                result = result + "phoneNo=" + customerInfo[
                    "phoneNo"] + "<br>\n"

    return result
def demoTrade():
    req = {}

    req["version"] = SDKConfig().version
    req["encoding"] = SDKConfig().encoding
    req["signMethod"] = SDKConfig().signMethod

    req["txnType"] = "95"
    req["txnSubType"] = "00"
    req["bizType"] = "000000"
    req["channelType"] = "07"
    req["accessType"] = "0"
    req["certType"] = "01"

    req["merId"] = "777290058110097"
    req["orderId"] = datetime.now().strftime('%Y%m%d%H%M%S')
    req["txnTime"] = datetime.now().strftime('%Y%m%d%H%M%S')

    # 签名示例
    req = AcpService.sign(req)
    url = SDKConfig().backTransUrl

    # post示例
    resp = AcpService.post(req, url)

    result = "请求报文:" + map2str(req) + "<br>\n"
    result = result + "应答报文:" + map2str(resp) + "<br>\n"

    # 验签示例
    result = result + "验签成功<br>\n" if AcpService.validate(
        resp) else "验签失败<br>\n"

    if "respCode" in resp:
        # 取应答报文里的参数的示例
        result = result + "respCode=" + resp["respCode"] + "<br>\n"
        result = result + "respMsg=" + resp["respMsg"] + "<br>\n"

        if resp["respCode"] == "00":
            resultCode = AcpService.updateEncryptCert(resp)
            if resultCode == 1:
                result += "加密公钥更新成功" + "<br>\n"
            elif resultCode == 0:
                result += "加密公钥无更新" + "<br>\n"
            else:
                result += "加密公钥更新失败" + "<br>\n"
    return result
Пример #7
0
def trade():
    req = {}

    req["version"] = SDKConfig().version
    req["encoding"] = SDKConfig().encoding
    req["signMethod"] = SDKConfig().signMethod

    req["txnType"] = "21"
    req["txnSubType"] = "03"
    req["bizType"] = "000401"
    req["accessType"] = "0"
    req["channelType"] = "07"

    req["merId"] = "777290058110097"
    req["txnTime"] = datetime.now().strftime('%Y%m%d%H%M%S')
    req["batchNo"] = "0001"
    req["totalQty"] = "10"
    req["totalAmt"] = "1000"
    req["fileContent"] = AcpService.enCodeFileContent("./files/bat.txt")

    # 签名示例
    req = AcpService.sign(req)
    url = SDKConfig().batchTransUrl

    # post示例
    resp = AcpService.post(req, url)

    result = "请求报文:" + map2str(req) + "<br>\n"
    result = result + "应答报文:" + map2str(resp) + "<br>\n"

    # 验签示例
    result += ("验签成功<br>\n" if AcpService.validate(resp) else "验签失败<br>\n")

    if "respCode" in resp:
        # 取应答报文里的参数的示例
        result = result + "respCode=" + resp["respCode"] + "<br>\n"
        result = result + "respMsg=" + resp["respMsg"] + "<br>\n"
        if resp["respCode"] == "00":
            result += "成功<br>\n"
        else:
            result += "失败<br>\n"

    return result
Пример #8
0
def trade():
    time_now = datetime.now().strftime('%Y%m%d%H%M%S')
    req = {}

    req["version"] = SDKConfig().version
    req["encoding"] = SDKConfig().encoding
    req["signMethod"] = SDKConfig().signMethod
    req["txnType"] = "04"
    req["txnSubType"] = "00"
    req["bizType"] = "000201"
    req["accessType"] = "0"
    req["channelType"] = "07"
    req["backUrl"] = SDKConfig().backUrl

    req["orderId"] = time_now
    req["merId"] = "777290058110048"
    req["origQryId"] = "871803200930040336758"
    req["txnTime"] = time_now
    req["txnAmt"] = "100"

    # 签名示例
    req = AcpService.sign(req)
    url = SDKConfig().backTransUrl

    # 后台自提交表单示例
    resp = AcpService.post(req, url)
    if not AcpService.validate(resp):
        logging.error("回复报文验证失败")
        return jsonify({'status': 'error', 'error': 'not validate'})

    respCode = resp['respCode']

    if respCode == "00":
        logging.info("退款受理成功!")
        return jsonify({'status': 'ok', 'data': resp})

    if respCode == "03" or respCode == "04" or respCode == "05":
        logging.warning("退款受理超时")
        return jsonify({'status': 'error', 'error': '退款受理超时'})
    else:
        logging.error("退款受理失败")
        return jsonify({'status': 'error', 'error': '退款受理失败', 'detail': resp})
Пример #9
0
def trade():
    req = {}

    req["version"] = SDKConfig().version
    req["encoding"] = SDKConfig().encoding
    req["signMethod"] = SDKConfig().signMethod

    req["txnType"] = "76"
    req["txnSubType"] = "01"
    req["bizType"] = "000000"
    req["accessType"] = "0"
    req["fileType"] = "00"

    req["merId"] = "700000000000001"
    req["txnTime"] = datetime.now().strftime('%Y%m%d%H%M%S')
    req["settleDate"] = "0119"

    # 签名示例
    req = AcpService.sign(req)
    url = SDKConfig().fileTransUrl

    # post示例
    resp = AcpService.post(req, url)

    result = "请求报文:" + map2str(req) + "<br>\n"
    result = result + "应答报文:" + map2str(resp) + "<br>\n"

    # 验签示例
    result = result + ("验签成功<br>\n"
                       if AcpService.validate(resp) else "验签失败<br>\n")

    if "respCode" in resp:
        # 取应答报文里的参数的示例
        result = result + "respCode=" + resp["respCode"] + "<br>\n"
        result = result + "respMsg=" + resp["respMsg"] + "<br>\n"
        if resp["respCode"] == "00":
            dir = "./files/"  # 先建立好文件夹哦
            result += "文件保存到:" + dir + ("成功<br>\n"
                                        if AcpService.deCodeFileContent(
                                            resp, dir) else "失败<br>\n")
            result += analyzeFile(dir, resp["fileName"])
    return result
Пример #10
0
def getDemoHtml():
    accNo = "6226090000000048"
    customerInfo = {}
    customerInfo['phoneNo'] = '18100000000'
    customerInfo['certifTp'] = '01'
    customerInfo['certifId'] = '510265790128303'
    customerInfo['customerNm'] = '张三'
    customerInfo['cvn2'] = '248'
    customerInfo['expired'] = '1912'

    req = {}

    req["version"] = SDKConfig().version
    req["encoding"] = SDKConfig().encoding
    req["signMethod"] = SDKConfig().signMethod

    req["frontUrl"] = SDKConfig().frontUrl
    req["backUrl"] = SDKConfig().backUrl

    req["txnType"] = "79"
    req["txnSubType"] = "00"
    req["bizType"] = "000301"
    req["channelType"] = "07"

    req["merId"] = "777290058110097"
    req["orderId"] = datetime.now().strftime('%Y%m%d%H%M%S')
    req["txnTime"] = datetime.now().strftime('%Y%m%d%H%M%S')
    req["accessType"] = "0"

    # accNo、customerInfo组装示例
    req["accNo"] = AcpService.encryptData(accNo)
    req["customerInfo"] = AcpService.getCustomerInfoWithEncrypt(customerInfo)
    req["encryptCertId"] = AcpService.getEncryptCertId()

    # 签名示例
    req = AcpService.sign(req)
    url = SDKConfig().frontTransUrl

    # 前台自提交表单示例
    resp = AcpService.createAutoFormHtml(req, url)

    return resp
Пример #11
0
def trade():
    req = {}

    req["version"] = SDKConfig().version
    req["encoding"] = SDKConfig().encoding
    req["signMethod"] = SDKConfig().signMethod

    req["txnType"] = "22"
    req["txnSubType"] = "03"
    req["bizType"] = "000401"
    req["accessType"] = "0"
    req["channelType"] = "07"

    req["merId"] = "777290058110097"
    req["txnTime"] = datetime.now().strftime('%Y%m%d%H%M%S')
    req["batchNo"] = "0001"

    # 签名示例
    req = AcpService.sign(req)
    url = SDKConfig().batchTransUrl

    # post示例
    resp = AcpService.post(req, url)

    result = "请求报文:" + map2str(req) + "<br>\n"
    result += "应答报文:" + map2str(resp) + "<br>\n"

    # 验签示例
    result += ("验签成功<br>\n" if AcpService.validate(resp) else "验签失败<br>\n")

    if "respCode" in resp:
        # 取应答报文里的参数的示例
        result += "respCode=" + resp["respCode"] + "<br>\n"
        result += "respMsg=" + resp["respMsg"] + "<br>\n"
        if resp["respCode"] == "00":
            path = "./files/"  # 先建立好文件夹哦
            result += "文件保存到:" \
                      + path + ("成功<br>\n" if AcpService.deCodeFileContent(resp, path) else "失败<br>\n")

    return result