- I have successfully incorporated a KRM module into my application, I have tested it, and it seems to work properly. Do I have to notify you before I release my software with KRM? Is there anything that Kagi has to do before I can start selling my application with KRM?
- How do I place a test order using KRM?
- My KRM test orders fail. Am I doing something wrong?
- My orders placed through KRM are not returning any username/registration code values. Why is that?
- The test order returns incorrect username/registration code values. Why is that?
- I would like to be able to have the test orders return valid registration information so that I can fully test KRM with my application. Is there a way to do this?
- I would like to test the case where an order is not approved. Is there a way to place a test order which will be certain to fail?
- The initialization data which I supply to the KRM module contains pricing information. What happens if my pricing scheme changes? Will my customer be charged the wrong amount? Shouldn't the pricing information be dynamically supplied from Kagi's database?
- The registration name data for some of my customers is getting lost or botched up. Why is that?
- What values am I supposed to supply in the initialization data which I pass to KRM?
- In the initialization data which I suply to KRM, do I have to supply values for transactionFailureURL or connectionFailureURL?
- What is the setACGDictionary method? Do I need to use it?
- When I look at my sales using the supplier application, how can I tell if a sale was processed via KRM?
- I would like to be able to use KRM to sell several products within a single sale. Is that possible?
- Is KRM capable of presenting a list of products to customers, allowing them to choose which product/products they wish to purchase?
- Does KRM support Kagi's affiliate tracking system?
- How do I use Kagi's affiliate tracking system with my KRM sales?
- What is the proper value of the affiliate tracking data string that my application supplies to the KRM client?
I have successfully incorporated a KRM module into my application, I have tested it, and it seems to work properly. Do I have to notify you before I release my software with KRM? Is there anything that Kagi has to do before I can start selling my application with KRM?
You do not have to notify Kagi in order to release your product with KRM. There is no special configuration which Kagi sets to enable your product for KRM. However, before releasing your product with KRM, you should be sure to place several test orders to make sure that everything appears to be working properly.
How do I place a test order using KRM?
Place a KRM test order as follows:
1) Have the parent application launch KRM.
2) When the user interface appears, fill in sample data for all of the required fields.
3) Pay particular attention to the following:
- For the email address that you enter, be sure to enter an email address which has a valid email domain.
- For the credit card expiration date, be sure to enter a month/year combination which is either in the present or in the future.
- For the credit card number, enter the following value: 4200000000000000 (That's 42 followed by 14 zeros).
4) Click the appropriate button to submit your test order.
Please note:
- For a test order, no TFYP email is sent to the address entered in the KRM user interface. This is a standard Kagi security precaution.
- For a test order, the username and registration code value(s) returned by KRM will not be valid. They will be munged versions of the correct data, bearing resemblance only in terms of length and format. This is a Kagi security precaution.
My KRM test orders fail. Am I doing something wrong?
Test orders placed as per the instructions in the "How do I place a test order using KRM?" FAQ should result in a successful order. If you are placing test orders which are unsuccessful, please double check that you are supplying an email address with a valid domain, as well as a credit card expiration date which is current. In the case where you have followed all of these directions and yet your KRM test orders fail, please contact us for assistance. When contacting us, please be sure to include a transaction ID from a KRM test order which failed. (The transaction ID will be displayed on last screen shown by the KRM module.)
My orders placed through KRM are not returning any username/registration code values. Why is that?
The most common cause for a KRM order not returning any username or registration code value is that the product in the test order has not been correctly configured to use an ACG. To verify that your product is correctly configured to use an ACG, try placing a test order via your online order page and check to make sure that the resultant TFYP message contains valid username and registration code information. If the TFYP message does not contain valid username and registration code information, then it is most likely that the product is not yet configured to use an ACG. In the case where a test order placed via the online order page generates a TFYP with valid registration information, but a KRM test order for the same product does not return any registration information, please contact us for assistance. When contacting us, please be sure to include a transaction ID from a KRM test order which did not return registration data. (The transaction ID will be displayed on last screen shown by the KRM module.)
The test order returns incorrect username/registration code values. Why is that?
There is a Kagi security feature which prevents KRM from returning the actual username and registration code values generated by a test order. Instead, KRM returns values which resemble the length and format of the real values, but which are comprised of otherwise unrelated character data. For real orders, KRM returns the actual values for username and registration code.
Please note: When a test order is placed, Kagi sends out a sample TFYP message to the owner of the product. This sample TFYP message will contain the actual username and registration code values generated by the test order.
I would like to be able to have the test orders return valid registration information so that I can fully test KRM with my application. Is there a way to do this?
Yes. You can arrange to have test orders for a particular product return actual username and registration values. To do so, please contact us at registrationModule@kagi.com, identifying both yourself and the specific product which you would like to have return valid registration data for test orders. We will reply with a confirmation when we have configured your product to return actual registration data. You will not need to make any changes to your application code to activate this feature. This feature should only be activated for the purpose of testing KRM with your product. When you have finished such testing, please contact us again to have us deactivate this feature. We will confirm via email when we have returned the product configuration to its normal state.
I would like to test the case where an order is not approved. Is there a way to place a test order which will be certain to fail?
Yes. If you would like to place a KRM test order which will be certain to fail, simply follow the instructions of the "How do I place a test order using KRM?" FAQ with the following change:
When entering sample customer data, supply an email address which does not have a valid email domain.
The initialization data which I supply to the KRM module contains pricing information. What happens if my pricing scheme changes? Will my customer be charged the wrong amount? Shouldn't the pricing information be dynamically supplied from Kagi's database?
At the time of this writing, the product price is conveyed by the initialization XML supplied by the parent application.
Pending the evolution of some of Kagi's other systems, the plan for the future is as follows:
- The Kagi "Supplier Application" will allow you to set the price for each of your products.
- When you want to change the price of a product, you will use the supplier application to re-set the price of the product.
- Also in the supplier application, there will be a setting which will allow you to specify whether or not the price set in the supplier application should override the initialization data which your software supplies to the KRM module.
- Upon initializing the KRM module, your application will supply the initialization XML, but, before presenting the customer with the UI, the KRM client will first contact the KRM server to get some additional configuration data. At this time, it will also see if you have set a price (via the supplier application) which should override the data your application provides in the initialization XML. If so, the UI will display using the data which you stored (and maintain) in the supplier application, and it will ignore the pricing data which you passed in with your initialization data. If not, it will use the pricing data supplied in the initialization XML.
At present, not all of the systems are in place to allow for this overriding of the initialization XML. However, the goal is to move away from depending on having the pricing information being passed to the KRM module in the initialization string. As the above scenario is fulfilled, the capacity to override the initialization XML price with a price set in the database will allow older product distributions to be sold at current prices.
The registration name data for some of my customers is getting lost or botched up. Why is that?
Due to a character set mismatch issue, some data can get altered or lost at the time when an ACG is being called. The fix to this problem must occur in a system which is external to the KRM system. Once fixed, the symptoms should disappear. Until then, the following symptoms may occur:
- alteration of individual characters in the data entered by the user, e.g. accent and umlaut characters transformed to incorrect character(s)
- loss of entire strings of data entered by the user, e.g. names entered in Japanese transformed to strings of question mark (?) characters
What values am I supposed to supply in the initialization data which I pass to KRM?
Please refer to the KRM documentation on initialization data XML.
In the initialization data which I suply to KRM, do I have to supply values for transactionFailureURL or connectionFailureURL?
You do not have to supply values for transactionFailureURL or connectionFailureURL.
If you do wish to enter values, we suggest that you create customized web pages on your own website to use as transaction and connection failure URLs. On these pages, you can provide customers with a link to your Kagi online store, so that they can try resubmitting their order in the event of a KRM failure, and receive their registration code by email.
If you do not wish to create your own customized pages, we do provide default pages for transactionFailureURL and connectionFailureURL. They are as follows:
http://www.kagi.com/response/index.php?page=TransactFail
http://www.kagi.com/response/index.php?page=ConnectFail
For more information about the requirements for initialization data, please refer to the KRM documentation on initialization data XML.
What is the setACGDictionary method? Do I need to use it?
In the Cocoa version of KRM, there is a method, setACGDictionary, which accepts a single dictionary argument. Other versions of KRM will have similar means for supplying a set of key value pairs to KRM. If the product in question uses an ACG which expects to receive Customer Seed values, you will use method setACGDictionary (or its equivalent) to convey such values to the ACG. Do so by creating a new dictionary, and then populating it with the Customer Seed key/value pairs that the ACG expects to receive. If the product in question does not use an ACG which expects Customer Seed values, you do not use method setACGDictionary. Information about Customer Seed values, as well as general information about ACGs can be found at:
http://www.kagi.com/acg/index.php
Note: If the product in question uses only Kagi's "Pre-Calculated Activation Codes" ACG, then no Customer Seed values are expected, and thus method setACGDictionary should not be invoked.
When I look at my sales using the supplier application, how can I tell if a sale was processed via KRM?
All sales which are processed via KRM will contain a special note within the comments field of the payment record. The note will always begin with "CV-KRM". When browsing the details of a payment record, if you see the string "CV_KRM" appear in the comments field, then that payment was processed via KRM.
I would like to be able to use KRM to sell several products within a single sale. Is that possible?
While it is understandable that there are scenarios where your customer will want to buy more than just your software which uses KRM (Example: A purchase might include the desired software plus an additional tech support package), the current implementation of KRM provides for the sale of only a single product. A possible work around for those who need to offer multiple products within a single KRM sale would be to define “bundle” products which represent various groups or “packages” of goods which people might wish to purchase together. Though each such “bundle” product would exist as a single product entry within Kagi’s database, it would represent a collection of various goods which you offer, and would be priced accordingly.
Is KRM capable of presenting a list of products to customers, allowing them to choose which product/products they wish to purchase?
No. KRM is capable of displaying only a single product for sale. A possible work around for those who need to offer their customers a selection of products would be to create and additional user interface which presents the customer with the available selections. When the customer has made their selection, the parent application which calls KRM would then launch the KRM framework, conditionally supplying an appropriate XML initialization string based on the user’s selection.
Does KRM support Kagi's affiliate tracking system?
As of the time of this writing, both the Carbon and Cocoa KRM clients support Kagi’s affiliate tracking system. Other KRM clients may also support affiliate tracking; for details, please consult the documentation of the client which you intend to use.
Note: For general information about Kagi's affiliate tracking system, please refer to the Kagi FAQs accessed via the Kagi Supplier Application.
How do I use Kagi's affiliate tracking system with my KRM sales?
A KRM client which supports Kagi’s affiliate tracking system will contain a function or method in its API which allows the parent application (your application) to pass a string value of affiliate tracking data to the KRM client. Call this function/method, supplying a string value as defined in the KRM FAQ, “What is the proper value of the affiliate tracking data string that my application supplies to the KRM client?”
Note: This FAQ describes the requirements for using Kagi’s affiliate tracking system which are specific to KRM. There are additional general requirements for using Kagi’s affiliate tracking system, which are documented in the Kagi FAQs accessed via the Kagi Supplier Application.
What is the proper value of the affiliate tracking data string that my application supplies to the KRM client?
Background: Kagi’s affiliate tracking system is based on the unique identifier used to reference each Kagi account. One common name for this account identifier is the “@kagi” or “at kagi” name. It is the name a supplier chooses when they open an account with Kagi. Once a Kagi account is active, Kagi forwards email to the supplier based on this @kagi identifier.
As an example:
If:
A supplier signs up for a Kagi account, choosing to use an identifier of: “mySuperGreatSoftwareCompany”
then:
The @kagi name for this supplier will be: “mySuperGreatSoftwareCompany”
and Kagi will forward email addressed to: mySuperGreatSoftwareCompany@kagi.com
to an email address specified by the supplier.
Given the above background: The value of the string that your application supplies to the KRM client as affiliate tracking data is the @kagi name which identifies the Kagi supplier account which is to receive affiliate credit for the sale.
Note: For general information about Kagi’s affiliate tracking system, please refer to the Kagi FAQs accessed via the Kagi Supplier Application.