# 支付
*****
目前天马支持支付宝和微信两种支付方式。
组件开发者在需要调用移动支付时,可以按照下列步骤进行集成。
### 第一步:导入天马支付组件
```
pod 'TMPaySDK'
```
### 第二步:配置三方key
1:在TMBaseConfig.plist文件中的features选项下配置Wechat 微信key
2:在工程配置的info里面配置URL Types
![](https://box.kancloud.cn/57676695bc3993bfc4c238757da0a101_1434x1168.png)
注意这里的alipay选项的identifier必须配置为alipay
3:在info.plist文件中配置白名单:
```
<key>LSApplicationQueriesSchemes</key>
<array>
<string>wechat</string>
<string>weixin</string>
</array>
```
### 第三步:配置回调
引入支付头文件并在AppDelegate的openurl方法中配置回调
```
#import <TMPaySDK/TMPayManage.h>
[TMPayManage tm_handlePayResultWithOpenURL:url options:options];
```
### 第四步:调用支付方法
引入头文件并调用提供的支付方法:
/**
#import <TMPaySDK/TMPayManage.h>
/**
返回订单数据
@param orderInfo 订单数据
@param error 错误信息
*/
typedef void(^TMReturnOrderInfo)(id orderInfo, NSError *error);
/**
选择支付回调
@param payType 支付方式
@param orderInfoComplate 根据支付方式,从后台回去订单签名数据后回传订单数据
*/
typedef void(^SelectPayMethod)(TMPayType payType, TMReturnOrderInfo orderInfoComplate);
/**
支付结果回调
@param rawData 支付原始数据
@param message 支付结果描述
@param payStatus 支付结果状态
*/
typedef void(^PayComplate)(NSDictionary *rawData, NSString *message, TMPayStatus payStatus);
发起支付
@param paymethod 选择支付方式
@param paycomplate 支付结果回调
*/
+ (void)tm_startPayWithSelectPayMethod:(SelectPayMethod)paymethod
onPayComplate:(PayComplate)paycomplate;
注意事项:
1.在这次支付流程中,支付工具类首先会弹出支付方式选择页面让用户选择支付方式,待用户选择支付方式后会通过paymethod回调告诉用户选择结果并等待用户返回发起支付的订单数据;如果用户选择的取消即未选择支付方式,则会通过paycomplate回调告诉用户取消支付并直接结束支付流程。
2.支付工具类在接收到用户传入的订单数据后会根据传入的数据继续完成支付流程,并通过paycomplate回调告诉用户支付结果。
### 第五步:其他API
如果第四步不满足业务需求,可以调用下列方法自定义业务场景:
1.获取支持的支付平台:
```
#import <TMPaySDK/TMPayUtils.h>
/**
获取支持的支付平台回调
@param payPlatforms 支付平台数组
@param errorInfo 错误信息,如果不为nil,表示获取支持的支付平台错误或者暂无支持支付的平台
*/
typedef void(^TMPayPlatform)(NSArray *payPlatforms, NSString *errorInfo);
/**
获取支持的支付平台
@param payplatforms 平台回调
*/
- (void)tm_getPayPlatform:(TMPayPlatform)payplatforms;
```
2.根据 1 获取到的支付方式,向后台获取签名,然后调用支付方法发起支付:
```
#import <TMPaySDK/TMPayUtils.h>
/**
支付完成回调
@param payStatus 支付状态
@param rawData 原始数据
@param message msg
*/
typedef void(^TMPayFinish)(TMPayStatus payStatus, id rawData, NSString *message);
/**
发起支付
@param orderData 订单数据
@param type 支付类型
@param payFinishBlock 支付结果
*/
- (void)tm_payWithOrderData:(id)orderData type:(TMPayType )type payFinishBlock:(TMPayFinish)payFinishBlock;
```