summaryrefslogtreecommitdiffstats
path: root/dom/interfaces/payments/nsIPaymentRequestService.idl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dom/interfaces/payments/nsIPaymentRequestService.idl102
1 files changed, 102 insertions, 0 deletions
diff --git a/dom/interfaces/payments/nsIPaymentRequestService.idl b/dom/interfaces/payments/nsIPaymentRequestService.idl
new file mode 100644
index 0000000000..34c296df94
--- /dev/null
+++ b/dom/interfaces/payments/nsIPaymentRequestService.idl
@@ -0,0 +1,102 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsISupports.idl"
+#include "nsIVariant.idl"
+#include "nsIPaymentRequest.idl"
+#include "nsIPaymentActionResponse.idl"
+#include "nsIPaymentAddress.idl"
+#include "nsISimpleEnumerator.idl"
+#include "nsIPaymentUIService.idl"
+
+/**
+ * nsPaymentRequestService is used to manage the created PaymentRequest in the
+ * chrome process. It is also the IPC agent for payment UI to communicate with
+ * merchant side.
+ */
+[scriptable, builtinclass, uuid(cccd665f-edf3-41fc-ab9b-fc55b37340aa)]
+interface nsIPaymentRequestService : nsISupports
+{
+ /**
+ * Get the nsIPaymentRequest through the given payment request identifier.
+ * @param aRequestId - the payment request identifier.
+ * This is an internal id generated by Gecko.
+ * @return - the requested payment request. null if there is no
+ * coressponding nsIPaymentRequest for aRequestId.
+ */
+ nsIPaymentRequest getPaymentRequestById(in AString aRequestId);
+
+ /**
+ * Get the enumerator for all managed nsIPaymentRequests.
+ * @return - an enumerator for all managed nsIPaymentRequests.
+ */
+ nsISimpleEnumerator enumerate();
+
+ /**
+ * Send the user's response to the merchant.
+ * @param aResponse - the user's response.
+ */
+ void respondPayment(in nsIPaymentActionResponse aResponse);
+
+ /**
+ * Inform the merchant the shipping address has changed.
+ * @param requestId - the request identifier of the payment request.
+ * @param aAddress - the new payment address.
+ */
+ void changeShippingAddress(in AString requestId, in nsIPaymentAddress aAddress);
+
+ /**
+ * Inform the merchant the shipping option has changed.
+ * @param requestId - the request identifier of the payment request.
+ * @param option - the shipping option ID string.
+ */
+ void changeShippingOption(in AString requestId, in AString option);
+
+ /**
+ * Inform the merchant the payer's details changed in the PaymentResponse.
+ * @param requestId - the request identifier of the payment request.
+ * @param aPayerName - the changed payer's name.
+ * @param aPayerEmail - the changed payer's email.
+ * @param aPayerPhone - the changed payer's phone.
+ */
+ void changePayerDetail(in AString requestId,
+ in AString aPayerName,
+ in AString aPayerEmail,
+ in AString aPayerPhone);
+
+ /**
+ * Inform the merchant the payment method has changed.
+ * @param requestId - the request identifier of the payment request.
+ * @param aMethodName - the changed payment method's name.
+ * @param aMethodDetails - the changed payment method's details.
+ */
+ void changePaymentMethod(in AString requestId,
+ in AString aMethodName,
+ in nsIMethodChangeDetails aMethodDetails);
+
+
+ /**
+ * Following APIs are for testing or platform code only. UI implementation
+ * should not use them.
+ */
+ /**
+ * Clean up the all managed payment requests.
+ * This API is for testing only.
+ */
+ void cleanup();
+
+ /**
+ * Setup the customized nsIPaymentUIService.
+ * This API is for testing only.
+ */
+ void setTestingUIService(in nsIPaymentUIService aUIService);
+};
+
+%{C++
+#define NS_PAYMENT_REQUEST_SERVICE_CID \
+ { 0xcccd665f, 0xedf3, 0x41fc, { 0xab, 0x9b, 0xfc, 0x55, 0xb3, 0x73, 0x40, 0xaa } }
+#define NS_PAYMENT_REQUEST_SERVICE_CONTRACT_ID \
+ "@mozilla.org/dom/payments/payment-request-service;1"
+%}