Android微信支付流程及注意问题。

 微信开放平台:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 

 操作步骤:

1. 后台上传应用包名 和签名 (注意)

   签名生成 APK https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk

2.注册APPID

    final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);

    // 将该app注册到微信

    msgApi.registerApp("wxd930ea5d5a258f4f");

3. 调起支付

    IWXAPI api;

     PayReq request = new PayReq();

    request.appId = "wxd930ea5d5a258f4f";

    request.partnerId = "1900000109";

    request.prepayId= "1101000000140415649af9fc314aa427",;

    request.packageValue = "Sign=WXPay";

    request.nonceStr= "1101000000140429eb40476f8896f4c9";

    request.timeStamp= "1398746574";

    request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";

    api.sendReq(request);


4、支付结果回调

 注意名字:a。wxapi包路径中实现WXPayEntryActivity类  在WXPayEntryActivity类中实现onResp函数。

                   b。清单文件中类的配置信息。

0 成功 展示成功页面
-1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
-2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回APP。

5. 回调的类

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

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

    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_result);
        Log.i("微信支付", "微信回调操作。3333333");

        api = WXAPIFactory.createWXAPI(this, GlobalContants.App_ID);
        api.handleIntent(getIntent(), this);
    }

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

    @Override
    public void onReq(BaseReq baseReq) {

    }

    @Override
    public void onResp(BaseResp resp) {
        Log.i("微信支付", "微信回调操作。11111");
        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            switch (resp.errCode) {
                case 0:
                    String ordernumber = SharedPreferencesUtils.getStringData(WXPayEntryActivity.this, "ordernumber", null);
                    PayPublicActivity.getPayIntent().recycleChat(ordernumber); // 执行微信回调
                    break;
                case -1:
                    UIUtils.showToast("签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配!");
                    this.finish();
                    ActivityUtils.startActivity(this, PayPublicActivity.class);
                    break;
                case -2:
                    UIUtils.showToast("用户取消!");
                    this.finish();
                    ActivityUtils.startActivity(this, PayPublicActivity.class);
                    break;
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_39792615/article/details/80293040