2016 AppPlay的使用
2016-03-30 18:36
387 查看
前言
这是2016年写的一个appplay使用的demo。demo地址
正文
其实appplay支付代码不是很难,很容易理解。只是证书配置的时候要配置一次。具体流程和推送证书类似,也是在id那里去添加appplay功能,然后去生成cer证书。这个网上很多,就不再累赘了。直接说代码:
支付用的一个库是
#import <PassKit/PassKit.h>
主要使用的类:
PKPaymentAuthorizationViewController PKPaymentRequest
检查手机支不支持appplay:
if([PKPaymentAuthorizationViewController canMakePayments]) { [self appPlay]; } else { NSLog(@"不支持AppPlay支付"); }
我把支付的一套流程放在了一个方法里面,容易移植:
/** * 支付流程 */ - (void)appPlay{ //创建支付类 PKPaymentRequest *request = [[PKPaymentRequest alloc] init]; //支付的商品 PKPaymentSummaryItem *good1 = [PKPaymentSummaryItem summaryItemWithLabel:@"你要来一发吗" amount:[NSDecimalNumber decimalNumberWithString:@"10000.00"]]; PKPaymentSummaryItem *total = [PKPaymentSummaryItem summaryItemWithLabel:@"并不约" amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]]; request.paymentSummaryItems = @[ good1, total ]; //货币的单位 request.countryCode = @"CN"; request.currencyCode = @"CNY"; //所绑定的卡的类型 request.supportedNetworks = @[ PKPaymentNetworkMasterCard, PKPaymentNetworkVisa, PKPaymentNetworkChinaUnionPay ]; //merchant ID request.merchantIdentifier = @"merchant.com.testAppPlay"; //支付处理标准 request.merchantCapabilities = PKMerchantCapabilityEMV; //配送信息 request.requiredShippingAddressFields = PKAddressFieldPostalAddress | PKAddressFieldPhone | PKAddressFieldEmail | PKAddressFieldName; //创建用来显示支付信息的控制器 PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request]; paymentPane.delegate = self; [self presentViewController:paymentPane animated:YES completion:nil]; }
有几个属性要写:
1,货币的单位
2,所处的国家
3,所绑定得卡型
4,你的支付merchants
5,支持的处理标准
6, 配送信息
对于支付的结果和后台的交互,我们用两个代理可以获得:
//代理的回调方法 -(void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didAuthorizePayment:(PKPayment *)payment completion:(void (^)(PKPaymentAuthorizationStatus))completion{ //在这里服务器与银行和商家进行接口调用和支付将结果返回到这里 //我们根据结果生成对应的状态对象,根据状态对象显示不同的支付结构 //状态对象 //在这里了 为了测试方便 设置为支付失败的状态 //可以选择枚举值PKPaymentAuthorizationStatusSuccess (支付成功) PKPaymentAuthorizationStatus staus = PKPaymentAuthorizationStatusFailure; completion(staus); } //支付完成的代理方法 -(void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller { [controller dismissViewControllerAnimated:YES completion:nil]; NSLog(@"支付完成"); }
运行结果:
相关文章推荐
- Ruby on Rails在Ping ++ 平台实现支付
- 微信小程序-详解微信登陆、微信支付、模板消息
- 微信公众号支付(一)如何获取用户openId
- php银联网页支付实现方法
- php微信支付之APP支付方法
- 微信支付开发教程(一)微信支付URL配置
- Android支付宝支付设计开发
- Android调用微信登陆、分享、支付
- 第三方支付接口搜集(附下载)
- 支付金额对不上,找零时刻,货币运算
- 深圳罗湖区政府采购“网上商城”引入第三方比价功能
- 支付架构图
- 支付宝处理结果异常
- 关于微信支付IWXAPIEventHandler接口中onresp不能调用的问题
- 【纯干货】微信支付接入攻略—JAVA代码分享
- 中国移动应用内计费平台服务器接收通知接口示例代码
- 实现微信App支付---关于Android实现App支付时的注意事项(或者叫坑)
- 百度钱包新用户体验,送10元现金
- 解决工行MasterCard安全证书错误
- 思路问题,需要深刻反省