微信支付开发总结(JSAPI支付)

微信支付开发总结

其实整体来讲做微信支付不难,由于第一次开发,前面一两天需要阅读它官方的开发文档和下载sdk看看它官方提供的源码,不得不吐槽一下,官方文档做的不是很好,有些问题讲得不够详细,并且提供的sandbox测试,一直出现网络超时的问题,只有让测试方用真实支付进行测试

首先是看微信的文档,了解它支付的整个流程

官方网址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1

JSAPI支付流程图:

在这里插入图片描述

流程认识:

第一步:就是将生成支付的金额页面或者是支付需要扫的二维码
例如:
在这里插入图片描述
第二步:
①用户通过操作前端页面向后台发送下单请求,传入支付金额等所必须的参数,
②随后后台调用微信的统一下单API进行,并对API响应的参数,进行金额,签名等进行验证,所有验证通过后,
③给前端返回所需要的参数,前端给微信发送请求,将后台返回的参数进行配置,配置成功即能进行支付操作
①请求参数(必填中‘是’的参数,统一下单时必须传)
在这里插入图片描述在这里插入图片描述在这里插入图片描述
例如参数:

<xml>
   <appid>wx2421b1c4370ec43b</appid>
   <attach>支付测试</attach>
   <body>JSAPI支付测试</body>
   <mch_id>10000100</mch_id>
   <detail><![CDATA[{ "goods_detail":[ { "goods_id":"iphone6s_16G", "wxpay_goods_id":"1001", "goods_name":"iPhone6s 16G", "quantity":1, "price":528800, "goods_category":"123456", "body":"苹果手机" }, { "goods_id":"iphone6s_32G", "wxpay_goods_id":"1002", "goods_name":"iPhone6s 32G", "quantity":1, "price":608800, "goods_category":"123789", "body":"苹果手机" } ] }]]></detail>
   <nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
   <notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>
   <openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>
   <out_trade_no>1415659990</out_trade_no>
   <spbill_create_ip>14.23.150.211</spbill_create_ip>
   <total_fee>1</total_fee>
   <trade_type>JSAPI</trade_type>
   <sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml> 
  • 代码:
		String notifyUrl = portalURL + ":" + serverPort + "/recharge/notify";

        AppConfig config = new AppConfig();
        WXPay wxpay = new WXPay(config, notifyUrl, false, false);

        Map<String, String> data = new TreeMap<>();
        //put
        data.put("appid", appId);
        data.put("mch_id", mchId);
        data.put("body", prepareOrderBean.getBody() + new Date());
        data.put("product_id", "12");
        data.put("device_info", "WEB");
        data.put("fee_type", "CNY");
        data.put("nonce_str", PayCommonUtil.CreateNoncestr());
        data.put("notify_url", notifyUrl);
        data.put("openid", prepareOrderBean.getOpenId());
        data.put("out_trade_no", prepareOrderBean.getOutTradeNo());
        data.put("spbill_create_ip", "123.12.12.123");
        data.put("total_fee", "1");
        data.put("trade_type", "JSAPI");

        //调用统一下单api
        Map<String, String> unifiedOrder = wxpay.unifiedOrder(data);

下单成功后会返应的一些参数,例如:

<xml>
   <return_code><![CDATA[SUCCESS]]></return_code>
   <return_msg><![CDATA[OK]]></return_msg>
   <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
   <mch_id><![CDATA[10000100]]></mch_id>
   <nonce_str><![CDATA[IITRi
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值