首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取source_id的字符串预期错误,即使source_id是字符串(使用与云函数的平方连接)

获取source_id的字符串预期错误,即使source_id是字符串(使用与云函数的平方连接)
EN

Stack Overflow用户
提问于 2020-09-11 07:37:34
回答 1查看 127关注 0票数 0

我做了一个云功能,以创建和完成一个支付请求,平方连接API。

这是一项功能:

代码语言:javascript
复制
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);

var SquareConnect = require("square-connect");
var defaultClient = SquareConnect.ApiClient.instance;

exports.sqProcessPayments = functions
  .region("europe-west1")
  .firestore.document("users/{userId}")
  .onUpdate(async (change, context) => {
    var accessToken = "access--token";
    let previousData = change.before.data();
    let updatedData = change.after.data();
    let previousNonce = previousData["payment_nonce"];
    let updatedNonce = updatedData["payment_nonce"];
    if (previousNonce !== updatedNonce) {
      var oauth2 = defaultClient.authentications["oauth2"];
      oauth2.accessToken = accessToken;
      var idempotencyKey = new Date();
      var apiInstance = new SquareConnect.PaymentsApi();
      var body = new SquareConnect.CreatePaymentRequest({
        source_id: updatedNonce.toString(),
        idempotency_key: idempotencyKey.toString(),
        amount_money: {
        amount: 10,
        currency: "USD",
        },
        location_id: "location-id",
        autocomplete: true,
      });
      apiInstance
        .createPayment(body)
        .then(
          function (data) {
            console.log(
              "API called successfully. Returned data: " + data.payment.id
            ); 
            return data;
          },
          function (error) {
            console.error(error);
          }
        )
        .catch((error) => console.log(error));
      }
    });

但是我在运行这个函数时遇到了这个错误

{“错误”:{“代码”:"EXPECTED_STRING",“详细信息”:“预期字符串值(第1行,字符14)",”字段“:"source_id",”类别“:"INVALID_REQUEST_ERROR"}}\n‘

我检查了source_id的值,它是一个字符串。但错误说的不是。

请帮我解决这个问题。任何帮助都会很好。

耽误您时间,实在对不起!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-11 15:14:43

我在CreatePaymentRequest代码中找到了这个。这个问题与body对象的创建有关。

我认为正确的语法是:

代码语言:javascript
复制
var body = SquareConnect.CreatePaymentRequest.constructFromObject({
        source_id: updatedNonce.toString(),
        idempotency_key: idempotencyKey.toString(),
        amount_money: {
                amount: 10,
                currency: "USD",
        },
        location_id: "location-id",
        autocomplete: true,
      });

或者你可以使用:

代码语言:javascript
复制
var body = new SquareConnect.CreatePaymentRequest(
    updatedNonce.toString(),
    idempotencyKey.toString(),
    amount_money: {
                    amount: 10,
                    currency: "USD",
            }
 )

但在这种情况下,您只能添加source_ididempotency_keyamount_money。没有比这更..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63842713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档