前者注:對接前導入微信SDK到項目中,微信支付沙箱環境支付不需要掃碼,自動支付成功。
對接流程:
- 獲取沙箱環境簽名密鑰,獲取方法:
下面獲取沙箱密鑰的示例代碼(in java):
-
public String getSandboxSignKey() throws Exception{ WXPay wxPay = new WXPay(this); try { Map<String, String> params = new HashMap<String, String>(); //商戶號 params.put("mch_id", this.getMchID()); //隨機數 params.put("nonce_str", WXPayUtil.generateNonceStr()); //此處密鑰使用正式環境的密鑰,加密方式只能使用MD5 params.put("sign", WXPayUtil.generateSignature(params, this.getKey(), WXPayConstants.SignType.MD5)); String strXML = wxPay.requestWithoutCert("/sandboxnew/pay/getsignkey", params, this.getHttpConnectTimeoutMs(), this.getHttpReadTimeoutMs()); Map<String, String> result = WXPayUtil.xmlToMap(strXML); System.out.println("retrieveSandboxSignKey:" + result); if ("SUCCESS".equals(result.get("return_code"))) { return result.get("sandbox_signkey"); } return null; } catch (Exception e) { System.out.println("獲取sandbox_signkey異常" + e.getMessage()); return null; } }
2.獲取到沙箱環境的密鑰後,替換正式的密鑰,調用對應的接口,沙箱環境的接口地址和正式環境的接口地址有所區別,參數都一樣,以下給出沙箱環境的各個api地址:
public static final String SANDBOX_MICROPAY_URL_SUFFIX = "/sandboxnew/pay/micropay";
public static final String SANDBOX_UNIFIEDORDER_URL_SUFFIX = "/sandboxnew/pay/unifiedorder";
public static final String SANDBOX_ORDERQUERY_URL_SUFFIX = "/sandboxnew/pay/orderquery";
public static final String SANDBOX_REVERSE_URL_SUFFIX = "/sandboxnew/secapi/pay/reverse";
public static final String SANDBOX_CLOSEORDER_URL_SUFFIX = "/sandboxnew/pay/closeorder";
public static final String SANDBOX_REFUND_URL_SUFFIX = "/sandboxnew/secapi/pay/refund";
public static final String SANDBOX_REFUNDQUERY_URL_SUFFIX = "/sandboxnew/pay/refundquery";
public static final String SANDBOX_DOWNLOADBILL_URL_SUFFIX = "/sandboxnew/pay/downloadbill";
public static final String SANDBOX_REPORT_URL_SUFFIX = "/sandboxnew/payitil/report";
public static final String SANDBOX_SHORTURL_URL_SUFFIX = "/sandboxnew/tools/shorturl";
public static final String SANDBOX_AUTHCODETOOPENID_URL_SUFFIX = "/sandboxnew/tools/authcodetoopenid";