收银台

版本说明

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

场景介绍

适用于在移动端APP中集成统一移动收银台功能。

APP调用SDK调用支付模块,APP会跳转到收银台中完成支付,支付完后跳回到商户APP内,最后展示支付结果。并可以查看支付记录列表及详情情况。

目前统一支付支持手机系统有:IOS(苹果)、Android(安卓)

用户进入商户APP,选择商品下单、确认购买,进入支付环节。商户服务后台生成支付订单,签名后将数据传输到APP端。以统一支付提供的DEMO为例,流程图如下 如下图

集成开发步骤要求

一、 集成开发步骤要求 (安卓)

1、将xftsdk.aar复制到libs目录(没有可以在对应项目目录创建)

2、修改build.gradle文件配置

defaultConfig {
    applicationId "com.changsha.apps.xxx.xxx "
    minSdkVersion 21 //sdk最小支持15
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"
    multiDexEnabled true //此配置需要添加进来
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}    

    ………
//将SDK依赖添加可以是高版本(暂未上传Maven,需手动添加SDK依赖)
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 并配置自定义application生效。 (1).application中初始化sdK

XftPay.initPaySDK(this,appID,https……);

(2).目录下创建 .wxapi包,包下创建WXPayEntryActivity类 (注:包名和类名必须与示列一致),应用包名+ .wxapi. WXPayEntryActivity

public class WXPayEntryActivity  extends Activity implements IWXAPIEventHandler {
   ……
    private IWXAPI api; //copy
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_result);//根据自己业务需求
        api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);//copy
        api.handleIntent(getIntent(), this); //copy
    ……
    }
     ……
    @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) {
        Log.d("WXPayEntryActivity", "onPayFinish, errCode = " + resp.errCode);
        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通过包名 获取应用签名并联系对接人员修改微信开发平台配置参数进行测试(根据微信规定非已配置的app包名和签名无法拉起微信app支付,如若支付功能已上线则只能通过正式包打包签名进行测试,否则会影响正式环境支付)

5、请求参数及示例

5.1 支付接口请求参数如下:

app_id String app_id, 由系统统一分配
merchant_code String 商户号
user_id String 用户唯一标识(app登录时生成的用户id)
store_code String 门店编号
operator_id String 操作员 id
limit_pay String 00-全部 01-限定不能使 用信用卡支付 默认值 00
out_trade_no String 商户订单号
channel String 支付渠道,详细参考 支付渠道 channel 属性值
product String 支付产品,详细参考 支付产品 product 属性值,当支付类型为(微信,支付宝,银联)条码支付时非必传
client_ip String 客户端调用的 IP
amount String 支付金额,单位分
subject String 订单标题,该参数最长 32 个 Unicode
body String 商品描述信息,该参数最长为 255 个 Unicode 字符
description String 订单附加说明,最多 255 个 Unicode 字符
notify_url String 交易的通知地址
time_start String 订单生成时间,格式为 yyyyMMddHHmmss。 如 2009 年 12 月 25 日 9 点 10 分 10 秒表示为 20091225091010。 时区为 GMT+8 beijing。该时间取自商户服务器。 注:订单生成时间与超时时间需要同时传入才会生效
time_expire String 订单失效时间,格式为 yyyyMMddHHmmss。 如 2009 年 12 月 27 日 9 点 10 分 10 秒表示为 20091227091010。 时区为 GMT+8 beijing。该时间取自商户服务器。 注:订单生成时间与超时时间需要同时传入才会生效。 建议最短失效时间为 1 分钟
sign_type String 签名类型
Key String 签名密钥由系统分配

5.2 请求示例如下(新增UserId)

Rsp.Cashier cashier = new Rsp.Cashier();
cashier.setUser_id("55sjfrncjbe515415");//新增用户唯一标识(app自定义传入推荐用微信登录的用户标识/登录时生成的用户id)
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");

5.3订单流水查询列表请求参数如下:

app_id String app_id, 由系统统一分配
agentId String 渠道商编号
userId String 用户唯一标识
titleStr String 支付流水标题文本
titleTextColor String 标题文本颜色(全局)
titleBgColor String 标题背景颜色(全局)
titleInfoStr String 详情页面标题文本
sign_type String 签名类型
key String 签名密钥由系统分配

5.4订单流水查询列表接口请求示例如下

Rsp.OrderSelect orderSelect = new Rsp.OrderSelect();
orderSelect.setApp_id("969037206616276993");
orderSelect.setAgentId("212010016732");
orderSelect.setUserId("55sjfrncjbe515415");//用户唯一标识(与下单userId一致)
orderSelect.setKey("6C7C97D68C7DB148DE678B4F5827D2F0");
orderSelect.setTitleBgColor("#2355df");
orderSelect.setTitleTextColor("#666666");//
orderSelect.setTitleStr("测试(蓝色)");
XftPay.Jump(orderSelect);

二、 集成开发步骤要求 (iOS)

1、支付SDK说明

示例代码(支付:user_id新增):

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];
app_id String app_id, 由系统统一分配
Agent_code String 渠道商编号
User_id String 用户唯一标识
passColor String 标题文本颜色(全局)
key String 签名密钥由系统分配
    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];

一.支付SDK说明

1、 使用CocoaPods 安装第三方的依赖库pod 'AFNetworking' pod 'WechatOpenSDK' pod 'MJRefresh'

2、在Appdelegate中初始化微信支付以及配置回调

3、在plist中加LSApplicationQueriesSchemes 字段

4、调用SDK时只需将frameWork文件夹拖入项目中,用自带的modal 到ZXMainController 详情见Demo

二.订单流水查询SDK说明

1.原支付sdk的基础上,在other linker flags 中加上

-ObjC 使用详情见demo

统一支付SDK包及示例

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

results matching ""

    No results matching ""