集成建行龍支付(2019.01.24更新)


近期,公司項目需要集成支付業務(支付寶,微信,建行龍支付),對於支付寶、及微信就不做總結了,畢竟網絡上參考資料太多了。今天主要說一下集成建行支付,在開始之前先吐槽一下建行的集成文檔那叫一個爛啊!好吧!不說了,開始啦!

以下對建行支付的字段進行介紹:分為必要及非必要的;

//必要字段
@property (copy, nonatomic) NSString *MERCHANTID ;//商戶代碼 (*重要的)
@property (copy, nonatomic) NSString *POSID;//商戶櫃台代碼(*重要的)
@property (copy, nonatomic) NSString *BRANCHID;//分行代碼(*重要的)
@property (copy, nonatomic) NSString *ORDERID;//訂單號:由商戶提供,最長30位
@property (copy, nonatomic) NSString *PAYMENT;//付款金額:由商戶提供,按實際金額給出
@property (copy, nonatomic) NSString *CURCODE;//幣種,01表示人民幣:01
@property (copy, nonatomic) NSString *TXCODE;//交易碼 由建行統一分配為520100
@property (copy, nonatomic) NSString *REMARK1;
@property (copy, nonatomic) NSString *REMARK2;
@property (copy, nonatomic) NSString *TYPE;//接口類型:1
@property (copy, nonatomic) NSString *PUB;//公鑰后30位(*重要的)
@property (copy, nonatomic) NSString *GATEWAY; //網關類型
@property (copy, nonatomic) NSString *CLIENTIP;//客戶端IP
@property (copy, nonatomic) NSString *REGINFO;//客戶注冊信息
@property (copy, nonatomic) NSString *PROINFO;//客戶購買的商品
@property (copy, nonatomic) NSString *REFERER; //商戶URL
//非必要字段
@property (copy, nonatomic) NSString *INSTALLNUM;//銀行代碼3
@property (copy, nonatomic) NSString *SMERID;//二級商戶代碼111
@property (copy, nonatomic) NSString *SMERNAME;//二級商戶名稱
@property (copy, nonatomic) NSString *SMERTYPEID;//二級商戶類別代碼112
@property (copy, nonatomic) NSString *SMERTYPE;//二級商戶類別名稱
@property (copy, nonatomic) NSString *TRADECODE;//交易類型代碼001
@property (copy, nonatomic) NSString *TRADENAME;//交易類型名稱
@property (copy, nonatomic) NSString *SMEPROTYPE;//商品類別代碼1
@property (copy, nonatomic) NSString *PRONAME;//商品類別名稱
@property (copy, nonatomic) NSString *THIRDAPPINFO; //客戶端標識
@property (copy, nonatomic) NSString *TIMEOUT;//訂單超時時間例:20161028101226
@property (copy, nonatomic) NSString *ISSINSCODE;//銀行代碼ICBC

 

另外還有一個特殊字段:THIRDAPPINFO,該字段有值的情況下,系統會優先調用app進行支付,在app未安裝的情況下才會進行H5頁面支付,將該字段值設置為你的應用程序的URL Schemes,否則支付成功后返回不到你的APP

@property (copy, nonatomic) NSString *THIRDAPPINFO; //客戶端標識

以上均是必須參與摘要的字段,將以上字段進行拼接得到需加密字符串String。打印如下:

MERCHANTID=123456789&POSID=000000000&BRANCHID=110000000&ORDERID=19991101234&PAYMENT=0.01&CURCODE=01&TXCODE=520100&REMARK1=&REMARK2=&TYPE=1&GATEWAY=&CLIENTIP=172.0.0.1&REGINFO=%u5C0F%u98DE%u4FA0&PROINFO=%u5145%u503C%u5361&REFERER=nihao

最后來說下MAC字段:MAC是由對String進行MD5加密得到;

//MD5加密
NSString *MAC = [MD5 MD5:String];

最后進行拼接完整字符串:在String后添加MAC字段值:如下:

https://ibsbjstar.ccb.com.cn/CCBIS/ccbMain?MERCHANTID=123456789&POSID=000000000&BRANCHID=110000000&ORDERID=19991101234&PAYMENT=0.01&CURCODE=01&TXCODE=520100&REMARK1=&REMARK2=&TYPE=1&GATEWAY=&CLIENTIP=&REGINFO=%u5C0F%u98DE%u4FA0&PROINFO=%u5145%u503C%u5361&REFERER=nihao&MAC=得到的加密值

 

在plist中進行配置

  URL types:設置URL Schemes

webView發起支付請求:

- (void)loadWithUrlStr:(NSString*)urlStr
{
    if (urlStr.length > 0) {
        dispatch_async(dispatch_get_main_queue(), ^{
            NSURLRequest *webRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]
                                                        cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                                    timeoutInterval:30];

            [self.webView loadRequest:webRequest];
        });
    }
}
#pragma mark   ============== webview相關 回調及加載 ==============
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{

    NSLog(@"%@",request.URL.absoluteString);
    
    //簡單的請求攔截處理
    NSString *strM = request.URL.absoluteString;
    
    if ([strM containsString:@"mbspay"]) {
        [[UIApplication sharedApplication]openURL:[NSURL URLWithString:strM] options:@{} completionHandler:nil];
        return NO;
    }
    return YES;
}

 

 

使用上面的H5支付方式,出現了一些設備調不出建行APP進行支付,建行又給了新的解決方案:使用SDK文檔。

請求參數跟上面的一樣,不再進行說明:

第一步:

把 iOS 包中的壓縮文件中以下文件(CCBNetPaySDK.framework,libWeChatSDK.a)拷貝到項目文件夾下,並導入到項目工程中(圖 1)。並檢查是否引用CCBNetPaySDK、libWeChatSDK.a (圖 2)(如果項目中已有引用微信的 libWeChatSDK.a,則無需再導入 libWeChatSDK.a 文件,項目中也不用導入 WXApi.h 和 WXApiObject.h 文件,直接應用 CCBNetPaySDK.framework 中的 WXApi.h 和 WXApiObject.h 文件即可,如圖 3)如需調用微信支付,則需另外配置 scheme (從微信開發平台注冊 app 得到的 APPID),配置 APP 跳轉后返回 scheme(商品參數THIRDAPPINFO,如圖4)

圖1:

 圖2:

 

圖3:

 第二步:調用SDK支付接口

  首先,在需要調用 CCBNetPaySDK 的文件中,增加頭文件引用。

  然后選擇相應的支付方法

  支付方法列表:CCBNetPay.h 類接口主要為商戶提供訂單龍支付支付功能。 

 

 

 

 

 

第三步:支付結果獲取及處理 

 

二、建行支付常見問題匯總

1、SDK 不能跳轉至手機銀行。 

2、支付完成不能跳轉回APP 

3、支付完成能跳轉回 APP,但是收不到返回信息。

 

4、Code=-1002 "unsupported URL" 

5、ERRORCODE = 0130Z110C100

  提示:密鑰有問題,請檢查密鑰。

 6、支付成功后點擊完成返回結果 code = -1

  提示:

是否為一訂單號支付成功后在短時間內再次支付。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM