java怎么实现A用户怎么在真正赚钱的微信公众号号付款给B用户

&&&java实现获取微信公众服务号消息微信服务号的发送被动响应消息,简单说就是小Q机器人由编辑于 12:11:26猜你喜欢0个牛币请下载代码后再发表评论//hellochat/hellochat/hellochat/hellochat/hellochat/.classpath/hellochat/hellochat/.project/hellochat/hellochat/.settings/hellochat/hellochat/.settings/.jsdtscope/hellochat/hellochat/.settings/org.eclipse.core.resources.prefs/hellochat/hellochat/.settings/org.eclipse.jdt.core.prefs/hellochat/hellochat/.settings/org.eclipse.wst.common.component/hellochat/hellochat/.settings/org.eclipse.wst.common.project.facet.core.xml/hellochat/hellochat/.settings/org.eclipse.wst.jsdt.ui.superType.container/hellochat/hellochat/.settings/org.eclipse.wst.jsdt.ui.superType.name/hellochat/hellochat/build/hellochat/hellochat/build/classes/hellochat/hellochat/build/classes/org/hellochat/hellochat/build/classes/org/liufeng/hellochat/hellochat/build/classes/org/liufeng/course/hellochat/hellochat/build/classes/org/liufeng/course/message/hellochat/hellochat/build/classes/org/liufeng/course/message/resp/hellochat/hellochat/build/classes/org/liufeng/course/message/resp/Article.class/hellochat/hellochat/src/hellochat/hellochat/src/org/hellochat/hellochat/src/org/liufeng/hellochat/hellochat/src/org/liufeng/course/hellochat/hellochat/src/org/liufeng/course/message/hellochat/hellochat/src/org/liufeng/course/message/resp精精精精原精精原原原原原原原精原原相关分享原精精原原原精原精最近下载&LV3&LV6&LV15&LV1&LV2&LV5&LV1&LV2&LV2&LV2最近浏览&LV23&LV3&LV2&LV2&LV4&LV14&LV8&LV15&LV2&LV5扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友当前位置:
多个微信公众号 共用同一个后台,要取用户的openid,怎么区分不同的公众号
猜你喜欢的文章
多个微信公众号 共用同一个后台,要取用户的openid,怎么区分不同的公众号
来源:网络整理&&&&&时间: 0:35:00&&&&&关键词:
关于网友提出的“ 多个微信公众号 共用同一个后台,要取用户的openid,怎么区分不同的公众号”问题疑问,本网通过在网上对“ 多个微信公众号 共用同一个后台,要取用户的openid,怎么区分不同的公众号”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 多个微信公众号 共用同一个后台,要取用户的openid,怎么区分不同的公众号
描述:微信开发springMVCmysql
项目需要实现的功能是:在后台配置过appid和secret的公众号才能登录系统。现在问题的是怎么将appid和secret对应公众号,能不能在后台取到公众号的appid,项目只提供一个URL并且不带参数(192.168.199.1/abc),或者其他方法可以对应的。
第一次弄微信公众号,各位大神指点一下!解决方案1:
必须有不一样的地方,微信是不管这个url从哪个公众号菜单点进来的(大概你想说的是这个吧,也就这个能跟你公众号绑上关系)
公众号菜单的url为啥一定要一样?一样的话,我管他从哪个公众号过来,也就多几个入口罢了
URL不一样还是有很多搞头的,搞个nginx在后台根据规则转发URL,在请求头加上标记什么的
或者自己在后台做解析然后转发,类似urlrewrite解决方案2:
公众号的appid不一样的,创建公众号表,设置公众号appid
用户绑定的时候用户表增加公众号id&就行&
以上介绍了“ 多个微信公众号 共用同一个后台,要取用户的openid,怎么区分不同的公众号”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4493549.html
上一篇: 下一篇:微信支付-公众号支付(java实现)
最近两周实现了调用接口使用微信进行支付的需求,包含公众号支付及扫码支付两种方式,由于微信文档写的较为简略,现将调用微信接口进行支付流程进行记录及分享。
本文旨在对公众号支付的实现流程进行介绍,即微信用户从公众号中点击链接进入商品h5页面,选择商品后点击支付按钮后弹出微信支付页面、输入支付密码、支付成功后跳转到全部商品页面的整个过程。微信扫码支付请参看后续文章。
首先,商户需申请微信公众号、微信商户号及微信支付权限。开发过程中需参照公众号及商户平台提供如下参数:
① appid:公众号id,登录微信公众号–开发–基本配置中获得;
② mch_id:收款商家商户号;
③ APP_SECRET:第三方唯一凭证密码;
④ key:收款商户后台进行配置,登录微信商户平台–账户设置–安全设置–api安全,设置32位key值。
登录微信公众号,进行开发相关设置:
① 获取用户基本信息(主要是openid)权限配置:微信公众平台–开发–接口权限–网页授权–网页授权域名(不接受IP地址,需通过ICP备案验证,不带http):
② 支付目录及测试白名单设置:微信公众平台–微信支付–开发配置,测试授权目录具体到最后一级。
获取用户openid,OpenID是公众号一对一对应用户身份的标识:
① 微信网页授权获取用户信息文档:。根据文档拼装url,引导用户在微信上点击该链接,获取用户openid等基本信息;
② 引导用户点击url(例如公众号推送该链接),形式如下:
各个参数需替换,含义如下:
REDIRECT_URI:重定向URL,可为商品列表页面或商品页面,用户授权成功即转到该URL指向页面
scope:snsapi_base和snsapi_userinfo两种,snsapi_base为用户静默授权,snsapi_userinfo需要用户进行授权确认,可以获得更多用户信息。本文选择后者
state:重定向后会带上此参数
③ 用户授权后,重定向的页面获得code参数(若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数redirect_uri?state=STATE ),官方对于code参数的说明如下:
code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
重定向页面对应controller中通过String code = getPara("code");获取code参数。
④ contoller中同时利用WxPayUtil中方法,调用微信接口,获取当前用户openid,将该openid存入session:
setSessionAttr("openid", (WxPayUtil.getOpenIdByCode(code)).get("openid"))11
用户选择商品点击付款,在商家提供h5页面确认支付对应controller中,进行统一下单,获得prepay_id(这里需要注意,订单金额转换成以分为单位)。统一下单的官方文档地址为:
//统一下单,返回xml,用return_code判断统一下单结果,获取prepay_id等预支付成功信息
String prePayInfoXml = WxPayUtil.unifiedOrder("WxPay", userOrder.getStr("orderNo"), (entity.getBigDecimal("orderMoney").multiply(new BigDecimal(100))).intValue(), WxPayUtil.getIpAddr(getRequest()), getSessionAttr("openid").toString())
//生成包含prepay_id的map,map传入前端
map = WxPayUtil.getPayMap(prePayInfoXml)
//将订单号放入map,用以支付后处理
map.put("orderNo",userOrder.getStr("orderNo"))
前端获得上一步中的map后,调用微信支付JSAPI,前端代码如下所示:
type="text/javascript"&
function payPublic(){
Common.AjaxSubmitBind("saveForm",function(){
saveIndex=Common.Loading("正在付款中");
},function(data){
prepay_id = data.prepay_
paySign = data.payS
appId = data.appId;
timeStamp = data.timeS
nonceStr = data.nonceS
packageStr = data.packageS
signType = data.signT
orderNo = data.orderNo;
callpay();
},function(errMsg,errCode){
Common.Alert(errMsg);
var prepay_
var appId;
var nonceS
var packageS
var orderNo;
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"timeStamp" : timeStamp,
"nonceStr"
: nonceStr ,
: packageStr,
"signType"
: signType,
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ) {
alert("交易成功");
window.location.href="${base}/test/paySuccess";
if (res.err_msg == "get_brand_wcpay_request:cancel") {
alert("交易取消");
window.location.href="${base}/test/cancel";
if (res.err_msg == "get_brand_wcpay_request:fail") {
alert("支付失败");
window.location.href="${base}/test/fail";
function callpay(){
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
onBridgeReady();
用户完成支付,后台等待微信支付回调,进行支付成功后操作:
① 用户输入密码完成支付。后台回调地址(统一下单中设定的notify_url)接收微信支付结果,对支付结果进行判断并进行对应操作:
public void notify(){
System.out.print("微信支付回调获取数据开始");
HttpServletRequest request = getRequest();
String resXml = WxPayUtil.getNotifyResult(request);
renderText(resXml, "text/xml");
相关工具及常量类如下:
① WxPayUtil类(支付工具类):
public class WxPayUtil {
private static Logger logger = Logger.getLogger(WxPayUtil.class);
* 根据code获取openid
* IOException
public static Map&String,Object& getOpenIdByCode(String code) throws IOException {
HttpPost httppost = new HttpPost("https://api.weixin.qq.com/sns/oauth2/access_token");
String reqEntityStr = "appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
reqEntityStr = reqEntityStr.replace("APPID", WxPayConstants.APPID);
reqEntityStr = reqEntityStr.replace("SECRET", WxPayConstants.APP_SECRET);
reqEntityStr = reqEntityStr.replace("CODE", code);
StringEntity reqEntity = new StringEntity(reqEntityStr);
httppost.setEntity(reqEntity);
CloseableHttpClient httpclient = HttpClients.createDefault();
CloseableHttpResponse response = httpclient.execute(httppost);
String strResult = EntityUtils.toString(response.getEntity(), Charset.forName("utf-8"));
JSONObject jsonObject = new JSONObject(strResult);
Map&String,Object& map = new HashMap&String,Object&();
map.put("openid",jsonObject.get("openid"));
map.put("access_token",jsonObject.get("access_token"));
map.put("refresh_token",jsonObject.get("refresh_token"));
* 根据统一下单返回预支付订单的id和其他信息生成签名并拼装为map(调用微信支付)
* prePayInfoXml
public static Map&String,Object& getPayMap(String prePayInfoXml){
Map&String,Object& map = new HashMap&String,Object&();
String prepay_id = getXmlPara(prePayInfoXml,"prepay_id");
String timeStamp = String.valueOf((System.currentTimeMillis()/1000));
String nonceStr = getNonceStr().toUpperCase();
String packageStr = "prepay_id=" + prepay_
String signType = "MD5";
String paySign =
"appId=" + WxPayConstants.APPID +
"&nonceStr=" + nonceStr +
"&package=prepay_id=" + prepay_id +
"&signType=" + signType +
"&timeStamp=" + timeStamp +
"&key="+ WxPayConstants.KEY;
paySign = ToolMD5.MD5Encode(paySign,"").toUpperCase();
map.put("appId",WxPayConstants.APPID);
map.put("timeStamp",timeStamp);
map.put("nonceStr",nonceStr);
map.put("packageStr",packageStr);
map.put("signType",signType);
map.put("paySign",paySign);
map.put("prepay_id",prepay_id);
* 修改订单状态,获取微信回调结果
public static String getNotifyResult(HttpServletRequest request){
String inputL
String notifyXml = "";
String resXml = "";
while ((inputLine = request.getReader().readLine()) != null){
notifyXml += inputL
request.getReader().close();
} catch (Exception e) {
logger.debug("xml获取失败:" + e);
e.printStackTrace();
System.out.println("接收到的xml:" + notifyXml);
logger.debug("收到微信异步回调:");
logger.debug(notifyXml);
if(ToolString.isEmpty(notifyXml)){
logger.debug("xml为空:");
String appid = getXmlPara(notifyXml,"appid");;
String bank_type = getXmlPara(notifyXml,"bank_type");
String cash_fee = getXmlPara(notifyXml,"cash_fee");
String fee_type = getXmlPara(notifyXml,"fee_type");
String is_subscribe = getXmlPara(notifyXml,"is_subscribe");
String mch_id = getXmlPara(notifyXml,"mch_id");
String nonce_str = getXmlPara(notifyXml,"nonce_str");
String openid = getXmlPara(notifyXml,"openid");
String out_trade_no = getXmlPara(notifyXml,"out_trade_no");
String result_code = getXmlPara(notifyXml,"result_code");
String return_code = getXmlPara(notifyXml,"return_code");
String sign = getXmlPara(notifyXml,"sign");
String time_end = getXmlPara(notifyXml,"time_end");
String total_fee = getXmlPara(notifyXml,"total_fee");
String trade_type = getXmlPara(notifyXml,"trade_type");
String transaction_id = getXmlPara(notifyXml,"transaction_id");
String localSign =
"appid=" + appid +
"&bank_type=" + bank_type +
"&cash_fee=" + cash_fee +
"&fee_type=" + fee_type +
"&is_subscribe=" + is_subscribe +
"&mch_id=" + mch_id +
"&nonce_str=" + nonce_str +
"&openid=" + openid +
"&out_trade_no=" + out_trade_no +
"&result_code=" + result_code +
"&return_code=" + return_code +
"&time_end=" + time_end +
"&total_fee=" + total_fee +
"&trade_type=" + trade_type +
"&transaction_id=" + transaction_id +
"&key=" + WxPayConstants.KEY;
localSign = ToolMD5.MD5Encode(localSign,"").toUpperCase();
System.out.println("本地签名是:" + localSign);
logger.debug("本地签名是:" + localSign);
logger.debug("微信支付签名是:" + sign);
if(!sign.equals(localSign) || !"SUCCESS".equals(result_code) || !"SUCCESS".equals(return_code)){
System.out.println("验证签名失败或返回错误结果码");
logger.error("验证签名失败或返回错误结果码");
resXml = "&xml&" + "&return_code&&![CDATA[FAIL]]&&/return_code&" + "&return_msg&&![CDATA[FAIL]]&&/return_msg&" + "&/xml& ";
System.out.println("支付成功");
logger.debug("公众号支付成功,out_trade_no(订单号)为:" + out_trade_no);
resXml = "&xml&" + "&return_code&&![CDATA[SUCCESS]]&&/return_code&" + "&return_msg&&![CDATA[OK]]&&/return_msg&" + "&/xml& ";
return resX
* 获取32位随机字符串
public static String getNonceStr(){
String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
StringBuilder sb = new StringBuilder();
Random rd = new Random();
for(int i = 0 ; i & 32 ; i ++ ){
sb.append(str.charAt(rd.nextInt(str.length())));
return sb.toString();
* 插入XML标签
public static StringBuilder setXmlKV(StringBuilder sb,String Key,String value){
sb.append("&");
sb.append(Key);
sb.append("&");
sb.append(value);
sb.append("&/");
sb.append(Key);
sb.append("&");
* 解析XML 获得名称为para的参数值
public static String getXmlPara(String xml,String para){
int start = xml.indexOf("&"+para+"&");
int end = xml.indexOf("&/"+para+"&");
if(start & 0 && end & 0){
return null;
return xml.substring(start + ("&"+para+"&").length(),end).replace("&![CDATA[","").replace("]]&","");
* 获取ip地址
public static String getIpAddr(HttpServletRequest request) {
InetAddress addr = null;
addr = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
return request.getRemoteAddr();
byte[] ipAddr = addr.getAddress();
String ipAddrStr = "";
for (int i = 0; i & ipAddr. i++) {
if (i & 0) {
ipAddrStr += ".";
ipAddrStr += ipAddr[i] & 0xFF;
return ipAddrS
② 常量类(根据商户信息进行设置):
public class WxPayConstants {
public static String APPID = "";
public static String APP_SECRET = "";
public static String MCH_ID = "";
public static String KEY
public static String TRADE_TYPE_JS = "JSAPI";
public static String NOTIFY_URL = "";
Java微信支付全教程demo【公众号支付】
微信公众号开发《五》基于Java实现微信支付(公众号支付)简单教程
微信公众号支付开发-JAVA版DEMO
手把手教你--JAVA微信支付(公众号支付JSAPI)
微信公众号支付开发全过程(java版)
java微信公众号支付案例
微信公众号支付开发
微信公众号支付Java DEMO
微信公众号支付开发步骤Java(超详细)
没有更多推荐了,微信公众号支付 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 13时,
微信公众号支付的总体其实很简单,大致就分为三步。第一步需要获取用户授权;第二步调用统一下单接口获取预支付id;第三步H5调起微信支付的内置的js。
代码片段(3)
1.&[代码]第一步需要获取用户授权;&&&&
//获取openId
HttpClientUtil util = HttpClientUtil.getInstance();
Map&String, String& map = new HashMap&String, String&();
map.put("appid", WxPayConfig.APPID);
map.put("secret", WxPayConfig.APPSECRET);
map.put("code", code);
map.put("grant_type", WxPayConfig.GRANT_TYPE);
String returnStr = util.doPostRetString("https://api.weixin.qq.com/sns/oauth2/access_token", null,map);
logger.info("returnStr:[" + returnStr + "]");
AccessToken at = JSON.parseObject(returnStr, AccessToken.class);
AccessToken.java
public class AccessToken {
private String access_
private String expires_
private String refresh_
public String getAccess_token() {
return access_
public void setAccess_token(String access_token) {
this.access_token = access_
public String getExpires_in() {
return expires_
public void setExpires_in(String expires_in) {
this.expires_in = expires_
public String getRefresh_token() {
return refresh_
public void setRefresh_token(String refresh_token) {
this.refresh_token = refresh_
public String getOpenid() {
public void setOpenid(String openid) {
this.openid =
public String getScope() {
public void setScope(String scope) {
this.scope =
public String getUnionid() {
public void setUnionid(String unionid) {
this.unionid =
public String toString() {
return "AccessToken [access_token=" + access_token + ", expires_in="
+ expires_in + ", refresh_token=" + refresh_token + ", openid="
+ openid + ", scope=" + scope + ", unionid=" + unionid + "]";
2.&[代码]第二步调用统一下单接口获取预支付id;&&&&
//统一下单
WxPaySendData data = new WxPaySendData();
data.setAppid(WxPayConfig.APPID);
data.setAttach("微信支付");
data.setBody("微信公众号支付");
data.setMch_id(WxPayConfig.MCHID);
data.setNonce_str(nonceStr);
data.setNotify_url(WxPayConfig.NOTIFY_URL);
data.setOut_trade_no(tradeNo);
data.setTotal_fee((int)(fee*100));//单位:分
data.setTrade_type("JSAPI");
data.setSpbill_create_ip(ip);
data.setOpenid(at.getOpenid());
String returnXml = UnifiedorderService.unifiedOrder(data,WxPayConfig.KEY);
WxPayReturnData reData = new WxPayReturnData();
XStream xs1 = new XStream(new DomDriver());
xs1.alias("xml", WxPayReturnData.class);
reData = (WxPayReturnData) xs1.fromXML(returnXml);
UnifiedorderService.java
public class UnifiedorderService {
private final static Logger logger = LoggerFactory.getLogger(UnifiedorderService.class);
public static String unifiedOrder(WxPaySendData data,String key){
//统一下单支付
String returnXml =
//生成sign签名
SortedMap&Object,Object& parameters = new TreeMap&Object,Object&();
parameters.put("appid", data.getAppid());
parameters.put("attach", data.getAttach());
parameters.put("body", data.getBody());
parameters.put("mch_id", data.getMch_id());
parameters.put("nonce_str", data.getNonce_str());
parameters.put("notify_url", data.getNotify_url());
parameters.put("out_trade_no", data.getOut_trade_no());
parameters.put("total_fee", data.getTotal_fee());
parameters.put("trade_type", data.getTrade_type());
parameters.put("spbill_create_ip", data.getSpbill_create_ip());
parameters.put("openid", data.getOpenid());
parameters.put("device_info", data.getDevice_info());
logger.info("SIGN:"+WxSign.createSign(parameters,key));
data.setSign(WxSign.createSign(parameters,key));
XStream xs = new XStream(new DomDriver("UTF-8",new XmlFriendlyNameCoder("-_", "_")));
xs.alias("xml", WxPaySendData.class);
String xml = xs.toXML(data);
logger.info("统一下单xml为:\n" + xml);
HttpClientUtil util = HttpClientUtil.getInstance();
returnXml = util.doPostForString("https://api.mch.weixin.qq.com/pay/unifiedorder", null, xml);
logger.info("返回结果:" + returnXml);
} catch (Exception e) {
e.printStackTrace();
return returnX
public class WxSign {
private static String characterEncoding = "UTF-8";
@SuppressWarnings("rawtypes")
public static String createSign(SortedMap&Object,Object& parameters,String key){
StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序)
Iterator it = es.iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
String k = (String)entry.getKey();
Object v = entry.getValue();
if(null != v && !"".equals(v)
&& !"sign".equals(k) && !"key".equals(k)) {
sb.append(k + "=" + v + "&");
sb.append("key=" + key);
String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();
public static String getNonceStr() {
Random random = new Random();
return MD5Util.MD5Encode(String.valueOf(random.nextInt(10000)), "UTF-8");
public static String getTimeStamp() {
return String.valueOf(System.currentTimeMillis() / 1000);
3.&[代码]第三步H5调起微信支付的内置的js&&&&
//H5调起支付
attr.addAttribute("appId", reData.getAppid());
attr.addAttribute("timeStamp", WxSign.getTimeStamp());
attr.addAttribute("nonceStr", reData.getNonce_str());
attr.addAttribute("package", "prepay_id="+reData.getPrepay_id());
attr.addAttribute("signType", "MD5");
SortedMap&Object,Object& signMap = new TreeMap&Object,Object&();
signMap.put("appId", reData.getAppid());
signMap.put("timeStamp", WxSign.getTimeStamp());
signMap.put("nonceStr", reData.getNonce_str());
signMap.put("package", "prepay_id="+reData.getPrepay_id());
signMap.put("signType", "MD5");
logger.info("PaySIGN:"+WxSign.createSign(signMap,WxPayConfig.KEY));
attr.addAttribute("paySign", WxSign.createSign(signMap,WxPayConfig.KEY));
function getUrlParam(name) {
//构造一个含有目标参数的正则表达式对象
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
//匹配目标参数
var r = window.location.search.substr(1).match(reg);
//返回参数值
if (r != null)
return unescape(r[2]);
function onBridgeReady() {
var appId = getUrlParam('appId');
var timeStamp = getUrlParam('timeStamp');
var nonceStr = getUrlParam('nonceStr');
var Package = getUrlParam('package');
var signType = getUrlParam('signType');
var paySign = getUrlParam('paySign');
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId" : appId,//"wx0ec43b", //公众号名称,由商户传入
"timeStamp" : timeStamp,//"", //时间戳,自1970年以来的秒数
"nonceStr" : nonceStr,//"e61463f8efacccfbbb444", //随机串
"package" : Package,//"prepay_id=u802345jgfjsdfgsdg888",
"signType" : signType,//"MD5", //微信签名方式:
"paySign" : paySign,//"70EABB79628FBCAFADD89" //微信签名
}, function(res) { // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回
ok,但并不保证它绝对可靠。
//alert(res.err_msg);
if (res.err_msg == "get_brand_wcpay_request:ok") {
alert("支付成功");
if (res.err_msg == "get_brand_wcpay_request:cancel") {
alert("交易取消");
if (res.err_msg == "get_brand_wcpay_request:fail") {
alert("支付失败");
function callPay() {
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady,
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
onBridgeReady();
开源中国-程序员在线工具:
相关的代码(1)
7回/2649阅
2楼:墨-眉 发表于
3楼:x7LoveLin 发表于
httpUtil 没给出。
4楼:小崮 发表于
5楼:尚睿软件 发表于
我们做了很多微信支付的开发 &getBrandWCPayRequest 后面的json参数可以直接在后台生成,通过url传值不是很安全吧 也会影响性能
6楼:32Er43 发表于
7楼:laozhong__ 发表于
这个还是老版本的吧!
8楼:白石MAI 发表于
引用来自“laozhong__”的评论这个还是老版本的吧!是最新版本的,你可以去官网看看
9楼:番茄mc 发表于
10楼:laozhong__ 发表于
wx.chooseWXPay({
timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: '', // 支付签名随机串,不长于 32 位
package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: '', // 支付签名
success: function (res) {
// 支付成功后的回调函数
11楼:java9 发表于
引用来自“laozhong__”的评论回复8楼
wx.chooseWXPay({
timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: '', // 支付签名随机串,不长于 32 位
package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: '', // 支付签名
success: function (res) {
// 支付成功后的回调函数
});你的这个是js sdk 里面的,楼主的这个不需要使用sdk,也就是不需要加载js ,况且你这个使用的是sha1签名,新版使用md5签名。
12楼:laozhong__ 发表于
引用来自“laozhong__”的评论回复8楼
wx.chooseWXPay({
timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: '', // 支付签名随机串,不长于 32 位
package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: '', // 支付签名
success: function (res) {
// 支付成功后的回调函数
});引用来自“java9”的评论你的这个是js sdk 里面的,楼主的这个不需要使用sdk,也就是不需要加载js ,况且你这个使用的是sha1签名,新版使用md5签名。好吧
你们慢慢用,你们会收到邮件的!
13楼:chenkd 发表于
开源从代码分享开始
白石MAI的其它代码}

我要回帖

更多关于 微信打字赚钱平台30元 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信