向个人收银 (C2B 支付)
接口列表
SDK 支付
SDK
客户端
iOS 收银台组件

收银台 iOS 组件

关于 SDK

SDK 名称: 腾讯微卡收付通收银台 SDK

开发者:腾讯云计算(北京)有限责任公司

版本号: 1.0.0

主要功能: 用于帮助客户的 app 快速拉起支付功能,完成支付。

使用说明: 下载安装 SDK 到客户的 app ,传入对应的参数,可以拉起对应支付功能,完成支付。

个人信息处理规则: 腾讯微卡收付通收银台 SDK 个人信息保护规则 (opens in a new tab)

合规使用指南: 腾讯微卡收付通收银台 SDK 合规使用指南 (opens in a new tab)

准备工作

创建微信开放平台应用

接入前,要求接入方的 APP 先接入微信开放平台。由于微信开放平台审核有一定的时效(约 1-7 工作日),可以同步启动微信开放平台申请工作。申请过程中应用信息需客户端开发人员协助填写相关字段。

注册微信平台账号或使用已有的微信开放平台账号登录,参考以下流程完成接入:

1、创建应用

通过微信开放平台创建应用

2、提交审核

开发者提交应用创建后,需要提交审核,审核通过后才能正常使用

3、审核通过上线

审核通过后,开发者可将应用上线,上线后可以得到应用的 AppID,通过 APPID 可以使用微信开放平台的各项服务,例如微信登录、微信支付、微信分享、打开小程序等

申请页请查看:微信开放平台 - 移动应用开发 (opens in a new tab)

为什么我的应用需要接入微信开放平台?
应用需要获得跳转微信小程序、分享、支付等能力

我的应用是否需要上架应用市场?
需要,如不上架,会受微信部分能力限制,其中包括:

每天分享量受限制为 100 次,包括分享到会话和朋友圈
APP 跳转小程序的每天调用量受限制为 100 次
具体请参考微信开放平台 - 移动应用开发 (opens in a new tab)应用创建页。

同时移动应用需集成微信 Open SDK for iOS 1.8.6.1 及以上 (opens in a new tab) 用于支持打开微信小程序、分享等能力

兼容性(重要)

Objective-C 项目引入 framework 后,需设置 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES,否则 iOS 12.2 之前的 App 会崩溃。

iOS SDK 下载

腾讯微卡收付通收银台 SDK 提供方为腾讯云计算(北京)有限责任公司,其个人信息处理规则见腾讯微卡收付通收银台 SDK 个人信息保护规则 (opens in a new tab),合规使用说明见腾讯微卡收付通收银台 SDK 合规使用指南 (opens in a new tab)

SDK 下载: xcframework 下载地址:WecardPay.xcframework-v0.0.2.zip (opens in a new tab)

集成指南

  1. 下载上文提到的 WecardPay.xcframework-v0.0.2.zip,解压后得到 WecardPaySDK.xcframework 文件夹
  2. 打开 XCode 项目,打开 General 面板,将 WecardPaySDK.xcframework 拖动导入

调用代码说明

PaymentViewController 类负责处理支付流程,它必须要实现 WecardPayProtocol 协议来与微信小程序进行交互,并通过 WecardPay 启动支付。

WecardPayProtocol 需要实现的方法

WecardPayProtocol 协议中定义了一些方法,用于与微信小程序进行交互。在客户的 PaymentViewController 中实现这些方法,以便在支付流程中调用。

openWechatMiniProgram

openWechatMiniProgram(userName: String, path: String, version: String, completion: @escaping (Bool) -> Void)

该方法是 WecardPayProtocol 协议的一部分,用于打开微信小程序。

  • 参数:
    • userName: 指定小程序的原始 ID。
    • path: 小程序页面的路径。
    • version: 小程序的版本类型,可以是develop(开发版),trial(体验版),或者默认的release(正式版)。
  • 回调:
    • 一个异步回调completion,当小程序启动后,这个回调会被调用,并带有一个布尔值表示启动成功或失败。

shareWebPageToWechat

shareWebPageToWechat(title: String, description: String, thumbData: Data?, shareUrl: String, completion: @escaping (Bool) -> Void)

该方法是 WecardPayProtocol协议的一部分,用于分享网页到微信。

  • 参数:

    • title: 分享的标题。
    • description: 分享的描述。
    • thumbData: 分享的缩略图。
    • shareUrl: 分享的网页地址。
  • 回调:

    • 一个异步回调 completion,当分享完成后,这个回调会被调用,并带有一个布尔值表示分享成功或失败。

