2016-12-04 22 views
0

我正在为位于Webstore之外的NS构建一个前端。我们的付款网关有一个网络应用程序,它可以创建一个参考号和授权码,这些需要附加到销售订单上,以便付款提供商可以在订单发送时处理付款。这是可能的还是我吠叫错了树?NetSuite:改变salesorder在物品履行前添加信用卡authCode和pnRefNum

我很新的NS,道歉,如果答案是明显的!

我得到的错误信息是:

Code: INVALID_RCRD_TRANSFRM Details: That type of record transformation is not allowed. Please see the documentation for a list of supported transformation types. 

,这里是我想在我的Restlet使用代码:

function authorizeCreditCard(dataIn) { 
    nlapiLogExecution('DEBUG', 'Pre Transform', JSON.stringify(dataIn)); 
    var customerpayment, paymentrecord 
    try { 
    customerpayment = nlapiTransformRecord('salesorder', dataIn.id, 'customerpayment', { 
     "memo": dataIn.memo, 
     "authCode": dataIn.authCode, 
     "pnRefNum": dataIn.pnRefNum, 
     "ccApproved": dataIn.ccApproved, 
     "ccAvsStreetMatch": dataIn.ccAvsStreetMatch, 
     "ccAvsZipMatch": dataIn.ccAvsZipMatch, 
     "ccSecurityCodeMatch": dataIn.ccSecurityCodeMatch 
    }); 
    paymentrecord = nlapiSubmitRecord(customerpayment); 
    } catch (e) { 
    nlapiLogExecution('ERROR', 'Transform failed', e); 
    } 
    nlapiLogExecution('DEBUG', 'Post Transform: CP', JSON.stringify(customerpayment)); 
    nlapiLogExecution('DEBUG', 'Post Transform: PR', JSON.stringify(paymentrecord)); 

    if (paymentrecord) { 
    return { 
     status: 'success', 
     data: paymentrecord 
    } 
    } 
    return { 
    status: 'error', 
    message: 'something went wrong' 
    } 
} 

回答

0

为了在NetSuite的第一步是有同样的付款处理器自动进行授权,外部系统和结算/捕获(或显然是刚刚在同一商业银行,但YMMMV)对外部系统的授权。

下面的代码片段用于创建具有授权的销售订单。稍后,当您完成订单时,最终的现金出售将触发结算和捕获。如果你不能像在授权中使用的那样在NS中配置相同的处理器,大多数商家银行使用一个非常简单的API来设置。

function dummyExpDate() { 
    var d = new Date(); 
    return ('0' + (d.getMonth() + 1)).slice(-2) + '/' + (d.getFullYear() + 1); // some future date 
} 
var soRec = nlapiTransformRecord('customer', custId, 'salesorder, {recordmode: 'dynamic'}); 
soRec.setFieldValue('paymentmethod', 'somepaymentmethodid_Visa_works'); // some payment method id for NS happiness 
soRec.setFieldValue('ccnumber', '4111111111111111'); // dummy valid visa for NS happiness 
soRec.setFieldValue('ccexpiredate', dummyExpDate()); 
soRec.setFieldValue('pnrefnum', pnref); 
soRec.setFieldValue('ccapproved', 'T'); 
+0

我们使用相同的网关进行身份验证和处理,以便希望部分能够正常工作。您是否缺少您的示例中的authcode,是否需要付款? – designreact

+0

编号只是p/n参考 – bknights

0

这是不可能变换salerorder进入客户付款。 salerorder只能转换为现金,发票,itemfulfillment,returnauthorization和收益提交。我认为您应该先将您的salerorder转换成发票,然后用customerpayment支付客户的付款。

问候

+0

啊,是的,现在我明白了 - 销售订单只允许某些转换。我的客户在订单完成后通常不会开票,但他们会在此之前取得认证,这让我有点卡住。 我已经成功地将字段添加到salesorder,但无法将值添加到authcode字段。 – designreact

+0

您是否在指示saler顺序中的authcode字段有任何错误?我不是netsuite的功能专家,但在我看来,销售订单不能指示authCode字段,直到付款才会显示。但是如果你的客户是必要的,你可以在销售订单中创建一个自定义字段,并将authCode放在那里。 请检查答案是否正确 –

+0

我认为提高发票意味着付款需要在履行之前进行。在我的客户端设置中,他们首先需要授权,然后在订单完成后提高发票,使用网上商店这是可能的。我没有任何特定于authcode的错误。我还有几个角度可以尝试,会让你知道我是怎么做的 - 感谢您的帮助 – designreact

0

@bknights @ pedro-bustos谢谢你们的帮助。

我已经想通了!很大程度上是由于你的回答。

您只能在首次创建销售订单时添加授权码等。这意味着我必须稍微重构一些东西,但我现在可以添加授权码和pn refs。