上一篇博客说过,在配置getOrderId请求时,能够用动态变量(order_id)解析和捕获服务端返回的json对象。这个变量能够作为接下来的订单确认请求(Confirm)的输入參数。看一下Confirm请求的配置:
<request subst="true"> <http url="/v5/Pay/payConfirm/?signature=%%anysdk:ck_sign%%&cpOrderId=%%_order_id%%" method="GET" version="1.1" /> </request>注意,“_order_id"不是笔误,前面的下划线是必须的。通过%%_order_id%%,我们能够在url中直接使用动态变量。
另外。我们还须要把order_id传入anysdk:ck_sign中。这要怎样实现呢? 你不能在配置文件里指定函数的參数,tsung会将全部的动态变量作为參数传入,你能够通过ts_dynavars:lookup()取出你所须要的变量,上erlang代码:
ck_sign({Pid, DynData}) ->
{_,Val} = ts_dynvars:lookup(order_id, DynData), StrVal = binary_to_list(Val), Id = [{"cpOrderId",StrVal}], ...
须要注意的地方有两点,
1. tsung的帮助文档中是用{ok,Val} = ts_dynavars:lookup(...)。这样写会导致匹配失败,网上非常多帖子都在问这个问题,要把ok换成_。
2. Val是二进制数据,须要用binary_to_list转成string再使用。