发起支付

WecardPay.openPayment
  • 描述: 方法用于在 PaymentViewController 中发起支付流程,并设置支付状态变更回调。
  • 参数:
    • from: 发起支付的视图控制器,通常是 self
    • payParameters: 包含支付所需信息的字典,例如:
      • OutOrderId: 商户订单号。
      • PayInfo: 微信支付所需的参数。
      • Type: SDK 使用类型,例如 C2B,B2B, 这里填写 C2B (C2B 支付)。
      • UniversalLink: 用于支付完成后跳转回 APP 的 Universal Link,如 https://www.example.com/example-app
    • completion: 支付结果的回调闭包。它接收一个 WecardPayResult 类型的参数,表示支付状态的字符串,可能的值包括:
      • USER_EXIT:用户退出,支付状态未知,需要主动查询。
      • SUCCESS:支付成功。
      • PAY_FAIL:支付失败。

swift

// PaymentViewController.swift
import UIKit
import WecardPay
 
class PaymentViewController: UIViewController, WecardPayProtocol {
    var payParameters: WecardPay.PayParameters?
    var callback: WecardPay.Callback?
 
    // 实现 WecardPayProtocol 需要的方法
    func openWechatMiniProgram(userName: String, path: String, version: String, completion: @escaping (Bool) -> Void) {
        let req = WXLaunchMiniProgramReq.object()
        req.userName = userName
        req.path = path
        var type: WXMiniProgramType = .release
        switch version {
            case "develop":
                type = .test
            case "trial":
                type = .preview
            default:
                break
        }
 
        req.miniProgramType = type
 
        WXApi.send(req, completion: completion)
    }
 
    override func viewDidLoad() {
        super.viewDidLoad()
        // 设置视图控制器的视图和其他初始化逻辑
 
        // 在适当的时机开始支付流程,例如在页面加载完成后,或者用户点击了一个按钮
        if let parameters = payParameters {
            WecardPay.openPayment(from: self, payParameters: parameters) { result in
                print("WecardPay.openPayment 支付结果:\(result)")
                // 确保在主线程上调用 UI 相关的操作
                DispatchQueue.main.async {
                    self.callback?(result)
                    self.navigationController?.popViewController(animated: true)
                }
            }
        }
    }
}
 

Objective-C

// PaymentViewController.h
#import <UIKit/UIKit.h>
#import "WecardPay.h"
 
@interface PaymentViewController : UIViewController <WecardPayProtocol>
 
@property (nonatomic, strong) WecardPayPayParameters *payParameters;
@property (nonatomic, copy) WecardPayCallback callback;
 
@end
 
// PaymentViewController.m
#import "PaymentViewController.h"
#import "WXApi.h"
 
@implementation PaymentViewController
 
// 实现 WecardPayProtocol 需要的方法
- (void)openWechatMiniProgramWithUserName:(NSString *)userName path:(NSString *)path version:(NSString *)version completion:(void (^)(BOOL))completion {
    WXLaunchMiniProgramReq *req = [WXLaunchMiniProgramReq object];
    req.userName = userName;
    req.path = path;
    WXMiniProgramType type = WXMiniProgramTypeRelease;
    if ([version isEqualToString:@"develop"]) {
        type = WXMiniProgramTypeTest;
    } else if ([version isEqualToString:@"trial"]) {
        type = WXMiniProgramTypePreview;
    }
 
    req.miniProgramType = type;
 
    [WXApi sendReq:req completion:^(BOOL success) {
        completion(success);
    }];
}
 
- (void)viewDidLoad {
    [super viewDidLoad];
    // 设置视图控制器的视图和其他初始化逻辑
 
    // 在适当的时机开始支付流程,例如在页面加载完成后,或者用户点击了一个按钮
    if (self.payParameters) {
        [WecardPay openPaymentFrom:self payParameters:self.payParameters completion:^(WecardPayResult *result) {
            NSLog(@"WecardPay.openPayment 支付结果:%@", result);
            // 确保在主线程上调用 UI 相关的操作
            dispatch_async(dispatch_get_main_queue(), ^{
                if (self.callback) {
                    self.callback(result);
                }
                [self.navigationController popViewControllerAnimated:YES];
            });
        }];
    }
}
 
@end

腾讯微卡收付通接口文档