微信开放平台: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; } } } }