银联支付

来源:互联网 发布:海康威视怎么样 知乎 编辑:程序博客网 时间:2024/05/14 16:35

银联移动支付平台地址:https://open.unionpay.com/ajweb/product/detail?id=3;下载SDK

1.导入SDK

SDK包括两个文件:UPPaymentControl.h文件和libPaymentControl.a,将SDK目录添加到工程:

Pasted Graphic.tiff

2.添加依赖

1使用UPPaymentControl需要添加CFNetwork.framework、SystemConfiguration.frameworklibzlibPaymentControl.a到工程中,添加后如下图:

Pasted Graphic 1.tiff

3.修改配置

3.1在工程info.plist设置中添加一个URL Types回调协议(UPPayDemo工程中使用“UPPayDemo”作为协议),用于在支付完成后返回商户客户端。


3.2在Xcode7.0之后的版本中进行http请求时,需要在工程对应的plist文件中添加NSAppTransportSecurity  Dictionary 并同时设置里面NSAllowsArbitraryLoads 属性值为 YES,具体设置可参照以下截图:

Pasted Graphic 3.tiff


3.3、添加协议白名单

在Xcode7.0之后的版本中进行开发,需要在工程对应的plist文件中,添加LSApplicationQueriesSchemes  Array并加入uppaysdk、uppaywallet、uppayx1、uppayx2、uppayx3五个item,具体设置可参考以下截图:

Pasted Graphic 2.tiff

或者直接添加如下代码到plist文件中:

<key>LSApplicationQueriesSchemes</key>

     <array>

<string>uppaysdk</string>

<string>uppaywallet</string>

<string>uppayx1</string>

<string>uppayx2</string>

<string>uppayx3</string>

     </array>

3.4 修改编译选项

选择工程targets——》build settings ->Linking->other linker flags

Pasted Graphic 4.tiff

如果该设置和其他第三方库冲突,或银联客户端莫名失败,则可尝试去掉-ObjC,改为-force_load+空格+控件路径,如:-force_load $(PROJECT_DIR)/xxxx/ libPaymentControl.a


3.5 凡是引入银联头文件UPPaymentControl.h,需要将源文件后缀.m改为.mm


4.支付流程

通过支付控件进行交易的流程如下图:

Pasted Graphic 5.pdf

流程图说明:

(1)用户在客户端中点击购买商品,客户端发起订单生成请求到商户后台;

(2)商户后台收到订单生成请求后,按照《手机控件支付产品接口规范》组织并推送订单信息至银联后台;

(3)银联后台接收订单信息并检查通过后,生成对应交易流水号(即TN),并回复至商户后台(应答要素:交易流水号等);

(4)商户后台接收到交易流水号(TN),将交易流水号返回至客户端;

(5)客户端通过交易流水号(TN)调用支付控件;

(6)用户在支付控件中输入相关支付信息后,由支付控件向银联后台发起支付请求;

(7)支付成功后,银联后台将支付结果通知给商户后台;

(8)银联后台同时也将支付结果通知支付控件;

(9)支付控件显示支付结果并将支付结果返回至客户端;

注: 客户端主要关注上述流程中(5)(9)部分的实现


5. 测试帐号

以下是测试用卡号、手机号等信息(此类信息仅供测试使用,不会发生真实交易)

测试账号1:

   招商银行借记卡:6226090000000048

    手机号:18100000000

    密码:111101

    短信验证码:123456(先点获取验证码之后再输入)

    证件类型:01身份证

    证件号:510265790128303

    姓名:张三


测试账号2:

   华夏银行贷记卡:6226388000000095

    手机号:18100000000

    CVN2:248

    有效期:1219

    短信验证码:123456(先点获取验证码之后再输入)

    证件类型:01身份证

    证件号:510265790128303

    姓名:张三


6.支付接口说明

6.1 支付接口

  - (BOOL)startPay:(NSString*)tn 

 fromScheme:(NSString*)schemeStr 

        mode:(NSString*)mode

   viewController:(UIViewController*)viewController


各个参数定义如下表:

参数名称

类型

含义

tn

NSString*

必填项;

交易流水号,商户后台向银联后台提交订单信息后,由银联后台生成并下发给商户后台的交易凭证; 

schemeStr

NSString *

必填项;

商户自定义协议,商户在调用支付接口完成支付后,用于引导支付控件返回而定义的协议,具体请参考4.4第二步中URL Type定义;

mode

NSString*

必填项;

接入模式,标识商户以何种方式调用支付控件,该参数提供以下两个可选值:

"00"代表接入生产环境(正式版本需要);

"01"代表接入开发测试环境(测试版本需要);

viewController

UIViewController*

必填项;

发起调用的视图控制器,商户应用程序调用银联手机支付控件的视图控制器;

返回值

BOOL

YES:调起支付控件成功;

NO:调起支付控件失败;


6.2 返回接口

- (void)handlePaymentResult:(NSURL*)url 

              completeBlock:(UPPaymentResultBlock)completionBlock;


各参数定义如下表:

参数名称

类型

含义

url

NSURL*

必填项;

支付结果url,传入后由SDK解析并通过completionBlock回调商户客户端;

completionBlock

Block

必填项;

商户客户端定义的结果处理方法,此方法包行codedata两个传入参数,本文档4.5第三部分将详细说明;


7 服务器接口

为了从服务器获得交易流水号,银联提供了一个模拟接口:

http://101.231.204.84:8091/sim/getacptn

原创粉丝点击