2016-12-04 24 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。