V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
caoyujia2000
V2EX  ›  微信

关于微信支付开发,记录一下

  •  
  •   caoyujia2000 · 2015-11-10 13:52:37 +08:00 · 2989 次点击
    这是一个创建于 3294 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有个小项目,需要用到微信支付,所以就开始鼓捣了,特此记录一下,查看了微信的官方开发文档, https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1 ,基本上按照这里的教程走,然后下载对应的 demo ,就可以把 demo 跑起来,注:在开发教程里 没有提及 OAuth2.0 网页授权回调页面域名的设置,在微信公众后台-开发者中心-网页服务-网页账号里没有设置的话, demo 页面会提示‘ redirect_url 参数错误‘。
    demo 跑起来后,就要根据自己的需求来做二次开发了,需求很简单,一个页面,上面有金额的入力框,和一个提交按钮,然点击提交按钮,唤出密码输入框,输入密码,完成一个支付流程。
    我这里是 PHP 版本的 demo ,采用的接口是 H5 网页端调起支付接口, demo 页中金额是固定的,提交按钮和初始化调用 JSAPI 的参数都在同一张页上,肯定不能实现我的需求,解决方法是分成 2 张页, A 页是 form 表单提交, B 页是初始化 JSAPI 接口参数,用以调用接口,于是问题出现了,当 A 页通过 POST 提交传递过来的参数 total_fee 无故消失了,在 B 页主要分成 3 个步骤,
    步骤 1 :网页授权获取用户 openid
    步骤 2 :使用统一支付接口,获取 prepay_id
    步骤 3 :使用 jsapi 调起支付
    调试发现,参数 total_fee 在执行步骤 1 之前是有的,但之后就消失了,好神奇,于是一番 google 后,也没能找到类似解决的方法,最后在请教了同行后方得意解决,需要把步骤 1 的操作移到 A 页去做,然后获得的 openid ,同样也通过 POST 提交到 B 页,继续步骤 2 ,步骤 3 的操作,这样就可以了。花了不少时间,特此记录下。
    第 1 条附言  ·  2015-11-11 14:02:06 +08:00
    今天又有新的收获,如果你想把 A 页 url 的参数传值到 B 页,需要使用 urlencode 把参数转换一下,不然会出现参数丢失的问题,就酱
    $urlAdd = urlencode('?a='.$_GET['a'].'&b='.$$_GET['b']);
    $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL.$urlAdd);
    Header("Location: $url");
    第 2 条附言  ·  2015-11-12 14:20:24 +08:00
    关于微信支付调试:官方 DEMO 里,有 2 行代码是被注释掉的,放开后,就知道具体出错的地方了!
    WeixinJSBridge.invoke(
    'getBrandWCPayRequest',
    <?php echo $jsApiParameters; ?>,
    function(res){
    //WeixinJSBridge.log(res.err_msg);
    //alert(res.err_code+res.err_desc+res.err_msg);
    if (res.err_msg == "get_brand_wcpay_request:ok") {
    alert("微信支付成功!");
    } else if (res.err_msg == "get_brand_wcpay_request:cancel") {
    alert("用户取消支付!");
    } else {
    alert(res.err_msg);
    alert("支付失败!");
    }
    }
    );
    今天一开始没有放开, android 一直报‘ get_brand_wcpay_request:fail ’,但 ios 是好的,很头疼,后来把这端代码放开后,就清楚了,具体是‘不允许跨号支付’的问题
    1 条回复    2015-11-10 14:22:17 +08:00
    pheyer
        1
    pheyer  
       2015-11-10 14:22:17 +08:00
    未来几周可能就用得到这个微信支付了,感谢 LZ 分享
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2841 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 06:41 · PVG 14:41 · LAX 22:41 · JFK 01:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.