(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() {
//调用成功,等待接收交易结果的广播
}
});