Invoice.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /* Copyright 2015-2016 PayPal, Inc. */
  2. "use strict";
  3. var generate = require('../generate');
  4. var api = require('../api');
  5. /**
  6. * Create, send and manage invoices, PayPal emails the customer with link to invoice
  7. * on PayPal's website. Customers can pay with PayPal, check, debit or credit card.
  8. * @return {Invoice} Invoice functions
  9. */
  10. function invoice() {
  11. var baseURL = '/v1/invoicing/invoices/';
  12. var operations = ['create', 'get', 'list', 'del', 'delete', 'cancel'];
  13. var ret = {
  14. baseURL: baseURL,
  15. search: function search(data, config, cb) {
  16. api.executeHttp('POST', '/v1/invoicing/search', data, config, cb);
  17. },
  18. update: function update(id, data, config, cb) {
  19. api.executeHttp('PUT', this.baseURL + id, data, config, cb);
  20. },
  21. send: function send(id, config, cb) {
  22. api.executeHttp('POST', this.baseURL + id + '/send', {}, config, cb);
  23. },
  24. remind: function remind(id, data, config, cb) {
  25. api.executeHttp('POST', this.baseURL + id + '/remind', data, config, cb);
  26. },
  27. recordPayment: function recordPayment(id, data, config, cb) {
  28. api.executeHttp('POST', this.baseURL + id + '/record-payment', data, config, cb);
  29. },
  30. recordRefund: function recordRefund(id, data, config, cb) {
  31. api.executeHttp('POST', this.baseURL + id + '/record-refund', data, config, cb);
  32. },
  33. deleteExternalPayment: function deleteExternalPayment(invoiceId, transactionId, config, cb) {
  34. api.executeHttp('DELETE', this.baseURL + invoiceId + '/payment-records/' + transactionId, {}, config, cb);
  35. },
  36. deleteExternalRefund: function deleteExternalRefund(invoiceId, transactionId, config, cb) {
  37. api.executeHttp('DELETE', this.baseURL + invoiceId + '/refund-records/' + transactionId, {}, config, cb);
  38. },
  39. generateNumber: function generateNumber(config, cb) {
  40. api.executeHttp("POST", this.baseURL + '/next-invoice-number', {}, config, cb);
  41. },
  42. /* Specify invoice ID to get a QR code corresponding to the invoice */
  43. qrCode: function qrCode(id, height, width, config, cb) {
  44. var image_attributes = {
  45. "height": height,
  46. "width": width
  47. };
  48. api.executeHttp('GET', this.baseURL + id + '/qr-code', image_attributes, config, cb);
  49. }
  50. };
  51. ret = generate.mixin(ret, operations);
  52. return ret;
  53. }
  54. module.exports = invoice;