第一次接触支付啊,有点小激动,所以写下这篇随笔以防以后忘记。

ping++的文档还有服务都是挺好的,当你注册之后,就会给你发邮件。截图如下:

是不是感觉服务很不错。

接下来直入正题。

首先,我们需要加入ping++的依赖jar包,在ping++官网上有三种方式,我选择的是maven安装。又因为我用的是idea的自带的maven,所以有点坑。我是把官网上的maven安装的远程仓库和依赖都放在pom.xml里,就会报错,报错的内容是要在header里面加上Authorize。我查了很多文档都没有找到解决办法,后来看了人家写的pom.xml才知道错在哪了,没加标签。这就是我修改过后的pom.xml文档:

ping++的支付,需要三个参数,apikey(分为test和live,既测试key和正式key),appid(ping++管理平台对应的应用Id),priavtekey(私钥)。这三个参数的获得,在注册ping++的时候会有介绍,按照介绍步骤一步步做就可以了。

再获得这三个参数之后,我们就可以创建charge了,程序如下:

@Controller

@RequestMapping("/open")

public class ChargeAction {

@RequestMapping(value = "charge.do")

public Charge createCharge() {

String apiKey = "sk_test_TCWX58HmvL041yrvDKnfjjX5";

Pingpp.apiKey = apiKey;

System.out.println(Pingpp.apiKey);

//ping++管理平台 对应的应用ID

String appId="app_ijXnL8HeDeTSCKSm";

//这里你也可是使用官网demo里面的privatekeyFilePath 我这里是直接把privatekey拿来用了

Pingpp.privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" +

"MIICXQIBAAKBgQClN/5msBTJ3Dzvll/93EqvY+V1idgU473mCerjvoa7ASpUi7ZB\n" +

"qGm7c7y70Rk2YehSJk7b7IQBWKKSicfMOsA/VFbsw4WSGDgODG5dWcFEqUuJGBA3\n" +

"NH0pP3Ix/fDmA66/h0p6wH7q+GqAZXj+TAHpjuEOy4Na9Z8VSY5TL7n8uwIDAQAB\n" +

"AoGAXahbN5zze+a0SGDnM4JQeBJZ/gJREq5zdNcEZ2wW9iVX+KtmetvcbB3UzGdh\n" +

"MnnX99GtfHAb+KNlLUqbj0NyvMp7hTYkncT5SV67OxOjmO55QFH0ypQhiC3C/1BM\n" +

"OeU3gdu2WXyNTJdeicOYExfNeIfeG4+UUwbS1AD+hhH++DECQQDR/XDDVJlWbfmL\n" +

"f7Y7jvYc3eJMQNghChI/8qKxa/5Ko8uHLplC0MdToMaj7wh26hmBPI/UyiHOu2y1\n" +

"Mb/fzGoDAkEAyWtJEPi5BRrtbQG928V/SWLx1eI1B2PRVH67ewyK0y8Go3XxMhw/\n" +

"DPnX1x87Gz6M67qCVCEK7y9h9sBt9eSA6QJAFsjgHmGkjas7I3bFCCtX6wPsVQfI\n" +

"K7WTC1tBaezk16Z0JAPbX1OV/S35v7nk+jomcE5o8NbJ2kud3P876YWdjwJBAKAM\n" +

"bCbcPMjduMPhmmfD63z47omyEckpe/DUM013jeh5eaDx2xKid0dsUCJUYrcnYPr/\n" +

"XQhUqUeeMw3LopS9WeECQQCo4svdagNWz9Uksl7zAnpCxPWS07Hr4Rd5LXwDiwe6\n" +

"HvhO2NGhHQFxZznfWk7LMBz+1NHwMtCdj3A5emkw4Uf1\n" +

"-----END RSA PRIVATE KEY-----\n";

Charge charge = null;

Map chargeMap = new HashMap();

chargeMap.put("amount", 100);//订单总金额, 人民币单位:分(如订单总金额为 1 元,此处请填 100)

chargeMap.put("currency", "cny");

chargeMap.put("subject", "电商");

chargeMap.put("body", "1234");

String orderNo = new Date().getTime()+"" ;

chargeMap.put("order_no", orderNo);// 推荐使用 8-20 位,要求数字或字母,不允许其他字符

chargeMap.put("channel", "alipay_pc_direct ");// 支付使用的第三方支付渠道取值,请参考:https://www.pingxx.com/api#api-c-new

chargeMap.put("client_ip", "127.0.0.1"); // 发起支付请求客户端的 IP 地址,格式为 IPV4,如: 127.0.0.1

Map app = new HashMap();

app.put("id", appId);

chargeMap.put("app", app);

Map extramap = new HashMap();

//extra的参数根据文档: https://pingxx.com/document/api#api-c-new

extramap.put("success_url", "your success_url");

// extra 取值请查看相应方法说明

chargeMap.put("extra", extramap);

try {

//发起交易请求

charge = Charge.create(chargeMap);

// 传到客户端请先转成字符串 .toString(), 调该方法,会自动转成正确的 JSON 字符串

String chargeString = charge.toString();

System.out.println(chargeString);

} catch (Exception e) {

e.printStackTrace();

}

return charge;

}

这里两个参数要注意一下,channel和extra 这两个参数是有对应关系的。具体的可以看下官方文档。这里我只是用了 alipay_pc_direct (支付宝网页支付)。

你可以用junit测试运行一下,生成的charge是json格式,我生成的就是下面的:

{

"id": "ch_90GC0CvD4O0004yrP44q5eHO",

"object": "charge",

"created": 1504859495,

"livemode": false,

"paid": false,

"refunded": false,

"reversed": false,

"app": "app_ijXnL8HeDeTSCKSm",

"channel": "alipay_pc_direct",

"order_no": "1504859505311",

"client_ip": "127.0.0.1",

"amount": 100,

"amount_settle": 100,

"currency": "cny",

"subject": "电商",

"body": "1234",

"time_paid": null,

"time_expire": 1504945895,

"time_settle": null,

"transaction_no": null,

"refunds": {

"object": "list",

"url": "/v1/charges/ch_90GC0CvD4O0004yrP44q5eHO/refunds",

"has_more": false,

"data": []

},

"amount_refunded": 0,

"failure_code": null,

"failure_msg": null,

"metadata": {},

"credential": {

"object": "credential",

"alipay_pc_direct": {

"_input_charset": "utf-8",

"body": "1234",

"it_b_pay": "1440m",

"notify_url": "https%3A%2F%2Fnotify.pingxx.com%2Fnotify%2Fcharges%2Fch_90GC0CvD4O0004yrP44q5eHO",

"out_trade_no": "1504859505311",

"partner": "2008769584892761",

"payment_type": "1",

"return_url": "http://127.0.0.1:9999/SpringRedis/testpay.jsp",

"seller_id": "2008769584892761",

"service": "create_direct_pay_by_user",

"subject": "电商",

"total_fee": "1",

"sign": "RzBHU0dHTEN5TDQ0aWpMVzlDR21uckhD",

"sign_type": "RSA"

}

},

"extra": {

"success_url": "http://127.0.0.1:9999/SpringRedis/testpay.jsp"

},

"description": null

}

生成charge对象之后,就代表你距离成功又近了一步。

接下来,我们就需要把charge传到前端,前端获取到charge对象那个,就可以调起支付控件了。

这其中就需要一个很重要的js。pingpp.js,这个官网里有,直接下载就可以了。对于这个js的使用,官方也有说明。

下面,我也只用了这个js来调起支付控件,完成支付。

然后我们可以写个页面请求到charge然后调用pingpp.js,页面代码如下:

pageEncoding="utf-8"%>

//引入pingpp.js

function test() {

$.ajax({

url:'/SpringRedis/testpay.jsp',

method:'post',

success:function (data) {

alert(data);

if(data.errorMessage){

alert("支付连接失败");

}else{

pingpp.createPayment(data, function(result, error) {

if (result == "success") {

// 只有微信公众账号 wx_pub 支付成功的结果会在这里返回,其他的支付结果都会跳转到 extra 中对应的 URL。

} else if (result == "fail") {

// charge 不正确或者微信公众账号支付失败时会在此处返回

} else if (result == "cancel") {

// 微信公众账号支付取消支付

}

});

}

},

error:function ( msg) {

alert("支付连接失败" +msg);

}

})

}

Hello World! SpringRedis

在你点击测试按钮之后,如果出现如下页面,就代表你成功了。

在代码完成后,还需要配置webhook来接收到账通知。这个官网里说的都很详细。

ping 支付 java代码_Ping++支付相关推荐

