首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zuora支付方法/信用卡api从java客户端返回90000011,但从邮递员返回成功响应

Zuora支付方法/信用卡api从java客户端返回90000011,但从邮递员返回成功响应
EN

Stack Overflow用户
提问于 2020-08-26 15:36:20
回答 1查看 45关注 0票数 0

我正在将zuora apis与我的应用程序集成在一起。以下是我通过以下步骤使用的3个apis:

步骤1请求身份验证令牌

代码语言:javascript
复制
        Service api (Test)-  https://rest.apisandbox.zuora.com/oauth/token

            Request Headers - Content-Type:application/x-www-form-urlencoded
               Authorization:Basic YWYzNTg5ZWMtNTFmMC00YTc2LWFlZjEtYjk0YzZmYWE0Y2ViOlJDdGV5OGlTWFFUc00xQytTPTFYWD1POE9tRWM1c0FBWVBaaE5vV24=

请求正文- grant_type:client_credentials

响应Body -{ "access_token":"41947f41d664437a98a9da38a293c89d","token_type":“承载”,"expires_in":3598,"scope":"entity.a083d63b-b3f5-8626-f793-65cec903f9ca platform.write service.events.read service.events.write service.genesis.read service.genesis.write service.notifications.read service.notifications.write service.usage.delete service.usage.update service.usage.write tenant.41231 user.2c92c094738e5b090173902066c201ba","jti":"41947f41d664437a98a9da38a293c89d“}

使用来自身份验证令牌响应的access_token或JTI值,并将其作为Authorization: Bearer传递给headers参数

第2步:-申请hmac-用于付款的签名

代码语言:javascript
复制
        Service api (Test) - https://rest.apisandbox.zuora.com/v1/hmac-signatures

            Request Headers - Content-Type:application/json
Authorization:Bearer 41947f41d664437a98a9da38a293c89d

        Request Body - {
                                            "accountKey": "A00000485",
                                            "method": "POST",
                                            "uri": "https://rest.apisandbox.zuora.com/v1/payment-methods/credit-cards"

}

代码语言:javascript
复制
            Response Body - {
                                  "signature": "MDgzN2ZkYjAzOTQ5NmQ5NDQyZjc5YTU3NjUwMDgxOGIxNTY3YWM2Mw==",
                                    "token": "C41mzDTudB2uc0Jc6vwrhQGvwq3JTxsF",
                                   "success": true
                                    }

Make Payment header中需要添加签名asSignature:MDgzN2ZkYjAzOTQ5NmQ5NDQyZjc5YTU3NjUwMDgxOGIxNTY3YWM2Mw==需要在Make Payment header中添加Token:C41mzDTudB2uc0Jc6vwrhQGvwq3JTxsF

第3步:-申请付款-

服务Api - https://apisandbox-api.zuora.com/rest/v1/payment-methods/credit-cards

Headers参数-主机:apisandbox-api.zuora.com Signature:MDgzN2ZkYjAzOTQ5NmQ5NDQyZjc5YTU3NjUwMDgxOGIxNTY3YWM2Mw== Token:C41mzDTudB2uc0Jc6vwrhQGvwq3JTxsF内容类型:应用/json来源:www.test.gov.uk缓存控制:无缓存

代码语言:javascript
复制
            Request Parameters – {
                    "defaultPaymentMethod": true,

"cardHolderInfo":{"addressLine1":"77 Fallon Glen","addressLine2":"","zipCode":"94020",“州”:“加利福尼亚”,“电话”:"4155551234",“国家”:“美国”,"cardHolderName":"Bill Thiebault",“城市”:"Fremont","email":"bill@testaddress.com"},"expirationMonth":"10","accountKey":"A00000485","creditCardType":"Visa","expirationYear":"2021","creditCardNumber":"4012888888881121","securityCode":"123“}

代码语言:javascript
复制
        Response Body – {
                     "success": true,
"**paymentMethodId": "2c92c0fb73ad855c0173b8c3316b36a1"**

}

当我使用postman使用相同的步骤时,我能够获得一个成功的响应。并且还生成了支付方法id。使用java客户端,前两个服务正在执行。但是当我点击支付方式/信用卡请求时出现问题,总是返回-{ "success“:false,"processId”:"84AD9CF25EC6623A","reasons“:{ "code”:90000011,"message“:”此资源受保护,请先登录“}}

如果我遗漏了什么,请给我提个建议。

EN

回答 1

Stack Overflow用户

发布于 2020-08-29 00:55:45

我没有设置头文件的值。在这里,我发布了我使用的方法-它包括Oauth令牌生成、->生成、hmac签名、->请求支付方法/信用卡。这对我很管用。

代码语言:javascript
复制
public void testSpringZuorPaymentCreditCardDifferent() {
        HTTPHelper httpHelper = null;
        String urlOAuthToken = "https://rest.apisandbox.zuora.com/oauth/token";
        String resp = null;
        try {
            
            
            String userNameAndPassword ="c59b646b-53c6-45fb-b9c3-d3ea0978033d" + ":" +"6VLNxA=Fbaorb7yqXO3YRaiS2a+WUfLtwOiVugLqQ";
            String authorizationHeaderValue = "Basic " + new String(Base64.encode(userNameAndPassword.getBytes()));
            
            
             httpHelper = new HTTPHelper(new URL(urlOAuthToken));
             Map<String, String> hdmp = new HashMap<String, String>();
                
            hdmp.put("Authorization", authorizationHeaderValue);
            hdmp.put("Content-Type", "application/x-www-form-urlencoded");
            httpHelper.setHeaders(hdmp);
            
            String req = "grant_type=client_credentials";
            
            System.out.println("REQUEST: " + req);
            resp = httpHelper.post(req, 60000, 60000);
            System.out.println("OAuth token response : " + resp);
                
             
        }catch(Exception e) {
            e.printStackTrace();
        }
        
        String[] arrOfStr = resp.split("\\W+");
        System.out.println("Bearer token---------" + arrOfStr[2]);
        
        
        String urlHmacSignatureUrl = "https://rest.apisandbox.zuora.com/v1/hmac-signatures";
    
        try {    
            
             httpHelper = new HTTPHelper(new URL(urlHmacSignatureUrl));
             Map<String, String> hdmp = new HashMap<String, String>();
                
            hdmp.put("Authorization", "Bearer " + new String(Base64.encode(arrOfStr[2].getBytes())));
            hdmp.put("Content-Type", "application/json");
            hdmp.put("cache-control", "no-cache");
            httpHelper.setHeaders(hdmp);
            String req = "{\n    \"accountKey\": \"A00000194\", \n    \"method\": \"POST\", \n    \"uri\": \"https://rest.apisandbox.zuora.com/v1/payment-methods/credit-cards\"\n}";
            
            System.out.println("REQUEST: " + req);
            resp = httpHelper.post(req, 60000, 60000);
            System.out.println("Hmac Signature  response : " + resp);
                
             
        }catch(Exception e) {
            e.printStackTrace();
        }
        
        
        arrOfStr = resp.split("\\W+");
        System.out.println("signature : - "+arrOfStr[2]);
           
        System.out.println("token : - "+arrOfStr[4]);
        
        
        String serverURI = "https://apisandbox-api.zuora.com/rest/v1/payment-methods/credit-cards";
        
        try {
            java.util.Map<String, String> headers = new java.util.HashMap<String, String>();
             httpHelper = new HTTPHelper(new URL(serverURI));
              headers.put("Content-Type", "application/json");
//            headers.put("Signature", arrOfStr[2]+"==");
              headers.put("Signature", new String(Base64.encode("YjM4MDY5MDliZmVkYmZiOGFkNmQ1YzFhYzFmNzMyOGI3NjExM2JlNQ==".getBytes())));
              headers.put("Token", new String(Base64.encode(arrOfStr[4].getBytes())));
              httpHelper.setHeaders(headers);
             
            String req = "{\r\n" + 
                    "   \"defaultPaymentMethod\":true,\r\n" + 
                    "   \"cardHolderInfo\":{\r\n" + 
                    "      \"addressLine1\":\"77 Fallon Glen\",\r\n" + 
                    "      \"addressLine2\":\"\",\r\n" + 
                    "      \"zipCode\":\"94020\",\r\n" + 
                    "      \"state\":\"California\",\r\n" + 
                    "      \"phone\":\"4155551234\",\r\n" + 
                    "      \"country\":\"USA\",\r\n" + 
                    "      \"cardHolderName\":\"Bill Thiebault\",\r\n" + 
                    "      \"city\":\"Fremont\",\r\n" + 
                    "      \"email\":\"bill@testaddress.com\"\r\n" + 
                    "   },\r\n" + 
                    "   \"expirationMonth\":\"10\",\r\n" + 
                    "   \"accountKey\":\"A00000485\",\r\n" + 
                    "   \"creditCardType\":\"Visa\",\r\n" + 
                    "   \"expirationYear\":\"2021\",\r\n" + 
                    "   \"creditCardNumber\":\"4012888888881121\",\r\n" + 
                    "   \"securityCode\":\"123\"\r\n" + 
                    "}";
        
            System.out.println("Req: " + req);  
            resp = httpHelper.post(req, 60000, 60000);
            System.out.println("Payment Method - Credit Cards: " + resp);
            
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63592716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档