Stripe Connect API更新PaymentIntent

时间:2019-07-11 00:03:30

标签: c# stripe-payments

我在我的API中使用了条带连接,我想更新现有的paymentIntent。 API的官方库提供了这些方法。

public PaymentIntent Get(string paymentIntentId, 
    PaymentIntentGetOptions options = null, RequestOptions requestOptions = null)
public PaymentIntent Update(string paymentIntentId, 
    PaymentIntentUpdateOptions options, RequestOptions requestOptions = null);

我唯一想在资源上更新的是目的地,因此我开始这样做,直到意识到没有简单的方法:

var paymentIntentService = new PaymentIntentService();
var paymentIntent = paymentIntentService.Get(transaction.ExternalTransactionId);

if (null != destinationStripeAccount)
{
    paymentIntent.TransferData.DestinationId = destinationStripeAccount.AccountId;
}

//This takes in a PaymentIntentUpdateOptions instead of a paymentIntent WTF
paymentIntentService.Update(paymentIntent.Id, new PaymentIntentUpdateOptions {  });

PaymentIntent不是PaymentIntentUpdate选项,因此我需要将所有值映射到另一个。我不希望不需要安装其他依赖项,例如AutoMapper,而手动映射字段将很麻烦。

有人知道是否有一种仅更新目的地的方法,还是一种简单的更新付款方式的方法?

1 个答案:

答案 0 :(得分:2)

由于根据文档,大多数成员是可选的,因此我相信您只需要提供需要更改/更新的选项对象即可。

var paymentIntentService = new PaymentIntentService();
var paymentIntent = paymentIntentService.Get(transaction.ExternalTransactionId);

if (null != destinationStripeAccount) {
    var options = new PaymentIntentUpdateOptions() {
        TransferData = new PaymentIntentTransferDataOptions {
            Destination = destinationStripeAccount.AccountId
        }
    };
    paymentIntentService.Update(paymentIntent.Id, options);
}

引用PaymentIntentUpdateOptions.TransferData (GitHub)