【问题标题】:RazorPay Integration with React JS and Java applicationRazorPay 与 React JS 和 Java 应用程序集成
【发布时间】:2021-01-31 17:05:31
【问题描述】:

是否可以使用 reactjs(前端)和 Java 8(后端)将 Razorpay 集成到应用程序中。

在 razorpay 网站上,他们没有与 react js 应用程序集成的文档。

我是 reactjs 和支付网关集成的新手,所以如果有人从事 razorpay 与 reactjs 的集成,请提出任何好的方法/任何可用的文档。

或者,如果有人可以推荐任何易于与 REACTJS+JAVA 应用程序集成的好的支付网关。

谢谢!

【问题讨论】:

    标签: java reactjs payment-gateway razorpay


    【解决方案1】:

    为了处理 API JAVA 作为后端就足够了,对于带有 React 的前端,我们使用 JavaScript 编写 HTML。我们依靠 JavaScript 的力量来生成依赖于某些数据的 HTML,而不是增强 HTML 以使其与这些数据一起工作。增强 HTML 是其他 JavaScript 框架通常做的事情。

    所以要使用 API。 先决条件# Java 1.7 或更高版本

    安装# 您可以使用 Maven 或 Gradle 安装 Razorpay。

    马文# 在您的系统上下载并安装 Maven。

    从 GitHub 的发布部分下载最新的源代码 zip 文件。

    解压缩文件并将此依赖项添加到项目的项目对象模型 (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 密钥#

    使用适当的凭据登录您的仪表板。 选择要为其生成 API 密钥的模式(测试或实时)。 笔记: 您必须为测试和实时模式生成单独的 API 密钥。在测试模式下不使用真钱。 导航到设置 → API 密钥 → 生成密钥以生成所选模式的密钥。

    添加自定义标题# 笔记: 这是一个可选步骤。

    为请求添加自定义标头:

    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") 方法具有灵活的返回类型,具体取决于属性。

    获取所有付款#

    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>");
    

    创建一个插件#

    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# 获取插件

    Addon addon = razorpayClient.Addons.fetch(<addon_id>);
    

    删除插件#

    razorpayClient.Addons.delete(<addon_id>);
    

    支付链接#

    创建订阅链接#

    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");
    

    获取所有订阅链接#

    List<Invoice> invoices = razorpayClient.Invoices.fetchAll();
    

    取消订阅链接#

    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);
    

    网络钩子#

    验证 Webhook 签名# 您可以验证接收到的 webhook 的签名:

    Utils.verifyWebhookSignature("<webhook_payload>", "<webhook_signature>", " 
    <webhook_secret>");
    

    实用程序#

    验证付款的签名# 您可以使用 Utils 类来验证收到的签名以响应使用 Orders 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 结帐集成创建结帐表单。

    在表单提交中接受razorpay_payment_id参数。

    运行捕获代码以捕获付款。

    编辑 index.ftl.

    中的键

    server.yml 文件中添加您的 。请参阅生成 API 密钥了解如何生成密钥。

    使用以下命令构建测试应用程序:

    mvn clean install
    

    使用以下命令运行测试应用程序:

    java -jar target/razorpay-java-testapp-1.0-SNAPSHOT.jar server server.yml
    

    注意:

    如果您想将其重新用作您的最终代码,请按照以下步骤操作:

    编辑 index.ftl 文件中的键。 编辑 server.yml 文件中的 。在以下情况下使用实时键 使用应用程序接受实时付款。

    【讨论】:

    猜你喜欢
    • 2020-11-25
    • 2021-03-15
    • 1970-01-01
    • 2018-05-12
    • 2018-12-15
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多