转到贝宝 REST API 请求

所以我目前正在使用 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"

   }

}

在我看来似乎是一个很好的要求......不知道我错过了什么

http://img4.mukewang.com/6192530200011a6906390050.jpg

米脂
浏览 141回答 2
2回答

汪汪一只猫

您的外壳与文档中的内容不符。如果您的类型上没有 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}

小唯快跑啊

问题是交易需要是一个数组。我有多瞎Transactions []*Transactions `json:"transactions"`
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go