DELPHI7 调用联盟API

2017-07-18  本文已影响0人  都是一家人

目前为止,软件能收能发能找券,个人用配合大淘客已经没什么问题了。

但是,别人家的软件都有代理功能,我没有,这不存在。

我一定要搞出分佣功能。分佣的核心就是PID,你不可能让你的下级自己去申请PID,这样还要你干什么?

于是问大淘客官方,回答是只能二个PID,也就是说,靠淘客站你不可能搞出分佣系统来,淘客站对我们的唯一利用价值就是优惠券ID,也就是activityid,如果能获取这个ID,我要还什么淘客站?我自己就是个淘客站,但现在暂时不用管,先把PID分出来再说。

PID决定佣金的归属,大淘客只能生成二个PID的连接,而且每天的淘口令个人只能调用300次,至于那个什么助手,说实话我到今天都不知道有什么卵用,可能是给小白用的吧。

要组建一个二合一的优惠券网址,需要三个参数:商品ID,优惠券ID,淘客PID,有了这三个,你就能发布了,但这没有淘口令,而且我还需要短网址,就是sclick.taobao.com/abcdefg 这样的,现在,开始研究妈妈API吧。以前有大淘客帮助转换,现在要靠自己了。

短网址被妈妈称为物料传播,淘口令还是淘口令,当你有一个网站,可以到妈妈后台去申请一个联盟合作网站,通过后,就能申请到淘宝客基础API和淘口令API了。此时,你已经成为阿里开放平台的一个开发者了。

API详情

API一天有100W次调用量,对个人来说,足够了,代理增加,窗口增加,100W也是够的,除非你弄个像大淘客一样的网站,很多人在你上面转来转去才可能不够用。

事实上是我想多了,淘口令是要花钱的,免费是一月10万个.这是后话了.

我搜索了一下API调用代码,没一个是delphi的,官方下载的SDK也没有,而且异常庞杂,没有简便易行的,我决定自己写。

首先就要搞定sign这个算法,看他的介绍就是MD5摘要,实际上就是MD5摘要,然后用他指定的那种很不人道非常复杂的拼接方法进行组装,稍有不慎就会返回签名错误。

官方介绍如下:

对所有API请求参数(包括公共参数和业务参数,但除去sign参数和byte[]类型的参数),根据参数名称的ASCII码表的顺序排序。如:foo=1, bar=2, foo_bar=3, foobar=4排序后的顺序是bar=2, foo=1, foo_bar=3, foobar=4。

将排序好的参数名和参数值拼装在一起,根据上面的示例得到的结果为:bar2foo1foo_bar3foobar4。

拼装好的字符串采用utf-8编码,使用签名算法对编码后的字节流进行摘要。如果使用MD5算法,则需要在拼装的字符串前后加上app的secret后,再进行摘要,如:md5(secret+bar2foo1foo_bar3foobar4+secret);如果使用HMAC_MD5算法,则需要用app的secret初始化摘要算法后,再进行摘要,如:hmac_md5(bar2foo1foo_bar3foobar4)。

将摘要得到的字节流结果使用十六进制表示,如:hex(“helloworld”.getBytes(“utf-8”)) = “68656C6C6F776F726C64”

好在他有一个API测试工具,我在测试工具中提交参数,看他拼接后的参数,看他的返回值,然后,我用DELPHI组装同样的参数,只要和工具中生成的一样,就会成功了。经过数次测试,终于成功,代码放出如下:

这个sign函数异常简单

function Sign(param: string): string;

begin

    Result := GetStrMD5(Appsecret + AnsiToUtf8(param) + Appsecret);

end;

下面是拼接的核心代码

param := TStringList.Create;

param.Sorted := True;                                //自动按ascii排序

param.Add('app_key='+ appkey);

param.Add('method=taobao.wireless.share.tpwd.create');

param.Add('sign_method=md5');

timestamp := FormatDateTime('yyyy-MM-dd hh:mm:ss', Now);

param.Add('timestamp=' + AnsiToUtf8(timestamp));

param.Add('format=json');

param.Add('v=2.0');

param.Add('tpwd_param='+ GenPwdIsvParamDto);

for i := 0 to param.Count - 1 do begin                                        //清除=符号,拼接公共参数

if Pos('tpwd_param',param.Strings[i]) > 0 then

    s := s + param.Strings[i]

else

   s := s + StringReplace(param.Strings[i],'=','',[rfReplaceAll]);       //拼接私有参数json

end;

s := StringReplace(s,'tpwd_param=','tpwd_param',[rfReplaceAll]);

//  mmo1.Lines.Add('参数' + s);

s2 := Sign(s);                                                                               //进行签名

后面的就用idhttp进行一个GET操作就行了,返回值是个json,直接取出来就是淘口令了,正宗官方提供,相当牛B。

物料传播的获取也是一样的,so easy!

这样一来,就可以获取不同PID下的淘口令和短网址了,分群PID目标成功实现。

阿里云的服务器相当牛B,测试一秒能获取接近10个淘口令,转换速度相当之快。

上一篇 下一篇

猜你喜欢

热点阅读