微信开发 测试支付_没有微信公众号怎么测试微信支付开发 - CSDN
  • 微信不允许在测试号进行公众号支付测试,所以导致了我们项目对支付进行了改动之后,导致无法在测试号上测试。 在搜索了各种解决方案之后,找到了一个我认为对我们来说最方便的测试方式(虽然还是很麻烦,但终归能...

    一般情况下,微信公众号的相关功能的测试都是可以在测试号上完成的。但是微信公众号支付却不在测试号的测试范围之内。

    微信不允许在测试号进行公众号支付测试,所以导致了我们项目对支付进行了改动之后,导致无法在测试号上测试。

    在搜索了各种解决方案之后,找到了一个我认为对我们来说最方便的测试方式(虽然还是很麻烦,但终归能完成公众号支付测试)。

    步骤:

    1.首先我们要去获取到正式公众号的AccessToken,这个凭证最长时效为2小时。获取方式是通过微信提供的appid和appsecret向微信请求获取。但最好不要直接使用这种方式,因为会影响线上的AccessToken。从现网环境的日志中复制就好(运气好能坚持1个多小时,足够测试用了)。

    2.将测试环境的公众号服务端的配置文件中的id,appid,appsecret,token等都换成现网环境公众号配置。同时将调用的AccessToken写死为(1)中获取的现网AccessToken。

    3.在公众号支付授权目录中,添加测试环境的地址。


    4.在现网的公众号页面中增加一个测试页面(当然是要有发起支付请求能力的),请求地址的是测试环境的公众号服务端(前后端分离,所以做起来不是很困难)

    5.启动测试环境服务端,打开正式公众号的新增的测试页面,就可以调起微信公众号支付了。

    展开全文
  • 测试号是不具备支付接口的能力,所以想要在测试环境测试微信公众号支付,就必须使用正式账号的appid、key、商户号以及open id: (1)页面的微信JSSDK的配置参数以及签名使用的app id要使用正式号的app id (2)...

    大家都知道微信公众号有正式号和测试号之分;测试号是不具备支付接口的能力,所以想要在测试环境测试微信公众号支付,就必须使用正式账号的appid、key、商户号以及open id:

    (1)页面的微信JSSDK的配置参数以及签名使用的app id要使用正式号的app id

    (2)调用微信统一下单接口的app id、商户号、key以及open id需要使用正式号的

    即在测试公众号支付,最简单的方式,就是做一个测试uid与正式号的openId的映射关系,

    比如在项目中增加配置文件testEnvWxJSAPIPayOpenIdConfig.properties,项目启动的时候加载配置;支付进入支付页面后,必须把“”确认支付“”页面的地址链接复制到正式公众号中再打开,否则就会出现下面的错误:

    这里写图片描述

    环境配置几个注意点(公众号的功能设置页面):

    1:配置js接口安全域名

    2:配置微信回调网站的授权文件,

    需要将微信提供的MP_verify_dV7iNyIleI7JsD8w.txt文件上传到网站的根目录(必须保证可访问),否则微信会报“invalid url domain”

    展开全文
  • 在实际开发中,通常我们都是在开发环境中开发,本地环境也有很多限制,比如:微信支付无法调起、H5链接需要鉴权、支付结果通知需要外网等。  面对以上的问题,微信官方给出了解决的方法,就是咋们这篇文章的沙箱...

      在实际开发中,通常我们都是在开发环境中开发,本地环境也有很多限制,比如:微信支付无法调起、H5链接需要鉴权、支付结果通知需要外网等。

      面对以上的问题,微信官方给出了解决的方法,就是咋们这篇文章的沙箱环境,也就是微信支付的官方测试环境,这个环境能做些什么呢?我觉得最重要的一点就是我们可以实时根据官方的例子调用对应的接口,并且接口会马上返回结果,拿微信支付预支付单接口来说,调用以后会实时返回我们支付的相关信息,这样就免于开发时不知道返回结果而苦恼。

      仿真测试系统

      为降低商户测试门槛,微信支付团队开发了一套独立的仿真测试系统。该系统根据验收用例金额的不同返回不同的响应报文,以满足商户正常功能测试、安全/异常测试及性能测试的需求。

      

     

      图1为微信支付仿真测试系统(后简称仿真系统)的简化原理图。仿真系统的API协议与正式API完全相同(API接口文档)。商户开发者只需将正式API的调用URL增加一层sandboxnew路径,即可对接到仿真系统。

      例如,刷卡支付URL:https://api.mch.weixin.qq.com/pay/micropay

      变更为:https://api.mch.weixin.qq.com/sandboxnew/pay/micropay。

      仿真系统与生产环境完全独立,包括存储层。商户在仿真系统所做的所有交易(如下单、支付、查询)均为无资金流的假数据,即:用户无需真实扣款,商户也不会有资金入账。代金券同理,沙箱环境中无需商户真实制券与发券,亦不会出现真实扣券情况。验收仿真测试系统的API验签密钥需从API获取:

      

     

      源码交互过程

      以下为微信官方的仿真测试系统文档:

      https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1

      上面说明具体的交互过程和相关的仿真测试系统的API验证签名,为什么需要这个签名接口呢?这是因为使用沙箱环境时使用的是真实的商户号、小程序/公众号APP_ID,但是API密钥这个参数必须使用沙箱环境的sandbox_signkey,此接口主要是取得这个参数。

      注:仿真测试环境中的商户号(父子商户号)需使用真实商户号。

      下面为取得sandbox_signkey的示例:

      /**

      *获取沙盒sandbox_signkey

      *

      *@authoryclimb

      *@date2018/9/18

      */privatevoiddoGetSandboxSignKey()throwsException{

      WXPayConfigImplconfig=WXPayConfigImpl.getInstance();

      HashMapString,Stringdata=newHashMapString,String();//商户号

      data.put(mch_id,config.getMchID());//获取随机字符串

      data.put(nonce_str,WXPayUtil.generateNonceStr());//生成签名

      Stringsign=WXPayUtil.generateSignature(data,config.getKey());

      data.put(sign,sign);

      //得到sandbox_signkey

      WXPaywxPay=newWXPay(config);Stringresult=wxPay.requestWithoutCert(/sandboxnew/pay/getsignkey,data,10000,10000);

      System.out.println(result);

      }

      小伙伴可以根据result来获取具体的返回数据,解析之后获取sandbox_signkey参数。

      商户接入仿真系统的交互流程示例:

      商户发起刷卡支付请求,使用POST方式调用 https://api.mch.weixin.qq.com/sandboxnew/pay/micropay

      带sandboxnew 的https请求会被nginx路由到仿真系统。仿真系统根据支付金额(total_fee字段)返回预期报文给商户。同时,落地该笔请求数据;

      商户发起查单,调用 https://api.mch.weixin.qq.com/sandboxnew/pay/orderquery,带上微信订单号(transaction_id)或商户内部单号(out_trade_no);

      仿真系统收到查单请求后,根据单号及金额返回预期的查单结果给商户;

      商户下载对账单,调用 https://api.mch.weixin.qq.com/sandboxnew/pay/downloadbill ,仿真系统返回固定的账单格式给商户。注:账单内容不一定与商户在仿真系统产生的交易完全相同。

      沙箱说明:sandbox/sandboxnew

      微信支付沙箱环境,是提供给微信支付商户的开发者,用于模拟支付及回调通知。以验证商户是否理解回调通知、账单格式,以及是否对异常做了正确的处理。

      如何对接沙箱环境?

      1、修改商户自有程序或配置中,微信支付api的链接,如:被扫支付官网的url为:https://api.mch.weixin.qq.com/pay/micropay 增加sandboxnew路径,变更为https://api.mch.weixin.qq.com/sandboxnew/pay/micropay, 即可接入沙箱验收环境,其它接口类似;

      2、在微信支付开发调试站点(站点链接:http://mch.weixin.qq.com/wiki/doc/api/index.php ),按接口文档填入正确的支付参数,发起微信支付请求,完成支付;

      3、验收完成后,修改程序或配置中的api链接(重要!),去掉sandboxnew路径。对接现网环境。

      说明地址:

      https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1

      https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=21_2

      结语

      其实沙箱环境主要是为了方便在开发时及时获得接口返回值和进行商户支付验收使用,本文讲了如何获取sandbox_signkey参数,然后如何进行模拟对接,在实际接口URL后增加sandboxnew即可,接口会实时返回结果参数,此点于正式环境不同(正式环境支付后是异步调用,沙箱环境是实时返回)。

      注意:有的接口沙箱环境的接口并不只是在链接中增加sandboxnew,整个链接都会改变,在实际操作中我们应该查看官方文档一一对照,如支付退款接口,正式线接口为:/secapi/pay/refund,而沙箱环境接口为:/sandboxnew/pay/refund,在沙箱环境中去掉了secapi这一路径,请小伙伴一定要注意。

      

    展开全文
  • 看到最近有几篇关于微信支付和支付宝支付的文章,稍微进行一下整合,供大家参考。 ---------------------------------------------微信支付---------------------------------------------- 1.申请开发者资质 ...

    从开始学习android开始到现在还没搞过三方支付,感觉挺遗憾的。看到最近有几篇关于微信支付和支付宝支付的文章,稍微进行一下整合,供大家参考。

    ---------------------------------------------微信支付----------------------------------------------

    1.申请开发者资质


    地址:

    https://open.weixin.qq.com


    使用公司管理者/高层帐号登录微信开放平台,进入“账号中心”,进行开发者资质认证,需要填写公司资料,包括但不限于,公司注册号,公司营业执照,公司对外办公电话,公司对公银行卡信息(卡号,发卡行)。审核时间为一周左右。


    • 因为从2015年10月1日起,国家实行三证(组织机构代码证,企业营业执照,税务登记证)合一,所以组织机构代码处填写-工商执照注册号,同样,组织机构代码证,上传-企业工商营业执照。

       

    • 进行开发者资质认证需要支付300元人名币/年,只有具备开发者资质认证的开发者才能够使用app支付,授权登录等接口。


    2.申请APP_ID/APP_KEY


    每个应用/游戏要调用微信的接口都需要有一个微信标志,这个唯一标志通常成为 APP_ID或者 APP_KEY,各开放平台差异不大 。


    进入管理中心,创建移动应用,每个开发者具有10个应用的创建机会,好在创建的应用可以随时删除。已上线的应用就不建议手贱删除!!


    申请appid需要填写应用信息:应用名称,包名,签名(keystore的md5值去分号小写),icon(28*28 & 108*108),app下载地址等信息,即可分配到一个appid。


    • 测试支付时,务必使用申请时填写的 keystore文件签名包名也需要核对清楚,必然无法调起支付,返回-1错误码。


    3.申请支付能力


    管理中心,查看需要集成支付能力的app,找到“微信支付”一栏,点击右侧“申请开通”,填写一些企业信息后等待审核,审核时间为一周左右,审核通过后,会得到一个企业商户号及密码,对公银行卡中将收到几分钱,进入商户平台,输入收到的金钱金额以验证。验证通过后即可开始集成支付调用。在这之前,调用支付接口是无法完成支付的。


    4.代码集成微信支付


    支付流程图:



    微信支付流程图白话版


    1.客户端代码得到用户购买的商品信息,将之传给自己公司app服务器,参数包含但不限于以下:


    // 微信appid,选择性上传,服务器写死亦可
    params.put("appid", appID);
    // 支付金额,单位:分
    params.put("money", money);
    // 商品名称
    params.put("name", goodsName);
    // 支付币种,只能填CNY,代表人民币
    params.put("currencytype", "CNY");


    • 以上是参数字段是我们公司服务器定义,给服务器用以获取预支付订单号prePayId用。

    • 详细字段请参考:

      https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1


    2.app服务器调用微信“统一下单”接口,得到prePayId订单号并返回 prePayId 给手机客户端;


    3.手机客户端使用prePayId及商品信息调起微信客户端进行支付;

    • 用户操作:输入密码进行支付;返回键取消支付;网络无连接支付失败等


    4.微信客户端回调支付结果给咱们的APP客户端;


    5.微信服务器异步通知咱们公司app服务器支付结果(服务器的工作,与客户端无关)


    微信支付代码:




    在app包下新建 wxapi包,比如app包名为 com.wxdemo.app,那个新建的包路径为 com.wxdemo.app.wxapi,该包下新建WXPayEntryActivity,继承自任意Activity。该Activity用以接收支付结果回调,清单声明此Activity的格式为:


    <activity
        android:name=".wxapi.WXPayEntryActivity"
        android:exported="true"
        android:launchMode="singleTop"/>


    WXPayEntryActivity代码示例:




    回调中errCode值列表:


    • 0 :支付成功 。

    • -1 :发生错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。

    • -2:用户取消 发生场景:用户不支付了,点击取消,返回APP。


    manifest声明所需权限


    <uses-permission android:name="android.permission.INTERNET" />
    <
    uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    <
    uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    • 支付结果最终以app服务器的得到的异步通知为准。


    OK 到这我们微信支付就算是搞定了。


    最后


    附上微信官方支付demo下载:

    https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1


    吐槽语:官方demo下载藏的有点深。。。开放平台居然没有提供下载,放在微信支付商户平台。



    -----------------------------------------------支付宝支付--------------------------------------------------

    第一步:签约成为支付宝商户

    签约地址:

    https://b.alipay.com


    只有成为签约商户的开发者才能具备集成支付宝app支付的资格。


    签约资料:

    1. 营业执照

    2. APP说明文档

    3. 商户经营信息、商户联系人等信息


    必要时还需 提供APP 以备审核。审核通过后即可进行代码集成。


    审核通过后,可得到支付宝分配的 商户号等信息


    第二步:客户端代码集成准备

    导入jar包资源


    目前最新版支付宝开发jar包下载地址:

    http://download.csdn.net/detail/xiong_it/9566771


    下载后将之拷贝 libs目录Eclipse会自动添加依赖,Android Studio 需在app的gradle中添加一行:


    compile files('libs/alipaySdk-20160223.jar')


    点击右上角:Sync Now,稍等片刻。。。


    修改AndroidManifest.xml清单


    声明必要Activity:



    添加必要权限:

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    添加支付宝混淆规则


    第三步:客户端代码集成


    支付宝交互流程示意图 



    流程图白话版解释:


    1. app携带支付信息调用支付接口请求支付宝客户端调起支付界面;

    2. 用户操作,输入密码支付,支付成功;直接返回取消支付;出现错误,支付失败;进入支付界面,但输入密码支付,支付待确认;

    3. 支付宝客户端将支付结果告诉app客户端,商户服务器通知app服务器支付结果;

    4. app客户端处理支付结果;

    5. app服务器处理支付结果。


    支付宝的支付流程较之 微信的支付流程图 少了一步app服务器端订单的生成,但是在其demo代码中是推荐使用app服务器进行sign签名过程的,于是笔者索性是按照的微信支付的流程去集成的。


    • 客户端代码得到用户购买的商品信息,将之传给自己公司app服务器,参数包含但不限于以下


      // 商品金额,单位:元
      params.put("money", payMoney);
      // 商品名称
      params.put("goodsname", goodsName);


      注意:支付宝支付的人民币单位和微信支付,银联支付稍有不同,需以:元 作为支付单位。其他两者支付单位为:分 。其他参数均交给咱们app服务器处理即可,详细参数请点击:

      https://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103663&docType=1


    • app服务器参考上述详细参数链接,得到sign(支付签名信息)字段并返回sign字段给手机客户端;


    • 手机客户端使用sign签名信息在非UI线程调起支付客户端进行支付; 

      用户操作:输入密码进行支付;返回键取消支付;进入支付界面,用户未进行支付,用户返回,待支付;网络无连接支付失败等;


    • 客户端得到支付结果;


    • 支付宝服务器异步通知咱们公司app服务器支付结果(服务器的工作,与客户端无关)


    这样做的好处:签名逻辑在服务器完成,app无需暴露公钥和私钥,更安全。同时也是demo中的推荐做法。


    更详细的支付宝接入交互流程解释请点击:

    https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.7WO30X&treeId=59&articleId=103658&docType=1


    客户端代码示例


    支付调起代码(须在子线程):




    支付处理代码(UI线程):




    注:AliPayResult.java来自支付宝demo中的PayResult.java 


    至此,集成支付宝SDK结束。祝各位集成支付宝支付成功!


    结束语


    按照惯例,附上支付宝SDK接入的官方demo下载链接:

    https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1



    展开全文
  • 我用java写的微信小程序支付功能,没有在微信中申请商户号,请问该如何测试支付功能
  • 微信支付是集成在微信客户端的支付功能,用户可以通过手机完成快速的支付流程。微信支付以绑定银行卡的快捷支付为基础,向用户提供安全、快捷、高效的支付服务。 公众号支付 APP支付 扫码支付 刷卡支付 H5支付 ...
  • 本文主要和大家分享PHP开发微信支付和支付宝支付实例,关于支付的流程之类的就不做解释,大家可以自行在php中文网中搜索哦。   微信支付 项目前提:本人用的是tp框架,PHP语言下载到微信平台提供的微信支付...
  • 微信开发 微信支付

    2015-01-06 13:39:33
    此处的微信支付是指微信支付V3版 如何确认自己申请的微信版本是V3版 1.基本9月20以后申请的微信支付均为V3版本 2.查看微信发送的邮件 若其中包含以下信息 商户ID、申请编号、登录帐号、登录密码、商户API密码 商户...
  • 一个大客户的
  • @[clownss] java开发微信付款码支付 微信支付–付款码支付 写在前面的话,各位大佬,晚上好!今儿是小弟第一次发表博客,我是一名刚入行的程序员,写的不好或是不对的地方,希望各位见谅。还请各位大佬能够指导,...
  • 概述 大家很清楚,在测试环境中公众号的app id是绝对不能和生产...对于测试环境使用另一个公众号,不存在不能测试支付的问题,主要这个公众号必须开通拥有权限。虽然有点浪费资源,但这方式最最简单直接,我们可以放开
  • 微信支付开发视频教程 [ 001微信支付视频教程_支付流程图详解_公众号支付介绍 002微信支付视频教程_支付流程图详解_APP支付介绍 003微信支付视频教程_支付流程图详解_扫码支付介绍 004微信支付视频教程_支付流程图...
  • 微信支付本地测试

    2017-09-18 09:56:51
    微信支付的开发越来越多,很多开发者头疼的问题就是调试问题,那么今天就给大家讲一下如何在本地调试微信...(多么好的一个映射软件,在新版本中微信开发url却不能用。很可惜)但是支付是可以使用的。 2、本地调试
  • 二、微信公众号支付正式开发 1.在微信支付--&gt;使用教程--&gt;公众号支付,即可查看微信公众号支付开发文档,下载PHP的SDK和DEMO文档,解压后目录如下; 2.按照doc文件夹下的说明文档; a、替换cert中A....
  • 通过在公众号里面设置相关的测试白名单,授权目录和验证地址...发布服务器进行支付测试验证。之前尝试采用扫码模式一,根据生成的日志文件可以看到返回的信息提示(XML格式)。老出现原生支付URL参数错误,支付订...
  • @文末附有开发案例代码的地址 微信支付开发官方地址:https://pay.weixin.qq.com/wiki/doc/api/index.html 1. appid, 微信公众账号或开放平台APP的唯一标识 2. mch_id, 微信支付系统中的商户收款账号 3. partner...
  • 微信开发中,涉及到微信支付流程较为繁琐。其中以微信红包为例,参考官方文档:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3。 调用微信支付链接中,有以下三个字段,需要...
  • 微信公众号支付H5调用支付详解最近项目需要微信支付,然后看了下微信公众号支付,,虽然不难,但是细节还是需要注意的,用了大半天时间写了个demo,并且完整的测试了一下支付流程,下面分享一下微信公众号支付的经验...
1 2 3 4 5 ... 20
收藏数 22,177
精华内容 8,870
关键字:

微信开发 测试支付