附录A


(Android调用代码示例)

A1.1.1 初始化:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // 服务初始化
        PaymentService.getInstance().init(this);
    }
}

发起交易: 两种调用方式不要同时使用,请使用其中一个

A1.1.2 以广播方式接收交易结果

Request request = new Request();
request.appType = "00"; // 应用类型
request.transType = "00"; // 交易类型
request.amount = 1L; // 交易金额, 单位: 分
request.appId = getPackageName(); // 业务软件包名, 必填
Gson gson = new Gson();
String jsonStr = gson.toJson(request);
PaymentService.getInstance().callPayment(request, new PaymentService.PaymentCallback() {
        @Override
        public void callFail() {
            // 1.调用失败,需要重新初始化后再调用
            PaymentService.getInstance().init(getApplication());
            // 2.提示用户:交易失败请重试
            // 3.如果反复失败请检查系统是否已安装了“收银台更新”应用
        }

        @Override
        public void callSuccess() { 
             //调用成功,等待接收交易结果的广播
        }
    }); 

通过Broadcastreceiver接收交易结果:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 注册广播接收者或者静态注册广播接收者都可以
    IntentFilter filter = new IntentFilter();
    filter.addAction("sunmi.payment.action.result");
    registerReceiver(receiver, filter);
} 
@Override
protected void onDestroy() {
    super.onDestroy();
    if (receiver != null) {
        unregisterReceiver(receiver); // 反注册
    }
}
private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals("sunmi.payment.action.result")) {
            String jsonStr = intent.getStringExtra("response");
            if(TextUtils.isEmpty(jsonStr)){
                // error: result is null
                return;
            }
            Gson gson = new Gson();
            Response response = gson.fromJson(jsonStr, Response.class);
            switch (response.resultCode){
                case "T00"://交易成功
                    // 通过response获取支付结果相关信息
                    break;
                default:
                    // 交易失败
                    // resultMsg表示失败原因的文字描述,可用于显示或者记录。
                    String resultMsg = response.resultMsg;
                    // show msg...
                    break;
            }
        }
    }
}; 

A1.1.3 Jar包与类文件:

A1.1.4 接口调用重连机制:

// 重连机制
String jsonStr = gson.toJson(request);
PaymentService.getInstance().callPayment(request, new PaymentService.PaymentCallback() {
        @Override
        public void callFail() {
            // 1.调用失败,需要重新初始化后再调用
            PaymentService.getInstance().init(getApplication());
            // 2.提示用户:交易失败请重试
            // 3.如果反复失败请检查系统是否已安装了“收银台更新”应用
        }

        @Override
        public void callSuccess() { 
             //调用成功,等待接收交易结果的广播
        }
    });