收银台 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)
集成指南
- 下载上文提到的 WecardPay.xcframework-v0.0.2.zip,解压后得到 WecardPaySDK.xcframework 文件夹
- 打开 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