所以我目前正在使用 Go 并且我正在尝试为 Paypal 创建付款我一直在尝试此代码 payer := &Payer{"paypal"} amount := &Amount{"EUR", "12"} trans := &Transactions{amount, "A super test"} uris := &Redirect_urls{"http://localhost", "http://localhost"} p := &Payment{"sale", payer, trans, uris} response, err := json.Marshal(p) if err != nil { log.Println("Error at PaypalPayment - buy controller") log.Fatal(err) } log.Println(string(response)) client := &http.Client{} buf := bytes.NewBuffer(response) req, err := http.NewRequest("POST", "https://api.sandbox.paypal.com/v1/payments/payment", buf) if err != nil { log.Println("Error at PaypalPayment - buy controller - 2") log.Fatal(err) } req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", "Bearer " + token.Access_token) resp, err := client.Do(req) if err != nil { log.Println("Error at PaypalPayment - buy controller - 3") log.Fatal(err) } body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Println("Error at PaypalPayment - buy controller - 4") log.Fatal(err) } log.Println(string(body))我已经获得了访问令牌,问题是我在响应正文中收到此错误(最后一行)MALFORMED_REQUEST我使用的请求是这个(从 println 开始){ "Intent":"sale", "Payer":{ "Payment_method":"paypal" }, "Transactions":{ "Amount":{ "Currency":"EUR", "Total":"12" }, "Description":"Super test" }, "Redirect_urls":{ "Return_url":"http://localhost", "Cancel_url":"http://localhost" }}在我看来似乎是一个很好的要求......不知道我错过了什么
2 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
您的外壳与文档中的内容不符。如果您的类型上没有 json 标签,则必须添加它们。您必须在 Go 中将属性名称保持为大写,因为它将字段标记为已导出。如果您对此不熟悉,请搜索“未导出的与导出的字段 golang”
例如,您的Payment结构定义需要如下所示;
type Payment struct {
Amount *Amount `json:"amount"`
Transactions *Transactions `json:"transactions"`
RdUrls *Redirect_urls `json:"redirect_urls"`
}
此外,仅供参考,您可以在声明付款的地方使用嵌套那些声明,这样您就不必分配给 , 的本地实例Amount,Transactions并且Redirect_urls为了进行声明。
这就像;
p := &Payment{"sale", payer, &Transactions{amount, "A super test"}, uris}
- 2 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消