  1. 微信支付-java实现微信支付-后端篇

    微信支付系列文章 微信支付-java后端实现 微信支付-vue 前端实现 java demo: 下载地址文章底部 技术栈 Spring boot java XML (微信在http协议中数据传输方案) ...

  2. 手把手教你完成App支付JAVA后台-微信支付JAVA

    上篇我们记录了手机端的微信支付的大致流程,期间可能会遇到各种各样的错误,但这些问题没有得到官方的重视,所以我们只能一步步自己排查,要有足够的耐心. 这篇内容看标题已经很明确了,由于微信是用xml通讯的 ...

  3. 银联支付java代码实现_[VIP源码]【S008】Java实现支付宝、微信、银联支付项目实例项目源码 百度云 网盘...

    java源码项目名称:Java实现支付宝.微信.银联支付项目实例项目源码  支付项目源码& X3 U' W# h0 z# K 百度网盘下载链接: ( y! x% n" V9 F9 s ...

  4. 淘宝支付页面代码php,支付页面html模板

    模板位于"..\phpcms\templates\"文件夹内.这个目录下的每一个文件夹就是一套模板而css样式.js文件,以及模板配带的images文件夹则位于根目录下" ...

  5. java微信支付代码_10行代码搞定微信支付(Java版)

    原标题:10行代码搞定微信支付(Java版) 微信支付痛点 对于大多数同学来说,要开发微信支付可不简单.附上微信支付官方文档网页链接 从文档上可以看出,你需要解决很多问题,我就随便挑几个吧. xml与 ...

