大家好,欢迎来到IT知识分享网。
苹果内购,苹果支付,第三方支付
一、Apple Pay(苹果支付)
1.什么是Apple Pay
Apple Pay是一种支付方式
2.Apple Pay和微信支付、支付宝支付的区别
微信和支付宝的方式是有独立账户的,银行不会知道客户的支付的钱花到了哪里,但是Apple Pay是一种卡片,苹果直接帮银行刷卡,银行知道客户的支付的钱花到了哪里。
3.Apple Pay的类型
分为线上和线下两种
4.Apple Pay的线上使用
1)配置环境
a.登陆Apple Developer官网,选择证书
b. 在Identifiers当中选择要给账号进行苹果支付,也就是要给哪个应用添加苹果支付
c.选择Merchant IDS加入苹果支付
d.添加苹果支付的ID,注意苹果支付的ID前面必须是merchant.,后面可以随便写,最好写自己的项目名称
e.之后进行注册
f.此时这个应用就有了苹果支付ID
g.创建好了之后需要对这个账号进行一下编辑,选择支持苹果支付
h.需要选择一个CSR文件,相当于身份证,知道哪个电脑在进行使用
i.生成CSR文件,在钥匙串当中,选择证书助理,从证书颁发机构请求证书
输入自己的邮箱,然后存储到磁盘当中
此时在桌面就会生成一个CSR文件,然后在编辑支付ID的时候选择这个文件就可以了。
2)发送支付请求
a.导入PassKit框架
#import <PassKit/PassKit.h>
b.需要先对设备进行判断,支不支持苹果支付,如果不支持就return,如果支持就判断是否加入了银行卡,如果没有加入银行卡就跳转到钱包去绑定银行卡,如果绑定了银行卡就可以设置进行支付
//判断设备是否支持苹果支付 if (![PKPaymentAuthorizationViewController canMakePayments]) { //设备不支持,不让apple pay的支付按钮去显示 return; } NSLog(@"设备支持苹果支付"); //判断是否加入了银行卡 if (![PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkChinaUnionPay,PKPaymentNetworkVisa]]) { NSLog(@"未加入银联和Visa银行卡"); //进入设置银行卡的页面 [[[PKPassLibrary alloc]init]openPaymentSetup]; return; }
c.没有绑定银行卡的话就跳转到钱包页面进行绑定银行卡,绑定完成以后开始发送支付请求
//发送支付请求 PKPaymentRequest *req = [[PKPaymentRequest alloc]init]; //设置商户的id,谁要收钱 req.merchantIdentifier = @"merchant.StoreHanvonInput"; //设置国家代码 req.countryCode = @"CN"; //设置支持的卡的类型 req.supportedNetworks = @[PKPaymentNetworkChinaUnionPay,PKPaymentNetworkVisa]; //设置商户的支付标准 req.merchantCapabilities = PKMerchantCapability3DS; //设置货币单位 req.currencyCode = @"CNY"; //设置商品 NSDecimalNumber *num1 = [NSDecimalNumber decimalNumberWithString:@"0.1"]; PKPaymentSummaryItem *item1 = [PKPaymentSummaryItem summaryItemWithLabel:@"营养快线" amount:num1]; req.paymentSummaryItems = @[item1]; //显示支付页面 PKPaymentAuthorizationViewController *vc = [[PKPaymentAuthorizationViewController alloc]initWithPaymentRequest:req]; vc.delegate = self; [self presentViewController:vc animated:YES completion:nil]; #pragma mark - PKPaymentAuthorizationViewControllerDelegate // - (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller { NSLog(@"PKPaymentAuthorizationViewController"); //把支付的页面关闭 [self dismissViewControllerAnimated:YES completion:nil]; } //使用密码支付,开始进行支付调用 - (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didAuthorizePayment:(PKPayment *)payment completion:(void (^)(PKPaymentAuthorizationStatus status))completion { //把支付信息发送给服务器进行处理 //根据服务器返回的支付是否成功,进行不同的显示(调用block传不同的枚举) completion(PKPaymentAuthorizationStatusSuccess); }
d.也可以设置多个商品,默认付款页面显示的是最后一个商品,所以可以算出来总计在页面显示
//设置商品 NSDecimalNumber *num1 = [NSDecimalNumber decimalNumberWithString:@"0.1"]; PKPaymentSummaryItem *item1 = [PKPaymentSummaryItem summaryItemWithLabel:@"营养快线" amount:num1]; NSDecimalNumber *num2 = [NSDecimalNumber decimalNumberWithString:@"0.5"]; PKPaymentSummaryItem *item2 = [PKPaymentSummaryItem summaryItemWithLabel:@"可乐" amount:num2]; NSDecimalNumber *num3 = [NSDecimalNumber decimalNumberWithString:@"0.6"]; PKPaymentSummaryItem *item3 = [PKPaymentSummaryItem summaryItemWithLabel:@"苹果支付" amount:num3]; req.paymentSummaryItems = @[item1,item2,item3];
e.设置送货的必填内容
//设置发票收据必填内容 // req.requiredBillingContactFields = PKAddre req.requiredBillingAddressFields = PKAddressFieldAll; //设置送货的必填的内容 req.requiredShippingAddressFields = PKAddressFieldAll;
f.设置送货方式
//设置送货方式 PKShippingMethod *method = [PKShippingMethod summaryItemWithLabel:@"顺丰" amount:[NSDecimalNumber decimalNumberWithString:@"8"]]; method.identifier = @"shunfeng"; method.detail = @"24小时之内到达"; PKShippingMethod *method1 = [PKShippingMethod summaryItemWithLabel:@"圆通" amount:[NSDecimalNumber decimalNumberWithString:@"3"]]; method1.identifier = @"yuantong"; method1.detail = @"五环之内免费配送"; req.shippingMethods = @[method,method1];
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/152089.html