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

支付寶集成對於一些剛出來的同學來說確實很頭疼,因爲沒有公司的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) {
        // 支付結果碼
    }
}

恩,目前就這麼多吧,可能會有不對或者不足的地方,希望大家指出,我後期會做修改

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章