{"id":180,"date":"2020-08-10T19:25:20","date_gmt":"2020-08-10T13:55:20","guid":{"rendered":"https:\/\/razorpay.com\/unfiltered\/?p=180"},"modified":"2020-08-10T19:25:20","modified_gmt":"2020-08-10T13:55:20","slug":"behind-the-scenes-payment-button","status":"publish","type":"post","link":"https:\/\/razorpay.com\/unfiltered\/behind-the-scenes-payment-button\/","title":{"rendered":"Behind the scenes | Payment button"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">5<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><blockquote><p><span style=\"font-weight: 400\">Is it possible to get a payment gateway done on your website without any APIs, or without knowing any code? The answer is yes and the answer is a Razorpay payment button!<\/span><\/p><\/blockquote>\n<p><span style=\"font-weight: 400\">It is a simple 2 line code snippet that you stick to your web page to start collecting payments. As simple as it sounds, building it wasn\u2019t so simple.<br \/>\nIt all started with a difference of opinion, euphemistically put, around what the PM thought, what the management thought would really help the payment needs of anyone who wants to start collecting payments online on their blog, or site or event store.<br \/>\nFirst school of thought: What entrepreneurs and individuals want is a quick plug on their page or online profile to start making money NOW &#8211; we really need to push the payment page button to tell them what they can do &#8211; why aren\u2019t we doing that?<\/span><\/p>\n<p><span style=\"font-weight: 400\">The other school of thought: If someone wants it so badly, they are a few clicks away for getting it, what are we really changing &#8211; skipping a few screens at the most? We probably need to look at it ground up, instead of guessing something.<\/span><\/p>\n<p><span style=\"font-weight: 400\">This went on and on, voices soared and finally we all had to agree on some basic premises &#8211;\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Overall, we want to distribute the product better i.e put the goods on the right shelves in the supermarket<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Stick to numbers &#8211; data doesn\u2019t lie<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">So we ended up doing that diplomatic card trick, up every product team\u2019s sleeve &#8211; do an A\/B!<\/span><\/p>\n<p><span style=\"font-weight: 400\">H(o): Significantly more no. of users, will adopt the payment page button if we make it more discoverable to screen B, instead of screen A<\/span><\/p>\n<p>SCREEN B<br \/>\n<span style=\"font-weight: 400\"><br \/>\n<\/span><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-189 aligncenter\" src=\"https:\/\/razorpay.com\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-1.42.59-PM-219x300.png\" alt=\"\" width=\"219\" height=\"300\" srcset=\"https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-1.42.59-PM-219x300.png 219w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-1.42.59-PM.png 734w\" sizes=\"auto, (max-width: 219px) 100vw, 219px\" \/><\/p>\n<p>SCREEN A<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-190 aligncenter\" src=\"https:\/\/razorpay.com\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-1.43.12-PM-178x300.png\" alt=\"\" width=\"178\" height=\"300\" srcset=\"https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-1.43.12-PM-178x300.png 178w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-1.43.12-PM-609x1024.png 609w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-1.43.12-PM.png 716w\" sizes=\"auto, (max-width: 178px) 100vw, 178px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">The experiment came out with colourful results, we saw more than a 100% uptick in the adoption of pages in screen B as compared to screen A!\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">That gave us the signal &#8211; now that we have the mandate, let&#8217;s put the goods on the shelves where the consumers really want it<\/span><\/p>\n<p><span style=\"font-weight: 400\">And so we began..<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Research phase<\/span><\/h2>\n<p><span style=\"font-weight: 400\">We decided to create this product ground up. This was the COVID baby Razorpay would be embarrassed of. Research of course begins with speaking to your merchants \/ customers.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Given Razorpay\u2019s prominent spread across the country, it was really exciting to speak to a lot of college freelancers, independent entrepreneurs aiming for the sky and SMEs &#8211; providing a bunch of rich insights.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">In summary, this came out clearly-<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Entrepreneurs, with a higher risk profile, want to validate their ideas immediately &#8211; payments need to happen NOW<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">It is more prudent to fail with a low cost setup rather than full blown tech. Infra<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">If you\u2019re running low on resources, it is a no-brainer to go for an off-the-shelf payments solution, but many get lost in the shopping process and possibly choose something that doesn\u2019t fit<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">Did we sense a gap to fill ? Yes.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Are we in the right place to fill it ? Yes.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Do we know how to do it? We\u2019ll figure out!<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Brainstorming phase<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Enter the grind here. Sticking to the basics, the first thing you close is your PRD.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Customer needs, problem statement, approaches considered, the solution, competitor research, the priority of items, a future wish list and of course &#8211; the metrics.. and your recipe is ready. This process is very much like playing a game of Pac-man &#8211; eating all pellets in a maze.<\/span><\/p>\n<p><span style=\"font-weight: 400\">We had two overarching questions we had to answer &#8211;<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Typically we have had a WYSIWYG approach to Razorpay payment pages, how do we maintain the essence of that approach even if your product necessarily does not merit that approach?<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We want a copy paste solution that does not take away the context from the website, where the consumer and retain the ability to collect customer information.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">This led to a lot of back and forth especially the design team burning the midnight oil &#8211; trying out a variety of approaches to ultimately make the experience as simple as possible.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\u201cWe aren\u2019t building our product fantasy here\u201d \u201cOur competitors do it doesn\u2019t mean they do it right\u201d \u201cAre offering a set of BOSCH tools to our merchants? NO.\u201d &#8211; that\u2019s how brainstorming sessions work. A lot of virtual fists, heady arguments and a reasonable consensus.<\/span><\/p>\n<p><span style=\"font-weight: 400\">What really matters in this phase is that you become clear in what you define your MVP as, what are the customer needs you wish to solve in the MVP and most importantly what is it that you DON&#8217;T want to solve in the MVP. The smaller decisions that were grey earlier, now stand out as black and white.<\/span><\/p>\n<p><span style=\"font-weight: 400\">There\u2019s no better way to arrive at this but to have multiple minds slug it out in a <\/span><span style=\"font-weight: 400\">ring <\/span><span style=\"font-weight: 400\">zoom call, and of course with a deadline as the hanging axe.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Build and conquer<\/span><\/h3>\n<p><span style=\"font-weight: 400\">We were re-inventing the wheel in terms of building a payment button but to do one for our audience persona, and for the problems we felt are genuine still makes you think from first principles. Many have scored a century before but scoring one is no easy task!<\/span><\/p>\n<p><span style=\"font-weight: 400\">The solution to reiterate needs to do this &#8211;\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">No-coding solution that sits on any webpage<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Retains the payment context without any redirections<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Seamlessly provide all the awesome features that Razorpay checkout provides<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Offer the additional functionality to collect customer information or have multiple amount fields within this solution<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">The payment journey looks like this &#8211;\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-195 aligncenter\" src=\"https:\/\/razorpay.com\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.55-PM-1.png\" alt=\"\" width=\"822\" height=\"330\" srcset=\"https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.55-PM-1.png 2040w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.55-PM-1-300x120.png 300w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.55-PM-1-1024x411.png 1024w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.55-PM-1-768x308.png 768w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.55-PM-1-1536x616.png 1536w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.55-PM-1-1568x629.png 1568w\" sizes=\"auto, (max-width: 822px) 100vw, 822px\" \/><br \/>\n<span style=\"font-weight: 400\">What were the decisions on the table?<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Do we go for an iframe+iframe approach where we sort of box the button?<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Form tag with an option of a few preferential parameters<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">We chose a form tag but what is more important is how you get there. The factors that help you make this decision are &#8211;\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">How does it for the future roadmap?<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Are we compromising on simplicity for the customer?<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Does this code let the button stay as a button on the customer\u2019s web page and not take up additional space?<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">This is how the button looks &#8211;<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-196 aligncenter\" src=\"https:\/\/razorpay.com\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.45-PM.png\" alt=\"\" width=\"540\" height=\"143\" srcset=\"https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.45-PM.png 1388w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.45-PM-300x80.png 300w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.45-PM-1024x271.png 1024w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.12.45-PM-768x204.png 768w\" sizes=\"auto, (max-width: 540px) 100vw, 540px\" \/><\/p>\n<p><span style=\"font-weight: 400\">The sample code is\u00a0 &#8211;\u00a0<\/span><\/p>\n<pre><code>\n&lt;form&gt;\n  &lt;script\n    src=\"https:\/\/cdn.razorpay.com\/static\/widget\/payment-button.js\"\n    data-payment_button_id=\"pl_FFXCKskE5f4WLA\"\n    data-button_text=\"Pay Now\"\n    data-button_theme=\"rzp-dark-standard\"\n  &gt;&lt;\/script&gt;\n&lt;\/form&gt;\n<\/code><\/pre>\n<p><span style=\"font-weight: 400\">The final solution was to solve through 2 scripts &#8211; a Main controller script and a frame controller script. The main script is what our customer will add to their webpage which will in turn instantiate the frame controller script. The frame controller is where most of the action happens.<\/span><\/p>\n<p><span style=\"font-weight: 400\">From here on, it is a race to the finish line &#8211; which meant regular stand-ups, a healthy mix of escalations and some (or many) late nights. This is when the team feels what teamwork is.\u00a0<\/span><span style=\"font-weight: 400\">As the builds are pushed and bugs are squashed, you need to take the time to align other stakeholders right &#8211; the management, support and operations.<\/span><\/p>\n<p><span style=\"font-weight: 400\">This culminates in the best part when you get that chance to push the final launch button,\u00a0 you know, the one below<br \/>\n<\/span><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-197 aligncenter\" src=\"https:\/\/razorpay.com\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.09.41-PM.png\" alt=\"Credit : Jake Clark | Tumblr\" width=\"480\" height=\"731\" srcset=\"https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.09.41-PM.png 650w, https:\/\/d6xcmfyh68wv8.cloudfront.net\/unfiltered-content\/uploads\/2020\/08\/Screenshot-2020-08-10-at-2.09.41-PM-197x300.png 197w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/p>\n<p><span style=\"font-weight: 400\">SEEK AND DEPLOY!<\/span><\/p>\n<p><span style=\"font-weight: 400\">It is not over yet, you have your goods ready but the difficult task of getting it on the right internet shelves will follow, and more so, the toughest task of making the shopper want to buy your good when they see it on the shelf, still remains!\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Learn how merchants are using it <a href=\"https:\/\/razorpay.com\/blog\/create-payment-buttons-donation-fees\/\">here<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">5<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span> Is it possible to get a payment gateway done on your website without any APIs, or without knowing any code? The answer is yes and the answer is a Razorpay payment button! It is a simple 2 line code snippet that you stick to your web page to start collecting payments. As simple as it&#8230;<\/p>\n","protected":false},"author":10,"featured_media":220,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-180","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/razorpay.com\/unfiltered\/wp-json\/wp\/v2\/posts\/180","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/razorpay.com\/unfiltered\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/razorpay.com\/unfiltered\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/razorpay.com\/unfiltered\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/razorpay.com\/unfiltered\/wp-json\/wp\/v2\/comments?post=180"}],"version-history":[{"count":0,"href":"https:\/\/razorpay.com\/unfiltered\/wp-json\/wp\/v2\/posts\/180\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/razorpay.com\/unfiltered\/wp-json\/wp\/v2\/media\/220"}],"wp:attachment":[{"href":"https:\/\/razorpay.com\/unfiltered\/wp-json\/wp\/v2\/media?parent=180"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/razorpay.com\/unfiltered\/wp-json\/wp\/v2\/categories?post=180"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/razorpay.com\/unfiltered\/wp-json\/wp\/v2\/tags?post=180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}