Ich habe Änderungen in der Datei lib/paypal-express-checkout.js in meinen lokalen Knotenmoduldateien vorgenommen.
Ich habe hinzugefügt params.PAYMENTREQUEST_0_SHIPPINGAMT die in der Funktion für Versandkosten fehlte.
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;
};
Und ich habe Versandkosten geführt, während setExpressCheckoutPayment Funktion von api Aufruf, und die festen mein Problem Versandkosten auf paypal Kasse Seite zu zeigen.
Weitere Informationen finden Sie unter https://github.com/totaljs/node-paypal-express-checkout/issues/24 . Glückliche Kodierung.