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

标签 ios paypal afnetworking paypal-sandbox

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

请求参数:

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

谁能帮我解决这个问题?

谢谢,

最佳答案

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

        })

    }

关于ios - 无法使用 "v1/vault/credit-cards"在 Paypal 中存储信用卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41299782/

相关文章:

php - 持续时间后支付网关更改方法

ios - AFNetworking AFHTTPClient AFJSONRequestOperation 不使用 JSON 操作

ios - NSURLSession 错误处理

ios - 错误域=NSCocoaErrorDomain 代码=3840 "The operation couldn’ 使用 AFNetworking 完成

针对 PayPal 网站支付标准的移动优化结账

ios - 无法推送 View Controller

ios - MDCTextInputController 错误消息覆盖输入的文本

ios - Swift CoreData 从 JSON 创建或更新实体

javascript - 在 checkout.js 上禁用 Paypal 机器人后消息传递 - 如何关闭 Debug模式

ios - RxSwift 中的两种方式绑定(bind)