我使用了 paypal-express-checkout-simple 。我需要为每个产品添加运费并显示到paypal结帐页面。我是否需要更改paypal中的任何帐户设置?
我已关注https://www.npmjs.com/package/paypal-express-checkout-simple
对此有任何帮助表示高度赞赏。
答案 0 :(得分:0)
我在本地节点模块文件中对lib / paypal-express-checkout.js文件进行了更改。
我添加了 params.PAYMENTREQUEST_0_SHIPPINGAMT ,这在运费方面的功能中缺失。
Paypal.prototype.setExpressCheckoutPayment = function(email, invoiceNumber, amount, totalShipCost, description, currency, returnUrl, cancelUrl, onlyPayPalUsers, callback) {
var self = this;
var params = self.params();
if (email) {
params.EMAIL = email;
}
params.SOLUTIONTYPE = onlyPayPalUsers === true ? 'Mark' : 'Sole';
params.PAYMENTREQUEST_0_AMT = prepareNumber(amount + totalShipCost); // ***add ship cost here
params.PAYMENTREQUEST_0_DESC = description;
params.PAYMENTREQUEST_0_CURRENCYCODE = currency;
params.PAYMENTREQUEST_0_INVNUM = invoiceNumber;
params.PAYMENTREQUEST_0_CUSTOM = invoiceNumber + '|' + params.PAYMENTREQUEST_0_AMT + '|' + currency;
params.PAYMENTREQUEST_0_PAYMENTACTION = 'Sale';
params.PAYMENTREQUEST_0_ITEMAMT = prepareNumber(amount);
params.PAYMENTREQUEST_0_SHIPPINGAMT = prepareNumber(totalShipCost); // ***add variable for ship cost
params = _.extend(params, this.getItemsParams());
params.RETURNURL = returnUrl;
params.CANCELURL = cancelUrl;
params.NOSHIPPING = 0;
params.ALLOWNOTE = 1;
params.REQCONFIRMSHIPPING = 1;
params.METHOD = 'SetExpressCheckout';
params = _.extend(params, this.payOptions);
self.request(self.url, 'POST', params, function(err, data) {
if (err) {
callback(err);
return;
}
if (data.ACK === 'Success') {
callback(null, {
redirectUrl: self.redirect + '?cmd=_express-checkout&useraction=commit&token=' + data.TOKEN,
token: data.TOKEN
});
return;
}
callback(new Error('ACK ' + data.ACK + ': ' + data.L_LONGMESSAGE0));
});
return self;
};
我从api调用 setExpressCheckoutPayment 功能时已通过运费,这解决了我的问题,以显示paypal结帐页面上的运费。
请参阅https://github.com/totaljs/node-paypal-express-checkout/issues/24 还有更多细节。 快乐的编码。