以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教一个接口代码问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104682)

--  作者:huangxueyao
--  发布时间:2017/8/3 9:25:00
--  请教一个接口代码问题
为什么提交不了?
[此贴子已经被作者于2017/8/3 9:27:33编辑过]

--  作者:huangxueyao
--  发布时间:2017/8/3 9:28:00
--  

有赞的API接口:

请求地址:https://open.youzan.com/api/oauthentry/youzan.multistore.goods.sku/3.0.0/update

参数:

名称   (类型)
price   (Price)
offline_id   (Number)
num_iid   (Number)

请求示例(C++)

以下内容为程序代码:

1 Auth auth = new Token("xxx"); // Auth auth = new Sign("app_id", "app_secret");
2
3 YZClient yzClient = new DefaultYZClient(auth);
4 Dictionary<string, object> dict = new System.Collections.Generic.Dictionary<string, object>();
5 dict.Add("num_iid", 1335438058);
6 dict.Add("offline_id", 1098006);
7 dict.Add("price", 99);
8
9 var result = yzClient.Invoke("youzan.multistore.goods.sku.update", "3.0.0", "GET", dict, null);
10 Console.WriteLine(result);



请求示例(php)

以下内容为程序代码:

1 <?php
2 require_once __DIR__ . \'/lib/YZTokenClient.php\';
3
4 $token = \'fill your token\';//请填入商家授权后获取的access_token
5 $client = new YZTokenClient($token);
6
7 $method = \'youzan.multistore.goods.sku.update\'; //要调用的api名称
8 $api_version = \'3.0.0\'; //要调用的api版本号
9
10 $my_params = [
11 \'num_iid\' => \'1335438058\',
12 \'offline_id\' => \'1098006\',
13 \'price\' => \'99\',
14 ];
15
16 $my_files = [
17 ];
18
19 echo \'<pre>\';
20 var_dump(
21 $client->post($method, $api_version, $my_params, $my_files)
22 );
23 echo \'</pre>\';


他们的调试工具网址:https://www.youzanyun.com/docs/debugger



不懂怎么写代码。
我想参照http://www.foxtable.com/mobilehelp/scr/0246.htm来写,但是一直没搞对,帮助文档里面只有一个APPCODE,但是有赞的话有AppID和AppSecret,希望狐爸能给写个代码举一反三。谢谢谢谢~


--  作者:有点甜
--  发布时间:2017/8/3 9:47:00
--  
Dim hc As New HttpClient("https://open.youzan.com/api/oauthentry/youzan.multistore.goods.sku/3.0.0/update")
hc.FormData.Add("num_iid", 1335438058)
hc.FormData.Add("offline_id", 1098006)
hc.FormData.Add("price", 99)
Dim data As string = hc.GetData()
msgbox(data)

--  作者:huangxueyao
--  发布时间:2017/8/3 9:59:00
--  
返回显示taken无效。
应该是没有加上AppID和AppSecret

这里有测试用的
AppID:8a0dbb466d27b3a182
AppSecret:4bf5a31f12709383bf47fc976c84b005

--  作者:有点甜
--  发布时间:2017/8/3 10:50:00
--  

 没办法,人家只提供java的sdk,看不到源码,不清楚人家的sign是如何加密的。只能如下变通处理,利用debug工具

 

Dim url As String = "https://www.youzanyun.com/docs/debugger/interface/sign/shop/youzan.shop.get/3.0.0?"
\'url &= "num_iid=123456789"
url &= "&app_id=8a0dbb466d27b3a182"
url &= "&app_secret=4bf5a31f12709383bf47fc976c84b005"
url &= "&timestamp=" & Date.now
url &= "&v=1.0"
url &= "&sign_method=md5"
url &= "&format=json"
url &= "&method=youzan.shop.get"
Dim hc As New HttpClient(url)
Dim data As String = hc.GetData()
msgbox(data)
Dim jo As JObject = JObject.Parse(data)
msgbox(jo("data")("sign"))
hc = New HttpClient(jo("data")("url"))
Dim json As String = hc.GetData()
jo = JObject.Parse(json)
msgbox(jo("response")("name"))


--  作者:有点甜
--  发布时间:2017/8/3 10:58:00
--  

或者是,直接固定sign的值

 

Dim url As String = "https://open.youzan.com/api/entry/youzan.shop/3.0.0/get?"
\'url &= "num_iid=123456789"
url &= "&app_id=8a0dbb466d27b3a182"
url &= "&app_secret=4bf5a31f12709383bf47fc976c84b005"
url &= "&timestamp=2017-08-03 10:52:24"
url &= "&sign=7936c9f6f224fc9c4f57d4668f4b6979"

url &= "&v=1.0"
url &= "&sign_method=md5"
url &= "&format=json"
url &= "&method=youzan.shop.get"
Dim hc As New HttpClient(url)
Dim data As String = hc.GetData()
msgbox(data)
Dim jo As JObject = JObject.Parse(data)
msgbox(jo("response")("name"))

 


--  作者:huangxueyao
--  发布时间:2017/8/3 11:00:00
--  
谢谢谢谢,研究解决了
--  作者:有点甜
--  发布时间:2017/8/3 11:10:00
--  
以下是引用huangxueyao在2017/8/3 11:00:00的发言:
谢谢谢谢,研究解决了

 

如何解决的?什么方法?


--  作者:huangxueyao
--  发布时间:2017/8/3 13:01:00
--  
https://www.youzanyun.com/docs/guide/common/953

看这里,通过提交AppID和AppSecret获取一个7天有效期的access_token,再用这个access_token加上其它请求参数提交就可以了。

我也是看他们的帮助文档和您的代码来做的。

现在测试已经成功了。