无法使用“v1 / vault / credit-cards”在Paypal中存储信用卡

时间:2016-12-23 10:36:26

标签: ios paypal afnetworking paypal-sandbox

我正在使用Paypal保险库作为我的一个应用程序。我需要将信用卡存入保险库。我使用了paypal金库api( v1 / vault / credit-cards )。但它总是返回500.我也试过实际的信用卡,但没有得到积极的回应。我能够获得访问令牌,并在列表服务中获得成功响应。但是不能存储卡。 以下是我的代码:

请求参数:

   NSMutableDictionary *dicCC = [[NSMutableDictionary alloc]init];
            dicCC[@"payer_id"] = @"123345";
            dicCC[@"type"] = @"visa";
            dicCC[@"number"] = @"4427802641004797";
            dicCC[@"expire_month"] = [NSNumber numberWithInt:11];
            dicCC[@"expire_year"] = [NSNumber numberWithInt:2018];
            dicCC[@"first_name"] = @"Jack";
            dicCC[@"last_name"] = @"Sparrow";
            dicCC[@"cvv2"] = @"124";

            NSString *strWebService = [NSString stringWithFormat:@"https://api.sandbox.paypal.com/v1/vault/credit-cards"];
            AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

            // For HTTPBody with custom String format
            [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
            [manager.requestSerializer setValue:strAccessToken forHTTPHeaderField:@"Authorization"];

            [manager POST:strWebService parameters:dicCC progress:^(NSProgress * _Nonnull uploadProgress) {

            } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
                NSLog(@"%@",responseObject);
            } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
                NSLog(@"%@",error.description);
            }];

响应:

Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: internal server error (500)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x170233540> { URL: https://api.sandbox.paypal.com/v1/vault/credit-cards } { status code: 500, headers {
    "CORRELATION-ID" = 114a5415672f7;
    Connection = "close, close";
    "Content-Length" = 97;
    "Content-Type" = "application/json";
    Date = "Fri, 23 Dec 2016 10:26:10 GMT";
    "PROXY_SERVER_INFO" = "host=slcsbplatformapiserv3001.slc.paypal.com;threadId=1808";
    "Paypal-Debug-Id" = "114a5415672f7, 114a5415672f7";
    Server = Apache;
    "Set-Cookie" = "X-PP-SILOVER=name%3DSANDBOX3.API.1%26silo_version%3D1880%26app%3Dplatformapiserv%26TIME%3D3271253080%26HTTP_X_PP_AZ_LOCATOR%3D; Expires=Fri, 23 Dec 2016 10:56:10 GMT; domain=.paypal.com; path=/; Secure; HttpOnly, X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT";
    Vary = Authorization;
    "X-SLR-RETRY" = 500;
    "X-SLR-RETRY-API" = "/v1/vault/credit-cards";
} }, NSErrorFailingURLKey=https://api.sandbox.paypal.com/v1/vault/credit-cards, com.alamofire.serialization.response.error.data=<7b226e61 6d65223a 22494e54 45524e41 4c5f5345 52564943 455f4552 524f5222 2c226d65 73736167 65223a22 416e2069 6e746572 6e616c20 73657276 69636520 6572726f 72206861 73206f63 63757272 6564222c 22646574 61696c73 223a5b5d 7d>, NSLocalizedDescription=Request failed: internal server error (500)}

有人可以帮我解决这个问题吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

 private fun RequestGetCardID() {
        val token = "Bearer " + access_token;
        val external_customer_id = "u-" + M.getID(this@UpgradePlan)
        val card_number = binding!!.editCardnumber.text.toString().trim()
        val expiry_date = binding!!.editExpiry.text.toString().trim()
        val month = expiry_date.substring(0, 2)
        val year = expiry_date.substring(3)
        val cvv = binding!!.editCvv.text.toString().trim()
        val card_holder = binding!!.editCardname.text.toString().trim()
        val retrofitInterface = ApiServicePaypal.getClient().create(RetrofitInterface::class.java)
        retrofitInterface.getAuthentionCard(external_customer_id, card_number, "visa", month, year, cvv, card_holder, card_holder, token, "application/json").enqueue(object : Callback<AuthenticationCardModel> {
            override fun onResponse(call: Call<AuthenticationCardModel>?, response: retrofit2.Response<AuthenticationCardModel>?) {
                if (response != null) {
                    Log.e("response", response!!.body().toString())

                } else {

                    Log.e("response", response!!.errorBody().toString())
                }
            }

            override fun onFailure(call: Call<AuthenticationCardModel>?, t: Throwable?) {
                Log.e("response", t!!.message)
            }

        })

    }