支付宝服务器开发语言,【笔记】来讲讲基于Android支付宝支付设计和开发方案...

[Asm] 纯文本查看 复制代码public class PayStateMachine {

/* all possible state of payment */

public enum PayState { PAY_INIT, PAY_GOT_CONTEXT, PAY_UPDATED_ORDER, PAY_APPLIED_

ID, PAY_ORDER_CREATED, PAY_SUCCEED, ERROR_OCCURRED}

/* errors may occurred during payment */

public enum PayError {

PAY_GET_CONTEXT_FAIL, PAY_UPDATE_ORDER_FAIL, PAY_APPLY_ID_FAIL, PAY_FAIL

}

private static PayStateMachine instance;

private PayState state;

private IOrder order;

private IPayment payment;

private PayStateMachine() {

}

public static PayStateMachine getInstance() {

if (instance == null) {

instance = new PayStateMachine();

}

return instance;

}

public void initPayment(IOrder order, IPayment payment) {

this.order = order;

this.payment = payment;

this.state = PayState.PAY_INIT;

}

public void startPay() {

changeState(PayState.PAY_INIT);

}

public void changeState(PayState state) {

onStateChanged(this.state, state);

}

public void reportError(PayError error, String detail) {

LogUtil.printPayLog("the error id is:" + error + " " + detail);

changeState(PayState.ERROR_OCCURRED);

}

private void onStateChanged(PayState oldState, PayState newState) {

LogUtil.printPayLog("oid state:" + oldState + " new state:" + newState);

this.state = newState;

handlePayStateChange();

}

private void handlePayStateChange() {

if (this.order == null || this.payment == null) {

LogUtil.printPayLog("Have not initiated payment");

return;

}

switch (this.state) {

case PAY_INIT:

order.getPayContext();

break;

case PAY_GOT_CONTEXT:

order.createOrder();

break;

case PAY_UPDATED_ORDER:

case PAY_APPLIED_ID:

case PAY_ORDER_CREATED:

payment.pay(order);

break;

case PAY_SUCCEED:

case ERROR_OCCURRED:

finishProcess();

break;

default:

LogUtil.printPayLog("state is not correct!");

finishProcess();

}

}

private void finishProcess() {

this.order = null;

this.payment = null;

this.state = PayState.PAY_INIT;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值