对接支付宝沙箱环境

本文主要讲解了对接支付宝沙箱环境,生成支付二维码的流程,本人水平有限,如有不当之处,望指出,感谢

一、进入支付宝开发平台

1、搜索支付宝开发

2、登录


3、进入到沙箱环境


沙箱环境主要信息

可以点进去看看,了解大致都有什么东西,一会要用

沙箱工具中有沙箱版支付宝软件,可下载至自己手机,账号和密码均在沙箱账号中

设置好公钥

主要设置应用公钥


如果不会,可以点击支付宝说明,有详细步骤

扫描二维码关注公众号,回复: 6953495 查看本文章

4、下载demo

点击开发者中心概览


右侧SDK下载


支付宝提供了很多测试Demo,拿来改改就可以直接用

找到当面付


下载


二、获取支付二维码

1、打开测试Demo


2、修改配置文件

工程中有一个zfbinfo.properties配置文件,是对接中的一些重要配置信息

这里只捡出来必要的字段

#网管修改为dev
open_api_domain=https://openapi.alipaydev.com/gateway.do
#沙箱账号中,商户的UID,这个为收钱商户的ID
pid = 2088102178032752
#沙箱应用中,appid
appid = 2016100100635726

# RSA私钥、公钥和支付宝公钥
private_key = 	支付宝公私钥软件生成的公钥
public_key =  支付宝公私钥软件生成的私钥的pkcs8版

#其他字段根据个人需求修改复制代码

3、Main类

main方法中使用了main.test_trade_precreate();方法来生成二维码

我们可以修改main.test_trade_precreate();方法中的内容,来自定义信息

435行的路径可以设置为本机路径,为图片生成路径

423行为回调函数的URL,在用户扫码后和支付成功后,分别会有一次回调

其他信息可以根据注释和个人需求定制

修改信息后直接运行即可在指定路径下生成二维码图片

4、四个JSON报文

获取二维码发出的JSON:

//获取二维码发出的json
{
	//必填,订单号,64个字符以内,字母数字下划线
	"out_trade_no": "tradeprecreate15647279763334241735",
	"seller_id": "",  //收款支付宝ID,如为空,按支付宝开发应用配置中的pid使用
	"total_amount": "100",  //必填,总金额(打折前)
	"undiscountable_amount": "0",  //不打折金额(实际付款金额),选填,默认为总金额-打折金额
	"subject": "xxx品牌xxx门店当面付扫码消费",  //必填,订单标题
	"body": "购买商品3件共20.00元",  //订单描述
	//商品信息
	"goods_detail": [{
		"goods_id": "goods_id001",
		"goods_name": "xxx小面包",
		"quantity": 1,
		"price": "10"
	}, {
		"goods_id": "goods_id002",  //商品ID
		"goods_name": "xxx牙刷",  //商品名
		"quantity": 2,  //数量
		"price": "5"  //单价
	}],
	"operator_id": "test_operator_id",  //商户操作员编号,可以用来做销售统计,选填
	"store_id": "test_store_id",  //必填,商户门店编号
	//自定义参数,回调时会带回,目前只支持sys_service_provider_id
	"extend_params": {
		"sys_service_provider_id": "2088100200300400500"
	},
	//过期时间
	"timeout_express": "120m"
}复制代码

获取二维码响应的JSON:

//支付宝响应响应
{
	"alipay_trade_precreate_response": {
		"code": "10000",
		"msg": "Success",
		"out_trade_no": "tradeprecreate15647279763334241735",
        //图片
		"qr_code": "https:\/\/qr.alipay.com\/bax03381xcn7dw89lcih007e"
	},
	"sign": "hFNh5JIlUR9rY42ModDoCj/7CA/05cHUq5fI/XaWGRpVAxR3i8tGjTa7XQpvNZEpGd04D/vI5KF/9QfDV7nH5MGNAR/JQA2fkHrevvbfiBV1O+aKzBIZel4BRTNDTrTH1k+DxWE7nn2Ei54DDwnuk47l8bKhMM4jA6fFCcu/oimcybvMdQV/HyHqssiIph/0OiorFMrOebIKPieAGF7+XksIa1OrSSRCCsjYxh2c7vIHFLCDU1rlSpL8e8USl0bkMy5XX+qCn967aQVet+ejy4eMSYZ2PFNGY3HlgAESX2PEhfDd8opmED3xWSzSzLJUW2RRisjwkR0Pjz8AXe0fGA=="
}
复制代码

用户扫码回调JSON:

