欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

支付宝,微信支付方式集成

程序员文章站 2022-03-07 08:30:17
...

支付宝集成对于一些刚出来的同学来说确实很头疼,因为没有公司的pid,也没有办法测试,但其实只要接触你就

会发现,真的是很容易,有个朋友写了篇博客,我感觉是已经很详细了这里直接给出地址: 支付宝集成步骤

接下来介绍一下微信支付的集成:

如果你去看微信支付的官方文档的话,会发现,很多坑,很多东西不明白什么意思,我们一点一点来:

1.首先,你要去微信开放平台去注册应用,审核通过后会生成一个APPID,在【开放平台】中的栏目【管理中心 /

修改应用 / 修改开发信息】里面设置应用签名和应用包名,其中的应用签名需要我们去下载一个签名工具,在手

机或者模拟器上运行后在输入框输入包名,然后就可以生成相应的签名

2.下载jar包导入工程:下载地址如下: sdk下载地址

3.注册APPID

商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:

final IWXAPI api = WXAPIFactory.createWXAPI(context, null);
// 将该app注册到微信
api.registerApp(“这里填APPID”);

4.以下是吊起微信支付的关键代码:

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(req);

可能许多人会迷惑数据都是啥意思,其实不用去管,这些几乎都是服务端直接返回的字段,但那个sign需要我们自己去做一下二次签名

private String signNum(String mchKey,String partnerId, String prepayId, String packageValue, String nonceStr, String timeStamp) {
        String stringA =
                "appid=" + Constants.APP_ID
                        + "&noncestr=" + nonceStr
                        + "&package=" + packageValue
                        + "&partnerid=" + partnerId
                        + "&prepayid=" + prepayId
                        + "&timestamp=" + timeStamp;

        //微信key  格式这这样的 abcdl562asjlfd452dkadf1asdldfpd4
        //微信key的路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->**设置
        //这里key是后台给我们的,当然也可以写死
        String stringSignTemp = stringA + "&key=" + mchKey;

        return MD5.getMessageDigest(stringSignTemp.getBytes()).toUpperCase();
    }

5.这可能是最难的一步,因为文档给的太不清晰了,其实意思就是支付结果的回调只能写到特定类

(WXPayEntryActivity)里,而这个类又只能写在特定包(wxapi)下,而这个包又必须在指定路径下(根路径,也就是

applicationId “com.boju.bobo.boboproject”中的com.boju.bobo.boboproject下,微信的分享和三方登录

的回调也是这么做的),这下都做好了,就只要在类里做操作就好了,例子如下:

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
    private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
    private IWXAPI api;
    private static final String APP_ID = "your app id";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_result);
        api = WXAPIFactory.createWXAPI(this, 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 req) {
    }
    /**
     * 得到支付结果回调
     */
    @Override
    public void onResp(BaseResp resp) {
        // 支付结果码
    }
}

恩,目前就这么多吧,可能会有不对或者不足的地方,希望大家指出,我后期会做修改