首页 > 上网技巧 > 电脑小技巧 > 关于stripe支付 OC版关键代码

关于stripe支付 OC版关键代码

时间:2020-08-28 19:16 作者:QQ地带 我要评论

之前发过一点关于stripe的东西,连续有好几个朋友问到OC版的代码实现。下面就贴上我认为有点用的吧。
 
1、测试正式的key(和后台的相对应)
 
NSString const StripePublishableKey = @”pk_test_m8AhnFXlvawQ0Qhe4qbMiCVz”;//@”pk_test_8********“;
 
NSString const StripeLiveKey = @”pk_live_*********“;
// TODO: replace nil with your own value
 
// To set this up, check out https://github.com/stripe/example-ios-backend
// This should be in the format https://my-shiny-backend.herokuapp.com
// TODO: replace nil with your own value
NSString *const BackendChargeURLString = @”“;
 
// To learn how to obtain an Apple Merchant ID, head to https://stripe.com/docs/mobile/apple-pay
NSString *const AppleMerchantId = nil; // TODO: replace nil with your own value
 
2、卡片的维护(CVC和有效期等)
 
3、创建token,并通过该token创建charge提交后台用以支付
 
//验证
    if (![Stripe defaultPublishableKey]) {
        NSError *error = [NSError errorWithDomain:StripeDomain
                                             code:STPInvalidRequestError
                                         userInfo:@{
                                                    NSLocalizedDescriptionKey: @"Please specify a Stripe Publishable Key in Constants.m"
                                                    }];
        //直接回调到支付失败
        [self.delegate paymentViewController:self didFinish:error.localizedDescription];
        return;
    }
 
    //根据添加的card  创建token
    [self showLoding:@"Placing Order..."];
    STPCardParams *cardPar = [[STPCardParams alloc]init];
 
    。
    。    //省略的是拿到用户当前用于支付的卡片对象
    。
 
    //构建STPCardParams对象
    CardModel *cardModel = [CardModel initWithDictionary:selectedCard];
    cardPar.number = cardModel.cardNumber;
    cardPar.expMonth = cardModel.cardEM;
    cardPar.expYear = cardModel.cardEY;
    cardPar.cvc = cardModel.cardCVC;
 
    __weak typeof(self) ws = self;
    [[STPAPIClient sharedClient] createTokenWithCard:cardPar
                                          completion:^(STPToken *token, NSError *error) {
 
                                              if (error) {
                                                  [ws.delegate paymentViewController:ws didFinish:error.localizedDescription];
                                                  return ;
                                              }
                                              //根据刚得到的token创建charge
                                              [ws showLoding:@"Paying..."];
 
//调用                                            [ws.backendCharger createBackendChargeWithToken:token
                                                                                     completion:^(STPBackendChargeResult result, NSString *error) {
                                                                                         if (error) {
                                                                                             [ws.delegate paymentViewController:ws didFinish:error];
                                                                                             return;
                                                                                         }
                                                                                         [ws.delegate paymentViewController:ws didFinish:nil];
                                                                                     }];
                                          }];
//根据取得的token创建charge   并请求服务端(自己的)    委托自家服务端完成支付操作
- (void)createBackendChargeWithToken:(STPToken *)token completion:(STPTokenSubmissionHandler)completion {
 
    if (!BackendChargeURLString) {
        NSError *error = [NSError
                          errorWithDomain:StripeDomain
                          code:STPInvalidRequestError
                          userInfo:@{
                                     NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Good news! Stripe turned your credit card into a token: %@ \nYou can follow the "
                                                                 @"instructions in the README to set up an example backend, or use this "
                                                                 @"token to manually create charges at dashboard.stripe.com .",
                                                          token.tokenId]
                                     }];
        completion(STPBackendChargeResultFailure, error.localizedDescription);
        return;
    }
 
        //请求自家服务器接口进行支付,拿到返回值进行支付结果判断       
        //进行后续操作                                                                                                      }
                                                                }else{
                                                                    completion(STPBackendChargeResultFailure,result.message);
                                                                }
                                                            }];
 
}

标签: Stripe
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告