//扫码后
{
	"gmt_create": ["2019-08-02 14:39:53"],  //订单创建时间
	"charset": ["utf-8"],
	"seller_email": ["[email protected]"],  //售货员邮箱,沙箱账户中信息
	"notify_time": ["2019-08-02 14:39:54"],  //通知时间
	"subject": ["xxx品牌xxx门店当面付扫码消费"],  //标题
	//签名
	"sign": ["OiXtXYPpQx2siDhBJiKYyEpYYd1NULnt1pKAP+MGJHaya8bIFzHcx3GdQLMmj3MPL+jKimMd2+lMVNCfvxjXvYLLfyHe3TrxECI1vGuS3ROREz0xwl6vQemZnBVgphGGulAVYsmzVyBq3L0mfGwPgFgAVnU63iK874l1C57hlsGZTetkyEKcBWPgOchNKciHDTLgzuaEQnhn37JYJbAm1SZB5hGc4HxHsKWEvdmfu+dzU7uE0WdBTs76V1xG8lyMeKjcUjah4NAsxbp0HRvli5lWiCEXt30eIJZJAEcgraL/lrpmb0p7AabLixbsT+P/ibF4pEWByXX7lzkYa/+aGA=="],
	"body": ["购买商品3件共20.00元"],   //订单详情
	"buyer_id": ["2088102178090170"],   //买主ID
	"version": ["1.0"],  //版本
	"notify_id": ["2019080200222143954090171000498739"],  //通知ID
	"notify_type": ["trade_status_sync"],  //通知类型
	"out_trade_no": ["tradeprecreate15647279763334241735"],  //订单号
	"total_amount": ["100.00"],  //总价格
	"trade_status": ["WAIT_BUYER_PAY"],  //交易状态
	"trade_no": ["2019080222001490171000065035"],  //交易编号
	"auth_app_id": ["2016100100635726"],  //app ID
	"buyer_logon_id": ["kdl***@sandbox.com"],  //买主登录ID
	"app_id": ["2016100100635726"],  //app—ID
	"sign_type": ["RSA2"],  //签名类型
	"seller_id": ["2088102178032752"]  //商户UID,支付宝开发中信息
}复制代码

用户付款回调JSON:

//支付成功后
{
	"gmt_create": ["2019-08-02 14:39:53"],
	"charset": ["utf-8"],
	"seller_email": ["[email protected]"],
	"subject": ["xxx品牌xxx门店当面付扫码消费"],
	"sign": ["UBHEmHSVGHz3e/sPYx0wEe7n2jRKVBFiraQdfwp49ElD3XqWemOtk6xFpj1wlVzElOCov9V/RWJr+Xhw98A9yxybtWboFBOCg3oyUXdftLDhUD3gFkUVoGyB70LvPeIG5qzo84/zcrr/F/JqTuiFXzuG7CYpzg1g/H6K2Be7X+cT+9xsvT4llkZB2mso0pkWTXFoR0kG8OrjuYdaBo0yKIFWIn6JYGxsyrX1jn/hj/v6VthKIf17u/bSVxZUcZO/asgjqd2v1wweELJsyvSz7pwW0R+bqKRvZ+wLGsV9r3LQC6TQecQIP4adFlfdVAWPJ981einnk+F2+0u38K3WCg=="],
	"body": ["购买商品3件共20.00元"],
	"buyer_id": ["2088102178090170"],
	"notify_id": ["2019080200222144027090171000500200"],
	"total_amount": ["100.00"],
	"app_id": ["2016100100635726"],
	"sign_type": ["RSA2"],
	"buyer_logon_id": ["kdl***@sandbox.com"],
	"seller_id": ["2088102178032752"],
	"version": ["1.0"],
	"out_trade_no": ["tradeprecreate15647279763334241735"],
	"trade_no": ["2019080222001490171000065035"],
	"auth_app_id": ["2016100100635726"],

	//---------------以上是扫码后同有的数据

	"notify_time": ["2019-08-02 14:40:27"],  //通知时间
	"gmt_payment": ["2019-08-02 14:40:26"],  //支付时间
	"trade_status": ["TRADE_SUCCESS"],  //支付状态,成功
	"buyer_pay_amount": ["100.00"],  //买方花费金额
	"invoice_amount": ["100.00"],  //发票金额
	"fund_bill_list": ["[{\"amount\":\"100.00\",\"fundChannel\":\"ALIPAYACCOUNT\"}]"],
		"receipt_amount": ["100.00"],
	"point_amount": ["0.00"]  //优惠价格
}复制代码

三、补充

1、web版Demo

该测试工程下有webapp目录,可以自行配置Tomcat,运行index.html,有做好的页面版对接

需要改动几处

把zfbinfo.properties配置文件拷贝道WEB-INF文件夹中

trade_precreate.jsp文件第31行修改为Configs.init("../zfbinfo.properties");

2、其他接口

Main方法和WebAPP中有其他接口的对接,可以自行尝试,都类似


猜你喜欢

转载自juejin.im/post/5d4683acf265da03ab4231bb