不知道是什麽情况,我网页上的显示付款金额跟实际请求金额不一样,我送出去的订单,请求付款金额是40400,网页上却显示404,然後我付款成功後把资讯送去讯息查询服务OrderPayQuery复查,结果金额是正确的40400,这可有趣了,不知道有没有人发现
这个部份因为需要公网IP让永丰系统打回来,所以拖到现在才写;在向丰收款(FunBIZ)建立订单成功後,还记得前面的BackendURL跟ReturnURL吗,永丰系统会通过POST方式传递付款订单是否正确成立的资讯,可以透过这串PayToken复查当初送出去的交易订单请求
流程概括如下:
简单来说就是看到付款状态显示:PayOut就可以变更订单状态为待出货了,小抱怨一下PayOut的中文解释是付款结果,我一直在想付款结果的结果在哪里,看了半天,确定其实就是付款成功的意思.....
把很久没用的GenApi.py挖出来
一样,所有资料的传送过程,一样要经过计算AES-CBC、取得Nonce等的流程,详细可以往回翻,准备好解密的所有流程
def loadcfg():
Hash = SimpleNamespace(A1 = os.environ['A1'], A2 = os.environ['A2'], B1 = os.environ['B1'], B2 = os.environ['B2'])
cfg = SimpleNamespace(Version = os.environ ['Version'], ShopNo = os.environ['ShopNo'], HashID = HashID(Hash), \
Api_URL = os.environ['Api_URL'], Nonce_URL = os.environ['Nonce_URL'], BackendURL = os.environ['BackendURL'], \
ReturnURL = os.environ['ReturnURL'])
def OrderPayQuery(ShopNo=os.environ['ShopNo'], PayToken=None):
if(not ShopNo or not PayToken):return None
nonce = GetNonce(cfg)
msg = json.dumps({"ShopNo":ShopNo, "PayToken":PayToken}, indent=4)
sign = GetRespSign(msg=msg, nonce=nonce, HashID=cfg.HashID)
iv = GenIV(nonce)
emsg = AES_CBC_Encrpt(cfg.HashID, iv, msg)
payload = GenRequest(cfg, "OrderPayQuery", sign, nonce, emsg)
resp = APIPm.sendreq(url=cfg.Api_URL, data=payload)
funbiz_msg = Response_Decrypt(resp, cfg.HashID)
return funbiz_msg
接收PayToken,修改Server.py,新增backendURL与order-summary两个route,这两个实作的功能是一样的,前者给永丰云呼叫,後者是信用卡付款完成後的页面跳转
@app.route('/funBIZ_backend', methods=['POST'])
def funBIZ_route():
# app.logger.debug(f"headers:{dict(request.headers)}")
content = request.json
# app.logger.debug(f"content:{content}")
if(content['ShopNo'] == os.environ['ShopNo']):
resp = FunBizApi.OrderPayQuery(PayToken=content['PayToken'])
app.logger.debug(f"OrderPayQuery:{resp}")
return jsonify({'Status':'S'})
else:
return jsonify({'Status':'F'})
@app.route('/order-summary', methods=['POST'])
def order_summary_route():
# app.logger.debug(f"headers:{dict(request.headers)}")
content = request.form
# app.logger.debug(f"content:{content}")
if(content.get('ShopNo') == os.environ['ShopNo']):
resp = FunBizApi.OrderPayQuery(PayToken=content.get('PayToken'))
app.logger.debug(f"OrderPayQuery:{resp}")
return jsonify({'order-summary':'S'})
永丰系统通过POST与JSON格式传送PayToken,以下为传递过来的范例资料:
{
"ShopNo":"BA0026_001",
"PayToken":"da1547c3d0d1649af5049125b0880c0e227f31e107cbf4f0995bed28d0f066c1"
}
通过讯息查询服务OrderPayQuery进行付款状态复查,可以解密得到:
{
"ShopNo":"NA0249_001",
"PayToken":"301707c1aa38db8c724b844a18fb14fe92457dc25874d0882cf44def3c3a8f2d",
"Date":"202110040028",
"Status":"S",
"Description":"S0000 – 处理成功",
"TSResultContent": {
"APType":"PayOut",
"TSNo":"NA024900000538",
"OrderNo":"2021100400003",
"ShopNo":"NA0249_001",
"PayType":"C",
"Amount":"40400",
"Status":"S",
"Description":"",
"Param1":"",
"Param2":"",
"Param3":"",
"LeftCCNo":"",
"RightCCNo":"",
"CCExpDate":"",
"CCToken":"",
"PayDate":"202110040028"
}
}
今天完成接收付款并复查付款资讯功能,明天准备整合进资料库纪录
没想到30天这麽快就过去了,感觉离刚发还没有过多久,这30天我们学会LineBot的基本回复讯息,制...
哈罗大家好~ 昨天介绍了 Microsoft Power Virtual Agents 智慧虚拟助理...
Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...
立案流程 第五步: 完成以上步骤後就会有以下8份文件公司名称预查核定书、公司章程、董事愿任核定书、股...
前言 想了想还是决定把 useEffect 走完XD 不然有讲 useState 没讲 useEff...