Hello Developer Community, this is my first post. I am new to CyberSource and I have been working on integrating CyberSource payments on my Android app since mid December.
I have implemented CyberSource payments on the Android app through the InApp SDK, to encrypt card and billing data, then posting the encrypted data to a PHP SOAP backend which I've used to successfully run authorization, void before capture, capture, void after capture and credit services.
According to the InApp SDK samples I am supposed to generate a message signature on my server, instead of in my Android code which is currently the case. I've used the helper class provided in the InApp SDK to create a message signature for each encryption.
I am currently looking for a way to implement signature generation on my PHP server. Can I get help or be pointed in the right direction with regards to this.
I can provide code snippets if needed.
Solved! Go to Solution
Hey @naledi,
To query the CyberSource Payments sandbox, please create a merchant account directly with CyberSource:
https://developer.cybersource.com
Their site provides an easy to use method to test their account credentials:
https://developer.cybersource.com/api/reference/api-reference.html
Here are links to sample code: https://github.com/CyberSource/cybersource-rest-samples-java/blob/master/src/main/java/samples/payme...
Hi Diana, I am using the android inapp sdk to encrypt user payment details to reduce my PCI burden. I am also using a soap client to run transaction services successfully.
Part of encrypting the payment data is generating a message signature which authenticates my call to the api. I need to generate this message signature on my server instead of my android code as shown in the samples, so I am looking for assistance with that.
Hey @naledi,
Please call CyberSource Support using the phone number below for further assistance. A representative will be happy to help.
CyberSource Support
800-709-7779
Okay, thanks Diana.
I don't live in the US, and the number doesn't go through. If anybody knows anything, please help or point me in the right direction.
Thanks
Hey @naledi,
To make international calls from your location, first dial 00, the international calling access code used in the country. Then dial the country code for the country you need to reach (1 for the U.S.), followed by 800-709-7779.
To summarize, to call United States from your location, dial: 00 - 1 - Area Code - Land Phone Number. In other words, that is 00 - 1 - 800-709-7779.
Besides that, you can also try to make the phone call using VoIP and see if that works.
I found the solution to my problem.
For anyone implementing cybersource payments on Android or iOS, after getting user card and billing data, use the inapp sdk to encrypt the data before passing it to your server for transaction processing, this will help reduce your PCI burden.
To encrypt the data you have to create a message signature (server side) using your soap transaction key, merchant ID, merchant reference code and utc timestamp of the transaction. The signature is used to authenticate your call to the api for the encryption. The sdk samples did it in java so you can transform the code to whichever language you used for your server. In my case I did it PHP with less than 10 lines of code!
android samples: https://github.com/CyberSource/cybersource-inapp-samples-android
inapp sdk android repo: https://github.com/CyberSource/cybersource-android-sdk
Hey @naledi,
Thanks for sharing your solution with us. It's greatly appreciated. Let us know if you have other questions, someone will be happy to help.