# pingpp-js
**Repository Path**: mirrors_PingPlusPlus/pingpp-js
## Basic Information
- **Project Name**: pingpp-js
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-01-07
- **Last Updated**: 2026-04-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Pingpp HTML5 SDK
## 目录
* [1. 使用 Ping++ SDK 标准版](#1)
* [1.1 支持的渠道](#1.1)
* [1.2 如何构建](#1.2)
* [1.3 使用说明](#1.3)
* [1.4 接入注意事项](#1.4)
* [2. 常见问题](#2)
##
使用 Ping++ SDK 标准版
### 支持的渠道
- 手机网页支付
1. 支付宝手机网页支付(alipay_wap)
2. 百度钱包手机网页支付(bfb_wap)
3. 银联全渠道手机网页支付(upacp_wap)
4. 微信WAP支付(wx_wap)
5. 微信小程序支付(wx_lite)
6. 易宝手机网页支付(yeepay_wap)
7. 京东手机网页支付(jdpay_wap)
8. 招行一网通支付(cmb_wallet)
- PC 网页支付
1. 支付宝电脑网站支付 (alipay_pc_direct)
2. 银联网关支付 (upacp_pc)
3. 银联企业网银支付 (cp_b2b)
4. 拉卡拉网联B2C/B2B支付
- 微信公众账号支付(wx_pub)
- QQ 公众号支付 (qpay_pub)
- 支付宝口碑 (alipay_qr)
- 线下扫码支付(isv_wap)
- 线下小程序支付(isv_lite)
### 如何构建
[dist](/dist) 目录下提供了已经构建好的 SDK,使用的命令是 `gulp build --alipay_in_weixin --agreement`。
#### 全局安装 gulp
``` bash
npm install -g gulp
```
#### 默认构建
默认会包含所有渠道
``` bash
npm run build
```
#### 自定义构建
安装依赖
``` bash
npm install
```
##### --channels
选择渠道,渠道字段用空格或者英文逗号分割,例:
``` bash
gulp build --channels="alipay_wap wx_pub upacp_wap"
```
可选的渠道模块请查看 [src/channels](/src/channels) 目录下的文件名
###### wx_lite
因为微信小程序中 不能使用其他支付渠道,构建时请添加该参数
``` bash
gulp build --channels=wx_lite
```
##### --name
设置对象变量名
``` bash
gulp build --name="pingppPc" --channels="alipay_pc_direct upacp_pc"
```
##### --alipay_in_weixin
如果要在微信内使用支付宝手机网页支付,请添加该参数
``` bash
gulp build --alipay_in_weixin
```
同时,将 [`alipay_in_weixin`](/alipay_in_weixin) 目录下的 [pay.htm](/alipay_in_weixin/pay.htm) 放于你服务器可访问的路径下,如下两种方法:
- 默认情况下,访问该文件的 URL 需要与你的支付页面时同级的。例:
支付页面 URL:http://localhost/project/payment?a=b&c=d
该文件 URL:http://localhost/project/pay.htm
- 你也可以调用 `setAPURL` 方法来自定义该文件 URL。
``` js
pingpp.setAPURL('http://localhost/your/custom/url');
```
该文件([pay.htm](/alipay_in_weixin/pay.htm))内的 `CURRENT_PAGE_URL` 变量也设置为相同的值。
##### --wx_jssdk
如果想使用微信的 JS-SDK 来调起支付,请添加该参数
``` bash
gulp build --wx_jssdk
```
##### --agreement
如果需要使用签约接口,请添加该参数
``` bash
gulp build --agreement
```
### 使用说明
#### 引入 JS 文件
- Browserify 打包方式
首先使用 `npm` 下载
``` bash
npm install pingpp-js
```
使用
``` javascript
var pingpp = require('pingpp-js');
```
- script 标签方式
``` html
```
#### 使用服务端创建的 [charge](https://www.pingxx.com/docs/overview) 调用接口
``` javascript
// 参数一:支付参数 charge/order/recharge
// 参数二:支付结果回调
pingpp.createPayment(data, function(result, err) {
if (result == "success") {
// 只有微信公众账号 (wx_pub)、微信小程序 (wx_lite)、QQ 公众号 (qpay_pub)、支付宝口碑 (alipay_qr)
// 支付成功的结果会在这里返回,其他的支付结果都会跳转到 extra 中对应的 URL。
} else if (result == "fail") {
// data 不正确或者微信公众账号/微信小程序/QQ 公众号/支付宝口碑支付失败时会在此处返回
} else if (result == "cancel") {
// 微信公众账号、微信小程序、QQ 公众号、支付宝口碑支付取消支付
}
});
```
如果 `charge` 正确的话,会跳转到相应的支付页面,要求用户进行付款。
用户支付成功后,会跳转到创建 `charge` 时定义的 `result_url` 或者 `success_url`。如果用户取消支付,则会跳转到 `result_url` 或者 `cancel_url`(具体情况根据渠道不同会有所变化)。
#### 如果不想直接跳转到支付页面,而是获取支付页面地址
在调用 `pingpp.createPayment` 之前,调用
```javascript
pingpp.setUrlReturnCallback(callback, channels);
```
##### 参数 callback
回调函数
- 第一个参数接受错误信息,没有错误时为 null。
- 第二个参数为支付界面地址的值。
##### 参数 channels
需要启用该功能的渠道列表,类型为 `array`。默认值为 `['alipay_pc_direct']`。
##### 示例
```javascript
pingpp.setUrlReturnCallback(function (err, url) {
// 自行处理跳转或者另外打开支付页面地址(url)
// window.location.href = url;
}, ['alipay_pc_direct', 'alipay_wap']);
```
#### 调用签约接口
从服务端获取 `agreement` 对象之后,调用
```js
pingpp.signAgreement(agreement, callback);
```
签约接口在对象不正确等情况下,会回调 `callback`。
如果对象正确,则会跳转到相应的签约页面,签约结果**不会**在 `callback` 返回,需要商户自己调用服务端接口查询 `agreement` 状态。
### 微信公众号接入注意事项
_以下示例中,Server-SDK 以 `php` 为例,其他语言请参考各语言 SDK 的文档或者示例_
#### 关于 open_id
##### 用 Server-SDK 取得 `open_id`(微信公众号授权用户唯一标识)。
先跳转到微信获取`授权 code`,地址由下方代码生成,`$wx_app_id` 是你的`微信公众号应用唯一标识`,`$redirect_url` 是用户确认授权后跳转的地址,用来接收 `code`。
```php
常见问题
#### 问题一: H5 页面微信公众号支付调用 Ping++ 提示失败 (来源:工单)
返回结果: `get_brand_wcpay_request: fail`
- 报错原因:微信授权目录填写错误。
- 解决方案:详见[帮助中心](https://help.pingxx.com/article/123339)
#### 问题二:微信内调用支付宝没出现引导界面,只有复制链接到浏览器
- 报错原因:pay.htm 路径出错
- 解决方案:
1. 默认情况下,访问该文件的 URL 需要与你的支付页面时同级的。例:
支付页面 URL:http://localhost/project/payment?a=b&c=d
该文件 URL:http://localhost/project/pay.htm
2. 你也可以调用 `setAPURL` 方法来自定义该文件 URL。
``` js
pingpp.setAPURL('http://localhost/your/custom/url');
```
该文件([pay.htm](/alipay_in_weixin/pay.htm))内的 `CURRENT_PAGE_URL` 变量也设置为相同的值。
#### 问题三:调不起支付,返回报错信息 json_decode_fail
- 报错原因:传入的参数不是正确的 JSON 字符串或者 JSON 对象
- 解决方案:客户端调用 SDK 时,确认服务端输出到客户端时,数据的正确性。