Skip to content

Latest commit

 

History

History
137 lines (117 loc) · 4.82 KB

集成三方支付.md

File metadata and controls

137 lines (117 loc) · 4.82 KB

微信第三方支付

1.添加微信支付的jar包,然后在AndroidManifest.xml文件下添加如下:

 
2.在你的项目包下新建包名wxapi,再在包下新建类WXPayEntryActivity实现IWXAPIEventHandler接口。代码如下:

public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler{

    private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
    IWXAPI wxapi;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

//        TextView tv = new TextView(this);
//        tv.setText("支付结果");
//        setContentView(tv);

     
        wxapi= WXAPIFactory.createWXAPI(this, ApplictionLayer.APP_ID);
        wxapi.handleIntent(getIntent(), this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        wxapi.handleIntent(intent, this);
    }

    @Override
    public void onReq(BaseReq req) {
    }

    @Override
    public void onResp(BaseResp resp) {

        LogUtil.d(TAG, "Luke = " + resp.toString());

        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            int code = resp.errCode;
            switch (code) {
                case 0:
           Toast.makeText(WXPayEntryActivity.this, "支付成功!", Toast.LENGTH_LONG).show();
                    break;
                case -1:
                    Toast.makeText(WXPayEntryActivity.this, "支付失败", Toast.LENGTH_LONG).show();
                    finish();
                    break;
                case -2:
                    Toast.makeText(WXPayEntryActivity.this, "支付取消", Toast.LENGTH_LONG).show();
                    finish();
                    break;
                default:
                    Toast.makeText(WXPayEntryActivity.this, "支付失败", Toast.LENGTH_LONG).show();
                    setResult(RESULT_OK);
                    finish();
                    break;
            }
        }
    }
}
4.发起支付请求,各个数据从服务器获取:

    PayReq req = new PayReq();
        req.appId= data.getAppid();
        req.partnerId =data.getPartnerid();
        req.prepayId =data.getPrepayid();
        req.packageValue = data.getPackageX();
        req.nonceStr = data.getNoncestr();
        req.timeStamp =data.getTimestamp();
        req.sign = data.getSign();
        wxapi.sendReq(req);

支付宝支付

1.添加jar包。
2.发起支付宝支付:

 final String data = bean.getData();
            Runnable payRunnable = new Runnable() {
                @Override
                public void run() {
                    PayTask alipay = new PayTask(PayActivity.this);
					//data为服务器返回的支付信息
                    Map result = alipay.payV2(data, true);
                    Message msg = new Message();
                    msg.what = SDK_PAY_FLAG;
                    msg.obj = result;
                    mHandler.sendMessage(msg);
                }
            };
            // 必须异步调用
            Thread payThread = new Thread(payRunnable);
            payThread.start();
3.对支付结果处理:

 private Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case SDK_PAY_FLAG: {
                    PayResult payResult = new PayResult((Map) msg.obj);
                    /**
                     对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
                     */
                    String resultInfo = payResult.getResult();// 同步返回需要验证的信息
                    String resultStatus = payResult.getResultStatus();
                    // 判断resultStatus 为9000则代表支付成功
                    if (TextUtils.equals(resultStatus, "9000")) {
                        // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
						//和服务器进行判断,是否支付成功

                    } else {
                        // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                        Toast.makeText(PayActivity.this, "支付失败", Toast.LENGTH_SHORT).show();
                    }
                    break;
                }

            }
        }

    };