  6. java微信支付代码_Java微信支付之服务号支付代码示例

    Java微信支付之服务号支付实现,网上的java微信支付sdk和Demo基本上是水的,看着头疼所以我决心自己开始写Java微信支付之公众号支付,多的不说见下面源码,为了方便使用我分别用了两个Servl ...

  7. java集成paypal支付,含Android,服务端代码

    支付流程 1. 前端选择商品,调用paypal支付 2. 支付完成,paypal会返回payment信息,将payment的id返回给自己服务端 3. 服务端根据paymentId,调paypal,查 ...

  8. 微信小程序支付 Java后端代码详解

    微信小程序发起支付 Java后台处理代码---- 直接上代码吧! 我把自己的业务逻辑代码删了,但是都有注释的 莫慌! package com.mvc.controller;import java.io ...

  9. 【纯干货】微信支付接入攻略—JAVA代码分享

    [纯干货]微信支付接入攻略-JAVA代码分享 [声明]本文作者是Gekec网站开发总监Arne Chen.Arne在实际接入微信支付时遇到诸多问题并且逐一解决的过程中总结了不少实战经验.文中引用代码是 ...

最新文章

  1. C/C++ 知识点---LIB和DLL的区别与使用(网摘)
  2. python使用符号 表示单行注释-Python编程规范之注释
  3. SegNet网络简析及caffe工程应用
  4. gradle和maven区别
  5. observable_Java Observable clearChanged()方法与示例
  6. Oracle HA 之 OGG部署流水
  7. mysql maratadb_Mysql/Mairadb主从复制
  8. edxp显示未安装_EPLAN因缺少加密狗驱动而无法安装解决方案
  9. mysql按笔划排序_Sql Server数据库汉字按字母、笔划、拼音首字母、排序
  10. vrep与vs2015联合仿真(C/C++)
  11. 哈佛幸福课 24人格力量测试
  12. Unity3D自由摄像头视角旋转,平移,缩放
  13. 河北省计算机科学专业高校排名,河北省计算机类专业大学排名
  14. IGBT的双脉冲测试实验
  15. STM32F7学习笔记(一)-LED
  16. 二维码(生成以及扫一扫)
  17. 【学习方法】如何才能高效学习
  18. 诸暨机器人餐厅价格_诸暨店口镇机器人检测管道施工公司价格清道夫2020
  19. IC设计工程师的职业规划
  20. 基于RT_Thread连接中国移动onenet平台的RGB三色灯项目

热门文章

  1. 下划线单词转换为小驼峰写法
  2. 粉色控的幸运——HyperX毒刺幸运粉游戏耳机
  3. EEPROM读写实验
  4. rhcsa(文件权限,管理linux的联网,软件包)
  5. 电脑设置关闭屏幕和休眠时间不起作用解决方案
  6. 前端常见面试基础问题
  7. 这样,你才能算会 RxJava、RxAndroid 之取消订阅
  8. python对中文段落进行分词分句及分标点符号
  9. map管理成员函数指针
  10. 接力大数据风口的数据中台,你一定要知道