Skip to main content

Documentation Index

Fetch the complete documentation index at: https://opendocs.xft.xin/llms.txt

Use this file to discover all available pages before exploring further.

版本说明

版本号更新时间更新说明
1.0版本2020年11月27日支付SDK
1.1版本2021年02月26日新增交易记录查询SDK

场景介绍

适用于在移动端APP中集成统一移动收银台功能。APP调用SDK调用支付模块,APP会跳转到收银台中完成支付,支付完后跳回商户APP内,最后展示支付结果。并可以查看支付记录列表及详情情况。 目前统一支付支持手机系统有:IOS(苹果)、Android(安卓) demo

集成开发步骤(安卓)

1. 复制 xftsdk.aar 到 libs 目录

2. 修改 build.gradle 文件配置

defaultConfig {
    applicationId "com.changsha.apps.xxx.xxx"
    minSdkVersion 21
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar","*.aar"])
    api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:5.5.3'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
    implementation 'org.greenrobot:eventbus:3.1.1'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.3'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
    implementation 'me.jessyan:autosize:1.1.2'
    implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
    implementation 'com.contrarywind:Android-PickerView:4.1.8'
}

3. 初始化 SDK

创建自定义 application 继承 application 并配置生效。
XftPay.initPaySDK(this, appID, "https...");
目录下创建 .wxapi 包,包下创建 WXPayEntryActivity 类(包名和类名必须与示例一致)。
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
    private IWXAPI api;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_result);
        api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);
        api.handleIntent(getIntent(), this);
    }
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        api.handleIntent(intent, this);
    }
    @Override public void onReq(BaseReq req) {}
    @Override
    public void onResp(BaseResp resp) {
        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle(R.string.app_tip);
            builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode)));
            builder.show();
        }
    }
}
混淆时需在混淆文件中添加:-keep class com.xft.android.pay.bean.** { *; }

4. 使用注意

安装 GenSignature.apk 通过包名获取应用签名并联系对接人员修改微信开发平台配置参数进行测试。

5. 支付接口请求参数

字段是否必选字段类型字段说明
app_idStringapp_id
merchant_codeString商户号
user_idString用户唯一标识
store_codeString门店编号
operator_idString操作员 id
limit_payString00-全部 01-限定不能使用信用卡支付
out_trade_noString商户订单号
channelString支付渠道
productString支付产品
client_ipString客户端调用的 IP
amountString支付金额(分)
subjectString订单标题
bodyString商品描述
descriptionString订单附加说明
notify_urlString交易通知地址
time_startString订单生成时间
time_expireString订单失效时间
sign_typeString签名类型
KeyString签名密钥

6. 请求示例

Rsp.Cashier cashier = new Rsp.Cashier();
cashier.setUser_id("55sjfrncjbe515415");
cashier.setApp_id("1260026915276718080");
cashier.setAmount("500");
cashier.setMerchant_code("1120100066003");
cashier.setSubject("测试项目");
cashier.setClient_ip("13.2.1.5");
cashier.setOut_trade_no("5854ffffss");
cashier.setBody("宁乡支付");
cashier.setProduct("WECHAT_APP");
cashier.setDescription("宁乡app微信支付");
cashier.setSign_type("MD5");
cashier.setKey("616D1AA11CCEADE0427294DA5E81FCBA");

7. 订单流水查询列表参数

字段是否必选字段类型字段说明
app_idStringapp_id
agentIdString渠道商编号
userIdString用户唯一标识
titleStrString标题文本
titleTextColorString标题文本颜色
titleBgColorString标题背景颜色
titleInfoStrString详情页标题
sign_typeString签名类型
keyString签名密钥
示例:
Rsp.OrderSelect orderSelect = new Rsp.OrderSelect();
orderSelect.setApp_id("969037206616276993");
orderSelect.setAgentId("212010016732");
orderSelect.setUserId("55sjfrncjbe515415");
orderSelect.setKey("6C7C97D68C7DB148DE678B4F5827D2F0");
orderSelect.setTitleBgColor("#2355df");
orderSelect.setTitleTextColor("#666666");
orderSelect.setTitleStr("测试(蓝色)");
XftPay.Jump(orderSelect);

集成开发步骤(iOS)

支付 SDK 示例

ZXMainController *vc = [[ZXMainController alloc] init];
vc.baseUrl = @"https://test-xlink.91xft.cn";
vc.md5Key = @"616D1AA11CCEADE0427294DA5E81FCBA";
vc.passDict = @{@"amount":self.field.text,@"description":@"测试商品",@"sub_app_id":@"wxd359xxxx7xxxa",@"app_id":@"12600269152exxx80",@"merchant_code":@"11201000xxxx",@"out_trade_no":randomNum,@"product":@"WECHAT_APP",@"client_ip":@"218.76.8.29",@"subject":@"测试商品",@"body":@"测试商品",@"sign_type":@"MD5",@"user_id":@"vdjfnsdjhuhhdh55456e245"};
[self.navigationController pushViewController:vc animated:YES];

订单流水查询 SDK

ZXOrderController *vc = [[ZXOrderController alloc] init];
vc.passColor = [UIColor redColor];
vc.baseUrl = @"https://test-xlink.91xft.cn";
vc.passDict = @{@"app_id":@"1260021591438262272",
                @"agent_code":@"211010011071",
                @"user_id":@"vdjfnsdjhuhhdh55456e245"};
vc.key = @"6D2A95DCE2D1BB70554DA20A2E9876A8";
[self.navigationController pushViewController:vc animated:YES];

iOS 说明

  1. 使用 CocoaPods 安装依赖库:pod 'AFNetworking', pod 'WechatOpenSDK', pod 'MJRefresh'
  2. 在 AppDelegate 中初始化微信支付以及配置回调
  3. 在 plist 中加 LSApplicationQueriesSchemes 字段
  4. 调用 SDK 时只需将 framework 文件夹拖入项目中
订单流水查询:原支付 sdk 的基础上,在 other linker flags 中加上 -ObjC

SDK 包及示例

详见附件《统一移动收银台SDK包及示例(安卓).zip》