Razorpay 集成。问题:请提供您的 api 密钥以进行身份​​验证

Posted

技术标签:

【中文标题】Razorpay 集成。问题:请提供您的 api 密钥以进行身份​​验证【英文标题】:Razorpay integration. Issue: Please provide your api key for authentication purposes 【发布时间】:2020-03-19 04:19:30 【问题描述】:

我正在将此 cURL 代码转换为 javascript

curl -u <YOUR_KEY_ID>:<YOUR_KEY_SECRET> \
-X POST https://api.razorpay.com/v1/customers \
-H "Content-Type: application/json" \
-d '
  "name": "Gaurav Kumar1"
  "email": "gaurav.kumar+1@example.com"
  "contact": "9123456781"
'
<script>
    function createCustomer() 

 console.log("createCustomer");
     const url="https://api.razorpay.com/v1/customers";
     fetch(url, 
        method: 'post',
        headers: 
 "x-api-key": "MY_KEY_ID",
       "content-type": "application/json",
    "cache-control": "no-cache"
        ,
        body: 
          "name": "Gaurav Kumar1",
            "email": "gaurav.kumar+1@example.com",
            "contact": "9123456781"
        
)
        .then(response => response.json())
        .then((data) => 
        console.log("data",data)
                  )


</script>

当我在邮递员中检查它时,它给出了正确的响应。但是当我在我的网站中使用它时,它给出了错误。

POST https://api.razorpay.com/v1/customers 401(未经授权) 数据:错误:code:“BAD_REQUEST_ERROR”,描述:“请提供您的 api 密钥以进行身份​​验证。”

【问题讨论】:

请阅读 razorpay 文档以了解如何传递 API 密钥。提示,它使用基本身份验证 Basic authentication with fetch?的可能重复 只是一个布朗尼点,在前端拥有您的授权令牌是一个严重的安全问题,您应该使用客户的详细信息调用您的服务器并让服务器为您调用剃须刀支付 API 更安全那样。 @pooja 你是怎么解决这个问题的? 【参考方案1】:

你缺少标题Authorization,看看这个我使用jquery AJAX,我从邮递员本身获取代码。

var settings = 
  "async": true,
  "crossDomain": true,
  "url": "https://api.razorpay.com/v1/customers",
  "method": "POST",
  "headers": 
    "Content-Type": "application/x-www-form-urlencoded",
    "Authorization": "Basic cnpwX2xpdmVfa2V5OmFfbG9uZ19wYXNzd29yZA==",
    "User-Agent": "PostmanRuntime/7.13.0",
    "Accept": "*/*",
    "Cache-Control": "no-cache",
    "Postman-Token": "f1c3919b-d2b8-4646-8ce0-caa60f2dfc3a,9dd079e3-ddab-41a8-8b1d-5ac53c00e07b",
    "Host": "api.razorpay.com",
    "accept-encoding": "gzip, deflate",
    "content-length": "59",
    "Connection": "keep-alive",
    "cache-control": "no-cache"
  ,
  "data": 
    "name": "Gaurav Kumar1",
    "email": "gaurav.kumar+1@example.com",
    "contact": "9123456781"
  


$.ajax(settings).done(function (response) 
  console.log(response);
);

请参考官方文档中生成授权密钥和秘密的步骤。

https://razorpay.com/docs/assets/images/generate-api-keys.gif

希望这会有所帮助:)

【讨论】:

你是如何生成授权的,我没有在 Razorpay 仪表板上找到它 我刚刚从文档中提取了这个,这应该可以帮助您生成所需的密钥 - razorpay.com/docs/api。还附上文档中的 GIF 以及生成相同的步骤。 razorpay.com/docs/assets/images/generate-api-keys.gif【参考方案2】:

这是我的代码。它工作完美

您必须通过以下方法对密钥和秘密进行编码:

key:key_secret

采用base64加密算法,

然后你将传递给你的授权令牌 api >>>

               fetch("https://api.razorpay.com/v1/orders", 
                 method: "POST",
                 headers: 
                   "Content-Type": "application/json",
                   Authorization: "Basic cnpwX3Rlc3RfMWNIbVVzREJRczhUVVY6WDRTRG95YVBqcHNTb3dac0JHQ29TdEs5",
                   Accept: "application/json",
                   "Cache-Control": "no-cache",
                   Host: "api.razorpay.com"
                 ,
                 body: JSON.stringify(
                   amount: 50000,
                   currency: "INR",
                   receipt: "receipt#1",
                   payment_capture: 1
                 )
               )
                 .then(response => response.json())
                 .then(responseJson => 
                   console.log("responseJson", responseJson);
                   var order = responseJson;
                 );

【讨论】:

从哪里获取授权令牌

以上是关于Razorpay 集成。问题:请提供您的 api 密钥以进行身份​​验证的主要内容,如果未能解决你的问题,请参考以下文章

在集成 Razorpay 支付网关期间没有支付?

Cordova 中的 Razorpay 集成 [RazorPayCheckout 未定义]

如何使用 Razorpay PHP API 获取付款详情?

android片段中的Razorpay回调不起作用

在 CMD(Firebase 云功能)中使用显示错误的 Razorpay 集成

Razorpay Django 与回调 URL 集成(CSRF 令牌丢失或不正确。)