RazorPay 与 React JS 和 Java 应用程序集成
RazorPay Integration with React JS and Java application
是否可以使用 reactjs(前端)和 Java 8(后端)将 Razorpay 集成到应用程序中。
在 razorpay 网站上,他们没有与 React js 应用程序集成的文档。
我是 reactjs 和支付网关集成的新手,所以如果有人在 razorpay 与 reactjs 的集成方面工作,请推荐任何好的 approach/any 可用文档。
或者如果有人可以推荐任何易于与 REACTJS+JAVA 应用程序集成的好的支付网关。
谢谢!
为了处理 API JAVA 作为后端就足够了,对于使用 React 的前端,我们使用 JavaScript 编写 HTML。我们依靠 Java 脚本的强大功能来生成依赖于某些数据的 HTML,而不是增强 HTML 以使其适用于该数据。增强 HTML 是其他 Java 脚本框架通常做的事情。
所以要使用API。
先决条件#
Java 1.7 或更高
安装#
您可以使用 Maven 或 Gradle.
安装 Razorpay
行家#
在您的系统上下载并安装 Maven。
从 GitHub 的发布部分下载最新的源代码 zip 文件。
解压缩文件并将此依赖项添加到项目的项目 object 模型 (POM) 中。
<dependency>
<groupId>com.razorpay</groupId>
<artifactId>razorpay-java</artifactId>
<version>x.y.z</version> //x.y.z = the version you want to install
</dependency>
Gradle#
在您的系统上下载并安装 Gradle。
从 GitHub 的发布部分下载最新的源代码 zip 文件。
解压文件并将此依赖添加到项目的构建文件中:
compile "com.razorpay:razorpay-java:x.y.z" //x.y.z = the version you want to install
示例代码
初始化#
Create RazorpayClient with key_id & key_secret.
JAVA RazorpayClient razorpayClient = new RazorpayClient("key_id", "key_secret");
生成API密钥#
使用适当的凭据登录到您的仪表板。
Select 您要为其生成 API 密钥的模式(测试或实时)。
笔记:
您必须为测试和实时模式生成单独的 API 密钥。测试模式不使用真钱。
导航到设置 → API 密钥 → 生成密钥为所选模式生成密钥。
添加自定义Headers#
笔记:
这是一个可选步骤。
要将自定义 headers 添加到请求中:
Map<String, String> headers = new HashMap<String, String>();
razorpayClient.addHeaders(headers);
订单#
笔记:
单击此处获取请求参数以及示例请求和响应。
创建订单#
JSONObject options = new JSONObject();
options.put("amount", 5000);
options.put("currency", "INR");
options.put("receipt", "txn_123456");
Order order = razorpayClient.Orders.create(options);
按 ID 获取订单#
Order order = razorpayClient.Orders.fetch("order_id");
获取所有订单#
List<Order> orders = razorpayClient.Orders.fetchAll();
获取付款订单#
List<Payment> payments = razorpayClient.Orders.fetchPayments("order_id");
获取付款#
JSONObject options = new JSONObject();
options.put("amount", 1000);
options.put("currency", "INR");
razorpayClient.Payments.capture("payment_id", options);
通过 ID 获取付款#
Payment payment = razorpayClient.Payments.fetch("payment_id");
int amount = payment.get("amount");
String id = payment.get("id");
Date createdAt = payment.get("created_at");
实体 .get("attribute_key") 方法具有灵活的 return 类型,具体取决于属性。
获取所有付款#
List<Payment> payments = razorpayClient.Payments.fetchAll();
创建全额退款#
JSONObject refundRequest = new JSONObject();
refundRequest.put("payment_id", <payment_id>);
Refund refund = razorpayClient.Payments.refund(refundRequest);
创建部分退款#
JSONObject refundRequest = new JSONObject();
refundRequest.put("amount", <amount>);
refundRequest.put("payment_id", <payment_id>);
Refund refund = razorpay.Payments.refund(refundRequest);
通过 ID# 获取退款
Refund refund = razorpayClient.Refunds.fetch("refund_id");
获取所有退款#
List<Refund> refunds = razorpayClient.Refunds.fetchAll();
根据付款获取退款#
Refund refund = razorpayClient.Payments.fetchRefund("refund_id");
获取付款的所有退款#
JSONObject refundRequest = new JSONObject();
refundRequest.put("payment_id", <payment_id>);
List<Refund> refund = razorpayClient.Payments.fetchAllRefunds(refundRequest);
获取卡片详情#
Card card = razorpayClient.Cards.fetch(id);
创建客户#
JSONObject request = new JSONObject();
request.put("name", <name>);
request.put("email", <email>);
Customer customer = razorpayClient.Customers.create(request);
通过 ID# 获取客户
Customer customer = razorpayClient.Customers.fetch(customerId);
编辑客户#
JSONObject request = new JSONObject();
request.put("name", <name>);
request.put("email", <email>);
Customer customer = razorpayClient.Customers.edit(customerId, request);
获取令牌#
Token token = razorpayClient.Customers.fetchToken(customerId, tokenId);
为客户获取令牌#
List<Token> tokens = razorpayClient.Customers.fetchTokens(customerId);
删除令牌#
razorpayClient.Customers.deleteToken(customerId, tokenId);
订阅#
制定计划#
JSONObject request = new JSONObject();
request.put("period", "weekly");
request.put("interval", 1);
JSONObject item = new JSONObject();
item.put("name", "Test Weekly 1 plan");
item.put("description", "Description for the weekly 1 plan");
item.put("amount", 600);
item.put("currency", "INR");
request.put("item", item);
Plan plan = razorpayClient.Plans.create(request);
按 ID#获取计划
Plan plan = razorpayClient.Plans.fetch("<plan_id>");
获取所有计划#
List<Plan> listPlans = razorpayClient.Plans.fetchAll();
创建订阅#
JSONObject request = new JSONObject();
request.put("plan_id", "<plan_id>");
request.put("customer_notify", 1);
request.put("total_count", 6);
request.put("start_at", 1495995837);
JSONArray addons = new JSONArray();
JSONObject addon = new JSONObject();
JSONObject item = new JSONObject();
item.put("name", "Delivery charges");
item.put("amount", 30000);
item.put("currency", "INR");
addon.put("item", item);
addons.put(addon);
request.put("addons", addons);
Subscription subscription = razorpayClient.Subscriptions.create(request);
通过 ID#获取订阅
Subscription subscription = razorpayClient.Subscriptions.fetch("<subscription_id>");
获取所有订阅#
List<Subscription> listSubscriptions = razorpayClient.Subscriptions.fetchAll();
取消订阅#
Subscription subscription = razorpayClient.Subscriptions.cancel("<subscription_id>");
创建一个Add-on#
JSONObject request = new JSONObject();
request.put("quantity", 2);
JSONObject addonItem = new JSONObject();
addonItem.put("name", "Extra Chair");
addonItem.put("amount", 30000);
addonItem.put("currency", "INR");
request.put("item", addonItem);
Addon addon = razorpayClient.Subscriptions.createAddon(<subscription_id>, request);
通过 ID#
获取 Add-on
Addon addon = razorpayClient.Addons.fetch(<addon_id>);
删除一个Add-on#
razorpayClient.Addons.delete(<addon_id>);
付款Links#
创建订阅Link#
JSONObject lineItem = new JSONObject();
lineItem.put("amount", 100); // Note: The amount should be in paise.
lineItem.put("name", "name_invoice");
JSONArray lineItems = new JSONArray();
lineItems.put(lineItem);
JSONObject request = new JSONObject();
request.put("line_items", lineItems);
request.put("date", 1480768625); // Timestamp in seconds
request.put("currency", "INR");
request.put("sms_notify", "0");
Invoice invoice = razorpayClient.Invoices.create(request);
Fetch Subscription Link by ID#
Invoice invoice = razorpayClient.Invoices.fetch("invoice_id");
获取所有订阅Links#
List<Invoice> invoices = razorpayClient.Invoices.fetchAll();
取消订阅Link#
Invoice invoice = razorpayClient.Invoices.cancel("invoice_id");
创建发票#
JSONObject lineItem = new JSONObject();
lineItem.put("amount", 100);
lineItem.put("name", "name_invoice");
JSONArray lineItems = new JSONArray();
lineItems.put(lineItem);
JSONObject request = new JSONObject();
request.put("line_items", lineItems);
request.put("date", 1480768625);
request.put("currency", "INR");
request.put("sms_notify", "0");
Invoice invoice = razorpayClient.Invoices.create(request);
通过 ID# 获取发票
Invoice invoice = razorpayClient.Invoices.fetch("invoice_id");
Fetch all Invoices#
List<Invoice> invoices = razorpayClient.Invoices.fetchAll();
Cancel an Invoice#
Invoice invoice = razorpayClient.Invoices.cancel("invoice_id");
创建虚拟账户#
JSONObject request = new JSONObject();
JSONArray receiverTypeArray = new JSONArray();
receiverTypeArray.put("bank_account");
request.put("receiver_types", receiverTypeArray);
JSONObject notes = new JSONObject();
notes.put("receiver_key", "receiver_value");
request.put("notes", notes);
request.put("description", "First Virtual Account");
VirtualAccount virtualAccount = razorpayClient.VirtualAccounts.create(request);
通过 ID# 获取虚拟帐户
VirtualAccount virtualAccount = razorpayClient.VirtualAccounts.fetch("
<virtual_account_id>");
获取所有虚拟账户#
List<VirtualAccount> virtualAccountList = razorpayClient.VirtualAccounts.fetchAll();
Close a Virtual Account#
VirtualAccount virtualAccount = razorpayClient.VirtualAccounts.close("
<virtual_account_id>");
List Payments for a Virtual Account#
List<Payment> paymentList =
razorpayClient.VirtualAccounts.fetchPayments("virtual_account_id");
创建传输#
JSONObject request = new JSONObject();
JSONArray transfers = new JSONArray();
JSONObject transfer = new JSONObject();
transfer.put("amount", <amount>);
transfer.put("currency", "INR");
transfer.put("account", <account_id>);
transfers.put(transfer);
request.put("transfers", transfers);
List<Transfer> transfers = razorpayClient.Payments.transfer("payment_id", request);
创建直接传输#
JSONObject request = new JSONObject();
request.put("amount", <amount>);
request.put("currency", "INR");
request.put("account", <account_id>);
Transfer transfer = razorpayClient.Transfers.create(request);
编辑传输#
JSONObject request = new JSONObject();
request.put("on_hold", true);
Transfer transfer = razorpayClient.Transfers.edit(request);
获取银行转帐付款#
BankTransfer bankTransfer = razorpayClient.Payments.fetchBankTransfers("payment_id");
获取付款的所有转账#
List<Transfers> transfers = razorpayClient.Payments.fetchAllTransfers("payment_id");
Fetch a Transfer by ID#
Transfer transfer = razorpayClient.Transfers.fetch("transfer_id");
获取所有传输#
List<Transfer> transfers = razorpayClient.Transfers.fetchAll();
创建转账撤销#
JSONObject request = new JSONObject();
request.put("amount", <amount>);
Reversal reversal = razorpayClient.Transfers.reversal("transfer_id", request);
Webhooks#
验证 Webhook 签名#
您可以验证收到的 webhook 的签名:
Utils.verifyWebhookSignature("<webhook_payload>", "<webhook_signature>", "
<webhook_secret>");
实用程序#
验证付款签名#
您可以使用 Utils class 验证收到的签名以响应使用订单 API.
进行的付款
JSONObject options = new JSONObject();
options.put("razorpay_order_id", "<order_id>");
options.put("razorpay_payment_id", "<payment_id>");
options.put("razorpay_signature", "<signature>");
Utils.verifyPaymentSignature(paymentResponse, "<key_secret>");
自定义请求#
您可以使用客户端发出自定义 API 请求。例如,这里是如何向 /payments/path 端点发出自定义请求。
Entity response = razorpayClient.Payments.post("path", JSONObject requestBody);
示例应用程序
集成和运行示例应用程序#
使用 Razorpay Checkout Integration 创建 Checkout 表单。
在表单提交中接受 razorpay_payment_id 参数。
运行捕获付款的捕获代码。
编辑里面的key index.ftl.
在 server.yml 文件。请参阅生成 API 密钥以了解如何生成密钥。
使用以下命令构建测试应用程序:
mvn clean install
运行 使用以下命令测试应用程序:
java -jar target/razorpay-java-testapp-1.0-SNAPSHOT.jar server server.yml
注:
如果如果您想 re-use 这是您的最终代码,请按照以下步骤操作:
编辑 index.ftl 文件 中的密钥。
编辑 和 inside server.yml 文件。使用实时键时
使用该应用程序接受实时付款。
是否可以使用 reactjs(前端)和 Java 8(后端)将 Razorpay 集成到应用程序中。
在 razorpay 网站上,他们没有与 React js 应用程序集成的文档。
我是 reactjs 和支付网关集成的新手,所以如果有人在 razorpay 与 reactjs 的集成方面工作,请推荐任何好的 approach/any 可用文档。
或者如果有人可以推荐任何易于与 REACTJS+JAVA 应用程序集成的好的支付网关。
谢谢!
为了处理 API JAVA 作为后端就足够了,对于使用 React 的前端,我们使用 JavaScript 编写 HTML。我们依靠 Java 脚本的强大功能来生成依赖于某些数据的 HTML,而不是增强 HTML 以使其适用于该数据。增强 HTML 是其他 Java 脚本框架通常做的事情。
所以要使用API。 先决条件# Java 1.7 或更高
安装# 您可以使用 Maven 或 Gradle.
安装 Razorpay行家# 在您的系统上下载并安装 Maven。
从 GitHub 的发布部分下载最新的源代码 zip 文件。
解压缩文件并将此依赖项添加到项目的项目 object 模型 (POM) 中。
<dependency>
<groupId>com.razorpay</groupId>
<artifactId>razorpay-java</artifactId>
<version>x.y.z</version> //x.y.z = the version you want to install
</dependency>
Gradle# 在您的系统上下载并安装 Gradle。
从 GitHub 的发布部分下载最新的源代码 zip 文件。
解压文件并将此依赖添加到项目的构建文件中:
compile "com.razorpay:razorpay-java:x.y.z" //x.y.z = the version you want to install
示例代码
初始化#
Create RazorpayClient with key_id & key_secret.
JAVA RazorpayClient razorpayClient = new RazorpayClient("key_id", "key_secret");
生成API密钥#
使用适当的凭据登录到您的仪表板。 Select 您要为其生成 API 密钥的模式(测试或实时)。 笔记: 您必须为测试和实时模式生成单独的 API 密钥。测试模式不使用真钱。 导航到设置 → API 密钥 → 生成密钥为所选模式生成密钥。
添加自定义Headers# 笔记: 这是一个可选步骤。
要将自定义 headers 添加到请求中:
Map<String, String> headers = new HashMap<String, String>();
razorpayClient.addHeaders(headers);
订单# 笔记: 单击此处获取请求参数以及示例请求和响应。
创建订单#
JSONObject options = new JSONObject();
options.put("amount", 5000);
options.put("currency", "INR");
options.put("receipt", "txn_123456");
Order order = razorpayClient.Orders.create(options);
按 ID 获取订单#
Order order = razorpayClient.Orders.fetch("order_id");
获取所有订单#
List<Order> orders = razorpayClient.Orders.fetchAll();
获取付款订单#
List<Payment> payments = razorpayClient.Orders.fetchPayments("order_id");
获取付款#
JSONObject options = new JSONObject();
options.put("amount", 1000);
options.put("currency", "INR");
razorpayClient.Payments.capture("payment_id", options);
通过 ID 获取付款#
Payment payment = razorpayClient.Payments.fetch("payment_id");
int amount = payment.get("amount");
String id = payment.get("id");
Date createdAt = payment.get("created_at");
实体 .get("attribute_key") 方法具有灵活的 return 类型,具体取决于属性。
获取所有付款#
List<Payment> payments = razorpayClient.Payments.fetchAll();
创建全额退款#
JSONObject refundRequest = new JSONObject();
refundRequest.put("payment_id", <payment_id>);
Refund refund = razorpayClient.Payments.refund(refundRequest);
创建部分退款#
JSONObject refundRequest = new JSONObject();
refundRequest.put("amount", <amount>);
refundRequest.put("payment_id", <payment_id>);
Refund refund = razorpay.Payments.refund(refundRequest);
通过 ID# 获取退款
Refund refund = razorpayClient.Refunds.fetch("refund_id");
获取所有退款#
List<Refund> refunds = razorpayClient.Refunds.fetchAll();
根据付款获取退款#
Refund refund = razorpayClient.Payments.fetchRefund("refund_id");
获取付款的所有退款#
JSONObject refundRequest = new JSONObject();
refundRequest.put("payment_id", <payment_id>);
List<Refund> refund = razorpayClient.Payments.fetchAllRefunds(refundRequest);
获取卡片详情#
Card card = razorpayClient.Cards.fetch(id);
创建客户#
JSONObject request = new JSONObject();
request.put("name", <name>);
request.put("email", <email>);
Customer customer = razorpayClient.Customers.create(request);
通过 ID# 获取客户
Customer customer = razorpayClient.Customers.fetch(customerId);
编辑客户#
JSONObject request = new JSONObject();
request.put("name", <name>);
request.put("email", <email>);
Customer customer = razorpayClient.Customers.edit(customerId, request);
获取令牌#
Token token = razorpayClient.Customers.fetchToken(customerId, tokenId);
为客户获取令牌#
List<Token> tokens = razorpayClient.Customers.fetchTokens(customerId);
删除令牌#
razorpayClient.Customers.deleteToken(customerId, tokenId);
订阅#
制定计划#
JSONObject request = new JSONObject();
request.put("period", "weekly");
request.put("interval", 1);
JSONObject item = new JSONObject();
item.put("name", "Test Weekly 1 plan");
item.put("description", "Description for the weekly 1 plan");
item.put("amount", 600);
item.put("currency", "INR");
request.put("item", item);
Plan plan = razorpayClient.Plans.create(request);
按 ID#获取计划
Plan plan = razorpayClient.Plans.fetch("<plan_id>");
获取所有计划#
List<Plan> listPlans = razorpayClient.Plans.fetchAll();
创建订阅#
JSONObject request = new JSONObject();
request.put("plan_id", "<plan_id>");
request.put("customer_notify", 1);
request.put("total_count", 6);
request.put("start_at", 1495995837);
JSONArray addons = new JSONArray();
JSONObject addon = new JSONObject();
JSONObject item = new JSONObject();
item.put("name", "Delivery charges");
item.put("amount", 30000);
item.put("currency", "INR");
addon.put("item", item);
addons.put(addon);
request.put("addons", addons);
Subscription subscription = razorpayClient.Subscriptions.create(request);
通过 ID#获取订阅
Subscription subscription = razorpayClient.Subscriptions.fetch("<subscription_id>");
获取所有订阅#
List<Subscription> listSubscriptions = razorpayClient.Subscriptions.fetchAll();
取消订阅#
Subscription subscription = razorpayClient.Subscriptions.cancel("<subscription_id>");
创建一个Add-on#
JSONObject request = new JSONObject();
request.put("quantity", 2);
JSONObject addonItem = new JSONObject();
addonItem.put("name", "Extra Chair");
addonItem.put("amount", 30000);
addonItem.put("currency", "INR");
request.put("item", addonItem);
Addon addon = razorpayClient.Subscriptions.createAddon(<subscription_id>, request);
通过 ID#
获取 Add-onAddon addon = razorpayClient.Addons.fetch(<addon_id>);
删除一个Add-on#
razorpayClient.Addons.delete(<addon_id>);
付款Links#
创建订阅Link#
JSONObject lineItem = new JSONObject();
lineItem.put("amount", 100); // Note: The amount should be in paise.
lineItem.put("name", "name_invoice");
JSONArray lineItems = new JSONArray();
lineItems.put(lineItem);
JSONObject request = new JSONObject();
request.put("line_items", lineItems);
request.put("date", 1480768625); // Timestamp in seconds
request.put("currency", "INR");
request.put("sms_notify", "0");
Invoice invoice = razorpayClient.Invoices.create(request);
Fetch Subscription Link by ID#
Invoice invoice = razorpayClient.Invoices.fetch("invoice_id");
获取所有订阅Links#
List<Invoice> invoices = razorpayClient.Invoices.fetchAll();
取消订阅Link#
Invoice invoice = razorpayClient.Invoices.cancel("invoice_id");
创建发票#
JSONObject lineItem = new JSONObject();
lineItem.put("amount", 100);
lineItem.put("name", "name_invoice");
JSONArray lineItems = new JSONArray();
lineItems.put(lineItem);
JSONObject request = new JSONObject();
request.put("line_items", lineItems);
request.put("date", 1480768625);
request.put("currency", "INR");
request.put("sms_notify", "0");
Invoice invoice = razorpayClient.Invoices.create(request);
通过 ID# 获取发票
Invoice invoice = razorpayClient.Invoices.fetch("invoice_id");
Fetch all Invoices#
List<Invoice> invoices = razorpayClient.Invoices.fetchAll();
Cancel an Invoice#
Invoice invoice = razorpayClient.Invoices.cancel("invoice_id");
创建虚拟账户#
JSONObject request = new JSONObject();
JSONArray receiverTypeArray = new JSONArray();
receiverTypeArray.put("bank_account");
request.put("receiver_types", receiverTypeArray);
JSONObject notes = new JSONObject();
notes.put("receiver_key", "receiver_value");
request.put("notes", notes);
request.put("description", "First Virtual Account");
VirtualAccount virtualAccount = razorpayClient.VirtualAccounts.create(request);
通过 ID# 获取虚拟帐户
VirtualAccount virtualAccount = razorpayClient.VirtualAccounts.fetch("
<virtual_account_id>");
获取所有虚拟账户#
List<VirtualAccount> virtualAccountList = razorpayClient.VirtualAccounts.fetchAll();
Close a Virtual Account#
VirtualAccount virtualAccount = razorpayClient.VirtualAccounts.close("
<virtual_account_id>");
List Payments for a Virtual Account#
List<Payment> paymentList =
razorpayClient.VirtualAccounts.fetchPayments("virtual_account_id");
创建传输#
JSONObject request = new JSONObject();
JSONArray transfers = new JSONArray();
JSONObject transfer = new JSONObject();
transfer.put("amount", <amount>);
transfer.put("currency", "INR");
transfer.put("account", <account_id>);
transfers.put(transfer);
request.put("transfers", transfers);
List<Transfer> transfers = razorpayClient.Payments.transfer("payment_id", request);
创建直接传输#
JSONObject request = new JSONObject();
request.put("amount", <amount>);
request.put("currency", "INR");
request.put("account", <account_id>);
Transfer transfer = razorpayClient.Transfers.create(request);
编辑传输#
JSONObject request = new JSONObject();
request.put("on_hold", true);
Transfer transfer = razorpayClient.Transfers.edit(request);
获取银行转帐付款#
BankTransfer bankTransfer = razorpayClient.Payments.fetchBankTransfers("payment_id");
获取付款的所有转账#
List<Transfers> transfers = razorpayClient.Payments.fetchAllTransfers("payment_id");
Fetch a Transfer by ID#
Transfer transfer = razorpayClient.Transfers.fetch("transfer_id");
获取所有传输#
List<Transfer> transfers = razorpayClient.Transfers.fetchAll();
创建转账撤销#
JSONObject request = new JSONObject();
request.put("amount", <amount>);
Reversal reversal = razorpayClient.Transfers.reversal("transfer_id", request);
Webhooks#
验证 Webhook 签名# 您可以验证收到的 webhook 的签名:
Utils.verifyWebhookSignature("<webhook_payload>", "<webhook_signature>", "
<webhook_secret>");
实用程序#
验证付款签名# 您可以使用 Utils class 验证收到的签名以响应使用订单 API.
进行的付款JSONObject options = new JSONObject();
options.put("razorpay_order_id", "<order_id>");
options.put("razorpay_payment_id", "<payment_id>");
options.put("razorpay_signature", "<signature>");
Utils.verifyPaymentSignature(paymentResponse, "<key_secret>");
自定义请求# 您可以使用客户端发出自定义 API 请求。例如,这里是如何向 /payments/path 端点发出自定义请求。
Entity response = razorpayClient.Payments.post("path", JSONObject requestBody);
示例应用程序
集成和运行示例应用程序#
使用 Razorpay Checkout Integration 创建 Checkout 表单。
在表单提交中接受 razorpay_payment_id 参数。
运行捕获付款的捕获代码。
编辑里面的key index.ftl.
在 server.yml 文件。请参阅生成 API 密钥以了解如何生成密钥。
使用以下命令构建测试应用程序:
mvn clean install
运行 使用以下命令测试应用程序:
java -jar target/razorpay-java-testapp-1.0-SNAPSHOT.jar server server.yml
注:
如果如果您想 re-use 这是您的最终代码,请按照以下步骤操作:
编辑 index.ftl 文件 中的密钥。
编辑