上海讯联支付多用于pos机等的集成支付

下单支付理解

商家终端设备通过扫码枪或手工输入,获取用户支付宝或微信等客户端上的付款码,并同时将交易金额、支付条件信息(scanCodeId)等,发送到后台。正常情况下免密交易,后台会立即返回成功。仅当后台返回“09”处理中和接收超时情况,需要商家终端设备自动或手工调用查询订单接口,以确认交易是否成功


讯联数据支付使用流程

(1)       http://www.cardinfolink.com/   上海讯联数据找到云收银

(2)       商户选择申请流程获取客户端使用的各种信息

(3)       客户端进行集成

客户端实现流程

(1)项目添加CashierSdk包

(2)初始化

下单支付的情况

(3)获取顾客的微信或支付宝的客户端的付款码(通过扫描枪或其他设备扫描顾客的二维码获取付款码)

(4)调用下单支付功能

(5)当支付监听中监听到支付返回09或支付超时,需要我们自己调用查询的方法查看是否支付成功

实现例子:

public class MainActivityextends Activity {
private String  orderNum;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
orderNum=getIntent().getStringExtra("orderNum");//商品的订单号,非重复的
//1初始化
        init();
//走下单支付
    }
    
    private void init(){
     InitData initData = new InitData();
initData.mchntid =  "*********";// 商户号,由讯联数据分配
initData.inscd =  "*********";// 机构号,商户所属机构标识
initData.terminalid =  "*********";// 终端号
initData.isProduce = true;// 生产环境必须将此值设为TRUE
initData.signKey =  "*********";// 双方约定的签名密钥
// 初始化
CashierSdk.init(initData);
    }
    private void startPay(String scanCode){
     OrderData data=new OrderData();
txamt="0.1";//订单交易金额,格式如:10,10.1,10.11
orderNum=orderNum;//支付方的订单号,同一个商户下的订单号不可重复
scanCodeId=scanCode;//终端扫出来的字符串(付款码)
currency="156";//币种,目前仅支持人民币,固定值为“156
     CashierSdk.startPay(data,listener);
    }
    
listener=new CashierListener(){
 
@Override
public void onError(int arg0) {
}
 
@Override
public void onResult(ResultData resultData) {
if("PURC".equals(resultData.busicd)){
//代表下单时,设置的监听返回的结果
if("00".equals(resultData.respcd)){
//代表支付成功
}else{
//即没有支付成功:可能为09需要商户手动完成支付操作,或超时同样需要商户手动完成操作
//可以在此添加弹窗询问是否需要完成支付
startQy();//未成功支付时,查询订单手动完成订单支付
}
}else if("INQY".equals(resultData.busicd)){
//当扫描支付未成功时查询信息手动支付调用监听返回结果
if ("SUCCESS".equals(resultData.errorDetail)) {
//手动支付成功
} else {
//手动支付失败//仍然可以再次查询,手动支付
}
}
}
     
    };
    private void startQy(){
     OrderData data=new OrderData();
origOrderNum=orderNum;//支付方的原交易的订单号//支付方的订单号,同一个商户下的订单号不可重复
     CashierSdk.startQy(data,listener);//查询的方法
    }
}
退款流程:
基本与付款流程相同
 
public class MainActivityextends Activity {
private String  orderNum;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
orderNum=getIntent().getStringExtra("orderNum");//商品的订单号,非重复的
//1初始化
        init();
    }
    
    private void init(){
     InitData initData = new InitData();
initData.mchntid =  "**********"; // 商户号,由讯联数据分配
initData.inscd =  "*******"; // 机构号,商户所属机构标识
initData.terminalid =  "*******"; // 终端号
initData.isProduce = true;// 生产环境必须将此值设为TRUE
initData.signKey =  "*********"; // 双方约定的签名密钥
// 初始化
CashierSdk.init(initData);
    }
    private void startPay(String scanCode){
     OrderData data=new OrderData();
txamt="0.1";//订单交易金额,格式如:10,10.1,10.11
orderNum=orderNum;//支付方的订单号,同一个商户下的订单号不可重复
scanCodeId=scanCode;//终端扫出来的字符串(付款码)
currency="156";//币种,目前仅支持人民币,固定值为“156
     CashierSdk.startRefd(data,listener);
    }
    
listener=new CashierListener(){
 
@Override
public void onError(int arg0) {
}
 
@Override
public void onResult(ResultData resultData) {
if("REFD".equals(resultData.busicd)){
//代表退款时,设置的监听返回的结果
if("00".equals(resultData.respcd)){
//代表退款成功
}else{
//即没有退款成功:可能为09需要商户手动完成支付操作,或超时同样需要商户手动完成操作
//可以在此添加弹窗询问是否需要完成退款
startQy();//未成功退款时,查询订单手动完成订单支付
}
}else if("INQY".equals(resultData.busicd)){
//当扫描支付未成功时查询信息手动支付调用监听返回结果
if ("SUCCESS".equals(resultData.errorDetail)) {
//手动退款成功
} else {
//手动退款失败//仍然可以再次查询,手动支付
}
}
}
     
    };
    private void startQy(){
     OrderData data=new OrderData();
origOrderNum=orderNum;//支付方的原交易的订单号//支付方的订单号,同一个商户下的订单号不可重复
     CashierSdk.startQy(data,listener);//查询的方法
    }
}