使用Acumatica Rest API创建或检索客户付款方式的问题

时间:2017-09-15 18:29:50

标签: acumatica

更新:---提供的代码修复了图表上的一个问题,该问题阻止了API允许我创建。

public class CustomerPaymentMethodMaint_Extension:PXGraphExtension<CustomerPaymentMethodMaint>
{

    #region Event Handlers

    protected virtual void CustomerPaymentMethodDetail_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected del)
    {
        if (del != null)
        {
            del(cache, e);
        }
        if (Base.IsContractBasedAPI)
        {
            CustomerPaymentMethodDetail row = (CustomerPaymentMethodDetail)e.Row;
            PXDefaultAttribute.SetPersistingCheck<CustomerPaymentMethodDetail.value>(cache, row, PXPersistingCheck.Nothing);
        }
    }

    #endregion

}

对于我的生活,我无法弄清楚Acumatica希望我发送给它以使用Rest API检索或创建客户付款方式。如果你能指出我正确的方向,我将不胜感激。我们给出的示例非常基础,似乎不包括任何这样的场景。

我认为可以使用标准的“按关键字段检索记录”来检索它,如帮助部分所述。

我尝试过使用以下所有url结构,它或者给我一个“操作不是由于对象的当前状态而导致的valud”错误,或者“多个实体满足条件”。

/entity/Default/6.00.001/CustomerPaymentMethod/{BAccountID}/{PMInstanceID}
/entity/Default/6.00.001/CustomerPaymentMethod/{AcctCD}/{PMInstanceID}
/entity/Default/6.00.001/CustomerPaymentMethod/{BAccountID}
/entity/Default/6.00.001/CustomerPaymentMethod/{PMInstanceID}
/entity/Default/6.00.001/CustomerPaymentMethod/{AcctCD}

在尝试创建付款方式时,我尝试使用以下json Body对CustomerPaymentMethod端点使用“PUT”(我也尝试使用这些字段的soap友好名称而不是UI“CCDNUM”中的标签, “CVV”, “EXPDATE”, “NAMEONCC”)。我收到的错误是“价值”不能为空。

{
    "CustomerID" : { value: "0000467" },
    "PaymentMethod" : { value: "CC" },
    "CustomerPaymentMethodDetail" : [
        {
            "Description" : { value : "Card Number" },
            "Value" : { value : "4111111111111111" },
        },
        {
            "Description" : { value : "Expiration Date" },
            "Value" : { value : "102020" },
        },
        {
            "Description" : { value : "Name on the Card" },
            "Value" : { value : "Test API" },
        }
    ]
}

2 个答案:

答案 0 :(得分:0)

以下是我使用APS(美国支付解决方案)作为处理中心的项目。

使用GET为特定客户检索一组客户付款方式:

/entity/Default/6.00.001/CustomerPaymentMethod/?$filter=CustomerID+eq+'000000'

使用GET按ID返回单个客户付款方式:(您可以从上述调用返回的记录中找到ID。)

/entity/Default/6.00.001/CustomerPaymentMethod/guid-from-record?$expand=Details

我认为使用Acumatica API的全新卡片无法创建客户付款方式。我认为您首先必须使用您的处理中心的API创建付款记录。 (在我的情况下,APS,但我认为Authorize.net以类似的方式工作。)然后,一旦处理器上存在付款记录,您就可以使用PUT在Acumatica中添加客户付款记录以填充付款配置文件ID,是对令牌卡的引用。从那里,您可以使用上面的GET调用返回您需要的内容,以便授权/捕获销售订单。

我现在正在研究这个问题,一旦我了解了更多信息,我就会更新我的评论。

答案 1 :(得分:0)

对我来说以下有效

/entity/Default/{version}/CustomerPaymentMethod/{customerID}/{customerPaymentMethodId}

现在要获取 customerPaymentMethodId,这可以在扩展 PaymentInstructions 时通过客户端点完成。

但是很遗憾,PaymentInstructions 只返回客户的默认付款方式。